Come realizzare un server senza hosting e renderlo pubblico: opzioni e consigli

DE 1

In vari articoli ho mostrato come costruire un PC Server casalingo per salvare i propri file in sicurezza e non rischiare di perderli per sempre, ad esempio a partire da questo articolo pubblicato recentemente:

Adesso volevo illustrarvi un ulteriore evoluzione delle nostre potenzialità mostrandovi come è possibile mettere online un PC Server con installato un Web Server senza l’ausilio di un “hosting provider” ma facendo tutto in casa in modalità fai da te o come dicono gli inglese “Do it Yourself” (DIY).

Ebbene sì, puoi creare un sito Web o di un altro servizio internet senza hosting, tuttavia, se sei un principiante allora non te lo consiglierei, poiché configurare il tuo PC Server affinché funzioni senza hosting può essere qualcosa di molto tecnico, laborioso e lungo.

Il primo sistema GNU/Linux che ho messo online senza “hosting” risale ai primi anni 2000 quando arrivarono le prime ADSL a 640Mbit e da allora nel tempo ho continuato a giocare con simili soluzioni. Recentemente l’ho fatto con una importante realtà industriale del riminese con indubbi vantaggi di velocità e prestazioni rispetto ad un hosting classico.

Per chi si vuole cimentare nell’impresa partiamo già dall’aver realizzato un PC Server e quindi aver disponibile già tutto l’hardware e software come descritto, ad esempio, in questo articolo:

Naturalmente è necessario avere anche la disponibilità di un collegamento ADSL su linea telefonica. Potrebbe andar bene anche un collegamento con una SIM telefonica o via radio ma nel caso è necessario fare attenzione al limite di traffico che su tali tecnologia non è illimitato come invece è quello fornito su linea telefonica ed inoltre non è della stessa qualità di servizio.

Per mettere il tuo PC Server online e mostrare al mondo il suo contenuto tramite un Web server devi seguire alcuni passi fondamentali:

  1. Configurare il port forwarding del tuo modem/router ADSL per aprirlo in ingresso
  2. Impostare un indirizzo IP statico nel PC Server e comunicarlo al modem/router
  3. Ottenere l’indirizzo IP pubblico del tuo modem/router ADSL o usare un IP statico
  4. Utilizzare un servizio DNS dinamico o un nome di dominio o entrambe le cose

Port forwarding

Dovrai impostare il “port forwarding” nel modem/router per tutte le porte che desideri siano accessibili o inoltrate o aperte su Internet. Su alcuni modem/router può chiamarsi anche “virtual server”. Nel mio modem/router Vodafone viene definito come “Associazione Porte”. Tieni presente che ogni porta aperta rappresenta un potenziale rischio per la sicurezza, quindi apri solo quelle strettamente necessarie.

Guarda un elenco di numeri di porta assegnati per i vari servizi internet per avere un’idea di quali porte inoltrare. Quelle più comunemente inoltrate sono:

  • Porta 22: SSH (per la gestione remota del server)
  • Porta 80: HTTP (siti Web, vecchio standard)
  • Porta 443: HTTPS (siti web crittografati, moderno standard)
  • Porta 21: FTP (condivisione file)

Se vuoi che il PC Server resti nascosto e visibile solo a te e solo a chi vuoi allora puoi usare anche un numero di porta qualsiasi come ad esempio 12345 invece dello standard per i Web Server che è 80 per HTTP o 443 per HTTPS. Questo perché tutti i browser del mondo cercano su internet usando le porte standard di questo servizio ma nulla vieta di mettere in ascolto un Web Server sulla porta 12345 e collegarsi con un browser direttamente a quella porta nella forma:

www.ilmiodominio.it:12345

Chiaramente chi cercherà di collegarsi solo digitando il nome del domino senza conoscere la porta di accesso non otterrà alcuna risposta ed anzi otterrà un errore “Impossibile raggiungere il sito” dopo un lungo tempo di attesa su una pagina bianca.

La procedura esatta per l’inoltro di una porta varia da fornitore a fornitore di router e persino da modello a modello. Dovrai consultare il manuale del tuo router e/o Internet per il tuo router specifico.

Una volta scoperto come impostare le porte da aprire ad internet, devi inserire l’indirizzo IP locale del tuo PC Server (per esempio 192.168.1.100) e la porta 80 (o un’altra porta) come porta interna ed esterna.

Indirizzo PC Server con IP statico

Qui sorge un altro problema perché nella stragrande maggioranza delle installazioni domestiche l’indirizzo IP del PC o di qualsiasi dispositivo connesso al modem/router sia tramite cavo o WiFi avrà un indirizzo IP che varia a secondo di quanti utenti sono collegati e in quale ordine sono acceduti al modem/router. Questo è dovuto al fatto che gli IP vengono assegnati dinamicamente dal modem/router ai dispositivi che si connettono tramite un protocollo DHCP (Dynamic Host Configuration Protocol, in italiano “protocollo di configurazione IP dinamico”) e questa è una comoda impostazione standard e universale ma che nel nostro caso è un problema perché nel modem/router dovremo scrivere un indirizzo IP fisso ovvero statico.

Si risolve assegnando direttamente un numero IP fisso e quindi statico al nostro PC Server tra quelli possibili della rete usata dal modem/router ed informandolo che non può usarlo per assegnarlo ad altri dispositivi.

Anche in questo caso ogni modem/router ha la sua modalità di assegnazione di indirizzi IP non usabili dal DHCP e dovrai fare riferimento a cosa propone la sua interfaccia o al suo manuale. Nel mio modem/router Vodafone si trova nel menu “internet” alla voce “NAT statico”.

Un altro approccio decisamente più semplice è assegnare al proprio PC Server un IP di valore elevato e non modificare nulla nel modem/router. Questo perché il DHCP parte sempre da valori unitari e va via via in crescendo. Ad esempio io ho usato l’IP 192.168.1.200 e non ho problemi perché nella mia rete interna al massimo si collegano 2 o 3 dispositivi. Tipicamente gli smartphone e i notebook/laptop di casa. Quindi il DHCP del mio modem/router non offrirà mai indirizzi IP oltre 192.168.1.5 e impostare quello del PC Server a 192.168.1.200 è più che sicuro e tranquillo.

Per assegnare un IP statico al PC Server è necessario andare nelle “Impostazioni della Rete” della proprio distribuzione GNU/Linux e cercare “Connessioni di rete IPv4” dove troverete una tabelle con l’attuale configurazione (di norma definita Automatica) e passare da modalità dinamica a modalità statica (di norma definita Manuale) assegnando i valori richiesti. Operazione banale se sapete di cosa si tratta altrimenti Google o una AI vi saranno di sicuro aiuto.

Ottenere l’indirizzo IP pubblico

Ottenere l’indirizzo IP pubblico del tuo modem/router, che è l’indirizzo che identifica la tua connessione a internet, è una operazione che si può compiere in diversi modi. A questo scopo puoi fare riferimento a questa guida:

Ma questo indirizzo potrebbe cambiare nel tempo, ad esempio in caso di reset/riavvio del modem/router o in conseguenza di una caduta della linea ADSL, a meno che tu non abbia una connessione a internet con IP statico. Di norma questa possibilità non viene offerta dai fornitori di linee ADSL ma in alcuni casi è possibile richiederlo. I fornitori di linee ADSL forniscono indirizzi IP dinamici, nome attribuito dal fatto che l’indirizzo IP non è fisso ma cambia nel tempo e quindi non è statico ma dinamico.

Nel caso di indirizzo IP dinamico si possono prospettare 2 soluzioni. Vediamole.

Utilizzare un servizio DNS dinamico o altre soluzioni

Se vuoi avere un indirizzo che ti garantisca una visibilità online anche al cambio del tuo indirizzo IP allora puoi usare un servizio di dynamic DNS, che ti permette di associare un nome di dominio al tuo indirizzo IP pubblico. Ci sono diversi servizi di dynamic DNS disponibili, alcuni gratuiti e altri a pagamento. Puoi cercare su internet per trovare quello che preferisci. Questi servizi non fanno altro che monitorare il tuo indirizzo IP e aggiornarsi ad ogni suo cambiamento. Questa attività di monitoraggio è gestita da un programma o uno script che ti viene richiesto di installare sul tuo PC Server domestico.

In alternativa ai servizi disponibili si può gestire il cambio di indirizzo IP della propria connessione ADSL direttamente simulando l’attività dei servizio di dynamic DNS ma usando necessariamente un “hosting provider”. Ma andremmo a complicarci la vita ulteriormente.

In pratica è sufficiente avere un dominio con uno spazio web minimale dove inserire un file .htaccess che si occuperà dell’indirizzamento di tutte le richieste di pagine web del dominio all’indirizzo IP del nostro PC Server domestico e di un programma sempre sul nostro PC Server domestico che lo manterrà aggiornato in modo da indirizzare sempre all’IP corretto nonostante il suo variare nel tempo.

Ecco i 2 file, partiamo con il codice da inserire nel file .htaccess da inserire nella cartella principale del nostro spazio web:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^nomedominio\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.nomedominio\.com$ [NC]
RewriteRule ^(.*)$ http://123.123.123.123/$1 [R=301,L]

In pratica è un codice che trasforma tutti gli indirizzi delle pagine del sito web di esempio www.nomedominio.com nel corrispondente indirizzo fisico di esempio 123.123.123.123 (per una spiegazioni dei dettagli potete interrogare una qualsiasi AI che saprà spiegarvelo) ed è valido per un server web come Apache o LiteSpeed ma non per gli altri! Per fortuna sono quelli maggiormente in uso.

Da notare che ho usato http e non https perché per poterlo indirizzare con il protocollo di sicurezza si dovrà attivare un certificato SSL e per farlo il PC Server deve essere online e già raggiungibile.

Un’opzione popolare per ottenere un certificato SSL gratuito è utilizzare Let’s Encrypt. Let’s Encrypt è un progetto no-profit che fornisce automaticamente, immediatamente e gratuitamente certificati SSL/TLS. Esiste un apposito client da installare per ottenere il certificato ed è Certbot. Certbot è un client gratuito che automatizza il processo di installazione e rinnovo dei certificati SSL.

Procedendo oltre, questo a seguire è il file da inserire nel nostro PC Server in modo da monitorare il nostro indirizzo IP pubblico e mantenere aggiornato il file .htaccess sovra-scrivendolo quando cambia l’indirizzo IP, ovviamente i 5 parametri indicati sotto “# Server FTP” andranno personalizzati:

#!/bin/bash

# Server FTP
ftp_host="ftp.example.com"
ftp_port=21
ftp_user="username"
ftp_pass="password"
ftp_dir="public_html"

# Percorso del file di registrazione dell'IP
ip_file="ip_address.txt"

# Funzione per ottenere l'IP pubblico
getPublicIP() {
   curl -s http://api.ipify.org/
}

# Verifica se il file IP esiste
if [ -f "$ip_file" ]; then
   previous_ip=$(cat "$ip_file")
else
   previous_ip=""
fi

# Inizia il ciclo di controllo
while true; do
   # Ottieni l'IP pubblico attuale
   current_ip=$(getPublicIP)

   # Verifica se l'IP è cambiato
   if [ "$current_ip" != "$previous_ip" ]; then
      
      # Crea il nuovo file index.php
      cat <<EOF > .htaccess
      # Version 1 - $(date +"%Y-%m-%d %H:%M")
      RewriteEngine On
      RewriteCond %{HTTP_HOST} ^nomedominio\.com$ [NC,OR]
      RewriteCond %{HTTP_HOST} ^www\.nomedominio\.com$ [NC]
      RewriteRule ^(.*)$ https://$current_ip/\$1 [R=301,L]
      EOF
      
      # Carica il file su server FTP
      ftp -n <<-END_SCRIPT
      open $ftp_host $ftp_port
      user $ftp_user $ftp_pass
      cd $ftp_dir
      put .htaccess
      quit
      END_SCRIPT

      # Registra il nuovo IP
      echo "$current_ip" > "$ip_file"
   fi

   # Attendi un secondo prima del prossimo controllo
   sleep 1
done

Questo codice deve essere reso eseguibile con:

chmod +x /percorso/del/file/nome_file_bash

per poterlo avviare ed essere sempre attivo.

Quindi come soluzione semplice va lanciato seguito da & per mandarlo in background ricordandosi di farlo sempre ad ogni eventuale riavvio del PC Server:

/percorso/del/file/nome_file_bash &

Come soluzioni alternative ne posso proporre 2, la prima è inserire il comando nel file /etc/local:

sudo nano /etc/rc.local

come segue se il file non esiste:

#!/bin/sh
/percorso/del/file/nome_file_bash &
exit 0

Oppure la sola riga del comando prima di exit 0 se sono presenti altre righe con altri comandi. Assicurarsi che il file rc.local sia eseguibile e nel caso non lo fosse allora deve essere fatto.

Ma non su tutte le distribuzioni GNU/Linux funziona dato che è una soluzione deprecata, ma su Debian ancora va.

La seconda è aggiungere il file nel cron di sistema. Soluzione ottimale. Nel caso utilizzare il comando:

sudo crontab -e

che apre il file di cron dentro un editor (nel mi caso nano) e aggiungendo la riga:

@reboot /percorso/del/file/nome_file_bash

salvare e uscire dall’editor.

Così facendo, in queste 2 ultime soluzioni, sarà sempre avviato ad ogni riavvio del PC Server senza interventi manuali.

Conclusione

Ecco come realizzare un server senza “hosting” e renderlo pubblico in maniera semplice ed economica. Tutti i passi da compiere sono facili se hai dimestichezza con internet e con i concetti alla base delle reti e della loro configurazione, ma anche se non sei un esperto, questa semplice guida ti dovrebbe portare ad ottenere comunque il risultato voluto.

Per ogni dubbio o necessità scrivi nei commenti e ti verrò in aiuto. Oppure puoi usare uno dei tanti canali di discussione che ho in rete su Telegram e Facebook.

Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!

Hai dubbi o problemi? Ti aiutiamo noi!

Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.
Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.
Amazon Music
Scopri le ultime offerte per dischi ssd su Acquista su Amazon
Scopri le ultime offerte per memorie RAM DDR su Acquista su Amazon
Scopri le ultime offerte per Chromebook su Acquista su Amazon
Scopri le ultime offerte per Raspberry su Acquista su Amazon

Potrebbero interessarti anche...

Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.