diff --git a/docs/drafts/timeweb-migration-log.md b/docs/drafts/timeweb-migration-log.md index b1765bf..903970c 100644 --- a/docs/drafts/timeweb-migration-log.md +++ b/docs/drafts/timeweb-migration-log.md @@ -8,6 +8,69 @@ --- +## Шаг 8 — VPS заказан, пользователь `major` создан (2026-05-23, выполнено) + +Заказан Cloud VPS в Timeweb по тарифу из плана (4 × 3.3 ГГц, 8 ГБ RAM, +80 ГБ NVMe, Ubuntu 24.04 LTS), ДЦ Санкт-Петербург. + +Первая выданная VPS попала на гипервизор с битой сетью: TCP-handshake +проходил нормально, но первый data-сегмент в любой TCP-сессии не +доставлялся ни в одну сторону. Подтверждено: + +- `nc -l 12345` на сервере не получал данные от клиента, при этом + клиент видел `Connection succeeded`; +- strace зависшего `sshd: [accepted]`-child показывал + `read(socket, ..., 1) = ERESTARTSYS`, далее `SIGALRM` через 120 сек + по `LoginGraceTime` → exit (т.е. sshd ушёл в `read()` за клиентским + баннером и не дождался); +- `iptables -S` / `nft list ruleset` / `ufw status` — пусто, локального + firewall нет; +- исходящие соединения с VM (`curl http://example.com`) работали + штатно — ломались только входящие data-сегменты после handshake. + +Ребут и переустановка ОС из панели не помогли. Пересоздал VPS в ДЦ СПб +с новым IP — заработало с первой попытки. Потеря времени ~1 час; на +будущее: при таком паттерне сразу пересоздаём в другом ДЦ, глубже +диагностику не ведём (это однозначно проблема сети провайдера). + +### Bootstrap пользователя `major` + +На свежей VPS только root по SSH-ключу. Поднял пользователя +аналогично YC-серверу — sudo через NOPASSWD, вход только по ключу. +Дальше `geerlingguy.security` + `roles/owner` пересоздадут пользователя +идемпотентно с теми же uid/gid и приклеят политику sshd при первом +прогоне ансибла. + +```bash +# 1. Создать пользователя с home и bash, добавить в sudo +useradd -m -s /bin/bash major +usermod -aG sudo major + +# 2. NOPASSWD-политика sudo +echo 'major ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/major +chmod 0440 /etc/sudoers.d/major +visudo -cf /etc/sudoers.d/major # должно сказать "parsed OK" + +# 3. SSH-ключ (тот же, что залит для root при создании VPS) +install -d -m 700 -o major -g major /home/major/.ssh +install -m 600 -o major -g major \ + /root/.ssh/authorized_keys \ + /home/major/.ssh/authorized_keys +``` + +Проверка с локальной машины: + +```bash +ssh major@<новый-ip> +sudo whoami # root, без пароля +``` + +Прошло. Root-доступ по SSH пока оставлен как резервный канал — первый +прогон ансибла отключит его через `geerlingguy.security` +(`PermitRootLogin no`, `PasswordAuthentication no`). + +--- + ## Шаг 7 — `run-app` тег + унификация registry (2026-05-22, выполнено) По итогам аудита подготовительных задач выявлены и закрыты две