This commit is contained in:
2026-01-06 22:12:07 +05:00
commit 12f57baa26
13 changed files with 3110 additions and 0 deletions

View File

@@ -0,0 +1,159 @@
#!/bin/bash
#
# Скрипт создания LXC контейнера для Gitea на Proxmox
# Запускать на хосте Proxmox (192.168.0.33)
#
set -e
# ============================================
# НАСТРОЙКИ LXC КОНТЕЙНЕРА
# ============================================
# ID контейнера (проверьте что не занят)
CT_ID="${CT_ID:-300}"
# Hostname
CT_HOSTNAME="${CT_HOSTNAME:-gitea}"
# Ресурсы
CT_MEMORY="${CT_MEMORY:-2048}"
CT_CORES="${CT_CORES:-2}"
CT_DISK="${CT_DISK:-20}"
# Сеть
CT_IP="${CT_IP:-192.168.0.40/24}"
CT_GW="${CT_GW:-192.168.0.1}"
CT_BRIDGE="${CT_BRIDGE:-vmbr0}"
# Storage для rootfs и шаблонов
CT_STORAGE="${CT_STORAGE:-local-zfs}"
TEMPLATE_STORAGE="${TEMPLATE_STORAGE:-local}"
# Шаблон (Debian 12 - актуальная версия)
# Доступные варианты:
# debian-12-standard_12.12-1_amd64.tar.zst - чистый Debian 12 (рекомендуется)
# debian-13-standard_13.1-2_amd64.tar.zst - Debian 13 (testing)
# ubuntu-24.04-standard_24.04-2_amd64.tar.zst - Ubuntu 24.04 LTS
# НЕ используйте debian-12-turnkey-gitea - он для новой установки, не для миграции
CT_TEMPLATE="${CT_TEMPLATE:-debian-12-standard_12.12-1_amd64.tar.zst}"
# Пароль root (ОБЯЗАТЕЛЬНО ИЗМЕНИТЕ!)
CT_PASSWORD="${CT_PASSWORD:-ChangeMe123!}"
# ============================================
# ФУНКЦИИ
# ============================================
log() {
echo -e "\033[1;32m[$(date '+%H:%M:%S')]\033[0m $1"
}
error() {
echo -e "\033[1;31m[ERROR]\033[0m $1" >&2
exit 1
}
# ============================================
# ПРОВЕРКИ
# ============================================
# Проверяем что мы на Proxmox
if ! command -v pct &> /dev/null; then
error "Этот скрипт должен запускаться на Proxmox хосте"
fi
# Проверяем что ID не занят
if pct status "$CT_ID" &> /dev/null; then
error "Контейнер с ID $CT_ID уже существует"
fi
log "=== Создание LXC контейнера для Gitea ==="
log "ID: $CT_ID"
log "Hostname: $CT_HOSTNAME"
log "IP: $CT_IP"
log "Memory: ${CT_MEMORY}MB"
log "Disk: ${CT_DISK}GB"
# ============================================
# СКАЧИВАНИЕ ШАБЛОНА (если нет)
# ============================================
TEMPLATE_PATH="/var/lib/vz/template/cache/$CT_TEMPLATE"
if [ ! -f "$TEMPLATE_PATH" ]; then
log "Скачивание шаблона $CT_TEMPLATE..."
pveam update
pveam download "$TEMPLATE_STORAGE" "$CT_TEMPLATE"
fi
# ============================================
# СОЗДАНИЕ КОНТЕЙНЕРА
# ============================================
log "Создание контейнера..."
pct create "$CT_ID" "${TEMPLATE_STORAGE}:vztmpl/${CT_TEMPLATE}" \
--hostname "$CT_HOSTNAME" \
--password "$CT_PASSWORD" \
--memory "$CT_MEMORY" \
--cores "$CT_CORES" \
--rootfs "${CT_STORAGE}:${CT_DISK}" \
--net0 "name=eth0,bridge=${CT_BRIDGE},ip=${CT_IP},gw=${CT_GW}" \
--features "nesting=1" \
--unprivileged 1 \
--onboot 1
# ============================================
# ЗАПУСК КОНТЕЙНЕРА
# ============================================
log "Запуск контейнера..."
pct start "$CT_ID"
sleep 5
# Проверка
if pct status "$CT_ID" | grep -q "running"; then
log "✅ Контейнер запущен"
else
error "Контейнер не запустился"
fi
# ============================================
# БАЗОВАЯ НАСТРОЙКА
# ============================================
log "Базовая настройка контейнера..."
# Обновление системы
pct exec "$CT_ID" -- bash -c "apt update && apt upgrade -y"
# Установка базовых пакетов
pct exec "$CT_ID" -- bash -c "apt install -y curl wget git sudo"
# ============================================
# ИТОГИ
# ============================================
# Получаем IP (без маски)
CT_IP_CLEAN=$(echo "$CT_IP" | cut -d'/' -f1)
echo ""
echo "=========================================="
echo " LXC контейнер создан!"
echo "=========================================="
echo ""
echo " ID: $CT_ID"
echo " Hostname: $CT_HOSTNAME"
echo " IP: $CT_IP_CLEAN"
echo ""
echo " Вход в контейнер:"
echo " pct enter $CT_ID"
echo " или: ssh root@$CT_IP_CLEAN"
echo ""
echo " Следующий шаг:"
echo " Скопируйте install-gitea-lxc.sh в контейнер"
echo " и запустите его для установки Gitea"
echo ""
echo " pct push $CT_ID /path/to/install-gitea-lxc.sh /root/install-gitea-lxc.sh"
echo " pct exec $CT_ID -- bash /root/install-gitea-lxc.sh"
echo ""
echo "=========================================="