In questo tutorial, vi mostreremo come installare e configurare LanCache, un proxy locale utile a memorizzare file scaricati (come download dei giochi da varie piattaforme) sul vostro Raspberry Pi o una qualsiasi altra board equivalente che sia in grado di eseguire una distribuzione GNU/Linux e Docker.

LanCache è un sistema unico che ti permette di memorizzare nella cache i giochi che scarichi attraverso vari client di gioco, come Steam, Origin, Epic, ecc., in modo da permetterci di velocizzare i download qualora riscaricassimo lo stesso contenuto su altri dispositivi. Se stai ospitando un evento LAN o hai una connessione Internet scadente o comunque sia hai una soglia di giga disponibili al mese, questo può farti risparmiare molto tempo e banda, qualora dovessi riscaricare le stesse cose più volte, su dispositivi diversi.

Questo software funge da proxy inverso e server DNS. Utilizza il suo server DNS per reindirizzare le richieste a server come Steam CDN tramite il suo proxy. Questo proxy memorizza quindi nella cache i file richiesti localmente. LanCache servirà quindi le future richieste di file che hai già scaricato piuttosto che andarle a riscaricare da Internet sui server da cui sono state recuperate la prima volta.

Un caso d’uso molto utile di questo software, potrebbe anche essere quello di condividere la cache degli shader, visto che solitamente Steam non permette di scaricarla da altri dispositivi che hanno già i file scaricati e addirittura a volte, semplicemente riavviando Steam su Linux, riparte con i download degli shader, qualora abbiate abilitato l’opzione per sfruttare questi ultimi con Vulkan.

Un Raspberry Pi è un ottimo strumento per eseguire LanCache, poiché ha un consumo energetico molto basso. Con le versioni più recenti, come la 4 e 5, ha anche una capacità di rete sufficiente per essere utile nella maggior parte delle configurazioni.

Naturalmente, vorrai avere un disco rigido esterno collegato al tuo Raspberry Pi per sfruttare al massimo questo strumento. La maggior parte delle schede SD sono relativamente piccole e non sono veloci per molte operazioni di lettura e scrittura. Se utilizzi un Raspberry Pi 5, è anche possibile sfruttare un NVME ad alta capacità per ottenere grandi velocità.

Se si collega un’unità esterna, si consiglia di formattarla utilizzando il formato EXT4. Formati come NTFS e FAT32 non supportano correttamente il sistema di permessi di Linux, al più potresti optare per una partizione exFAT se vuoi che sia compatibile con Windows, macOS e Linux.

Requisiti

  • Raspberry Pi (va bene una qualsiasi versione, occhio però: sfruttandolo come server di cache, converrebbe almeno un Raspberry Pi 4 che ha una capacità di rete più elevata);
  • Scheda Micro-SD (consigliamo almeno 32 GB);
  • Connettività via cavo Ethernet (molto consigliato) altrimenti Wi-Fi (sconsigliato per questo caso d’uso, perché limiterebbe potenzialmente le prestazioni);
  • HDD / SSD esterno (opzionale, ma consigliato);
  • Docker installato, seguendo questa guida.

Installazione e configurazione di LanCache sul Raspberry Pi

In questa sezione, ti mostreremo come installare il software LanCache sul tuo Raspberry Pi. Per rendere l’esecuzione di questo software significativamente più facile, utilizzeremo un container Docker.

Andremo ad utilizzare un Container Docker creato da jrichra in quanto fornisce le istruzioni ARM per sistemi come il Raspberry Pi. La versione ufficiale di LanCache fornisce solo build per i sistemi AMD64.

Preparazione per l’esecuzione di LanCache

1. Prima di installare LanCache sul nostro Raspberry Pi, come sempre, dovremmo aggiornare la cache dell’elenco dei pacchetti e aggiornare eventuali pacchetti non aggiornati.

Per farlo, è sufficiente utilizzare il comando sottostante:

sudo apt update && sudo apt upgrade -y

2. Dopo aver aggiornato il Raspberry Pi, è necessario aver installato Docker sul tuo dispositivo.

Se non lo hai già fatto, devi farlo adesso per procedere con gli step successivi.

3. Con Docker installato, il tuo passo successivo è creare una cartella in cui salvare la cache che effettuerà LanCache. Dato che potrebbe diventare molto grande, suggeriamo di salvarla su un HDD / SSD esterno, poiché la scheda SD del Raspberry potrebbe essere molto lenta o addirittura non essere in grado di sopportare lunghe sessioni di scrittura.

Per l’esempio qui sotto stiamo creando una directory chiamata “lancache“ su un HDD esterno, che è stato montato sotto /mnt. Se non sai come montare un HDD esterno su Linux, prova a dare un’occhiata a questa guida.

sudo mkdir -p /mnt/lancache

4. Il tuo prossimo passo è creare una cartella in cui memorizzeremo il file di Docker Compose sul nostro Pi.

Solitamente li salviamo nella directory “/opt/stacks“.

sudo mkdir -p /opt/stacks/lancache

5. Una volta creata la directory sopra elencata, accediamoci con il comando cd:

cd /opt/stacks/lancache

Scrivere un file di Docker Compose per LanCache sul Raspberry Pi

6. A questo punto dobbiamo scrivere un file di Docker Compose per eseguire il software LanCache sul nostro Raspberry Pi.

È possibile iniziare a scrivere questo file utilizzando il seguente comando nel terminale.

sudo nano compose.yaml

7. All’interno di questo file, andremo a inserire le seguenti righe. Queste linee definiscono i due container Docker di LanCache che eseguiremo sul nostro Raspberry Pi: il server DNS e il sistema di cache.

Non è necessario modificare nulla in questo file, poiché i valori saranno controllati da delle variabili d’ambiente.

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

8. Dopo aver inserito le righe sopra, puoi salvare e uscire premendo CTRL + X, Y e poi ENTER.

Scrittura del file .env per le variabili d’ambiente

9. Dopo aver scritto il file di Docker Compose, possiamo passare alla scrittura del file per le variabili d’ambiente, che verrà letto da Docker Compose come abbiamo definito prima in env_file.

Digitiamo quindi:

sudo nano .env

10. All’interno di questo file, andremo a compilare le seguenti informazioni. Queste linee impostano le variabili d’ambiente che verranno utilizzate dal container di LanCache quando viene avviato sul tuo Raspberry Pi.

  • <INDIRIZZOIP>: Sostituisci questo elemento con l’indirizzo IP del tuo Raspberry Pi.
  • <UPSTREAMDNS>: Imposta qui l’IP del provider DNS upstream che desideri utilizzare. Se hai Pi-Hole in esecuzione sulla tua rete domestica, puoi inserire il suo indirizzo IP. Attenzione però: non eseguire Pi-Hole sullo stesso Raspberry Pi su cui fai girare LanCache, poiché necessitano della stessa porta DNS!Di seguito indichiamo gli indirizzi IP dei DNS più popolari:
    • Google: 8.8.8.8
    • Cloudflare: 1.1.1.1
  • <CACHEDIRECTORY>: Indica qui il percorso alla directory in cui vuoi memorizzare la cache. Per il Raspberry Pi, è probabile che si desideri montare un’unità esterna e impostare questo su una directory situata su quell’unità.Per questo esempio, useremo “/mnt/lancache
  • <MAXDISKSIZE>: Impostare questo valore alla dimensione massima consentita per la cache. Questa dimensione è specificata in Gigabyte utilizzando la lettera “g“ dopo il numero.Ad esempio, per impostare una dimensione massima di 1 TB, si userebbe “1000g“.
  • <TIMEZONE>: Imposta questo sull’identificatore del fuso orario per dove vivi. Per esempio, “Europe/Rome
USE_GENERIC_CACHE=true
LANCACHE_IP=<INDIRIZZOIP> DNS_BIND_IP=<INDIRIZZOIP> UPSTREAM_DNS=<UPSTREAMDNS> CACHE_ROOT=<CACHEDIRECTORY> CACHE_DISK_SIZE=<MAXDISKSIZE> CACHE_INDEX_SIZE=500m CACHE_MAX_AGE=3650d TZ=<TIMEZONE>

11. Una volta terminato di compilare questo file, salviamo e usciamo premendo CTRL+ x, quindi Y e poi ENTER.

Avviare il Container di LanCache sul Raspberry Pi

12. Ora possiamo avviare il servizio LanCache utilizzando il seguente comando sul Raspberry Pi.

A seconda della connessione Internet, questo processo potrebbe richiedere un paio di minuti per essere completato.

docker compose up -d

13. Ora che LanCache è attivo, dovrai impostare il server DNS sul tuo dispositivo (es: il tuo PC) con l’indirizzo IP del tuo Raspberry Pi.

Quando un client di gioco come Steam scaricherà un gioco, verrà instradato attraverso il Raspberry Pi e memorizzerà i file scaricati nella cache nella directory selezionata.

Non copriremo come modificare le impostazioni DNS, in quanto ciò varia drasticamente tra i sistemi operativi e i router, ti suggeriamo quindi di seguire questa guida.

Verificare che LanCache stia funzionando correttamente

14. Utilizzando lo strumento nslookup, possiamo verificare che il dispositivo che sta usando il server DNS di LanCache stia reindirizzando correttamente il traffico.

Se stai testando questo su un sistema Linux, dovrai installare il pacchetto “dnsutils” per utilizzare questo comando. Su Windows è già tutto pronto.

Il modo più semplice per verificare se LanCache indirizza correttamente il traffico è usare il seguente comando all’interno del terminale (il Prompt dei comandi su Windows):

nslookup lancache.steamcontent.com

Se tutto funziona correttamente, dovresti vedere “Address:” seguito dall’indirizzo IP del Raspberry Pi come mostrato di seguito.

Server:  UnKnown
Address:  192.168.0.8
Non-authoritative answer:
Name:    steam.cache.lancache.net
Address:  192.168.0.8
Aliases:  lancache.steamcontent.com

15. Se hai già iniziato a scaricare i giochi tramite LanCache, puoi controllare la directory impostata per la memorizzazione della cache.

Di seguito stiamo utilizzando il percorso dal nostro esempio, ma dovresti sostituirlo in base a dove hai deciso di salvare la cache.

ls -/mnt/lancache/cache

L’output seguente mostra che i dati hanno già iniziato a essere memorizzati nella cache. Questa struttura della cartella potrebbe sembrare un po’ strana a causa del modo in cui NGINX effettua la cache:

01  06  12  17  1f  27  30  39  44  4c  4e  5f  64  6e  79  7f  95  99  9f  bd  c7  ca  de  ee  f6  fa

Aggiornamento di LanCache

Anche se il container di LanCache non viene aggiornato di frequente, vorrai sapere come aggiornarlo all’ultima versione.

Fortunatamente, l’utilizzo di Docker Compose rende il processo di aggiornamento relativamente semplice. Alla fine di questa sezione, avrai l’ultima versione disponibile di LanCache sul tuo Raspberry Pi.

1. Il primo passo è quello di passare alla cartella in cui abbiamo originariamente scritto il file di Docker Compose.

È possibile passare a questa directory utilizzando il seguente comando terminale:

cd /opt/stacks/lancache

2. Una volta che siamo nel posto giusto, possiamo dire a Docker di scaricare l’ultima versione di LanCache sul nostro Pi utilizzando il seguente comando.

Questo scaricherà le ultime immagini, ma non aggiornerà i container già in esecuzione:

docker compose pull

3. Fortunatamente, l’aggiornamento dei container in esecuzione è semplicissimo. Basta infatti utilizzare lo stesso comando di avvio di LanCache per far sì che Docker passi alla nuova versione.

docker compose up -d

A questo punto dovresti avere LanCache in funzione sul tuo Raspberry Pi.

LanCache è un progetto unico che ti permette di memorizzare nella cache tutti i giochi che installi sul tuo sistema per velocizzare le richieste future, magari da un secondo PC o da una Steam Deck o simili.

Se hai riscontrato problemi, lascia pure un commento qui sotto.

Ti invitiamo anche a dare un’occhiata ai nostri altri progetti che potresti trovare interessanti! 😉