49 файлов, миграция сделана командой tasks.py check --fix — той самой, ради которой в скрипте оставлена читаемость старой формы. Побочно тот же прогон проставил тег decomposed целям, у которых есть задачи: это его штатная работа. check после миграции зелёный, индексы согласованы. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
33 lines
2.3 KiB
Markdown
33 lines
2.3 KiB
Markdown
# Деплой на rivendell
|
||
|
||
- **Секция:** инфра
|
||
- **Зачем:** Сервис живёт на рабочей машине — телефон достаёт до него только дома
|
||
- **Теги:** goal:deploy
|
||
|
||
Сервис живёт в контейнере на рабочей машине, телефон достаёт до него только
|
||
дома. Вне дома экспорт копится и уезжает пачкой при возвращении — работает, но
|
||
это не то, ради чего заводился всегда доступный VPS.
|
||
|
||
Есть готовый образец: jellybit собирает образ локально и отправляет на сервер
|
||
через `docker save`/`load`, Caddy впереди терминирует TLS. Здесь то же самое.
|
||
|
||
Шаги:
|
||
- сборка образа локально, доставка на rivendell;
|
||
- Caddy: поддомен приёма и поддомен чтения (плюс MCP на нём же);
|
||
- тома под `./data`, конфиг с токенами отдельно, права `0600`.
|
||
|
||
Готово, когда телефон шлёт на публичный адрес из любой сети, а агент читает по
|
||
тому же домену.
|
||
|
||
Зависит от задачи про секреты: выезжать наружу с выключенной проверкой токенов
|
||
нельзя.
|
||
|
||
Этим же переездом закрывается резервное копирование: на сервере пет-проектов
|
||
механизм уже готов, своего заводить не нужно (задача `bekap-dannyh` снята,
|
||
см. `CLOSED.md`). Побочное следствие — до деплоя история существует в одном
|
||
экземпляре на рабочей машине; это и есть цена ожидания.
|
||
|
||
Том стоит смонтировать так, чтобы серверный бекап забирал его без отдельной
|
||
настройки, и снимать копию SQLite через `VACUUM INTO`, а не `cp`: телефон шлёт
|
||
непрерывно, и файл под записью копировать нельзя.
|