Per l'obbiettivo di questo post ho creato due container, entrambi con un ubuntu minimale.
Il primo con 1 core e 512 mega di ram, cove andremo a configurare il gestore proxy
Il secondo dove andare a hostare i servizi che voglio esporre.
Secondo step per la nostra configurazione il servizio NOIP.
In pratica con il tier gratuito lega il router di casa con un dominio, e aggiornando (quando cambia) l'indirizzamento all'ip pubblico del router.
Il dominio non è proprio bello, ma per la nostra soluzione va più che bene perché verrà mascherato.
A questo punto andiamo ad aprire le porte del router 80 e 443 e reindirizzare verso l'ip del container che svolgerà da proxy.
A questo punto in quel container va installato un server e per questo scopo ho seguito il consiglio di un amico e ho installato Caddy.
Effettivamente rispetto ad apache o nginx ha configurazioni e piccole automazioni che rendono più facili le configurazioni
Per le configurazioni ci torniamo dopo.
Come esempio creiamo nel container 2 un server node express che espone qualcosa di semplice, giusto come esempio per testare il funzionamento.
mkdir esempio
cd esempio
npm init -y
npm install express
Creo il file index.js e :
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Si, sto funzionando!");
});
app.listen(8888, () => {
console.log(`Server running at http://localhost:8888`);
});
Servizio pronto a partire in ascolto sulla porta 8888, lo lanciamo con forever
forever start index.js
e passiamo allo step successivo.
A questo punto serve un dominio, per creare url semplici e carini per accedere ai nostri servizi.
Prendiamo come sempio il dominio aabbcc.dd.
A questo punto andiamo a creare un dominio di terzo livello che punta al nostro servizio, per fare questo...
Andiamo a creare nel gestore dei dns del dominio un record cname e lo indiriziamo al url del servizio NOIP creato prima.
Poniamo cme sempio il nome del dominio di terzo livello servizio.aabbcc.dd
Come ultima cosa andiamoa configurare Caddy
Andiamo ad aprire il file di configurazione
nano /etc/caddy/Caddyfile
togliamo tutto il contenuto e andiamoa scrivere la nostra configurazione
servizio.aabbcc.dd {
log {
output file /var/log/caddy/ondata.log
}
encode gzip
reverse_proxy IP SERVER SERVIZI:8888
tls latua@email.it
}
Riavviando il servizio di caddy a questo punto alla prima richiesta verra' richiesto con let's encrypt un certificato ssl in automatico e risponderà il servizio creato prima.
sudo systemctl stop caddy
sudo systemctl start caddy
A questo punto potete esporre tutti i servizi che volete, molto comodo per chi vuole crearsi un portfolio di servizi da poter mostrare per svariate finalità
Pubblicato