Files
gitea-backup/MIGRATION_GUIDE.md
2026-01-06 22:12:07 +05:00

4.4 KiB
Raw Permalink Blame History

Миграция 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