I servizi di gaming sul Cloud sono ormai una realtà consolidata. Tuttavia buona parte dei videogiocatori preferisce affidarsi ancora oggi alle alternative più tradizionali. Dunque scaricare direttamente un gioco ed eseguire il tutto in locale. Questo però richiede una connessione molto veloce. I videogiochi di ultima generazione pesano infatti anche centinaia di GB. È quindi necessario un disco fisso decisamente capiente per ospitare tutti i titoli a cui si desidera giocare.
Questi due elementi non sono una difficoltà insormontabile per il singolo utente. Le cose si complicano quando a dover eseguire il download di tanti giochi sono famiglie numerose o gruppi di persone che sfruttano la stessa connessione. Ad esempio nei dormitori universitari o nelle abitazioni con diversi coinquilini. Per quanto potenti le connessioni in fibra ottiche moderne possono essere messe in crisi da decine di download simultanee che sfruttano interamente la banda massima messa a disposizione dal provider.
Cosa è LanCache
Per ovviare a tale problematiche esistono varie soluzioni tecniche. Quella adottata più comunemente prevede di salvare su di un server locale i giochi acquistati e di renderli disponibili su vari PC connessi alla LAN tramite un sistema di reverse proxy/DNS server.
Esistono varie alternative per completare una configurazione di questo tipo. Oggi parleremo di LanCache. Un sistema che consente salvare su di un server locale i giochi che abbiamo già scaricato dai client degli store online. Come ad esempio Steam.
Come è intuibile dal nome. LanCache è una tecnologia che consente di posizionare in "cache" i giochi già scaricati, cosi da renderli disponibili velocemente a tutti i PC presenti in una LAN.
LanCache opera su due livelli. È sia un reverse proxy, ovvero un proxy che agisce come un intermediario ed inoltra le richieste di un client ad uno o più web server, che un DNS Server, per gestire le query DNS degli utenti.
Esso velocizza di fatto il download dei giochi già scaricati, permettendo quindi di accedere ad essi in modo molto più rapido. A patto ovviamente di avere acquistato tali contenuti e di disporre dello spazio necessario per ospitare in modo permanente le copie su server. Può essere poi installato su qualsiasi server Linux, basta che il device sia dotato di una serie di dischi fissi abbastanza capienti da poter ospitare la cache dei giochi.
LanCache può essere eseguito inoltre su Raspberry Pi. Questo tutorial si focalizzerà proprio sull'installazione e configurazione di LanCache nella piccola board ARM low-cost.
Requisiti hardware
Per il progetto consigliamo di dotarsi di un Raspberry Pi 5 nella sua variate più potente cosi da non avere problemi anche in caso di una rete molto congestionata. Inoltre è raccomandabile utilizzare una serie di dischi, connessi tramite USB-C, formattati in ext4 o magari un SSD NVME molto capiente.
Oltretutto per la prima configurazione del device sono necessarie, se non si intende procedere tramite SSH, delle periferiche come mouse, tastiera, monitor, cavi HDMI ed ethernet ed alimentatore USB-C.
Installazione e configurazione di Raspberry Pi OS
Procediamo quindi con l'installazione di Raspberry Pi OS. Se avete già configurato il device potete saltare questa parte e recarvi direttamente nella sezione chiamata "Installare e configurare Docker su Raspberry Pi OS".
Scarichiamo quindi il tool chiamato Raspberry Pi Imager. Questo software si occupa di eseguire il flash della distribuzione nella microSD. Dopo il download avviamo dunque il programma.
Clicchiamo sull'opzione "Choose Device" per indicare al programma che stiamo usando il Raspberry Pi 5. Dalla "Choose OS" si seleziona invece la release di Raspberry Pi OS, per i nostri scopi va benissimo quella a 64bit. Successivamente, da "Choose Storage", selezioniamo la microSD.
Premiamo ora su "Next" e successivamente su "EDIT SETTING". Da tale riquadro è necessario configurare l'accesso tramite SSH, l'hostname, la timezone ed il keyboard layout.
Confermiamo le impostazioni tramite il tasto "YES" e attendiamo che l'installazione arrivi al termine.
Installare e configurare Docker su Raspberry Pi OS
LanCache viene distribuito con un praticissimo container Docker. Dunque procediamo a reperire i pacchetti di Docker.
curl -sSL https://get.docker.com | sh
Finito il download avviamo lo script:
sudo sh get-docker.sh
Aggiungiamo ora il nostro utente al gruppo apposito:
sudo usermod -aG docker nomedelnostroutente
Successivamente impostiamo il sistema con il gestore dei demoni systemd, in modo tale che esegua Docker ad ogni boot:
sudo systemctl enable docker.service && sudo systemctl enable containerd.service
Installazione e configurazione del container Docker di LanCache
Generiamo ora la directory dedicata al container:
sudo mkdir -p /mnt/example/lancache
spostiamoci al suo interno:
cd /opt/stacks/lancache
e andiamo a realizzare il Docker compose file da nano:
sudo nano compose.yaml
Quest'ultimo deve essere popolato in questo modo:
services:
dns:
image: jrcichra/lancachenet-lancache-dns:latest
env_file: .env
ports:
- 53:53/udp
- 53:53/tcp
restart: always
monolithic:
image: jrcichra/lancachenet-monolithic:latest
env_file: .env
ports:
- 80:80/tcp
- 443:443/tcp
restart: always
volumes:
- ${CACHE_ROOT}/:/data/cache
- ./logs:/data/logs
Salviamo le modifiche apportate al file con la combinazione di tasti CTRL+O e chiudiamo l'editor di testo con CTRL+X.
Passiamo adesso all'environment file:
sudo nano .env
che deve essere compilato cosi:
USE_GENERIC_CACHE=true
LANCACHE_IP=IPDELDEVICE
DNS_BIND_IP=IPDELDEVICE
UPSTREAM_DNS=1.1.1.1
CACHE_ROOT=/mnt/esempio/giochi
CACHE_DISK_SIZE=1000g
CACHE_INDEX_SIZE=500m
CACHE_MAX_AGE=3650d
TZ=Europe/Rome
In questo file abbiamo specificato l'IP del server, se non lo conoscete potete scoprirlo tramite questo comando da bash:
hostname -I
Inoltre abbiamo indicato la directory dove posizionare la cache, ovvero:
/mnt/esempio/giochi
Dovete ovviamente personalizzate il percorso con la directory che preferite utilizzare per questo scopo. Inoltre deve essere impostata la dimensione massima della cache a 1TB con il valore:
CACHE_DISK_SIZE=1000g
Se il disco è di capacità inferire potete modificare il parametro ed indicare una minore quantità di memoria. Salviamo dunque il file e saremo pronti per eseguire il container:
docker compose up -d
Testare il funzionamento di LanCache
A questo punto l'istanza di LanCache è in esecuzione su Raspberry Pi. Per verificare se la piattaforma funziona correttamente potete sfruttare il dnsutils. Installiamolo tramite il gestore di pacchetti APT:
sudo apt install dnsutils
Una volta installato possiamo interpellarlo in questo modo:
nslookup lancache.steamcontent.com
Se tutto dovesse andare per il meglio dovrebbe restituirvi un output come il seguente:
Server: UnKnown
Address: ILVOSTROIP
Non-authoritative answer:
Name: steam.cache.lancache.net
Address: ILVOSTROIP
Aliases: lancache.steamcontent.com