Установка из бинарных релизов
Готовый статический исполняемый файл без пакетного менеджера — для контейнеров, immutable-образов и дистрибутивов без deb/rpm. В отличие от пакетов, здесь systemd-юнит, системного пользователя и каталоги состояния вы создаёте вручную.
Какие исполняемые файлы забрать
Заголовок раздела «Какие исполняемые файлы забрать»Исполняемые файлы публикуются в релизе под Linux/amd64:
| Исполняемый файл | Назначение | Куда ставить |
|---|---|---|
keeper | центральный сервер | центральный узел (1+ инстанс) |
soul | агент на хосте | каждый управляемый хост |
soulctl | клиентский CLI оператора | рабочая станция оператора |
soul-lint | офлайн-линтер | рабочая станция оператора / CI |
Скачайте нужные исполняемые файлы из релиза и разложите по /usr/local/bin:
sudo install -m 0755 keeper /usr/local/bin/keepersudo install -m 0755 soul /usr/local/bin/soulsudo install -m 0755 soulctl /usr/local/bin/soulctlsudo install -m 0755 soul-lint /usr/local/bin/soul-lintПроверьте версию сборки (формат <binary> <версия> (<go-runtime>)):
keeper versionsoul versionsoulctl --versionsoul-lint --helpСистемный пользователь и каталоги
Заголовок раздела «Системный пользователь и каталоги»Демоны keeper и soul работают под системным пользователем soul-stack. Бинарный релиз не создаёт его за вас — сделайте это вручную.
На keeper-хосте:
sudo useradd --system --no-create-home --shell /usr/sbin/nologin soul-stacksudo install -d -o soul-stack -g soul-stack /etc/keeper /var/lib/keeperНа soul-хосте:
sudo useradd --system --no-create-home --shell /usr/sbin/nologin soul-stacksudo install -d -o soul-stack -g soul-stack /etc/soul /var/lib/soul-stacksoulctl и soul-lint — клиентские инструменты, отдельного пользователя и каталогов не требуют.
Ручной systemd-юнит
Заголовок раздела «Ручной systemd-юнит»Пакеты несут юнит из коробки; при установке из исполняемых файлов он пишется вручную. Минимальный юнит Keeper-а (/etc/systemd/system/keeper.service):
[Unit]Description=Soul Stack KeeperAfter=network-online.targetWants=network-online.target
[Service]Type=execUser=soul-stackGroup=soul-stackEnvironmentFile=/etc/keeper/keeper.envExecStart=/usr/local/bin/keeper run --config=${KEEPER_CONFIG}Restart=on-failureRestartSec=5sStartLimitIntervalSec=60sStartLimitBurst=5
# hardening (безопасность на первом месте)NoNewPrivileges=trueProtectSystem=strictProtectHome=truePrivateTmp=truePrivateDevices=trueProtectKernelTunables=trueProtectKernelModules=trueProtectControlGroups=trueRestrictSUIDSGID=trueRestrictNamespaces=trueLockPersonality=trueMemoryDenyWriteExecute=true# Единственный writable-путь — стейт-каталог Keeper-а.ReadWritePaths=/var/lib/keeper
[Install]WantedBy=multi-user.targetEnv-файл /etc/keeper/keeper.env задаёт путь к конфигу:
KEEPER_CONFIG=/etc/keeper/keeper.ymlЮнит агента (/etc/systemd/system/soul.service) аналогичен, но с более мягким hardening — Soul применяет Destiny (ставит пакеты, правит файлы, управляет сервисами) и требует реальных привилегий на хосте, поэтому ProtectSystem=strict / MemoryDenyWriteExecute для него не ставятся:
[Unit]Description=Soul Stack Soul agentAfter=network-online.targetWants=network-online.target
[Service]Type=execUser=soul-stackGroup=soul-stackEnvironmentFile=/etc/soul/soul.envExecStart=/usr/local/bin/soul run --config=${SOUL_CONFIG}Restart=on-failureRestartSec=5sStartLimitIntervalSec=60sStartLimitBurst=5
# hardening (мягкий профиль: Soul по природе меняет систему)NoNewPrivileges=truePrivateTmp=trueProtectKernelModules=trueProtectControlGroups=trueRestrictSUIDSGID=trueLockPersonality=true# Стейт-каталог агента: кеш модулей по SHA-256, mTLS-идентичность.ReadWritePaths=/var/lib/soul-stack
[Install]WantedBy=multi-user.targetEnv-файл /etc/soul/soul.env:
SOUL_CONFIG=/etc/soul/soul.ymlВключить и запустить:
sudo systemctl daemon-reloadsudo systemctl enable --now keeper # на keeper-хостеsudo systemctl enable --now soul # на soul-хостеДальше — как в пакетной установке
Заголовок раздела «Дальше — как в пакетной установке»Провижининг Vault (KV-секреты, PKI-engine, AppRole), выпуск серверного TLS-материала Keeper-а, заполнение keeper.yml / soul.yml, bootstrap первого оператора (keeper init) и онбординг агента не зависят от способа установки исполняемых файлов. Полная процедура — Из deb/rpm-пакетов, начиная с шага 2.