4.4 KiB
4.4 KiB
Миграция 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
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 Создать бэкап
# Используйте интерактивный скрипт или запустите вручную:
./migration-scripts/backup-gitea-for-migration.sh
Этап 2: Создание LXC контейнера (на Proxmox)
Через CLI:
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 Базовая подготовка
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
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
cp gitea.service /etc/systemd/system/gitea.service
systemctl daemon-reload
systemctl enable gitea
systemctl start gitea
systemctl status gitea
Этап 4: Миграция данных
4.1 Перенос файлов
scp /tmp/gitea-backup-*.tar.gz root@192.168.0.40:/tmp/
4.2 Восстановление данных
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:
[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
systemctl restart gitea
journalctl -u gitea -f
Этап 6: Проверка миграции
- Открыть веб-интерфейс:
http://192.168.0.40:3000 - Войти под существующим пользователем
- Проверить список репозиториев
- Клонировать репозиторий через HTTP
- Клонировать репозиторий через SSH
- Сделать push в репозиторий
Обновление git remote на клиентах:
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 не запускается
journalctl -u gitea -e
cat /var/lib/gitea/log/gitea.log
ls -la /var/lib/gitea/
ls -la /etc/gitea/
Ошибки базы данных
sqlite3 /var/lib/gitea/data/gitea.db "PRAGMA integrity_check;"
Проблемы с SSH
cat /home/git/.ssh/authorized_keys
sudo -u git gitea admin regenerate keys