Выложено git push-ем · без простоя

Дневник, который живёт в Telegram

Пишите боту мысли, #теги и фото — он сохранит всё в Postgres, фото в S3, а серию дней посчитает в Redis. Рядом — эмулятор: тот же код бота, что отвечает в Telegram.

FastAPI Postgres Redis S3 экземпляр ea405ed34ac0
Д

Дневник

бот · эмулятор Telegram

📓

Напишите первую запись

Например: «Сегодня запустил свой сервер #победа». Или нажмите /start.

🗒️

Ваш дневник пока пуст

Напишите боту в чат — запись сразу появится здесь. Дневник личный: его видит только этот браузер, а в Telegram — только вы.

Подключите настоящего бота за 4 шага

Сейчас бот работает только во встроенном эмуляторе. Токена нет — и ничего не сломалось: приложение само это заметило.

  1. Создайте бота. Напишите в Telegram @BotFather команду /newbot, придумайте имя — он пришлёт токен вида 123456:ABC….
  2. Положите токен в CI-переменную TELEGRAM_BOT_TOKEN. GitLab: Settings → CI/CD → Variables, включите Masked. GitHub: Settings → Secrets and variables → Actions, и добавьте в .github/workflows/deploy.yml к шагу app-release:
          - run: app-release
            env:
              TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
  3. Впишите имя в service.yaml: secrets: [TELEGRAM_BOT_TOKEN]. Значение в Git не попадает — только имя.
  4. Сделайте git push и откройте этот сайт по https-адресу один раз: приложение само зарегистрирует вебхук /telegram/webhook с секретом, выведенным из токена. Адрес можно задать и явно — секретом PUBLIC_URL.

Что сервер сделал сам

Ничего из этого вы не настраивали — всё появилось при первом git push.

🐘

Postgres

Сервер создал базу и пользователя при первом пуше; таблицы приложение создало само при старте, под pg_advisory_lock, чтобы две версии при выкладке не мешали друг другу.

backup_probe · 1 строка chats · 0 строк notes · 0 строк schema_migrations · 1 строка

Схема версии 1, создана сегодня, 19:53 · Postgres 18.6

Redis

Сервер выдал пользователя Redis, которому доступны только ключи и каналы с префиксом dnevnik-fastapi-1b145d33: — чужие данные он не увидит.

ключей проекта: 1 keys 1 ✓ чужой ключ → NOPERM

SCAN и KEYS запрещены, поэтому приложение само ведёт список своих ключей в dnevnik-fastapi-1b145d33:keys.

🪣

S3-хранилище

Сервер создал бакет и ключ доступа только к нему; фото отдаёт приложение, само хранилище наружу не открыто.

объектов: 1 объём: 19 Б
🔐

Переменные окружения

Пароли и ключи сервер сгенерировал сам и передал приложению через окружение — в Git их нет. Здесь только имена.

PORTDATABASE_URLREDIS_URLS3_ENDPOINTS3_REGIONS3_BUCKETS3_ACCESS_KEY_IDS3_SECRET_ACCESS_KEY TELEGRAM_BOT_TOKEN — нетPUBLIC_URL — нет
🔁

Экземпляр ea405ed34ac0

Каждый выпуск стартует рядом со старым, и посетители переключаются, только когда новый ответил на /healthz; обновите страницу после пуша — имя экземпляра сменится, а данные останутся.

Работает 47 мин