salgram / README.md
ChessVania's picture
Deploy SalGram (Docker)
484ec23 verified
|
Raw
History Blame Contribute Delete
3.17 kB
metadata
title: SalGram
emoji: 💬
colorFrom: blue
colorTo: indigo
sdk: docker
app_port: 7860
pinned: false

SalGram

Мессенджер на Flask + flask-sock (WebSocket) + SQLite. Аккаунты, профили, личная и групповая переписка, каналы, голосовые, GIF, push-уведомления, модерация.

Запуск на Hugging Face Spaces

Space типа Docker. Контейнер слушает порт 7860 (gunicorn, 1 воркер, многопоточный — этого требует хранение WebSocket-соединений в памяти процесса).

Хранение данных

Все данные (база salgram.db, ключ шифрования, загруженные файлы) пишутся в каталог из переменной SALGRAM_DATA_DIR (по умолчанию /data). На бесплатном Space /data эфемерно — при пересборке/перезапуске/«засыпании» данные пропадают.

Резервное копирование в приватный репозиторий (бесплатная персистентность)

Чтобы данные переживали перезапуски без платного Persistent storage, приложение само раз в 20 минут выгружает консистентную копию БД (вместе с ключом шифрования и медиа) в приватный dataset-репозиторий, а при старте контейнера восстанавливает оттуда (см. hf_backup.py). Код остаётся в публичном Space, а данные лежат только в приватном репо — их видишь и качаешь только ты.

Включается переменными окружения (задаются в Settings → Variables and secrets у Space):

Переменная Тип Назначение
HF_BACKUP_REPO variable id приватного репо, напр. username/salgram-data
HF_TOKEN secret токен с правом записи в этот репо
HF_BACKUP_INTERVAL variable (необяз.) период в секундах, по умолчанию 1200 (20 мин)

Без этих переменных бэкап выключен (no-op) — локальная разработка и Amvera не затронуты. Скачать актуальную БД можно из приватного репо (файл salgram.db).

Ключ шифрования secret.key и VAPID-ключи генерируются автоматически при первом запуске, если их нет (и далее переносятся бэкапом).

Локальный запуск

pip install -r requirements.txt   # десктоп-версия (с pywebview/pystray)
python app.py                     # http://localhost:8000

Для веб/сервера достаточно requirements-web.txt.