Read in other languages: English
Написано ИИ. Могут быть ошибки.
Python/FastAPI бэкенд для клиентов FromChat (Android, Web, iOS). Несколько сервисов в Docker: публичный API, контейнер для обработки сообщений, файлы, LiveKit, PostgreSQL. Для продакшена два дополнительных микросервиса — Caddy + HAProxy (compose.prod.yml).
| Возможность | Android | Веб | iOS |
|---|---|---|---|
| Обмен сообщениями и профили | ✅ | ✅ | ❌ |
| Голосовые/видеозвонки | ✅ | ✅ | ❌ |
| Демонстрация экрана | ✅ | ✅ | ❌ |
| Реакции на сообщения | ❌ | ✅ | ❌ |
| Расширенная поддержка вложений | ✅ | ❌ | ❌ |
| Сервис | Порт (dev) | Сеть | Назначение |
|---|---|---|---|
| backend (main) | 8300 | public + services | Публичный API, auth, профили, WebSocket |
| messaging | 8301 | services | Внутренний — сообщения |
| file_storage | 8302 | services | Внутренний — файлы |
| livekit | 8303 / 8304 (+ UDP) | public | Звонки |
| postgres | 127.0.0.1:5432 | services | БД |
| caddy + haproxy | 80/443 (prod) | — | TLS / reverse proxy (compose.prod.yml) |
public — доступ снаружи (main, livekit, …)services — только внутри стека (messaging, file_storage, postgres)| Компонент | Версия / роль |
|---|---|
| Python | 3.12+ |
| FastAPI | API |
| PostgreSQL | БД (отдельные БД/пользователи на сервис) |
| SQLAlchemy 2 + Alembic | ORM и миграции |
| Docker Compose | оркестрация |
| LiveKit | звонки |
| Caddy + HAProxy | продакшен |
watch)scripts/generate-env.sh (ключи VAPID / compliance)git clone https://github.com/fromchat-messenger/backend.git
cd backend
.envФайла .env.example нет — переменные создаёт генератор:
bash scripts/generate-env.sh
Типичные ключи: JWT_SECRET, COMPLIANCE_PUBLIC_KEY, пароли Postgres (POSTGRES_PASSWORD, MAIN_DB_PASSWORD, …), LIVEKIT_*, MESSAGE_RETENTION_DAYS, VAPID, опционально RELEASES_TOKEN / Firebase. Фильтр чата включён по умолчанию (CHAT_FILTER_URL в compose; ENABLE_CHAT_FILTER=0 чтобы выключить).
Также пишется compliance_keypair.txt — приватный ключ храните офлайн.
bash scripts/dev.sh
# то же самое:
docker compose --env-file .env -f compose.yml up --build --watch
Остановить:
docker compose --env-file .env -f compose.yml down --remove-orphans
curl http://localhost:8300/health
# {"status":"healthy","service":"main"}
Swagger: http://localhost:8300/docs
ReDoc: http://localhost:8300/redoc
Клиентский web в dev проксирует backend как /api → сюда на :8300.
docker compose --env-file .env -f compose.yml -f compose.prod.yml up -d
Обычный one-click / опубликованный стек — репозиторий deployment.
Положите firebase-cert.json в корень репозитория (compose монтирует его в контейнер main).
docker compose --env-file .env -f compose.yml logs -f backend
docker compose --env-file .env -f compose.yml ps
lsof -i :8300
Проблемы с БД:
docker compose --env-file .env -f compose.yml exec postgres \
psql -U postgres -c "SELECT 1"
# полный сброс данных (осторожно):
docker compose --env-file .env -f compose.yml down -v
bash scripts/dev.sh) и /health отвечаетПроект распространяется на условиях GNU Affero General Public License v3.0 (как и остальные репозитории FromChat).
Content type
Image
Digest
sha256:4e992680d…
Size
131.8 MB
Last updated
9 days ago
docker pull fromchat/messaging