# Миграция Gitea из Docker VM в LXC контейнер ## Обзор миграции | Параметр | Исходный | Целевой | |----------|----------|---------| | Proxmox Host | 192.168.0.32 | 192.168.0.33 | | IP сервиса | 192.168.0.38 (VM) | 192.168.0.XX (LXC) | | Тип развертывания | Docker в VM | LXC контейнер | --- ## Пошаговая инструкция ### Этап 1: Подготовка (на исходном сервере) #### 1.1 Определить структуру Docker Gitea ```bash ssh user@192.168.0.38 docker ps | grep -i gitea docker volume ls | grep -i gitea docker inspect gitea | jq '.[0].Mounts' ``` #### 1.2 Создать бэкап ```bash # Используйте интерактивный скрипт или запустите вручную: ./migration-scripts/backup-gitea-for-migration.sh ``` --- ### Этап 2: Создание LXC контейнера (на Proxmox) #### Через CLI: ```bash pct create 200 local:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst \ --hostname gitea \ --memory 2048 \ --cores 2 \ --rootfs local-lvm:20 \ --net0 name=eth0,bridge=vmbr0,ip=192.168.0.40/24,gw=192.168.0.1 \ --features nesting=1 \ --start 1 pct enter 200 ``` --- ### Этап 3: Установка Gitea в LXC #### 3.1 Базовая подготовка ```bash apt update && apt upgrade -y apt install -y git sqlite3 wget curl adduser --system --shell /bin/bash --gecos 'Git Version Control' \ --group --disabled-password --home /home/git git ``` #### 3.2 Установка Gitea ```bash mkdir -p /var/lib/gitea/{custom,data,log} mkdir -p /etc/gitea chown -R git:git /var/lib/gitea chown root:git /etc/gitea chmod 770 /etc/gitea GITEA_VERSION="1.25.3" wget -O /usr/local/bin/gitea https://dl.gitea.io/gitea/${GITEA_VERSION}/gitea-${GITEA_VERSION}-linux-amd64 chmod +x /usr/local/bin/gitea gitea --version ``` #### 3.3 Настройка systemd ```bash cp gitea.service /etc/systemd/system/gitea.service systemctl daemon-reload systemctl enable gitea systemctl start gitea systemctl status gitea ``` --- ### Этап 4: Миграция данных #### 4.1 Перенос файлов ```bash scp /tmp/gitea-backup-*.tar.gz root@192.168.0.40:/tmp/ ``` #### 4.2 Восстановление данных ```bash cd /tmp tar -xzf gitea-backup-*.tar.gz systemctl stop gitea # Репозитории cp -r gitea-backup/repositories/* /var/lib/gitea/data/gitea-repositories/ # Данные cp -r gitea-backup/data/* /var/lib/gitea/data/ # База данных (SQLite) cp gitea-backup/gitea.db /var/lib/gitea/data/gitea.db # Для PostgreSQL: # psql -U gitea -d gitea < gitea-backup/gitea-db.sql # Конфигурация cp gitea-backup/app.ini /etc/gitea/app.ini # Права chown -R git:git /var/lib/gitea chown root:git /etc/gitea/app.ini chmod 640 /etc/gitea/app.ini systemctl start gitea ``` --- ### Этап 5: Обновление конфигурации Редактируйте `/etc/gitea/app.ini`: ```ini [server] DOMAIN = 192.168.0.40 HTTP_PORT = 3000 ROOT_URL = http://192.168.0.40:3000/ SSH_DOMAIN = 192.168.0.40 SSH_PORT = 22 [database] PATH = /var/lib/gitea/data/gitea.db [repository] ROOT = /var/lib/gitea/data/gitea-repositories ``` ```bash systemctl restart gitea journalctl -u gitea -f ``` --- ### Этап 6: Проверка миграции - [ ] Открыть веб-интерфейс: `http://192.168.0.40:3000` - [ ] Войти под существующим пользователем - [ ] Проверить список репозиториев - [ ] Клонировать репозиторий через HTTP - [ ] Клонировать репозиторий через SSH - [ ] Сделать push в репозиторий #### Обновление git remote на клиентах: ```bash git remote set-url origin http://192.168.0.40:3000/user/repo.git # или git remote set-url origin git@192.168.0.40:user/repo.git ``` --- ## Troubleshooting ### Gitea не запускается ```bash journalctl -u gitea -e cat /var/lib/gitea/log/gitea.log ls -la /var/lib/gitea/ ls -la /etc/gitea/ ``` ### Ошибки базы данных ```bash sqlite3 /var/lib/gitea/data/gitea.db "PRAGMA integrity_check;" ``` ### Проблемы с SSH ```bash cat /home/git/.ssh/authorized_keys sudo -u git gitea admin regenerate keys ```