Эксплуатация - major1ink/Beacon-Table GitHub Wiki
Здесь собрано то, что нужно столу, который уже работает: журнал, проверка живости, резервные копии и обновление.
Проверка живости
GET /healthz отвечает 200, если сервер работает и база откликается, и 503, если нет. Эту точку можно отдать мониторингу, systemctl или healthcheck в Docker (в образе он уже настроен). Авторизация не нужна, ручка сообщает только статус и версию.
Журнал
Журнал пишется в два места: на стандартный вывод (терминал, docker logs, journald) и в файл data/beacon.log. Файл нужен в первую очередь тем, кто запускает программу двойным кликом. Окна консоли в этом случае нет, и без файла не увидеть ни временный пароль ведущего, ни причину, по которой стол не запустился. Когда файл разрастается, журнал начинается заново, а прошлый остаётся рядом как beacon.log.1.
Подробность журнала задаёт BEACON_LOG_LEVEL (debug, info, warn, error), формат — BEACON_LOG_FORMAT (text или json), путь к файлу — BEACON_LOG_FILE. Значение off выключает запись в файл. Так уже настроено в образе Docker и в юните systemd, где журнал собирают снаружи.
BEACON_LOG_LEVEL=info
BEACON_LOG_FORMAT=text
BEACON_LOG_FILE=
На уровне info в журнал попадают события: запуск, смена мира, бэкапы. На warn остаются только неудачные входы, отклонённые подключения и повреждённые данные. На debug добавляется строка на каждый запрос к API. Это удобно, когда разбираете проблему, но журнал растёт быстро.
Статика и загруженные файлы в журнал не пишутся ни на одном уровне: одна открытая карта даёт десятки запросов.
Резервные копии
Резервное копирование включено по умолчанию. Раз в сутки и один раз при старте программа делает снимок базы через VACUUM INTO и складывает его вместе с каталогами данных и загрузок в архив data/backups/beacon-backup-*.tar.gz. Просто скопировать файл SQLite на работающей системе нельзя, снимок получится битым.
Каждый архив сразу проверяется: если снимок из него не открывается, архив не сохраняется. Хранятся последние 7 архивов.
Настройки задаются в beacon.conf:
BEACON_BACKUP_ENABLED=true # выключить: false
BEACON_BACKUP_DIR=data/backups # лучше на отдельный диск/том
BEACON_BACKUP_INTERVAL=24h
BEACON_BACKUP_KEEP=7
Чтобы сделать копию прямо сейчас, выполните:
./beacon-table backup
Как восстановить из копии
- Остановите сервер.
- Распакуйте архив в корне рабочей папки, на место каталогов данных и загрузок:
tar xzf beacon-backup-….tar.gz - Запустите сервер снова.
После восстановления программа выпустит новый временный пароль для dm. Он лежит в dm-password.txt рядом с beacon.conf и есть в журнале запуска. Если свой пароль вы задали ещё до бэкапа, работает он, и новый не выпускается.
Обновление
Порядок одинаковый для любого способа запуска:
- Остановите стол.
- На всякий случай снимите свежую копию. Автоматические копии тоже есть, но изменений после последнего снимка в них нет.
- Замените исполняемый файл или образ.
- Запустите стол.
Схема базы обновляется сама при старте, вручную ничего мигрировать не нужно.
Откатиться на версию старше той, что уже открывала базу, не получится. Сервер откажется работать с такой базой и напишет «база создана более новой версией Beacon Table… — обновите приложение». Данные при этом не пострадают. Вернуться на старую версию можно только восстановлением из копии, старый исполняемый файл тут не поможет.
Исполняемый файл или служба systemd
sudo systemctl stop beacon-table # при ручном запуске: кнопка «Выключить сервер» или Ctrl+C
cp -r data uploads /где-то/бэкап-перед-обновлением/ # необязательно: своя копия в дополнение к автоматическим
# скачайте новый файл со страницы Releases и замените им старый
# (то же имя, что в ExecStart юнита, или переименуйте под старое)
sudo systemctl start beacon-table
Docker Compose
По умолчанию стол запущен из готового образа. Чтобы обновить его, выполните:
docker compose pull && docker compose up -d
Если вы переключили стол на сборку из исходников (build: ., см. Запуск в Docker), подтяните исходники и пересоберите образ:
git pull && docker compose up -d --build
Тома beacon-data и beacon-uploads в обоих случаях остаются нетронутыми.
Из исходников
git pull
task build # или: go build -o beacon-table ./cmd/beacon-table
Затем перезапустите стол так же, как запускаете обычно.
Как узнать версию
Установленную версию покажет команда ./beacon-table --version. Ещё она написана в углу экрана входа и отдаётся по GET /api/version.