Начало работы на одном узле (бинарник + systemd)
Это первая установка в продакшен-форме: один Linux-хост, один статический бинарник, systemd, встроенное хранилище SQLite — и реальный путь первого запуска (одноразовый токен настройки, TLS включён по умолчанию, без учётных данных по умолчанию, без демонстрационных данных). К концу у вас будет Olivares AI, работающий как укреплённый сервис, с подключённым реальным источником и заполненным access graph.
Это тот же движок, который quickstart демонстрирует за пять минут; разница в конфигурации. Если сначала хотите быстро осмотреться, выполните quickstart, а затем вернитесь сюда за реальной установкой.
Предварительные требования
Заголовок раздела «Предварительные требования»- Linux-хост с systemd и
curl. - Go 1.26+. Build this tutorial from source; Olivares
0.4is the next release, not yet published.
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Движок по умолчанию привязывается ко всем интерфейсам (:8443): это сервер.
Команда выше передаёт --listen 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.
Passkeys will not work at that address:a browser will not run a passkey ceremony at an IP address. Reach theconsole by a host name.On this machine the same console also answers at https://localhost:8443and at that address the relying party is derived from the name, which theverifier accepts.
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. Используйте свою первую организацию»Первоначальная настройка уже создала вашу организацию. Всё в продукте привязано к арендатору; получите его ID для подключения источников:
TENANT="$(curl -ksf https://127.0.0.1:8443/v1/auth/whoami \ -H "Authorization: Bearer $TOKEN" \ | python3 -c 'import sys,json;print(json.load(sys.stdin)["grants"][0]["tenant"])')"echo "tenant: $TENANT"5. Подключите свой первый реальный источник
Заголовок раздела «5. Подключите свой первый реальный источник»Источники объявляются в одном JSON-файле, принадлежащем оператору, имя которого задаётся
OLIVARES_SOURCES_CONFIG, читаемом до запуска движка. Вот источник PostgreSQL
pgAudit (R/RW-сигнал чистого уровня — см.
руководство по pgAudit для настройки на стороне Postgres):
sudo mkdir -p /etc/olivaressudo 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. Достигните графа»В новой установке accessmap отключён. Как администратор включите
accessmap в Settings > Edition & modules, сохранив остальные выбранные
модули включёнными. Для CLI сначала войдите в этот движок как администратор
через olivares login, затем выполните olivares modules on accessmap. Перед продолжением
дождитесь каждого перезапуска движка; работающие сессии остановятся, и их
можно возобновить. Иначе эти вызовы API вернут 404 module_not_enabled.
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, политики и гарантия записанных решений.