Резервные копии и журналы портала
Работа · обновлено 26 октября 2026 г.
Все команды — из каталога установки (cd /opt/portal).
Резервная копия
Копию делает скрипт deploy/scripts/backup.sh. Он сохраняет дамп базы (проверяется после записи) и файл лицензии в BACKUP_DIR (по умолчанию deploy/backups). Копии старше BACKUP_KEEP_DAYS дней (по умолчанию 14) удаляются.
Запуск по расписанию — в crontab root на сервере (sudo crontab -e), двумя строками:
15 3 * * * /opt/portal/deploy/scripts/backup.sh >> /var/log/portal-backup.log 2>&10 4 * * 0 /opt/portal/deploy/scripts/restore-check.sh >> /var/log/portal-backup.log 2>&1
restore-check.sh раз в неделю проверяет, что свежая копия действительно восстанавливается: разворачивает её во временную базу рядом с рабочей, проверяет данные и удаляет временную базу. Рабочие данные не затрагиваются. Строка restore check OK в журнале — копия пригодна.
Копии нужно выносить на другой сервер — копия на том же диске не спасёт при отказе сервера. Например, после backup.sh строкой в том же crontab (сервер копий — ваш): 45 3 * * * rsync -a --delete /opt/portal/deploy/backups/ backup@backup-host:/srv/portal-backups/
Восстановление
- Остановите портал:
docker compose -f deploy/docker-compose.yml stop api web - Удалите базу:
docker compose -f deploy/docker-compose.yml exec -T postgres dropdb -U portal portal - Создайте пустую:
docker compose -f deploy/docker-compose.yml exec -T postgres createdb -U portal portal - Восстановите из копии:
docker compose -f deploy/docker-compose.yml exec -T postgres pg_restore -U portal -d portal --no-owner < deploy/backups/portal-db-<дата>.dump - Запустите портал:
docker compose -f deploy/docker-compose.yml start api web
Лицензию после восстановления загрузите заново через админку, если она менялась.
Журналы
- Журналы контейнеров Docker хранит не больше 5 файлов по 10 МБ на сервис:
docker compose -f deploy/docker-compose.yml logs api - Журнал безопасности (раздел «Журнал» в админке) хранится
AUDIT_RETENTION_DAYSдней (по умолчанию 730); более старые записи удаляются раз в сутки, удаление тоже записывается в журнал.0— хранить всё. - Защита от перебора: 30 неверных кодов входа в час или 20 запросов с неверным API-ключом за 10 минут с одного IP блокируют этот IP на оставшееся время окна. Если 1С ходит через прокси с общим IP, а ключ в ней указан неверно, сначала исправьте ключ.