Парсит страницу замен https://mpt.ru/izmeneniya-v-raspisanii/ каждый час (кроме 1:00–5:00), сравнивает с последним состоянием и отправляет FCM-уведомления на устройства, у которых в приложении выбрана соответствующая группа.
- Docker и Docker Compose на VPS
- Ключ сервисного аккаунта Firebase (JSON)
- Firebase Console → проект MyMPT.
- ⚙️ Project settings → вкладка Service accounts.
- Generate new private key → скачается JSON-файл.
- Сохраните его как
firebase-service-account.jsonв папкуmpt-replacement-service/на VPS (или в любое место и укажите путь вdocker-compose.ymlв volume).
Важно: не коммитьте этот файл в git. Добавьте в .gitignore:
mpt-replacement-service/firebase-service-account.json
В папке mpt-replacement-service/:
# Ключ уже лежит здесь как firebase-service-account.json
docker compose up -d --buildСервис будет проверять замены каждый час, кроме 1:00–5:00 (по времени контейнера, у нас TZ=Europe/Moscow).
Логи:
docker compose logs -f mpt-replacementОстановка:
docker compose down| Переменная | Описание | По умолчанию |
|---|---|---|
STATE_FILE |
Файл для хранения последнего состояния замен | /data/last_replacements.json |
DATA_DIR |
Каталог для данных (volume) | /data |
GOOGLE_APPLICATION_CREDENTIALS |
Путь к JSON-ключу Firebase в контейнере | /app/firebase-service-account.json |
CRON_SCHEDULE |
Расписание cron (каждый час, кроме 1–5) | 0 0,6-23 * * * |
RUN_ONCE |
Если 1 — одна проверка и выход (для ручного/cron хоста) |
не задано |
TZ |
Часовой пояс | Europe/Moscow в docker-compose |
LOG_LEVEL |
Уровень логов: debug, info, warn, error |
info |
LOG_DIR |
Папка для лог-файла | {DATA_DIR}/logs |
LOG_FILE |
Полный путь к файлу логов (если задан — пишем в файл) | {LOG_DIR}/service.log |
- Логи пишутся в stdout (видны в
docker compose logs) и дополнительно в файлdata/logs/service.log(илиLOG_DIR/LOG_FILE). - Уровень:
LOG_LEVEL=debugдля подробного вывода (парсинг, загрузка состояния, группы без изменений).
- Состояние замен хранится в папке
./data(файлlast_replacements.json). При пересоздании контейнера данные сохраняются, т.к. папка примонтирована с хоста. - Токены FCM и группы читаются из Firestore (коллекция
fcm_tokens), куда пишет приложение.