1.6 KiB
1.6 KiB
Montana Messenger Relay
Federated relay backend for Montana Messenger (montana.quest/messenger).
Stack
- Flask 3 + gunicorn
- PostgreSQL (table: accounts, sessions, messages)
- PyNaCl for ed25519 signature verify
- Listens on 127.0.0.1:5010 (proxied by nginx at /messenger/api/)
Setup (on montana-moscow)
# 1. PostgreSQL
sudo -u postgres createuser -P montana
sudo -u postgres createdb -O montana montana_messenger
sudo -u postgres psql montana_messenger < /opt/app/messenger/schema.sql
# 2. Virtualenv
cd /opt/app/messenger
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
# 3. .env
cp .env.example .env # отредактировать DSN с реальным паролем
# 4. systemd
sudo cp montana-messenger.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now montana-messenger
sudo systemctl status montana-messenger
# 5. nginx
sudo cat nginx-snippet.conf
# скопировать содержимое в /etc/nginx/sites-available/montana_quest перед "location /"
sudo nginx -t && sudo systemctl reload nginx
API
POST /api/auth/challengebody{accountId}→{challengeId, challenge, expiresAt}POST /api/auth/verifybody{accountId, challengeId, signature}→{sessionToken, accountId, expiresAt}POST /api/msg/sendbody{recipient, ciphertext, nonce}(Bearer) →{msgId, createdAt}GET /api/msg/inbox?since=<ms>(Bearer) →{messages: [...]}GET /api/msg/contacts(Bearer) →{contacts: [...]}POST /api/msg/readbody{msgIds}(Bearer) →{ok}GET /api/health→ liveness