Chi siamo e Architettura
PgArachne funge da server web leggero e ad alte prestazioni che si interpone tra i tuoi client HTTP e il database PostgreSQL. Elimina la necessità di linguaggi backend tradizionali (come Python, Node.js o PHP) mappando le richieste HTTP direttamente alle funzioni del database.
Capacità Tecniche Principali
- Gateway JSON-RPC 2.0: Tutte le interazioni API seguono la rigorosa specifica JSON-RPC 2.0. Non ci sono endpoint REST da progettare; chiami semplicemente le funzioni SQL per nome tramite richieste POST.
- Autenticazione Nativa DB: Nessuna tabella utenti separata. Gli utenti accedono con le loro reali credenziali PostgreSQL per ricevere un JWT. In alternativa, gli account di servizio possono utilizzare Token API persistenti.
-
Mascheramento dei Ruoli: PgArachne si connette come utente proxy ma esegue ogni
richiesta utilizzando
SET LOCAL ROLEper passare all'identità dell'utente autenticato. La sicurezza a livello di riga (Row-Level Security - RLS) funziona automaticamente. - Server di File Statici: PgArachne può servire asset statici (HTML, JS, CSS), consentendoti di ospitare Single Page Application (SPA) o lo strumento Explorer direttamente.
Questa architettura semplifica drasticamente lo stack: Database ↔ PgArachne ↔ Frontend.
Installazione
Opzione A: Scarica i Binari
Scarica l'ultima versione precompilata per il tuo sistema operativo:
Opzione B: Compila dal Codice Sorgente
git clone https://github.com/heptau/pgarachne.git
cd pgarachne
go build -o pgarachne cmd/pgarachne/main.go
Configurazione Database
Inizializza lo schema pgarachne richiesto per i token API.
psql -d my_database -f sql/schema.sql
Configurazione
PgArachne carica la configurazione dalle variabili d'ambiente o da un file.
.pgpass di PostgreSQL (o alla variabile di sistema
PGPASSWORD) per l'autenticazione.
- Directory corrente:
./pgarachne.env(Tutti i SO) - Configurazione utente:
- Linux / macOS:
~/.config/pgarachne/pgarachne.env - Windows:
%USERPROFILE%\.config\pgarachne\pgarachne.env
- Linux / macOS:
- Configurazione di sistema:
/etc/pgarachne/pgarachne.env(Solo Linux / macOS)
| Variabile | Richiesto | Descrizione |
|---|---|---|
| Connessione Database | ||
DB_HOST |
Sì | Indirizzo del server PostgreSQL (es. localhost). |
DB_PORT |
No | Porta del database. Default: 5432. |
DB_USER |
Sì | L'utente del database con cui PgArachne si connette. |
| Server HTTP | ||
HTTP_PORT |
No | Porta su cui ascoltare. Default: 8080. |
ALLOWED_ORIGINS |
No | Impostazioni CORS. Elenco separato da virgole dei domini consentiti (es.
https://miapp.com).
Default: *.
|
STATIC_FILES_PATH |
No | Percorso assoluto per servire file statici (Explorer/Frontend). |
| Sicurezza (JWT) | ||
JWT_SECRET |
Sì | Una stringa lunga e casuale usata per firmare i token di sessione. |
JWT_EXPIRY_HOURS |
No | Validità della sessione in ore. Default: 8. |
| Logging | ||
LOG_LEVEL |
No | Verbosità: DEBUG, INFO, WARN, ERROR.
Default: INFO. |
LOG_OUTPUT |
No | Dove scrivere i log: stdout o percorso del file. |
PgArachne Explorer
L'Explorer è una potente interfaccia web inclusa nella directory `tools/`. Non è solo documentazione; è una **applicazione demo** completamente funzionale costruita usando HTML/JS che comunica con il database esclusivamente tramite PgArachne.
Cosa può fare?
- Ispezionare API: Legge la funzione `capabilities` per mostrare tutti gli endpoint disponibili e i loro parametri.
- Test dal Vivo: Puoi eseguire le funzioni direttamente dal browser.
- Auto-Documentazione: Renderizza i commenti SQL (inclusi i metadati `--- PARAMS ---`) in una documentazione leggibile.
http://localhost:8080.
Sicurezza e Autenticazione
PgArachne si affida interamente al sistema di permessi di PostgreSQL. Non reinventa le Liste di Controllo
degli Accessi (ACL).
Tutte le query vengono eseguite sotto il ruolo database specifico dell'utente autenticato utilizzando
SET LOCAL ROLE.
1. Login Interattivo (JWT)
Gli utenti si autenticano utilizzando il loro reale nome utente e password PostgreSQL tramite la funzione di login. In caso di successo, ricevono un JWT generico. Quando questo token viene utilizzato, PgArachne cambia il ruolo attivo in quell'utente per la durata della richiesta.
2. Account di Servizio (Token API)
Per sistemi automatizzati o script, puoi utilizzare chiavi API a lunga durata.
- I token sono memorizzati nella tabella
pgarachne.api_tokens. - Ogni token è mappato a un utente/ruolo database specifico.
- Invia il token tramite l'header
Authorization: Bearer <token>.
Configurazione Critica: Privilegi Proxy
Poiché PgArachne si connette come l'utente definito in DB_USER (es.
pgarachne) e cambia identità in altri utenti, l'utente proxy deve essere
membro di quei ruoli di destinazione.
Esegui questo SQL per ogni utente/ruolo che deve accedere:
-- Consenti a 'pgarachne' di passare a 'app_user'
GRANT app_user TO pgarachne;
Deployment e HTTPS
PgArachne è progettato per svolgere bene un solo compito: API Gateway. Per SSL/TLS (HTTPS), sicurezza degli header e routing pubblico, dovresti posizionare un Reverse Proxy davanti ad esso.
Opzione A: Server Caddy
Ideale per: Deployment di produzione moderni, facilità d'uso.
Caddy è l'unico server web che ottiene e rinnova automaticamente i certificati SSL (Let's Encrypt) per impostazione predefinita. Richiede quasi zero configurazione.
# Caddyfile
example.com {
reverse_proxy localhost:8080
}
Opzione B: Nginx
Ideale per: Ambienti enterprise, routing complesso.
Nginx è lo standard industriale per il bilanciamento del carico ad alte prestazioni. Usalo se hai già un'infrastruttura Nginx. Dovrai gestire Certbot manualmente.
server {
server_name example.com;
location / {
proxy_pass http://localhost:8080;
}
}
Opzione C: Ngrok
Ideale per: Sviluppo locale, Demo, test Webhook.
Ngrok crea un tunnel sicuro da internet pubblico direttamente al tuo portatile senza configurare firewall. Ideale per mostrare il tuo lavoro ai colleghi all'istante.
./ngrok http 8080
Codici di Errore
PgArachne restituisce oggetti di errore standard JSON-RPC 2.0. Di seguito sono riportati i codici specifici che potresti incontrare:
| Codice | Messaggio | Significato |
|---|---|---|
-32700 |
Parse error | Il server ha ricevuto JSON non valido. |
-32601 |
Method not found | La funzione non esiste nello schema. |
-32602 |
Invalid params | Gli argomenti non corrispondono alla firma della funzione. |
-32001 |
Permission denied | Il ruolo utente corrente non ha i privilegi per eseguire la funzione (livello DB). |
-32000 |
Internal Error | Errore generico del server (controlla i log). |
Sostieni lo Sviluppo
Sviluppare software open source come PgArachne richiede molto tempo. Se questo strumento ti fa risparmiare tempo, ti preghiamo di considerare di sostenerne la manutenzione.
☕ Diventa un Membro
Unisciti alla community su Buy Me a Coffee. Ottieni aggiornamenti esclusivi, accesso anticipato alle nuove funzionalità e altro ancora.
Sostieni su Buy Me a CoffeeBonifico Bancario
Supporto diretto con 0% di commissioni.
🇺🇸 ACH (USA)
Zbynek Vanzura
827908168786406
Deposit
084009519
TRWIUS35XXX
Wise US Inc, 108 W 13th St, Wilmington, DE, 19801, United States
🇪🇺 SEPA (Euro)
Zbynek Vanzura
BE68905813473834
TRWIBEB1XXX
Wise, Rue du Trône 100, 3rd floor, Brussels, 1050, Belgium
🇨🇿 CZK (Cechia)
Zbynek Vanzura
2300354/2010
Criptovaluta
Supporto tramite asset digitali.
Bitcoin (BTC)
bc1qw8swmnvk48lhcatyw55wz8g4gyjq3vkw0h78g6
USDT (TetherUS)
TPemgxu8jxkjyiHpqrUJyc3dNEs3aPSb2T
0xa689e1c6c8da09fcecca1b9733a22619f56288ff
Binance Pay
Revolut
Il modo più veloce per donare. Supporta Apple Pay, carte di debito o credito.
Licenza e Marchio
Il Codice (Licenza MIT):
Puoi utilizzare il codice sorgente gratuitamente per qualsiasi progetto personale o commerciale. Puoi
modificarlo,
farne un fork e distribuirlo.
Il Marchio (Trademark):
Il nome "PgArachne" e il Logo sono marchi registrati di Zbyněk Vanžura. Se fai un fork del
progetto o offri un servizio commerciale "Managed PgArachne", devi rimuovere il marchio e il logo
originali a meno che tu non abbia ottenuto una licenza speciale.
Copyright © 2025 Zbyněk Vanžura.