This commit is contained in:
2026-01-06 22:12:07 +05:00
commit 12f57baa26
13 changed files with 3110 additions and 0 deletions

205
MIGRATION_GUIDE.md Normal file
View File

@@ -0,0 +1,205 @@
# Миграция 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
```