diff --git a/docs/PULSE_PUSH_GATEWAY.md b/docs/PULSE_PUSH_GATEWAY.md new file mode 100644 index 0000000..70f422d --- /dev/null +++ b/docs/PULSE_PUSH_GATEWAY.md @@ -0,0 +1,112 @@ +# Pulse Push Gateway + +## Архитектура + +```text +Synapse + ↓ +Pulse Push Gateway + ↓ +Firebase FCM + ↓ +Android Pulse +``` + +## Серверы + +- FastPanel reverse proxy: `192.168.0.221` +- Matrix/Core: `192.168.0.141` + +## Gateway + +Gateway запускается на Matrix/Core сервере: + +```text +192.168.0.141:8509 +``` + +## Установка + +```bash +cd /opt/swchat +mkdir -p push-gateway +cd push-gateway +``` + +Скопировать файлы из репозитория: + +```text +push-gateway/main.py +push-gateway/requirements.txt +``` + +Установка зависимостей: + +```bash +python3 -m venv venv +source venv/bin/activate +pip install -r requirements.txt +``` + +## Firebase + +В Firebase Console: + +- Project settings +- Service accounts +- Generate new private key + +Файл сохранить: + +```text +/opt/swchat/push-gateway/firebase-service-account.json +``` + +## Запуск + +```bash +cd /opt/swchat/push-gateway +source venv/bin/activate +uvicorn main:app --host 0.0.0.0 --port 8509 +``` + +## Проверка + +На VPS/FastPanel: + +```bash +curl http://192.168.0.141:8509/health +``` + +Ожидаемый ответ: + +```json +{ + "status": "ok", + "service": "pulse-push-gateway" +} +``` + +## nginx reverse proxy + +На FastPanel/nginx: + +```nginx +location /_matrix/push/v1/notify { + proxy_pass http://192.168.0.141:8509/_matrix/push/v1/notify; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; +} +``` + +## Важно + +- Не открывать 8509 наружу. +- Доступ к 8509 только из локальной сети. +- SSL остаётся на FastPanel. +- Synapse использует публичный endpoint: + +```text +https://matrix.stackworks.ru/_matrix/push/v1/notify +```