Servizi su homeserver

Dato che ho avuto delle giornate libere ho deciso di prepararmi un paio di servizi a me utili e come li ho esposti fuori, per poterli usare ovunque.

Ma partiamo con ordine, iniziamo a definire il server.

Home server

Quando ho cambiato il computer di lavoro, quello vecchio è stato trasformato in un server.

Quindi ho installato Proxmox, scelta praticamente obbligatra, sia per comodità che per documentazione.

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.

NOIP

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.

ROUTER

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.

Servizio

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.

Dominio

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

Configurazione 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

COnclusioni

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