Dentro AthenaNet: la struttura della nostra VPS

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:

ComponenteFunzione
Debian GNU/LinuxSistema operativo
nftablesFirewall
NginxWeb server e reverse proxy
PHP-FPMEsecuzione PHP
WordPressSito principale
MariaDBDatabase di WordPress
ForgejoServer Git
LemmyCommunity
PostgreSQLDatabase di Lemmy e n8n
n8nAutomazione dei workflow
DockerContainerizzazione
InspIRCdServer IRC
ZNCIRC bouncer
The LoungeClient IRC web
PostfixServer di posta
DovecotAccesso alla posta
AthenaNet BotBot Telegram e monitoraggio
REST API AthenaNetMonitoraggio dei servizi
TLS/HTTPSProtezione 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.

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *