Конфігурація
Швидкий старт
Конфігурація
PgArachne завантажує конфігурацію зі змінних середовища або з файлу.
Примітка:
Проксі-користувач (
schema.sql намагається створити роль pgarachne_admin та надати її ролі pgarachne. Якщо ви запускаєте скрипт без прав суперкористувача, створення ролі буде пропущено. За потреби створіть роль та надайте права вручну.Проксі-користувач (
DB_USER) повинен бути членом pgarachne та pgarachne_admin, щоб перевіряти та видавати API-токени.Примітка щодо безпеки: PgArachne не обробляє паролі бази даних у конфігураційному файлі.
Для автентифікації покладайтеся на стандартний механізм файлу PostgreSQL
.pgpass (або
системну змінну PGPASSWORD).Порада: Якщо ви запускаєте PgArachne за зворотним проксі, встановіть
TRUSTED_PROXIES, щоб IP-адреси клієнтів визначалися коректно і обмеження частоти запитів не можна було обійти.Порядок пошуку: Якщо конфігураційний файл не вказано через CLI, пошук відбувається в такому порядку:
- Поточний каталог:
./pgarachne.env(усі ОС) - Конфігурація користувача:
- Linux/macOS:
~/.config/pgarachne/pgarachne.env - Windows:
%USERPROFILE%\.config\pgarachne\pgarachne.env
- Linux/macOS:
- Системна конфігурація:
/etc/pgarachne/pgarachne.env(лише Linux/macOS)
Приклад мінімальної конфігурації
Це все, що потрібно для початку роботи:
DB_HOST=localhost
DB_PORT=5432
DB_USER=pgarachne
JWT_SECRET=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdefОбов’язкові змінні: DB_HOST, DB_PORT, DB_USER, JWT_SECRET (мінімум 32 байти; згенеруйте за допомогою openssl rand -hex 32).
Швидкий контрольний список перевірки
JWT_SECRETдовгий, випадковий і не використовується повторно в різних середовищах.DB_USERможе перемикатися лише на очікувані ролі (перевірте права членства в ролях).TRUSTED_PROXIESвстановлено, якщо ви працюєте за зворотним проксі.LOGIN_RATE_LIMITувімкнено для розгортань, доступних з інтернету.METRICS_LISTEN_ADDRє приватним (наприклад,127.0.0.1:9090).
Довідник конфігурації
| Змінна | Обов’язкова | Опис |
|---|---|---|
| Підключення до бази даних | ||
DB_HOST | ✓ | Адреса сервера PostgreSQL (наприклад, localhost). |
DB_PORT | ✓ | Порт бази даних. |
DB_USER | ✓ | Користувач бази даних, під яким підключається PgArachne. |
DB_SSLMODE | ○ | Режим SSL PostgreSQL. За умовчанням: require. Встановлюйте disable явно лише для локальної розробки з PostgreSQL без TLS. |
DB_SSLROOTCERT | ○ | Шлях до кореневого сертифіката CA (PEM). |
DB_SSLCERT | ○ | Шлях до клієнтського сертифіката (PEM). |
DB_SSLKEY | ○ | Шлях до приватного ключа клієнта (PEM). |
| HTTP-сервер | ||
HTTP_PORT | ○ | Порт для прослуховування. За умовчанням: 8080. |
API_PREFIX | ○ | Перший сегмент шляху URL для всіх ендпоінтів бази даних (/jsonrpc, /sse, /mcp). За умовчанням: db, що дає маршрути типу /db/:database/jsonrpc. Дозволені лише букви, цифри, дефіси та підкреслення. |
PID_FILE | ○ | Шлях до PID-файлу демона, що використовується для -start/-stop. За умовчанням: кеш-каталог користувача ОС (запасний варіант: тимчасовий каталог). |
ALLOWED_ORIGINS | ○ | Налаштування CORS. Список дозволених джерел, розділених комами (наприклад, https://myapp.com).
За умовчанням: не встановлено — міждоменні запити з браузера вимкнено. Встановіть * явно, щоб дозволити будь-яке джерело. |
STATIC_FILES_PATH | ○ | Абсолютний шлях для надання статичних файлів (Explorer/Frontend). |
| Безпека (JWT) | ||
JWT_SECRET | ✓ | Довгий випадковий рядок, що використовується для підписання токенів сесії. Мінімум 32 байти; згенеруйте за допомогою openssl rand -hex 32. |
JWT_EXPIRY_HOURS | ○ | Термін дії сесії в годинах. За умовчанням: 8. |
JWT_ISSUER | ○ | Якщо встановлено, записується в claim iss під час видачі і повинно точно збігатися під час перевірки. Залиште порожнім, щоб пропустити перевірку видавця. |
JWT_AUDIENCE | ○ | Якщо встановлено, записується в claim aud під час видачі і повинно збігатися під час перевірки. Залиште порожнім, щоб пропустити перевірку аудиторії. |
JWT_LEEWAY | ○ | Допуск на розсинхронізацію годинників для перевірки exp/nbf/iat (наприклад, 30s). За умовчанням: 30s. |
LOGIN_RATE_LIMIT | ○ | Максимальна кількість спроб входу за одне вікно. За умовчанням: 5. Встановіть 0, щоб вимкнути. |
LOGIN_RATE_LIMIT_PER_IP | ○ | Максимальна кількість спроб входу на IP-адресу клієнта за всіма іменами користувачів, тож зміна імен користувачів не дозволяє обійти обмеження. За умовчанням: 5× LOGIN_RATE_LIMIT. Встановіть 0, щоб вимкнути. |
LOGIN_RATE_WINDOW | ○ | Тривалість вікна обмеження частоти. За умовчанням: 1m. |
| Обмеження частоти входу діє в межах одного екземпляра (у пам’яті). У розгортаннях з кількома екземплярами використовуйте спільний лімітер, якщо потрібне глобальне застосування. | ||
TRUSTED_PROXIES | ○ | Довірені IP-адреси/CIDR проксі для обробки X-Forwarded-For. Розділені комами. Якщо порожньо, forwarded-заголовки ігноруються, а IP клієнта береться з прямого з’єднання. |
MAX_REQUEST_BYTES | ○ | Максимальний розмір тіла запиту в байтах. За умовчанням: 2097152. |
MCP_SQL_ERROR_DETAIL | ○ | Включати необроблене повідомлення про помилку PostgreSQL у помилках інструментів MCP. Детальні помилки допомагають LLM-агентам самостійно виправлятися, але можуть розкрити деталі схеми (назви таблиць та обмежень) автентифікованим викликачам. За умовчанням: false. |
DIRECT_POOL_LIMIT | ○ | Максимальна кількість окремих пулів з’єднань облікових даних Basic Auth. За умовчанням: 1000. |
METRICS_ENABLED | ○ | Увімкнути виділений ендпоінт метрик. За умовчанням: true. |
METRICS_LISTEN_ADDR | ○ | Адреса слухача метрик (host:port). За умовчанням: 127.0.0.1:9090. |
SSE_MAX_CHANNELS | ○ | Максимальна кількість каналів на одне з’єднання SSE. За умовчанням: 8. |
SSE_MAX_CLIENTS | ○ | Максимальна кількість одночасних клієнтів SSE на базу даних. За умовчанням: 1000. |
SSE_CLIENT_BUFFER | ○ | Розмір буфера SSE на одного клієнта (кількість повідомлень). За умовчанням: 64. |
SSE_SEND_TIMEOUT | ○ | Максимальний час очікування під час надсилання повільному клієнту. За умовчанням: 2s. |
SSE_HEARTBEAT | ○ | Інтервал heartbeat для з’єднань SSE. За умовчанням: 20s. |
SSE_IDLE_TIMEOUT | ○ | Тайм-аут неактивності без сповіщень. За умовчанням: 90s. |
| Журналювання | ||
LOG_LEVEL | ○ | Рівень деталізації: DEBUG, INFO, WARN, ERROR.
За умовчанням: INFO. |
LOG_OUTPUT | ○ | Куди записувати журнали: stdout або шлях до файлу. |
Обов’язково Необов’язково
Поведінка безпеки: запити без дійсного заголовка Authorization відхиляються ще до відкриття з’єднання з базою даних.
Запустіть сервер:
./pgarachne -config .env