Files
social-graph/deploy/README.md
T
gitrusprusandCursor 35ec4c81ec Add import/export, graph UX improvements, and contact management fixes.
Support vCard import and multi-format export, bulk delete with reliable local persistence, Ctrl+link relation creation, cluster-colored graph visualization, and right-click context menus for node details.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-23 11:36:13 +03:00

4.1 KiB
Raw Blame History

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

Схема

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

SPA-маршрутизация (try_filesindex.html) — внутри frontend-контейнера (frontend/nginx.conf).

1. Клонирование и подготовка

git clone <repo-url> /opt/social-graph
cd /opt/social-graph
git checkout main   # или нужная ветка

cp deploy/.env.prod.example deploy/.env.prod
# отредактируйте deploy/.env.prod

deploy/.env.prod в git не коммитится (секреты и локальные порты).

2. Local-first (рекомендуется)

Данные пользователя — в браузере (IndexedDB). Backend на сервере не поднимать.

В deploy/.env.prod:

VITE_DATA_MODE=local
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod up -d --build 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 и при необходимости порты (FRONTEND_PORT / BACKEND_PORT из .env.prod).

sudo a2ensite social-graph.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

HTTPS:

sudo certbot --apache -d your-domain.com

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,www.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 --build frontend
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod --profile with-backend up -d --build backend

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

sudo a2enmod proxy proxy_http headers
sudo systemctl reload apache2

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

cd /opt/social-graph
git pull
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod up -d --build frontend
# при remote:
# docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod --profile with-backend up -d --build backend
sudo systemctl reload apache2   # или: sudo nginx -s reload

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

Переменная Значение Назначение
FRONTEND_PORT 8080 nginx в контейнере sg_frontend
BACKEND_PORT 8000 gunicorn в контейнере sg_backend
FRONTEND_BIND 127.0.0.1 только loopback на хосте

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

Миграция данных

Источник Действие
CSV / JSON / vCard (.vcf) UI → Импорт
Старый Django SQLite экспорт JSON → Импорт
Локальный бэкап .json / .sgpkg UI → «Импорт бэкапа»

Устранение неполадок

docker compose -f docker-compose.prod.yml ps
docker logs sg_frontend --tail 50
docker logs sg_backend --tail 50   # если поднят

Конфликт имени контейнера с dev: остановите docker compose down в том же каталоге перед prod-запуском.