Files
2026-10-21 03:30:38 +02:00

3.7 KiB

D-004. Dev и prod на одном сервере под разными пользователями

Статус: принято, 21.10.2026.

Контекст

Dev и prod живут на одном сервере без Docker. Редактор и сессии Claude работают в dev и не должны иметь доступа к prod.

Решение

dev prod
Пользователь ОС vx_dev vx_prod
Папка /home/vx_dev/veilix_dev /home/vx_prod/veilix
База и роль veilix_dev, роль vx_dev veilix_prod, роль vx_prod
Порт 3100 3000
Домены dev.veilix.app, dev.my.veilix.app, dev.tg.veilix.app, так же для veilixvpn.com; dev.plc.veilix.cc основные; plc.veilix.cc
  1. vx — личный пользователь администратора, к проекту отношения не имеет.
  2. Вся разработка — под vx_dev: VSCode (Remote-SSH), Claude Code и другие ИИ-агенты запускаются только под этим пользователем.
  3. Под vx_prod — только prod: a. редактора и ИИ-агентов нет, VSCode Remote под vx_prod не подключаем: при подключении VSCode ставит на сервер свою серверную часть и может подтянуть туда расширения, в том числе ИИ-агентов; b. своего SSH-входа нет, под vx_prod заходят из root (sudo -iu vx_prod).
  4. Оба окружения запускаются одинаково — systemd user-юнитами, каждый у своего пользователя.
  5. Домашние папки — 750, владелец — сам пользователь: секреты, файлы и логи prod сессиям Claude недоступны.
  6. В базу каждый пользователь ОС входит только своей ролью (peer через Unix-сокет), паролей нет; чужие базы закрыты REVOKE CONNECT … FROM PUBLIC.
  7. Код попадает в prod только через Gitea: из dev публикуется тег, vx_prod забирает его ключом только на чтение и собирает релиз.
  8. Выкладку запускает пользователь под vx_prod. По желанию — sudo-правило, разрешающее vx_dev запускать от имени vx_prod только команду выкладки (Q-18).
  9. Домены хранятся в базе, поэтому у dev просто свои записи в своей базе.

Рассмотренные варианты

  1. Один пользователь для обоих окружений — проще, но сессии Claude и любой процесс dev технически достают до секретов и базы prod.
  2. Prod под личным пользователем vx — под ним работают редактор и ИИ-агенты, защита держалась бы только на дисциплине.
  3. Docker-контейнеры для изоляции — пользователь не хочет Docker.

Последствия

  1. Ошибки prod сессии Claude не видят напрямую: логи присылает пользователь.
  2. Отдельные deny-правила Claude Code для prod не нужны.
  3. Переезд разработки на vx_dev — задача R-00 (09-infrastructure.md, раздел 8).