Headscale come alternativa a Tailscale

Tailscale è un ottimo modo per collegare tra loro server diversi.
I client sono open source e disponibili per una grande varietà di piattaforme, non da ultima i NAS Synology, compreso il mio vecchio DS214se.
La configurazione è rapida e di nessuna difficoltà, le prestazioni sono inferiori a quelle che pare si possano avere utilizzando un semplice tunnel Wireguard ma sono comunque all’altezza dei compiti svolti dai miei server amatoriali.
Il problema è che il server di autenticazione è l’unico componente proprietario.

Headscale è un’implementazione opensource del server Tailscale.
Al momento in cui scrivo è arrivato alla release 0.12, quindi il progetto non ancora del tutto maturo, ma dalle mie prime prove è già utilizzabile con un buon margine di tranquillità.

Per l’installazione mi sono avvalso di questo tutorial, con qualche aggiunta presa qua e là.
Questa procedura prevede che Docker e Docker Compose siano installati sulla macchina che farà da server, io ho utilizzato una VPS molto economica con Debian Buster ed installarli è facile.
E’ inoltre necessario un web proxy – io ho utilizzato Nginx con certbot che gestisce i certificati SSL e relativi redirect.
Questo è un esempio di configurazione:

# Redirect HTTP to HTTPS
server {
    if ($host = esempio.miodominio.it) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    listen [::]:80;
    server_name esempio.miodominio.it;
    return 301 https://$host$request_uri;


}
server {
    listen 443 ssl;
    server_name esempio.miodominio.it;

    client_body_timeout 5m;
    client_header_timeout 5m;

    access_log            /var/log/nginx/esempio.miodominio.it.log;
    error_log            /var/log/nginx/esempio.miodominio.it.error.log info;

    # reverse proxy
    location / {
         proxy_pass http://127.0.0.1:27896;  # headscale listen_addr
         proxy_read_timeout 6m;
         proxy_ignore_client_abort off;
         proxy_request_buffering off;
         proxy_buffering off;
         proxy_no_cache "always";
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    ssl_certificate /etc/letsencrypt/live/esempio.miodominio.it/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/esempio.miodominio.it/privkey.pem; # managed by Certbot
}

Per l’installazione dei client sulle varie piattaforme la documentazione reperibile sul sito di Tailscale o con una qualsiasi ricerca è sufficientemente esauriente e di facile esecuzione.

Come prima cosa creaiamo la cartella in cui installeremo Headscale:

sudo mkdir -p /opt/headscale

Spostiamoci nella cartella appena creata e eseguiamo i seguenti comandi:

mkdir -p ./config
touch ./config/db.sqlite
curl https://raw.githubusercontent.com/juanfont/headscale/main/config-example.yaml -o ./config/config.yaml

abbiamo così creata una cartella per le configurazioni, al cui interno abbiamo creato un file .sqlite per l’archivio e scaricato una copia dell’esempio di file di configurazione. Le modifiche a questo ultimo file saranno minime.

Ora creiamo il file docker-compose.yml:

nano docker-compose.yml

version: '3.5'
services:
  headscale:
    image: headscale/headscale:latest
    volumes:
      - ./config:/etc/headscale/
      - ./data:/var/lib/headscale
    ports:
      - 27896:8080
    command: headscale serve
    restart: unless-stopped

La porta esterna è la 27896, ma siete liberi di cambiarla come meglio preferite, impostate correttamente il proxy (cfr. la configurazione di Nginx qui sopra).

Prima di avviare Headscale editiamo il file di configurazione:

nano config/config.yml

inserendo l’URL del nostro server:

server_url: https://esempio.miodominio.it

Adesso possiamo avviare Headscale:

docker-compose up -d

Sui client, una volta installato Tailscale, basterà specificare il server di login al momento dell’avvio perchè tutto funzioni quasi magicamente:

tailscale up --login-server https://esempio.miodominio.it

Book p0rn

Non so se vi è mai capitato di parlare con una donna diciamo procace e trovarvi continuamente nell’imbarazzante consapevolezza che invece di guardarla negli occhi mentre vi sta parlando, il vostro sguardo cada inevitabilmente e (sigh) ripetutamente sul suo generoso décolleté.

Ecco, è già la seconda volta che a me capita questo: vado a casa di questi conoscenti che nell’ingresso hanno una monumentale libreria: zeppa di libri tutti diversi, disordinata – uno splendore.
E’ lì davanti che ci scambiamo i convenevoli durante la consegna e restituzione dei figli, e siccome per loro è sempre “ancora 5 minuti”, capita che si facciano due chiacchiere.
Il problema è che, nonostante i conoscenti in questione siano persone simpatiche che dicono anche cose interessanti, ogni volta mi sorprendo a vagare con lo sguardo fra i titoli della suddetta libreria mentre loro mi parlano ed è solo a fatica (e per poco tempo) che riesco a riportare il mio sguardo dove l’educazione vorrebbe.

Quando entro in una casa, se posso, subito mi fiondo a curiosare fra i titoli a portata d’occhio. Chissà che non mi dicano qualcosa dei padroni di casa, chissà che non mi sorprenda un volume che proprio non mi sarei aspettato.
Le collezioni di dischi sono ormai praticamente sparite dalle case, i libri ancora resistono forse perchè siamo più affezionati alla carta che al vinile, forse perchè il formato elettronico che li dovrebbe sostituire non è pratico come invece accade per la musica e per i film, o semplicemente in qualche caso qualche volume nel posto giusto è il complemento d’arredo perfetto.

Non me ne vogliano questi cari amici: la prossima volta obbligatemi a sedermi in soggiorno davanti alla TV e giuro che la mia attenzione sarà tutta vostra.

Specchio riflesso intercontinentale

Putin risponde a Biden che lo ha chiamato assassino: "Chi lo dice sa di esserlo"

Aspettiamo un “Non mi hai fatto niente, faccia di serpente” come risposta da parte di Biden.
Probabilmente i falchi del Congresso staranno facendo pressioni per aggiungere anche “Non mi hai fatto maile, faccia da maiale” nel comunicato ufficiale della Casa Bianca.
Ferma opposizione dei democratici più moderati.

Download automatici di un canale Youtube

Di Youtube-dl ho già parlato, ma ogni volta che vi ricorro si dimostra ancora più versatile e potente di quanto potessi immaginare.
Una convention annuale solitamente articolata in più giorni, in questo periodo di pandemia si svolge completamente online, pubblicando i filmati degli interventi su un canale Youtube.
Purtroppo i video rimangono disponibili solo per poche ore, avevo quindi bisogno di scaricarli in fretta, evitando però di includere anche altri video pubblicati precedentemente.

Leggendo tra la documentazione di Youtube-dl, ho scoperto l’opzione --dateafter, mi basta quindi impostare la data di inizio della convention per selezionare automaticamente solo i video pubblicati a partire da quella data.

Con l’opzione --download-archive evito il download dei video precedentemente scaricati. Youtube-dl tiene traccia di quanto ha già  scaricato nel file download.txt .

L’opzione -i ignora eventuali errori relativi a filmati non disponibili, nel mio caso utili perchè già  presenti in playlist i filmati in programma nei giorni successivi.

Con l’opzione -o specifico la cartella di destinazione e il formato del nome del file da salvare.

Il comando completo è quindi:

$ youtube-dl -o "/cartella/download/%(title)s.%(ext)s" --dateafter 20210315 --download-archive /cartella/download/downloads.txt -i https://www.youtube.com/playlist?list=abcde1234

inserito in un crontab, ogni 6 ore controlla la presenza di nuovi video e li scarica nella cartella scelta.

# scarica i nuovi filmati ogni 6 ore
* */6 * * * youtube-dl -o "/mnt/download/CON6/%(title)s.%(ext)s" --dateafter 20210315 --download-archive /mnt/download/downloads.txt -i https://www.youtube.com/playlist?list=abcde1234

ET:Legacy 2.77!

Di recente ho scoperto con piacere che è ancora possibile giocare a Return to Castle Wolfenstein e soprattutto alla sua evoluzione online ET:Legacy.
Di ET:Legacy, il port libero di Enemy Territory, è da poco uscita la nuova versione 2.77 che tra le altre cose supporta nativamente le ultime versioni di MacOS.

Sulla mia installazione di Linux Mint 20.1 Ulyssa i binari precompilati continuano a dare problemi in fase di esecuzione, ma Flatpak corre in aiuto della mia pigrizia: ET:Legacy è già pronto per essere installato!