#!/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 "=========================================="