206 lines
4.4 KiB
Markdown
206 lines
4.4 KiB
Markdown
# Миграция 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
|
||
```
|