Начало работы на одном узле (бинарник + systemd)
Это первая установка в продакшен-форме: один Linux-хост, один статический бинарник, systemd, встроенное хранилище SQLite — и реальный путь первого запуска (одноразовый токен настройки, TLS включён по умолчанию, без учётных данных по умолчанию, без демонстрационных данных). К концу у вас будет Olivares AI, работающий как укреплённый сервис, с подключённым реальным источником и заполненным access graph.
Это тот же движок, который quickstart демонстрирует за пять минут; разница в конфигурации. Если сначала хотите быстро осмотреться, выполните quickstart, а затем вернитесь сюда за реальной установкой.
Каждая команда на этой странице была выполнена в точности так, как написано,
относительно текущего бинарника (баннер первого запуска, путь восстановления токена,
подключение pgAudit и приведённый ниже граф прогоняются в
scripts/quickstart-smoke.sh и были перепроверены для этого руководства).
Предварительные требования
Заголовок раздела «Предварительные требования»- Linux-хост с systemd и
curl. - Go 1.26+ для сборки бинарника (хранилище — это SQLite на чистом Go, поэтому C-toolchain не нужен). Релизы с подписанными предсобранными артефактами появятся в момент первого публичного релиза — до этого вы собираете из чекаута, а проверка релиза документирует цепочку, которую вы будете использовать, когда они появятся.
1. Сборка и установка бинарника
Заголовок раздела «1. Сборка и установка бинарника»-
Соберите единственный статический артефакт (движок + встроенный веб-UI + first-party коннекторы):
Окно терминала task build # produces ./bin/olivares./bin/olivares version -
Установите его и создайте сервисного пользователя:
Окно терминала sudo install -m 0755 bin/olivares /usr/local/bin/olivaressudo useradd --system --home /var/lib/olivares --shell /usr/sbin/nologin olivares
2. Запуск как укреплённого сервиса systemd
Заголовок раздела «2. Запуск как укреплённого сервиса systemd»Создайте /etc/systemd/system/olivares.service:
[Unit]Description=Olivares AI — self-hosted engine for enterprise AIDocumentation=https://olivares.ai/docsAfter=network-online.targetWants=network-online.target
[Service]Type=simpleUser=olivaresGroup=olivaresExecStart=/usr/local/bin/olivares serve \ --listen 127.0.0.1:8443 \ --grpc-listen 127.0.0.1:8444 \ --data-dir /var/lib/olivaresRestart=on-failureRestartSec=5
# The data directory holds the SQLite store, the audit signing key and the TLS# material. StateDirectory creates /var/lib/olivares owned by the service user.StateDirectory=olivaresStateDirectoryMode=0700UMask=0077
# Hardening (mirrors the container posture: non-root, read-only, no escalation)NoNewPrivileges=trueProtectSystem=strictProtectHome=truePrivateTmp=truePrivateDevices=trueProtectKernelTunables=trueProtectKernelModules=trueProtectControlGroups=trueRestrictSUIDSGID=trueRestrictRealtime=trueLockPersonality=trueMemoryDenyWriteExecute=trueSystemCallArchitectures=nativeCapabilityBoundingSet=AmbientCapabilities=ReadWritePaths=/var/lib/olivares
[Install]WantedBy=multi-user.targetsudo systemctl daemon-reloadsudo systemctl enable --now olivaresДвижок по умолчанию привязывается к loopback — 127.0.0.1:8443 выбран намеренно.
Откройте к нему доступ позже, за вашим собственным ingress и TLS, как осознанное
решение (см. укрепление безопасности).
3. Заберите одноразовый токен настройки
Заголовок раздела «3. Заберите одноразовый токен настройки»Свежая установка не имеет учётных данных по умолчанию. При первом запуске движок
чеканит одноразовый токен настройки (olst_…) и печатает его только в stdout —
под systemd это journal:
journalctl -u olivares -o cat | sed -n '/FIRST-BOOT SETUP/,/========================/p'=== FIRST-BOOT SETUP ===No accounts exist yet. Open the console and create the first administratorwith this one-time token — setup also creates your first organization andmakes that administrator its owner:
Console: https://127.0.0.1:8443 Token: olst_…
The console serves HTTPS with a self-signed certificate on first boot — yourbrowser will warn once; that is expected. The token is shown ONCE and issingle-use. Prefer the API? POST /v1/setup {"token":"…","email":"…","password":"…"} — add "organization":"…" to name it (default: "DefaultOrganization"). The reply carries the new organization's tenant_id.========================Создайте первого администратора и войдите:
SETUP="olst_…" # from the banner above
curl -ksf -X POST https://127.0.0.1:8443/v1/setup \ -H 'Content-Type: application/json' \ -d "{\"token\":\"$SETUP\",\"email\":\"you@example.com\",\"password\":\"<strong-password>\"}"
TOKEN="$(curl -ksf -X POST https://127.0.0.1:8443/v1/auth/login \ -H 'Content-Type: application/json' \ -d '{"email":"you@example.com","password":"<strong-password>"}' \ | python3 -c 'import sys,json;print(json.load(sys.stdin)["token"])')"4. Создайте свою первую организацию
Заголовок раздела «4. Создайте свою первую организацию»Всё в продукте привязано к арендатору, так что создайте организацию, в которую будут рапортовать ваши источники:
TENANT="$(curl -ksf -X POST https://127.0.0.1:8443/v1/system/orgs \ -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \ -d '{"name":"Production","slug":"prod"}' \ | python3 -c 'import sys,json;print(json.load(sys.stdin)["tenant_id"])')"echo "tenant: $TENANT"5. Подключите свой первый реальный источник
Заголовок раздела «5. Подключите свой первый реальный источник»Источники объявляются в одном JSON-файле, принадлежащем оператору, имя которого задаётся
OLIVARES_SOURCES_CONFIG, читаемом до запуска движка. Вот источник PostgreSQL
pgAudit (R/RW-сигнал чистого уровня — см.
руководство по pgAudit для настройки на стороне Postgres):
sudo tee /etc/olivares/sources.json >/dev/null <<JSON{"sources":[{ "name": "salesdb-pgaudit", "kind": "pgaudit", "tenant": "$TENANT", "config": { "log_path": "/var/log/postgresql/postgresql.csv", "format": "csvlog" }}]}JSONsudo chmod 0600 /etc/olivares/sources.json && sudo chown olivares: /etc/olivares/sources.jsonУкажите его сервису через drop-in и перезапустите:
sudo systemctl edit olivares[Service]Environment=OLIVARES_SOURCES_CONFIG=/etc/olivares/sources.jsonReadOnlyPaths=/etc/olivaressudo systemctl restart olivaresjournalctl -u olivares -o cat | grep "ingest: wired source"ingest: wired source (in-process fast-path) name=salesdb-pgaudit kind=pgauditЕсли ничего не подключено, движок честно говорит об этом, а не выглядит здоровым на пустой карте — см. устранение неполадок для точных предупреждений и того, что каждое из них означает.
6. Достигните графа
Заголовок раздела «6. Достигните графа»curl -ksf "https://127.0.0.1:8443/v1/m/accessmap/graph?limit=200" \ -H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" | python3 -m json.tool
curl -ksf "https://127.0.0.1:8443/v1/m/accessmap/drift" \ -H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" | python3 -m json.toolТот же граф рендерится во встроенном веб-UI по адресу https://127.0.0.1:8443
(с рабочей станции пробросьте туннель: ssh -L 8443:127.0.0.1:8443 <host>).
7. Прежде чем считать это завершённым
Заголовок раздела «7. Прежде чем считать это завершённым»Два артефакта в каталоге данных решают, переживут ли ваши свидетельства инцидент — займитесь ими сейчас, а не после:
| Артефакт | Почему это важно | Действие |
|---|---|---|
| audit-signing.key | Подписывает append-only audit ledger. Если он потерян, ledger больше нельзя перепроверить. Движок при первом запуске только предупреждает — принудительного эскроу нет. | Сделайте резервную копию вне машины, с правами 0600, сегодня. |
| Публичный ключ ledger | Внешняя копия публичного ключа — это то, что делает проверку устойчивой к атакам после компрометации хоста. | curl -ksf https://127.0.0.1:8443/v1/audit/pubkey и сохраните результат вне машины. |
Затем запланируйте реальные резервные копии — olivares dr backup производит
зашифрованный, безопасный для непрерывности ledger пакет;
руководство по резервному копированию и восстановлению
— это полная процедура, включая тренировку восстановления.
Здоровье и мониторинг
Заголовок раздела «Здоровье и мониторинг»Движок предоставляет /livez (процесс запущен), /readyz (хранилище доступно — это
SLI доступности) и /metrics (Prometheus) на HTTP-слушателе:
curl -ks https://127.0.0.1:8443/readyz# {"leader":true,"setup_required":false,"status":"ok","store":"up"}См. мониторинг с Prometheus для набора метрик, целевых SLO и поставляемых правил алертов.
Следующие шаги
Заголовок раздела «Следующие шаги»- Подключите больше сигналов: руководства по коннекторам — pgAudit, CloudTrail, Claude Code, eBPF и остальной каталог.
- Укрепите развёртывание: укрепление безопасности — экспозиция, mTLS для коллекторов, согласования.
- Управляйте: управление и согласование — RBAC, политики и гарантия записанных решений.