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

144 lines
5.1 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
Скрипты для бэкапа и восстановления Gitea в LXC контейнере на Proxmox.
## Файлы
| Скрипт | Где запускать | Описание |
|--------|---------------|----------|
| `backup-gitea-lxc.sh` | Внутри LXC | Бэкап на уровне приложения |
| `backup-proxmox.sh` | На Proxmox хосте | Оркестрация бэкапа + vzdump |
| `setup-backup-cron.sh` | На Proxmox хосте | Настройка автоматического бэкапа |
| `restore-gitea.sh` | Внутри LXC | Восстановление из бэкапа |
## backup-gitea-lxc.sh
Запускается внутри LXC контейнера. Создаёт:
- `database.sql` — pg_dump базы PostgreSQL
- `gitea-dump.zip` — репозитории, LFS, attachments, avatars
- `app.ini` — конфигурация Gitea
Настройки:
| Переменная | По умолчанию | Описание |
|------------|--------------|----------|
| `BACKUP_BASE` | `/var/backups/gitea` | Директория для бэкапов |
| `DB_USER` | `gitea` | Пользователь PostgreSQL |
| `DB_NAME` | `gitea` | Имя базы данных |
| `KEEP_BACKUPS` | `7` | Сколько бэкапов хранить |
| `REMOTE_BACKUP` | — | scp путь для копирования |
Пример:
```bash
sudo ./backup-gitea-lxc.sh
KEEP_BACKUPS=14 REMOTE_BACKUP=user@nas:/backups ./backup-gitea-lxc.sh
```
## backup-proxmox.sh
Запускается на Proxmox хосте. Выполняет:
1. Запуск `backup-gitea-lxc.sh` внутри контейнера
2. Копирование архива из LXC на Proxmox хост
3. Создание vzdump контейнера (если `DO_VZDUMP=true`)
4. Ротация старых бэкапов
Настройки:
| Переменная | По умолчанию | Описание |
|------------|--------------|----------|
| `LXC_ID` | `300` | ID контейнера Gitea |
| `BACKUP_STORAGE` | `/var/lib/vz/dump` | Где хранить бэкапы |
| `DO_VZDUMP` | `false` | Делать полный бэкап контейнера |
| `VZDUMP_COMPRESS` | `zstd` | Сжатие vzdump |
| `KEEP_BACKUPS` | `7` | Сколько gitea бэкапов хранить |
| `KEEP_VZDUMP` | `3` | Сколько vzdump хранить |
| `REMOTE_BACKUP` | — | scp путь для копирования |
Пример:
```bash
LXC_ID=300 ./backup-proxmox.sh
LXC_ID=300 DO_VZDUMP=true ./backup-proxmox.sh
```
## setup-backup-cron.sh
Настраивает автоматический бэкап через cron.
| Переменная | По умолчанию | Описание |
|------------|--------------|----------|
| `LXC_ID` | `300` | ID контейнера |
| `BACKUP_TIME` | `12:00` | Время ежедневного бэкапа |
Расписание:
- Ежедневно в указанное время: gitea dump + pg_dump
- Воскресенье в 13:00: + полный vzdump контейнера
Пример:
```bash
LXC_ID=300 BACKUP_TIME=03:00 ./setup-backup-cron.sh
```
После установки:
```bash
gitea-backup # ручной запуск
DO_VZDUMP=true gitea-backup # с полным бэкапом
tail -f /var/log/gitea-backup.log
```
## restore-gitea.sh
Восстановление Gitea из бэкапа. Запускается внутри LXC после установки Gitea.
Поддерживает:
- Архивы созданные через `gitea dump`
- Нативные дампы PostgreSQL
- Ручные бэкапы директорий
Настройки:
| Переменная | По умолчанию | Описание |
|------------|--------------|----------|
| `NEW_DOMAIN` | auto | Новый домен/IP |
| `NEW_PORT` | `3000` | HTTP порт |
| `DB_USER` | `gitea` | Пользователь PostgreSQL |
| `DB_NAME` | `gitea` | Имя базы данных |
| `DB_PASSWORD` | `gitea` | Пароль PostgreSQL |
Пример:
```bash
sudo ./restore-gitea.sh /tmp/gitea-backup-20240115-120000.tar.gz
NEW_DOMAIN=git.example.com DB_PASSWORD=secret ./restore-gitea.sh /tmp/backup.tar.gz
```
Выполняет:
1. Распаковка архива
2. Восстановление PostgreSQL
3. Восстановление репозиториев и данных
4. Обновление app.ini для нового сервера
5. Регенерация SSH ключей и Git hooks
6. Запуск Gitea
После восстановления проверьте:
- Авторизация пользователей
- Список репозиториев
- Git clone/push операции
## Структура бэкапа
```
gitea-backup-YYYYMMDD-HHMMSS.tar.gz
├── database.sql # PostgreSQL дамп
├── gitea-dump.zip # Данные Gitea
├── app.ini # Конфигурация
├── gitea-version.txt # Версия Gitea
└── dump.log # Лог gitea dump
```