# Бэкап и восстановление 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 ```