Spaces:
Runtime error
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-ключи генерируются автоматически при | |
| первом запуске, если их нет (и далее переносятся бэкапом). | |
| ## Локальный запуск | |
| ```bash | |
| pip install -r requirements.txt # десктоп-версия (с pywebview/pystray) | |
| python app.py # http://localhost:8000 | |
| ``` | |
| Для веб/сервера достаточно `requirements-web.txt`. | |