Ops & эксплуатация — обзор
Audience: founder / operator. Эти runbooks позволяют запускать и восстанавливать инфраструктуру Kontinuum без CTO. Раздел описывает как устроена и обслуживается живая инфраструктура.
⚠ Безопасность: здесь только процедуры и расположение секретов — никаких значений (токенов, паролей keystore, приватных ключей). Где лежит секрет — да; что он содержит — нет.
Карта машин (топология)
Платформа разнесена между датацентром (VPS) и домашней сетью (home LAN). Тяжёлые сборки/тесты/эмуляторы идут дома; публичные туннели и сессии — в датацентре.
| Машина | Имя / адрес | Роль | Доступ |
|---|---|---|---|
| head | aruba2-os, 94.177.204.63 | VPS-«голова»: здесь работают сессии Claude/CTO. Нет toolchain (cargo/npm/jdk), нет L3-маршрута в домашнюю сеть. | Достаёт home LAN только через reverse-SSH воркера (ssh worker). |
| worker | gpu-worker, 192.168.1.101 | Дом: RTX 3090 Ti, 48 ядер, 125 GB RAM. Все сборки/тесты/эмуляторы. Хранит канонический clone ~/kontinuum.cloud, GitLab PAT (~/.git-credentials), age-приватник (~/.git-key). | На home LAN; напрямую видит gitlab.local.lan. |
| gitlab-host | 192.168.1.100 | Self-hosted GitLab (gitlab.local.lan, только HTTP :80). | Сегодня доступен только через jump (worker на LAN; снаружи — через head-туннель). |
| aruba1 | 94.177.204.91 | Канал обновлений (updates.kontinuum.cloud), живой kontinuum-node (:4001), Veil-egress. | root-ключ головы авторизован (ssh root@94.177.204.91). |
Не перепутать машины
aruba1 (.91) ≠ aruba2-os / head (.63) — это разные машины. На aruba1 крутится прод (node + updates + Veil) — не трогать веб/сервисы там без причины.
Принцип split-exec
- head держит публичные коннекторы (cloudflared) и сессии. Домашний аплинк не выдерживает порт
7844cloudflared — поэтому connector обязан жить на датацентр-хосте, никогда в домашней сети. - worker держит секреты и инструменты. Редактирование может идти на head, но сборка/тест/git-операции с секретами — на worker.
- Связь head↔home идёт только через reverse-SSH, который инициирует worker (
head-tunnel.serviceна воркере): домашняя сеть за NAT, head не может постучаться внутрь сам.
Runbooks
| Runbook | Что покрывает |
|---|---|
| Туннели | CF-туннели (gitlab / updates / legal), их состав и восстановление. |
| Секреты | age-хранилище секретов, ротация, корневой ключ. |
| Релизы | Сборка, подпись и публикация APK (текущий ручной поток). |
| Бэкапы | Что бэкапится, как восстановить, известные пробелы. |
| GitLab бэкап/restore | Бэкап данных инстанса GitLab (БД/issues/MR/CI/registry) + секреты, off-host на worker, расписание и restore. |
Быстрая диагностика «что живо»
| Сервис | Хост | Проверка |
|---|---|---|
| GitLab публично | head | curl -sI https://gitlab.kontinuum.cloud (ожидается CF Access 302) |
| Канал обновлений | aruba1 | curl -s https://updates.kontinuum.cloud/latest.json |
| reverse-SSH home | head | ssh -o ConnectTimeout=6 worker true && echo ok |
| kontinuum-node | aruba1 | `ssh root@94.177.204.91 'ss -ltnp |