# Боевой запуск на VPS + виджет на Tilda

Итог: сервис живёт на поддомене **https://widget.furgonlab.ru** (твой VPS), а на сайте Tilda стоит один HTML-блок с кодом виджета. Ниже — по шагам. Домен в примере `widget.furgonlab.ru`; если возьмёшь другой — просто подставляй его везде.

---

## Что понадобится (собери заранее)
1. **IP-адрес VPS** — в панели твоего хостинг-провайдера (там же логин `root` и пароль/ключ).
2. **Доступ к DNS домена furgonlab.ru** — там, где домен зарегистрирован (регистратор: reg.ru, timeweb, cloudflare и т.п.).
3. Пароль для кабинета (придумай свой).

> Пароли и ключи держи у себя — никому не пересылай.

---

## Шаг 1. DNS — поддомен на VPS
В панели DNS домена добавь запись:

| Тип | Имя (host) | Значение |
|-----|------------|----------|
| A   | `widget`   | IP твоего VPS |

Получится `widget.furgonlab.ru → IP`. Обновление DNS занимает от пары минут до часа.
Проверить (на своём Mac, в Терминале): `ping widget.furgonlab.ru` — должен отвечать IP VPS.

---

## Шаг 2. Подключиться к VPS по SSH
На Mac открой приложение **Терминал** и выполни (подставь свой IP):

```bash
ssh root@IP_ТВОЕГО_VPS
```

Первый раз спросит «Are you sure… (yes/no)» → напиши `yes`. Потом введёт пароль (при вводе пароль не отображается — это нормально). Если провайдер дал не `root`, а другого пользователя — используй его и добавляй `sudo` перед командами.

---

## Шаг 3. Загрузить файлы проекта на VPS
Папку `telega-widget` нужно положить в `/opt/telega-widget`. Два способа:

**А. Через FileZilla (проще, у тебя он есть).**
1. Протокол SFTP, хост — IP VPS, пользователь/пароль от SSH, порт 22.
2. Слева найди папку `telega-widget`, справа зайди в `/opt/` и перетащи её туда.

**Б. Через терминал (если умеешь scp).**
```bash
scp -r ~/AI_MEMORY/projects/widget_telega_max/telega-widget root@IP:/opt/
```

Проверь на VPS: `ls /opt/telega-widget` — должны быть `app.py`, `widget.js`, `deploy/` и т.д.

---

## Шаг 4. Задать пароль кабинета
Открой файл службы и поменяй `CHANGE_ME_PLEASE` на свой пароль:

```bash
nano /opt/telega-widget/deploy/furgonlab-widget.service
```
Строка `Environment=ADMIN_PASSWORD=...`. Сохранить в nano: `Ctrl+O`, `Enter`, выйти `Ctrl+X`.

*(Позже, когда захочешь live-обновления новых постов, туда же впишешь `BOT_TOKEN` — но для проверки это не обязательно, backfill и так тянет посты.)*

---

## Шаг 5. Установка одной командой
```bash
cd /opt/telega-widget
bash deploy/deploy.sh
```
Скрипт поставит Python, зависимости, nginx, запустит службу и настроит прокси. В конце подскажет команду для HTTPS.

---

## Шаг 6. Включить HTTPS (Let's Encrypt)
```bash
certbot --nginx -d widget.furgonlab.ru
```
Введи email, согласись с условиями, на вопрос про redirect выбери «2» (перенаправлять на HTTPS). Сертификат обновляется автоматически.

Проверка: открой в браузере **https://widget.furgonlab.ru/cabinet.html** — должна открыться страница входа.

---

## Шаг 7. Настроить виджет в кабинете
1. Зайди на `https://widget.furgonlab.ru/cabinet.html`, введи пароль из Шага 4.
2. Виджет для канала `furgonlab` уже создан. Настрой заголовок/описание/вид, нажми «Сохранить».
3. Справа скопируй **код вставки** — он уже с правильным доменом и `data-wid`.

---

## Шаг 8. Вставить виджет на Tilda
1. В нужную страницу добавь блок **«T123 — HTML»** (раздел «Другое»).
2. Вставь код из кабинета, например:

```html
<div id="tmw"></div>
<script src="https://widget.furgonlab.ru/widget.js"
        data-api="https://widget.furgonlab.ru"
        data-wid="wgt_ХХХХ" async></script>
```

3. Опубликуй страницу. Виджет появится с постами канала.

> Tilda работает по HTTPS, поэтому и `data-api` обязательно `https://…`. Именно ради этого мы поднимали SSL.

---

## Обновление кода в будущем
Заменил файлы (`app.py`/`widget.js`/`cabinet.html`) на VPS → перезапусти службу:
```bash
systemctl restart telega-widget
```
Логи, если что-то не так:
```bash
journalctl -u telega-widget -n 50 --no-pager
```

## Частые вопросы
- **Кабинет не открывается** — проверь `systemctl status furgonlab-widget` и `nginx -t`.
- **На сайте пусто** — открой `https://widget.furgonlab.ru/api/posts?wid=...` в браузере: если постов нет, перезапусти службу (backfill перечитает канал).
- **Смешанный контент (mixed content)** — значит где-то остался `http://`; в коде вставки должен быть только `https://`.
