Repurposing my dusty old iPad 3 as a TRMNL display, with a self-hosted TRMNL server running in my homelab.
Di recente ho visto un video su YouTube riguardante un'azienda chiamata TRMNL che vende display e-ink always-on. Questi display e-ink sono pensati per essere utilizzati come dashboard per visualizzare qualsiasi tipo di informazione.
La cosa interessante di TRMNL è che gran parte del suo stack software è open-source, auto-ospitabile e compatibile con vari dispositivi di terze parti (ad esempio Kindle) o qualsiasi dispositivo in grado di aprire una pagina web.
Avevo un vecchio iPad 3 che prendeva polvere in un cassetto e ho pensato che sarebbe stato divertente configurarlo nel mio laboratorio casalingo. La configurazione è stata piuttosto semplice. Non ho ancora dedicato molto tempo alla creazione di schermate informative, ma anche con le poche che ho al momento, sono soddisfatto di come funziona.
A quanto ho capito, l'architettura software di TRMNL è piuttosto semplice. Il server raccoglie periodicamente dati da varie fonti (ad esempio, interrogando un endpoint o tramite webhook), li elabora in una pagina web utilizzando dei template e ne acquisisce uno screenshot per il dispositivo dell'utente. Il dispositivo su cui è in esecuzione il client – ad esempio, nel mio iPad si tratta semplicemente di Safari con una pagina web aperta – interroga il server a intervalli fissi, recupera gli screenshot più recenti e li visualizza sullo schermo.
Penso che dovrebbe essere abbastanza facile implementare qualcosa del genere con Vibe-Code per il tuo caso specifico, magari con una configurazione ancora più semplice (ad esempio, saltando la generazione dell'immagine e facendo in modo che il tuo dispositivo apra una pagina che si aggiorna regolarmente). Comunque, questa configurazione mi piace e continuerò a usarla.
La configurazione
Alla fine ho optato per LaraPaper come server. Ha un'interfaccia utente piuttosto minimale, è facile da configurare con una singola immagine Docker e supporta nativamente le ricette provenienti da cataloghi ufficiali e della community.
Docker Compose
Ho aggiunto il seguente codice YAML al file Docker Compose del mio homelab:
volumes: trmnl_database: trmnl_storage: services: trmnl: image: ghcr.io/usetrmnl/larapaper:0.31.3 container_name: trmnl restart: unless-stopped networks: - homelab environment: # Generate the APP_KEY with `echo "base64:$(openssl rand -base64 32)"` - APP_KEY=base64:TmV2ZXIgZ29ubmEgZ2l2ZSB5b3UgdXA= - APP_URL=https://trmnl.example.com - FORCE_HTTPS=true - PHP_OPCACHE_ENABLE=1 - TRMNL_PROXY_REFRESH_MINUTES=15 - DB_DATABASE=database/storage/database.sqlite volumes: - trmnl_database:/var/www/html/database/storage - trmnl_storage:/var/www/html/storage/app/public/images/generated
nginx
E il seguente blocco server nella mia configurazione nginx:
server { listen 443 ssl; server_name trmnl.example.com; set $trmnl trmnl; location / { proxy_pass http://$trmnl:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Forwarded-Host $http_host; } }
Modello di dispositivo personalizzato
Dopo aver avviato il mio nuovo servizio e riavviato nginx con la nuova configurazione, ho visitato la dashboard di LaraPaper e ho registrato un account. Per fare in modo che il server visualizzasse le immagini nelle dimensioni dello schermo del mio iPad, ho dovuto prima aggiungere un modello di dispositivo personalizzato .
Dopo aver configurato il modello del dispositivo , ho aggiunto un nuovo dispositivo con un indirizzo MAC e una chiave API casuali e ho creato una playlist per il dispositivo .
iPad
Sul mio iPad, ho semplicemente aperto la /mirrorpagina tramite l'URL della mia istanza LaraPaper ospitata e ho aggiunto un collegamento al sito web sulla schermata iniziale per visualizzarlo a schermo intero. Potevo anche aprire questa pagina nel mio browser per consultare le ricette che volevo provare.
Ricette
Una cosa che apprezzo di LaraPaper è la possibilità di modificare immediatamente qualsiasi ricetta selezionata da un catalogo, una volta importata. Alcune ricette mi piacevano (ad esempio, quella che visualizza l'ultimo fumetto di xkcd o un'altra che mostra citazioni stoiche), ma non tutte apparivano al meglio sullo schermo del mio iPad appena scaricate. Probabilmente ciò è dovuto alle dimensioni maggiori dello schermo rispetto ai display standard di TRMNL.
Tuttavia, con gli LLM, è piuttosto facile modificare questi modelli di ricette a proprio piacimento. Basta copiare il codice del modello in una chat LLM e chiedere di modificarlo secondo le proprie esigenze. Non è perfetto, ma dopo qualche tentativo si può ottenere il risultato desiderato.
Cosa succederà dopo?
Al momento ho configurato solo un numero limitato di schermate informative, ma grazie alla flessibilità offerta da LaraPaper, mi vengono in mente alcune idee:
Recupera i dati dalle API di Garmin o Strava e visualizza un calendario delle attività.
Mostra il grafico dei miei contributi su GitHub (non è qualcosa che ottimizzo, penso solo che sia interessante da vedere).
Visualizza estratti di tutti i nuovi post dai miei abbonamenti RSS
Monitora le performance del mio portafoglio utilizzando l'API di Zerodha.
Mostrami le previsioni del tempo o l'indice di qualità dell'aria (AQI) della zona intorno a me
Scopri quando andrà in onda il prossimo episodio dell'anime che voglio guardare.
Quando ne avrò l'occasione, vorrei anche sperimentare la visualizzazione di pannelli colorati sull'iPad.
Per ora è tutto. Mi piacerebbe molto sapere anche del tuo TRMNL, se decidi di crearne uno. Scrivimi pure idee, commenti o suggerimenti all'indirizzo email che trovi sulla mia homepage .








