Files
social-graph/deploy
gitrusprusandCursor 5e0af42fce Add local-first SPA architecture and containerized production deploy.
Move data access to use-cases and IndexedDB repositories with optional
remote fallback, changelog/sync ports, and encrypted local backup.
Add production Docker Compose (nginx frontend + optional backend) and
Apache host proxy configuration for deployment.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-29 16:08:02 +03:00
..

Production deploy (контейнеры + прокси на хосте)

Схема:

[Прокси на хосте :80/:443]
        → frontend-контейнер (nginx :8080 на хосте)
        → backend-контейнер  (gunicorn :8000, только при remote)

SPA-маршрутизация (try_filesindex.html) выполняется внутри frontend-контейнера.

1. Подготовка

cd /opt/social-graph
cp deploy/.env.prod.example deploy/.env.prod
# отредактируйте deploy/.env.prod при необходимости

2. Local-first (только frontend)

Рекомендуется для конфиденциальности — данные в браузере (IndexedDB).

docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod build frontend
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod up -d frontend

Проверка:

curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8080/
# ожидается 200

3. Прокси на хосте

Apache2

sudo a2enmod proxy proxy_http headers
sudo cp deploy/apache/social-graph.conf /etc/apache2/sites-available/social-graph.conf
# ServerName и порты (8080 / 8000) — по вашему .env.prod
sudo a2ensite social-graph.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

nginx на хосте

См. deploy/proxy/nginx-host.conf.example.

4. Remote mode (frontend + backend)

В deploy/.env.prod:

VITE_DATA_MODE=remote
DJANGO_SECRET_KEY=...
ALLOWED_HOSTS=your-domain.com

Пересоберите frontend (режим зашивается при build) и поднимите оба сервиса:

docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod build
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod up -d frontend
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod --profile with-backend up -d backend

В deploy/apache/social-graph.conf раскомментируйте блок ProxyPass /api ... перед ProxyPass /.

5. Обновление

git pull
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod build frontend
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod up -d frontend
# при remote — также build/up backend
sudo systemctl reload apache2   # или nginx -s reload

Порты по умолчанию

Сервис Хост (loopback) Внутри контейнера
frontend 127.0.0.1:8080 nginx :80
backend 127.0.0.1:8000 gunicorn :8000

Наружу открыт только прокси на хосте (80/443).