Лаборатория оптимизации бизнеса
Меню

Документация Портал партнёра

Резервные копии и журналы портала

Работа · обновлено 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>&1
  • 0 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/

Восстановление

  1. Остановите портал: docker compose -f deploy/docker-compose.yml stop api web
  2. Удалите базу: docker compose -f deploy/docker-compose.yml exec -T postgres dropdb -U portal portal
  3. Создайте пустую: docker compose -f deploy/docker-compose.yml exec -T postgres createdb -U portal portal
  4. Восстановите из копии: docker compose -f deploy/docker-compose.yml exec -T postgres pg_restore -U portal -d portal --no-owner < deploy/backups/portal-db-<дата>.dump
  5. Запустите портал: 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, а ключ в ней указан неверно, сначала исправьте ключ.