Spaces:
Runtime error
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.