Il developer RyouVC, collaborando con la moglie, ha creato Alumulemu, un gestore di librerie per console Nintendo Switch nato dall’esigenza di superare la lentezza percepita nelle soluzioni esistenti.
Scritto in Rust per garantire la massima velocità, questo programma si propone come un’alternativa compatibile con Tinfoil, progettata per essere semplice da configurare, utilizzare e mantenere.
Alumulemu è un gestore di repository per l’ecosistema Horizon (il sistema operativo della console Switch), che permette di ospitare una propria repository Tinfoil, esportandolo in un formato JSON compatibile con Tinfoil o altri client simili.
Ancora in fase di sviluppo e non pronto per un uso in produzione, il progetto ha ambizioni future, come la creazione di un client standalone per accedere alle repository senza dipendere da Tinfoil.
Il cuore di Alumulemu si basa su SurrealDB per la gestione efficiente dei dati, offrendo flessibilità con un’istanza integrata o la possibilità di collegarsi a un’istanza esterna, e su Axum per il lato server.
Tra le sue funzionalità spiccano un’interfaccia web, realizzata con Vue.js e Tailwind CSS, che consente di gestire il server e visualizzare i metadati dei pacchetti, e un’API REST per interagire con il repository, di cui è prevista una documentazione futura.
Il programma supporta già caratteristiche come l’occultamento predefinito dei file e un aumento delle dimensioni delle anteprime, ma guarda avanti con piani ambiziosi: dall’integrazione di altre repository (anche non HTTP, come Google Drive o 1fichier) al caching per velocizzare l’accesso, fino al supporto per la crittografia di Tinfoil DRM.
Utilizzo
Per utilizzare Alumulemu, sono necessari:
- Una console Nintendo Switch o Switch 2 (facoltativo, con jailbreak).
- Un server per ospitare Alumulemu.
- Un’istanza di SurrealDB (facoltativo, consigliato per prestazioni migliori).
- Chiavi crittografiche specifiche della console (obbligatorie, da ottenere dal proprio dispositivo o da un altro).
- Una connessione di rete stabile (facoltativo).
- Dump dei propri giochi (facoltativo).
Configurazione
- Estrarre le chiavi dalla propria console utilizzando Lockpick_RCM.
- (Opzionale) Configurare un’istanza di SurrealDB, utilizzando l’immagine Docker ufficiale o il backend RocksDB incluso con Alumulemu.
- Scaricare l’immagine OCI dal GitHub Container Registry.
- Eseguire il container con le variabili d’ambiente e i volumi richiesti.
Configurazione delle variabili d’ambiente
Alumulemu si configura tramite variabili d’ambiente. Le seguenti sono obbligatorie o consigliate:
- ALU_DATABASE_URL: URL dell’istanza SurrealDB. Se non impostato, verrà usato il backend RocksDB. (Esempio:
surrealkv:///data
osurrealkv://database
) - ALU_DATABASE_AUTH_METHOD: Metodo di autenticazione per SurrealDB (opzionale, predefinito: nessuna autenticazione). Opzioni disponibili:
none
,root
(in futuro:namespace auth
). - ALU_SURREAL_ROOT_USERNAME / ALU_SURREAL_ROOT_PASSWORD: Credenziali per l’utente root (necessarie se l’autenticazione è impostata su
root
). - ALU_SURREAL_NAMESPACE / ALU_SURREAL_DATABASE: Namespace e database da utilizzare (predefinito:
alumulemu
). - ALU_PRIMARY_REGION: Regione principale dell’eShop (predefinito:
US
). - ALU_PRIMARY_LANGUAGE: Lingua principale dell’eShop (predefinito:
en
). - ALU_SECONDARY_LOCALES: Lingue secondarie dell’eShop (esempio:
JP_ja,US_es
per titoli giapponesi e spagnoli). - ALU_PROD_KEYS / ALU_TITLE_KEYS: Percorsi dei file delle chiavi di produzione e dei titoli della Switch (necessari per decriptare i giochi e i DLC).
- ALU_HOST: Indirizzo IP e porta del server (predefinito:
0.0.0.0:3000
). - ALU_CACHE_DIR: Directory per la cache del database dei titoli (predefinito:
.
o/var/cache/alumulemu
se in container). - ALU_PUBLIC: Modalità pubblica (predefinito:
false
– se attivata, l’API sarà accessibile senza autenticazione, ma gli endpoint amministrativi richiederanno comunque il login).
Ottimizzazione delle prestazioni del database
Si può scegliere un backend SurrealDB alternativo per migliorare le prestazioni:
- surrealkv (predefinito, più veloce ma meno affidabile per lo storage locale)
- rocksdb (più affidabile, consigliato per ambienti di produzione)
- tikv (distribuito, più scalabile, adatto a grandi installazioni)
È anche possibile connettersi a un’istanza SurrealDB esterna tramite WebSockets. Esempio di configurazione:
- ALU_DATABASE_URL=rocksdb:///data (per RocksDB)
- ALU_DATABASE_URL=surrealkv:///data (per SurrealKV)
- ALU_DATABASE_URL=ws://localhost:8000 (per un’istanza remota)
Accesso ai titoli
Alumulemu fornisce un’interfaccia web per visualizzare i metadati dei titoli. Basta accedere all’indirizzo URL del server da un browser.
Utilizzo con Tinfoil
Alumulemu supporta un indice JSON compatibile con Tinfoil. Per accedere al repository, aggiungere il seguente URL in Tinfoil: http://<your-server-ip>:3000/api/tinfoil
Esecuzione
È possibile eseguire il container Docker/Podman utilizzando il file docker-compose.yml fornito. In alternativa, si può compilare il progetto dal codice sorgente.
Nota
Al primo avvio, l’autenticazione è disabilitata se non ci sono utenti nel database. Per abilitare l’autenticazione, creare un utente alla pagina /admin/users
. Una volta creato l’utente, il server richiederà l’autenticazione per l’accesso.
Si consiglia vivamente di abilitare l’autenticazione prima di eseguire il server in un ambiente pubblico.
Changelog
- Implementata autenticazione RBAC (Role-Based Access Control) by @korewaChino in #3
- I nuovi utenti avranno ora permessi di Viewer assegnati per impostazione predefinita.
- Il primo utente creato riceverà permessi di Admin per semplificare la configurazione.
- Viewer ha accesso in sola lettura, Editor può importare, eseguire la scansione o modificare i dati di gioco, mentre Admin può creare o rimuovere utenti.
- Sostituita l’API del plugin di importazione con un nuovo standard semplificato basato su JSON (#4)
- I client Tinfoil che accedono al percorso root (
/
) ora verranno automaticamente reindirizzati a/api/tinfoil
. - Aggiunta una nuova scheda
Downloads
per tenere traccia dei download. - Migliorata la gestione delle query non valide per evitare crash improvvisi.
- Correzioni generali all’interfaccia utente:
- L’elenco dei titoli ora è centrato correttamente nella griglia.
- Sistemato il padding, rimuovendo le barre nere nell’elenco titoli prima dello sfondo.
- Migliorata la compatibilità dell’elenco titoli e delle sue pagine con dispositivi mobili.
Download: Source code Alumulemu v0.2.0
Fonte: gbatemp.net