Quickstart: запуск за 5 минут
Поднимаем angarabase-server, подключаемся через psql, выполняем базовый
DDL/DML и проверяем, что данные и каталог переживают рестарт.
Требования
- Linux x86_64, glibc ≥ 2.28. Portable-сборка проверяет это сама: при более
старом glibc
angarabase-serverвыходит fail-closed с явным сообщением о несовместимости. - Один из вариантов установки: portable-архив
x86_64-unknown-linux-gnuили сборка из исходников (Rust toolchain — см.rust-toolchain.toml). - Клиент
psql(или любой PostgreSQL-совместимый).
Установка
Portable-архив
VER=0.6.8
mkdir -p /opt/angarabase
tar -xzf angarabase-$VER-x86_64-unknown-linux-gnu.tar.gz -C /opt/angarabase
/opt/angarabase/angarabase-$VER/bin/angarabase-server --version
Сборка из исходников
cargo build --release -p angarabase-server -p angara-cli
# бинарь: target/release/angarabase-server
Шаг 1. Конфиг
AngaraBase не стартует с «магических» дефолтов — путь к данным и адрес задаются
явно. Минимальный angarabase.conf:
[server]
addr = "127.0.0.1:5432"
[storage]
data_directory = "/var/lib/angarabase/data"
transaction_log_directory = "/var/lib/angarabase/txlog"
[logging]
log_level = "info"
Путь к конфигу передаётся флагом --config-path; без флага сервер ищет
/etc/angarabase/angarabase.conf. Если конфиг найден, но содержит устаревшие
ключи, сервер падает fail-closed (exit 78) с их перечислением — молчаливого
отката к дефолтам нет.
Шаг 2. Инициализация инстанса
Однократная инициализация создаёт каталог, data/ и txlog/ по путям из
конфига. --init — отдельный однопроходный режим: бинарь инициализирует
инстанс и завершает работу с кодом 0.
angarabase-server --config-path ./angarabase.conf --init \
--superuser angara_root \
--superuser-password-file ./superuser.pw \
--auth-mode scram --require-auth
--auth-mode scram— SCRAM-SHA-256 (режим по умолчанию;scram— алиас полного имениscram-sha-256).--require-auth— fail-closed: init откажется, если для не-trustрежима не задан пароль суперпользователя.- Пароль:
--superuser-password-file <файл>(рекомендуется) или--superuser-password-env <VAR>. Инлайн-форма--superuser-password '...'тоже есть, но пароль попадёт в историю шелла.
Init печатает instance_id, data_directory, txlog_directory. Повторный
init на уже инициализированном каталоге — fail-closed (already initialized).
⚠️ Insecure-режимы — только явно.
trust/no-auth(без аутентификации) разрешён лишь с явным--insecure-trust:--auth-mode trust --insecure-trust. Без этого флага init откажется. Используйте только в изолированных лабах, не в сети.
Альтернатива без редактирования конфига — переопределить корень инстанса
флагами; тогда data/ и txlog/ создаются под указанным каталогом:
angarabase-server --config-path ./angarabase.conf --init \
--init-root /var/lib/angarabase \
--superuser angara_root --superuser-password-file ./superuser.pw \
--auth-mode scram --require-auth
Шаг 3. Запуск сервера
angarabase-server --config-path ./angarabase.conf
Сервер слушает 127.0.0.1:5432 (из конфига). Бинд на не-loopback адрес без
TLS/auth тоже fail-closed: нужен явный --allow-insecure (или
[security].allow_insecure = true). Это флаг для контролируемых сред, не для
прода.
⚠️
--allow-insecure/--allow-insecure-no-auth/--devвключают небезопасные пресеты (без TLS, без обязательной аутентификации). Допустимы только в dev/test.
Шаг 4. Подключение через psql
psql "host=127.0.0.1 port=5432 user=angara_root dbname=base password=<пароль> sslmode=disable"
base — логическая база по умолчанию (схема public).
SecurityContext (режимы scram / cert)
В режимах scram/cert защищённый SQL (таблицы под RLS, tenant-scoped данные)
требует контекста сессии — иначе политике безопасности не к чему привязаться.
Установите claim сразу после подключения:
SET SESSION CONTEXT 'app.tenant_id' = 'public';
-- эквивалентная краткая форма:
SET app.tenant_id = 'public';
SET SESSION CONTEXT нельзя выполнять внутри открытой транзакции (вернётся
ошибка). Значение читается через current_setting('app.tenant_id') — именно на
нём строятся RLS-политики (см. Авторизация).
Smoke SQL
CREATE TABLE t (id INT PRIMARY KEY, v INT);
INSERT INTO t (id, v) VALUES (1, 10);
INSERT INTO t (id, v) VALUES (2, 20);
SELECT * FROM t ORDER BY id;
Проверка рестартом (DDL переживает перезапуск)
Метаданные CREATE TABLE (каталог) должны сохраняться между перезапусками.
- Остановите сервер (
Ctrl+C). - Запустите снова:
angarabase-server --config-path ./angarabase.conf. - Убедитесь, что таблица на месте:
SELECT table_name FROM sys.tables WHERE table_name = 't';
Интроспекция через sys.*
SELECT * FROM sys.identity;
SELECT * FROM sys.health;
SELECT * FROM sys.settings WHERE name IN ('server.addr', 'storage.data_directory');
SELECT * FROM sys.tables;
SELECT * FROM sys.columns WHERE table_name = 't';
Опционально: shutdown через SQL (fail-closed)
По умолчанию shutdown через SQL выключен (кноб ops.allow_sql_shutdown).
Включить локально/для тестов:
export ANGARABASE_ALLOW_SQL_SHUTDOWN=1
После этого можно запросить остановку из psql:
SELECT sys.request_shutdown();
Операция проходит проверку RBAC и пишется в audit-log; пользователю без прав — отказ.
Если что-то не так
- «Known issues»:
../reference/known-issues.md - Подключение клиентов (DBeaver и др.):
../reference/client-compatibility.md - Сбор артефактов для баг-репорта:
../reference/support.md
Дальше
После того как сервер ответил на psql -h 127.0.0.1 и базовый SELECT
отработал, логичные следующие шаги:
- Что такое AngaraBase — продуктовый обзор: для чего проект, чем отличается от ванильного PostgreSQL.
- Обзор совместимости SQL — что из стандарта можно использовать прямо сейчас.
- Конфигурация — как поднять сервер не из дефолтов, а под свой сценарий.
- Модель безопасности — прежде чем пускать кого-либо ещё, кроме себя.