AthenaNet non è soltanto un sito web. Dietro le pagine che puoi visitare dal browser esiste un’intera infrastruttura server che ospita servizi web, strumenti di collaborazione, sistemi di comunicazione, applicazioni e automazioni.
Tutto questo vive all’interno di una VPS (Virtual Private Server), cioè un server virtuale dedicato all’interno di un’infrastruttura fisica più grande.
In questo articolo vediamo come è organizzata la VPS di AthenaNet, quali tecnologie utilizza e come i diversi servizi collaborano tra loro.
Che cos’è una VPS?
Una VPS è un server virtuale che dispone di proprie risorse e di un proprio sistema operativo.
Dal punto di vista dell’amministratore, una VPS può essere gestita praticamente come un normale server fisico: è possibile installare software, configurare utenti, servizi, firewall, database, server web e applicazioni.
Nel caso di AthenaNet, la VPS è utilizzata come una sorta di laboratorio informatico permanente, nel quale convivono diversi servizi con funzioni differenti.
L’obiettivo non è semplicemente pubblicare un sito, ma costruire un’infrastruttura nella quale poter sperimentare tecnologie, imparare, sviluppare applicazioni e offrire servizi alla comunità.
Il sistema operativo: Debian
Alla base dell’intera infrastruttura troviamo Debian GNU/Linux.
Debian è il sistema operativo sul quale vengono eseguiti i principali servizi della VPS.
La scelta di Linux permette di avere un ambiente estremamente flessibile e adatto all’amministrazione di server: ogni componente può essere configurato separatamente e i servizi possono essere isolati e gestiti attraverso systemd, Docker, reverse proxy e database dedicati.
La struttura può quindi essere vista come una serie di livelli:
┌──────────────────────────────────────────────┐
│ INTERNET │
└──────────────────────┬───────────────────────┘
│
▼
┌──────────────────────────────────────────────┐
│ FIREWALL / RETE │
└──────────────────────┬───────────────────────┘
│
▼
┌──────────────────────────────────────────────┐
│ NGINX │
│ Reverse Proxy / HTTPS │
└──────────────┬───────────────┬───────────────┘
│ │
┌───────▼──────┐ ┌─────▼──────────┐
│ Servizi Web │ │ Servizi diretti│
└───────┬──────┘ └─────┬──────────┘
│ │
┌───────┼────────┐ │
│ │ │ │
▼ ▼ ▼ ▼
WordPress Forgejo Lemmy InspIRCd
│ │ │ │
│ │ │ ├── ZNC
│ │ │ └── The Lounge
│ │ │
▼ ▼ ▼
MariaDB Git PostgreSQL
│
│
┌─────▼─────┐
│ n8n │
│ Docker │
└───────────┘
Athena Bot
│
▼
Telegram + API
Questa rappresentazione è semplificata: nella realtà ogni servizio ha processi, porte, utenti e configurazioni proprie.
Nginx: il punto di ingresso dei servizi web
Uno dei componenti centrali dell’infrastruttura è Nginx.
Nginx svolge principalmente il ruolo di web server e reverse proxy.
Quando un utente visita un dominio di AthenaNet, la richiesta arriva al server web e Nginx decide a quale servizio inoltrarla.
Questo permette di utilizzare diversi domini e percorsi senza dover esporre direttamente ogni applicazione su Internet.
Per esempio:
athena-net.org
│
▼
Nginx
│
▼
WordPress
mentre:
git.athena-net.org
│
▼
Nginx
│
▼
Forgejo
e:
community.athena-net.org
│
▼
Nginx
│
▼
Lemmy
Lo stesso principio viene utilizzato per altri servizi.
Nginx permette inoltre di gestire HTTPS, certificati TLS, redirect, header HTTP e altre funzioni comuni a tutti i servizi web.
WordPress: il sito principale
Il sito pubblico di AthenaNet è realizzato con WordPress.
WordPress costituisce il livello editoriale dell’infrastruttura: attraverso di esso vengono pubblicati articoli, pagine e informazioni relative al progetto.
Il sito utilizza PHP attraverso PHP-FPM.
La comunicazione può essere rappresentata in questo modo:
Browser
│
▼
Nginx
│
▼
PHP-FPM
│
▼
WordPress
│
▼
MariaDB
Nginx riceve la richiesta HTTP, PHP-FPM esegue il codice PHP necessario e WordPress utilizza MariaDB per memorizzare contenuti, utenti, configurazioni e altri dati.
MariaDB: il database di WordPress
WordPress utilizza MariaDB come database relazionale.
Nel database vengono conservati, tra le altre cose:
- articoli;
- pagine;
- utenti;
- impostazioni;
- categorie;
- menu;
- dati dei plugin;
- configurazioni del tema.
Il database non è normalmente esposto direttamente a Internet: viene utilizzato dai servizi locali che ne hanno bisogno.
Questo principio è importante nella progettazione di un server: non tutto ciò che esiste sulla VPS deve essere direttamente raggiungibile dall’esterno.
Forgejo: il server Git di AthenaNet
AthenaNet dispone anche di un proprio server Git attraverso Forgejo.
Forgejo permette di ospitare repository Git direttamente sulla VPS.
La struttura è:
Internet
│
▼
git.athena-net.org
│
▼
Nginx
│
▼
Forgejo
Forgejo viene utilizzato per conservare e gestire il codice sorgente dei progetti.
Questo rende possibile avere un ambiente Git completamente indipendente dai servizi esterni e utilizzare AthenaNet anche come laboratorio per lo sviluppo software.
La Community: Lemmy e PostgreSQL
Una delle evoluzioni più importanti dell’infrastruttura è la presenza della Community AthenaNet.
La Community utilizza Lemmy, una piattaforma decentralizzata per comunità e discussioni.
Il servizio è raggiungibile attraverso:
community.athena-net.org
La struttura è:
Browser
│
▼
Nginx
│
▼
Lemmy
│
▼
PostgreSQL
Lemmy utilizza PostgreSQL come database.
Questo introduce quindi nella VPS un secondo importante sistema di gestione dei dati, distinto da MariaDB utilizzato dal sito WordPress.
La separazione dei database permette ai diversi servizi di utilizzare tecnologie e strutture dati adatte alle proprie esigenze.
La Community rappresenta inoltre una parte importante della filosofia di AthenaNet: la conoscenza non viene solamente pubblicata, ma può essere discussa, condivisa e costruita collettivamente.
n8n: automazione dei servizi
Un altro componente dell’infrastruttura è n8n, una piattaforma per l’automazione dei workflow.
n8n permette di collegare servizi differenti e creare processi automatici.
Per esempio, un workflow può ricevere un evento, elaborare dei dati, effettuare una richiesta HTTP e successivamente inviare il risultato a un altro servizio.
La struttura di n8n è basata su Docker:
Nginx
│
▼
n8n
│
▼
PostgreSQL
L’utilizzo di Docker permette di isolare l’applicazione e le sue dipendenze dal resto del sistema.
n8n apre inoltre la possibilità di utilizzare AthenaNet non soltanto come piattaforma di pubblicazione, ma come infrastruttura capace di eseguire automaticamente operazioni e collegare servizi differenti.
IRC: InspIRCd, ZNC e The Lounge
AthenaNet dispone anche di un’infrastruttura IRC.
Il componente principale è InspIRCd, il server IRC.
La comunicazione IRC può essere rappresentata così:
Client IRC
│
▼
InspIRCd
│
├── utenti IRC
│
└── ZNC
ZNC svolge il ruolo di bouncer IRC.
Permette di mantenere le connessioni ai network IRC e conservare la sessione anche quando il client dell’utente non è collegato.
AthenaNet dispone inoltre di The Lounge, un client IRC accessibile dal browser.
La struttura diventa quindi:
Browser
│
▼
The Lounge
│
▼
InspIRCd
│
▼
Canali IRC
In questo modo l’utente può utilizzare IRC anche senza installare un client dedicato sul proprio computer.
L’infrastruttura IRC rappresenta uno degli aspetti più interessanti di AthenaNet perché permette di sperimentare direttamente protocolli e tecnologie di comunicazione tradizionali di Internet.
Postfix e Dovecot: la posta elettronica
La VPS ospita anche componenti per la gestione della posta elettronica.
Postfix viene utilizzato come Mail Transfer Agent, cioè per la gestione e il trasferimento dei messaggi di posta.
Dovecot fornisce invece i servizi necessari per l’accesso alle caselle di posta attraverso i protocolli appropriati.
In forma semplificata:
Internet
│
▼
Postfix
│
▼
Caselle di posta
│
▼
Dovecot
│
▼
Client email
La posta elettronica è un esempio di servizio che richiede particolare attenzione alla configurazione e alla sicurezza, perché coinvolge comunicazioni provenienti da server esterni e deve rispettare numerosi requisiti tecnici per funzionare correttamente.
AthenaNet Bot: Telegram e monitoraggio
AthenaNet dispone anche di un bot Telegram chiamato AthenaNet Bot.
Il bot è sviluppato in Python e viene eseguito come servizio systemd sulla VPS.
Il suo compito non è soltanto rispondere ai comandi degli utenti, ma anche integrarsi con l’infrastruttura di monitoraggio.
Il bot mantiene infatti un piccolo file di heartbeat che permette al sistema di sapere se il processo è operativo.
La struttura è:
AthenaNet Bot
│
├── Telegram
│
└── heartbeat
│
▼
WordPress REST API
│
▼
Stato AthenaNet
Il bot può fornire informazioni sullo stato dei principali servizi e collegamenti diretti alle diverse componenti di AthenaNet.
Tra i comandi disponibili sono presenti funzioni per controllare lo stato dell’infrastruttura e raggiungere:
- il sito principale;
- la Community;
- l’IRC;
- Forgejo;
- n8n.
La REST API di monitoraggio
Per collegare i diversi componenti è stata realizzata anche una REST API di AthenaNet.
L’API permette di ottenere informazioni sullo stato dell’infrastruttura.
Il principio è semplice:
AthenaNet API
│
┌──────────┼───────────┐
│ │ │
▼ ▼ ▼
WordPress Community Forgejo
│ │ │
└──────┬───┴───────────┘
│
├── IRC
│
├── n8n
│
└── Athena Bot
In questo modo è possibile avere un punto centrale dal quale verificare se i principali servizi risultano operativi.
Il sistema controlla sia servizi HTTP sia servizi locali e, nel caso del bot, anche il suo heartbeat.
Questo permette di trasformare la VPS da semplice server che “esegue programmi” a una vera infrastruttura nella quale i diversi componenti possono comunicare tra loro.
Docker
Non tutti i servizi della VPS vengono eseguiti direttamente come normali processi del sistema operativo.
Alcune applicazioni utilizzano Docker.
Docker permette di eseguire applicazioni all’interno di container isolati, fornendo loro un ambiente controllato e separando dipendenze e configurazioni dal sistema principale.
Nel caso di AthenaNet, n8n utilizza questa modalità di esecuzione.
La distinzione può quindi essere schematizzata così:
Debian
│
├── servizi nativi
│ ├── Nginx
│ ├── PHP-FPM
│ ├── MariaDB
│ ├── Forgejo
│ ├── InspIRCd
│ ├── ZNC
│ ├── Postfix
│ ├── Dovecot
│ └── Athena Bot
│
└── Docker
└── n8n
Questa architettura permette di scegliere, servizio per servizio, il metodo di esecuzione più adatto.
Firewall e sicurezza
Un server esposto su Internet deve limitare attentamente ciò che può essere raggiunto dall’esterno.
AthenaNet utilizza un firewall a livello di rete basato su nftables.
Il principio fondamentale è quello del minimo accesso necessario: le porte che non devono essere pubbliche non vengono esposte inutilmente.
Inoltre, molti servizi sono configurati per ascoltare solamente sull’interfaccia locale.
Per esempio:
Internet
│
▼
Firewall
│
▼
Nginx
│
├── servizio pubblico
│
└── 127.0.0.1:porta
│
▼
servizio
Questo significa che un’applicazione può essere raggiungibile da Nginx senza essere direttamente esposta su Internet.
La separazione tra servizi pubblici e servizi interni è uno degli elementi fondamentali della sicurezza dell’architettura.
HTTPS e TLS
Tutti i principali servizi web pubblici utilizzano HTTPS.
HTTPS protegge la comunicazione tra browser e server attraverso TLS, impedendo che il traffico venga trasmesso semplicemente in chiaro.
La struttura è:
Browser
│
│ HTTPS / TLS
▼
Nginx
│
│ HTTP interno
▼
Applicazione
Nginx gestisce i certificati TLS e inoltra successivamente le richieste alle applicazioni interne.
Questo permette di centralizzare la gestione della sicurezza delle connessioni web.
DNS e sottodomini
Un’altra parte importante dell’infrastruttura è il sistema DNS.
AthenaNet utilizza diversi sottodomini per separare logicamente i servizi.
La struttura può essere rappresentata così:
athena-net.org
│
├── www
│
├── community
│
├── git
│
├── n8n
│
└── altri servizi
L’utilizzo dei sottodomini permette di mantenere una struttura chiara e di associare ogni servizio a un proprio indirizzo.
Il DNS indirizza quindi il traffico verso la VPS, mentre Nginx determina successivamente quale applicazione debba gestire la richiesta.
La struttura complessiva
Possiamo riassumere l’infrastruttura attuale di AthenaNet nella seguente tabella:
| Componente | Funzione |
|---|---|
| Debian GNU/Linux | Sistema operativo |
| nftables | Firewall |
| Nginx | Web server e reverse proxy |
| PHP-FPM | Esecuzione PHP |
| WordPress | Sito principale |
| MariaDB | Database di WordPress |
| Forgejo | Server Git |
| Lemmy | Community |
| PostgreSQL | Database di Lemmy e n8n |
| n8n | Automazione dei workflow |
| Docker | Containerizzazione |
| InspIRCd | Server IRC |
| ZNC | IRC bouncer |
| The Lounge | Client IRC web |
| Postfix | Server di posta |
| Dovecot | Accesso alla posta |
| AthenaNet Bot | Bot Telegram e monitoraggio |
| REST API AthenaNet | Monitoraggio dei servizi |
| TLS/HTTPS | Protezione delle connessioni web |
Una VPS come laboratorio
La caratteristica più interessante di una infrastruttura come questa è che la VPS non viene utilizzata esclusivamente per ospitare un sito.
Diventa un vero laboratorio informatico.
All’interno dello stesso ambiente è possibile studiare e sperimentare:
- amministrazione Linux;
- networking;
- DNS;
- firewall;
- server web;
- reverse proxy;
- PHP;
- database SQL;
- Git;
- container;
- automazione;
- API REST;
- IRC;
- posta elettronica;
- sicurezza;
- programmazione Python;
- gestione dei servizi con systemd;
- monitoraggio delle applicazioni.
Ogni nuovo servizio rappresenta contemporaneamente uno strumento e un’occasione per comprendere come funziona una parte dell’infrastruttura Internet.
L’idea alla base di AthenaNet
AthenaNet nasce dall’idea che la conoscenza non sia soltanto qualcosa da leggere, ma qualcosa da costruire.
Per questo l’infrastruttura stessa del progetto è parte dell’esperimento.
Il sito web permette di pubblicare contenuti.
La Community permette di discuterli.
Forgejo permette di condividere codice.
IRC permette di comunicare.
n8n permette di automatizzare processi.
AthenaNet Bot permette di interagire con l’infrastruttura attraverso Telegram.
La VPS permette di tenere insieme tutti questi elementi in un unico ambiente.
Il risultato è quindi qualcosa di più di un semplice sito: è un piccolo ecosistema tecnologico.
Conclusione
Dietro una pagina web apparentemente semplice possono esistere decine di componenti differenti.
Nel caso di AthenaNet, la VPS costituisce il punto centrale nel quale questi componenti convivono.
La struttura può essere sintetizzata così:
INTERNET
│
▼
┌─────────────┐
│ FIREWALL │
└──────┬──────┘
│
▼
┌─────────────┐
│ NGINX │
└──────┬──────┘
│
┌─────────────────┼──────────────────┐
│ │ │
▼ ▼ ▼
WordPress Forgejo Lemmy
│ │
▼ ▼
MariaDB PostgreSQL
│
▼
n8n
│
Docker
┌────────────────────────────────────┐
│ │
▼ ▼
InspIRCd Athena Bot
│ │
┌───┴───┐ ▼
▼ ▼ Telegram
ZNC The Lounge
Postfix / Dovecot
│
▼
E-mail
Questa architettura continuerà naturalmente a evolversi.
Nuovi servizi potranno essere aggiunti, quelli esistenti potranno essere modificati e l’intera infrastruttura potrà diventare progressivamente più complessa.
Ed è proprio questo uno degli obiettivi di AthenaNet: non limitarsi a parlare di tecnologia, ma utilizzarla, comprenderla e costruire concretamente qualcosa attraverso di essa.
AthenaNet — Uno spazio dedicato alla conoscenza.
