Ρύθμιση

4 λεπτά ανάγνωσης

Ρύθμιση

Το PgArachne φορτώνει τη ρύθμιση από μεταβλητές περιβάλλοντος ή από αρχείο.

Σημείωση: Το schema.sql προσπαθεί να δημιουργήσει τον ρόλο pgarachne_admin και να τον χορηγήσει στον pgarachne. Αν εκτελέσετε το script χωρίς δικαιώματα superuser, η δημιουργία ρόλου παραλείπεται. Δημιουργήστε τον ρόλο και χορηγήστε τον χειροκίνητα εάν χρειάζεται.
Ο proxy χρήστης (DB_USER) πρέπει να είναι μέλος των pgarachne και pgarachne_admin για να επικυρώνει και να εκδίδει API tokens.
Σημείωση Ασφαλείας: Το PgArachne δεν διαχειρίζεται κωδικούς πρόσβασης βάσης δεδομένων στο αρχείο ρύθμισης. Βασίζεται στον τυπικό μηχανισμό αρχείου .pgpass της PostgreSQL (ή στη μεταβλητή συστήματος PGPASSWORD) για authentication.
Συμβουλή: Εάν εκτελείτε το PgArachne πίσω από reverse proxy, ορίστε TRUSTED_PROXIES ώστε οι IP των clients να επιλύονται σωστά και το rate limiting να μην μπορεί να παρακαμφθεί.
Σειρά Αναζήτησης: Αν δεν έχει καθοριστεί αρχείο ρύθμισης μέσω CLI, γίνεται αναζήτηση σε:
  1. Τρέχων κατάλογος: ./pgarachne.env (Όλα τα OS)
  2. Ρύθμιση χρήστη:
    • Linux/macOS: ~/.config/pgarachne/pgarachne.env
    • Windows: %USERPROFILE%\.config\pgarachne\pgarachne.env
  3. Ρύθμιση συστήματος: /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 bytes· δημιουργήστε με openssl rand -hex 32).

Λίστα Ελέγχου Ταχείας Επικύρωσης

  • Το JWT_SECRET είναι μεγάλο, τυχαίο, και δεν επαναχρησιμοποιείται σε διαφορετικά περιβάλλοντα.
  • Ο DB_USER μπορεί να μεταβεί μόνο στους αναμενόμενους ρόλους (επιβεβαιώστε τα role membership grants).
  • Το TRUSTED_PROXIES έχει ρυθμιστεί όταν εκτελείται πίσω από reverse proxy.
  • Το LOGIN_RATE_LIMIT είναι ενεργοποιημένο για deployments προσβάσιμα από το διαδίκτυο.
  • Το METRICS_LISTEN_ADDR είναι ιδιωτικό (για παράδειγμα 127.0.0.1:9090).

Αναφορά Ρύθμισης

ΜεταβλητήΑπαιτείταιΠεριγραφή
Σύνδεση με τη Βάση Δεδομένων
DB_HOSTΔιεύθυνση του server PostgreSQL (π.χ. localhost).
DB_PORTΘύρα της βάσης δεδομένων.
DB_USERΟ χρήστης βάσης δεδομένων με τον οποίο συνδέεται το PgArachne.
DB_SSLMODEΛειτουργία SSL της PostgreSQL. Προεπιλογή: require. Ορίστε ρητά disable μόνο για τοπική ανάπτυξη έναντι PostgreSQL χωρίς TLS.
DB_SSLROOTCERTΔιαδρομή προς το CA root certificate (PEM).
DB_SSLCERTΔιαδρομή προς το client certificate (PEM).
DB_SSLKEYΔιαδρομή προς το ιδιωτικό κλειδί client (PEM).
HTTP Server
HTTP_PORTΘύρα ακρόασης. Προεπιλογή: 8080.
API_PREFIXΠρώτο τμήμα διαδρομής URL για όλα τα endpoints βάσης δεδομένων (/jsonrpc, /sse, /mcp). Προεπιλογή: db, δίνοντας διαδρομές όπως /db/:database/jsonrpc. Επιτρέπονται μόνο γράμματα, ψηφία, ενωτικά και κάτω παύλες.
PID_FILEΔιαδρομή προς το αρχείο PID του daemon που χρησιμοποιείται από τα -start/-stop. Προεπιλογή: κατάλογος cache χρήστη OS (fallback: κατάλογος temp).
ALLOWED_ORIGINSΡυθμίσεις CORS. Λίστα επιτρεπόμενων origins χωρισμένων με κόμμα (π.χ. https://myapp.com). Προεπιλογή: μη ορισμένο — τα cross-origin requests browser απενεργοποιούνται. Ορίστε ρητά * για να επιτρέψετε οποιοδήποτε origin.
STATIC_FILES_PATHΑπόλυτη διαδρομή για την εξυπηρέτηση static files (Explorer/Frontend).
Ασφάλεια (JWT)
JWT_SECRETΈνα μεγάλο, τυχαίο string που χρησιμοποιείται για την υπογραφή session tokens. Ελάχιστο 32 bytes· δημιουργήστε με openssl rand -hex 32.
JWT_EXPIRY_HOURSΔιάρκεια ισχύος session σε ώρες. Προεπιλογή: 8.
JWT_ISSUERΑν έχει οριστεί, γράφεται στο claim iss κατά την έκδοση και απαιτείται να ταιριάζει ακριβώς κατά την επικύρωση. Αφήστε το κενό για να παραλείψετε τον έλεγχο issuer.
JWT_AUDIENCEΑν έχει οριστεί, γράφεται στο claim aud κατά την έκδοση και απαιτείται να ταιριάζει κατά την επικύρωση. Αφήστε το κενό για να παραλείψετε τον έλεγχο audience.
JWT_LEEWAYΑνοχή απόκλισης ώρας (clock-skew) για την επικύρωση exp/nbf/iat (π.χ. 30s). Προεπιλογή: 30s.
LOGIN_RATE_LIMITΜέγιστες προσπάθειες σύνδεσης ανά χρονικό παράθυρο. Προεπιλογή: 5. Ορίστε 0 για απενεργοποίηση.
LOGIN_RATE_LIMIT_PER_IPΜέγιστες προσπάθειες σύνδεσης ανά IP client σε όλα τα usernames, ώστε η εναλλαγή usernames να μην παρακάμπτει το όριο. Προεπιλογή: 5× LOGIN_RATE_LIMIT. Ορίστε 0 για απενεργοποίηση.
LOGIN_RATE_WINDOWΔιάρκεια χρονικού παραθύρου rate limit. Προεπιλογή: 1m.
Το rate limiting σύνδεσης είναι ανά instance (in-memory). Σε deployments με πολλαπλά instances, χρησιμοποιήστε κοινό limiter αν χρειάζεστε καθολική εφαρμογή.
TRUSTED_PROXIESΈμπιστες IP/CIDR proxy για τον χειρισμό του X-Forwarded-For. Χωρισμένες με κόμμα. Αν είναι κενό, οι forwarded headers αγνοούνται και η IP client λαμβάνεται από την άμεση σύνδεση.
MAX_REQUEST_BYTESΜέγιστο μέγεθος σώματος request σε bytes. Προεπιλογή: 2097152.
MCP_SQL_ERROR_DETAILΣυμπερίληψη του ανεπεξέργαστου μηνύματος σφάλματος PostgreSQL στα σφάλματα εργαλείων MCP. Τα λεπτομερή σφάλματα βοηθούν τους LLM agents να αυτοδιορθωθούν, αλλά μπορούν να εκθέσουν λεπτομέρειες σχήματος (ονόματα πινάκων και constraints) σε αυθεντικοποιημένους καλούντες. Προεπιλογή: false.
DIRECT_POOL_LIMITΜέγιστος αριθμός διακριτών connection pools διαπιστευτηρίων Basic-Auth. Προεπιλογή: 1000.
METRICS_ENABLEDΕνεργοποίηση αποκλειστικού endpoint μετρικών. Προεπιλογή: true.
METRICS_LISTEN_ADDRΔιεύθυνση listener μετρικών (host:port). Προεπιλογή: 127.0.0.1:9090.
SSE_MAX_CHANNELSΜέγιστα κανάλια ανά σύνδεση SSE. Προεπιλογή: 8.
SSE_MAX_CLIENTSΜέγιστοι ταυτόχρονοι clients SSE ανά βάση δεδομένων. Προεπιλογή: 1000.
SSE_CLIENT_BUFFERΜέγεθος buffer ανά client SSE (μηνύματα). Προεπιλογή: 64.
SSE_SEND_TIMEOUTΜέγιστος χρόνος αναμονής κατά την αποστολή σε αργό client. Προεπιλογή: 2s.
SSE_HEARTBEATΔιάστημα heartbeat για συνδέσεις SSE. Προεπιλογή: 20s.
SSE_IDLE_TIMEOUTTimeout αδράνειας χωρίς notifications. Προεπιλογή: 90s.
Καταγραφή (Logging)
LOG_LEVELΕπίπεδο λεπτομέρειας: DEBUG, INFO, WARN, ERROR. Προεπιλογή: INFO.
LOG_OUTPUTΠού θα γράφονται τα logs: stdout ή διαδρομή αρχείου.

Απαιτείται   Προαιρετικό

Συμπεριφορά ασφαλείας: τα requests χωρίς έγκυρη κεφαλίδα Authorization απορρίπτονται πριν ανοίξει σύνδεση βάσης δεδομένων.

Εκκίνηση του server:

./pgarachne -config .env

Δείτε επίσης