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

206 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Миграция 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
```