TrueNAS SCALE
Guida all’installazione di XIQUIL su TrueNAS SCALE (Electric Eel 24.10+).
Prerequisiti
Sezione intitolata “Prerequisiti”- TrueNAS SCALE Electric Eel 24.10+
- Accesso alla shell TrueNAS (SSH o Web Shell)
- Pool configurato con spazio disponibile
Passo 1: Crea i dataset
Sezione intitolata “Passo 1: Crea i dataset”Dalla UI TrueNAS: Storage > Create Dataset
Crea tre dataset:
xiquil/data— per i dati dell’applicazionexiquil/backups— per i backupxiquil/db— per il database PostgreSQL
Passo 2: Configura i permessi
Sezione intitolata “Passo 2: Configura i permessi”I dataset richiedono permessi specifici:
# Dataset app (data e backups) — utente apps di TrueNASsudo chown -R 568:568 /mnt/pool/xiquil/datasudo chown -R 568:568 /mnt/pool/xiquil/backups
# Dataset db — utente postgres del containersudo chown -R 999:999 /mnt/pool/xiquil/dbPasso 3: Configura il docker-compose.yml
Sezione intitolata “Passo 3: Configura il docker-compose.yml”Adatta il docker-compose.yml standard con:
services: app: environment: - PUID=568 - PGID=568 volumes: - /mnt/pool/xiquil/data:/app/data - /mnt/pool/xiquil/backups:/app/backups
db: volumes: - /mnt/pool/xiquil/db:/var/lib/postgresql healthcheck: start_period: 120s # Storage lento su NAS — aumentato da 60sPasso 4: Avvia
Sezione intitolata “Passo 4: Avvia”cd /mnt/pool/xiquildocker compose up -dProblemi comuni su TrueNAS
Sezione intitolata “Problemi comuni su TrueNAS”Network bloccate (zombie)
Sezione intitolata “Network bloccate (zombie)”Questo e il problema piu comune su TrueNAS. Dopo un deploy fallito o un riavvio interrotto, le Docker network possono rimanere in stato “zombie”.
Soluzione dalla UI:
- Apps > Settings > Advanced Settings > Manage Docker Configuration > Restart
Soluzione da shell (solo se hai installato l’app via Custom App YAML manuale; con TrueNAS Apps fermare/riavviare dalla UI):
sudo docker compose down --remove-orphanssudo docker network prune -fsudo docker compose up -dErrore pull immagine
Sezione intitolata “Errore pull immagine”Se il download dell’immagine fallisce:
# Verifica connettivitanslookup ghcr.io
# Pull manualesudo docker pull ghcr.io/justvitlab/xiquil:latestsudo docker pull postgres:18-alpineHealthcheck DB in timeout
Sezione intitolata “Healthcheck DB in timeout”Al primo avvio su storage lento (HDD meccanici, RAID software), PostgreSQL puo impiegare fino a 2 minuti per inizializzarsi. Aumenta start_period a 120s o 180s.
Permessi file errati
Sezione intitolata “Permessi file errati”Se vedi “Permission denied” nei log, verifica che i dataset abbiano i permessi corretti (Passo 2). In TrueNAS, puoi anche impostare i permessi dalla UI: Storage > dataset > Edit Permissions.
Comandi diagnostici
Sezione intitolata “Comandi diagnostici”# Stato containersudo docker ps -a --filter name=xiquil
# Log appsudo docker logs --tail 50 xiquil_app
# Log databasesudo docker logs --tail 50 xiquil_db
# Risorsesudo docker stats --no-stream --filter name=xiquil
# Puliziasudo docker system dfsudo docker image prune -fReset completo dei dati
Sezione intitolata “Reset completo dei dati”Se vuoi azzerare l’installazione (DB vuoto, nessun utente, nessun upload, nessuna licenza, certificati TLS rigenerati) senza disinstallare l’app dalla UI, l’unica via su TrueNAS e cancellare il contenuto dei dataset montati come volumi nei container.
Procedura
Sezione intitolata “Procedura”1. Identifica i container (escludendo eventuali altre istanze come xiquil-test):
sudo docker ps -a | grep -i xiquilVerifica nella colonna NAMES quale e l’istanza di produzione.
2. Trova i dataset di produzione:
sudo zfs list -o name,mountpoint | grep -i xiquil | grep -vi testEsempio output:
Mercurio/Apps/Xiquil/data /mnt/Mercurio/Apps/Xiquil/dataMercurio/Apps/Xiquil/database /mnt/Mercurio/Apps/Xiquil/databaseBackups/Apps/xiquil_beta /mnt/Backups/Apps/xiquil_betaI nomi dei dataset (db vs database, data vs Data) e dei pool variano. Lascia stare il dataset backups.
3. Ferma l’app dalla UI: Apps → Installed → seleziona la tua app → Stop, attendi STOPPED.
4. Verifica i contenuti prima di cancellare:
sudo ls -la /mnt/<pool>/Apps/Xiquil/data /mnt/<pool>/Apps/Xiquil/database5. Svuota i contenuti (sostituisci <pool> col nome reale del tuo pool, es. Mercurio):
sudo find /mnt/<pool>/Apps/Xiquil/data -mindepth 1 -deletesudo find /mnt/<pool>/Apps/Xiquil/database -mindepth 1 -delete6. Verifica che siano vuoti:
sudo ls -la /mnt/<pool>/Apps/Xiquil/data /mnt/<pool>/Apps/Xiquil/databaseDevi vedere solo le voci . e ...
7. Ripristina permessi numerici:
sudo chown -R 568:568 /mnt/<pool>/Apps/Xiquil/datasudo chown -R 999:999 /mnt/<pool>/Apps/Xiquil/databaseL’UID 999 (postgres del container) viene mappato sull’host TrueNAS all’utente netdata — e normale, l’importante e il valore numerico.
8. Riavvia dalla UI: Apps → Installed → app produzione → Start.
Il primo boot richiede 1-2 minuti (Postgres rifa initdb da zero). Quando lo stato e running/healthy, apri il browser sull’URL/porta dell’app — verrai indirizzato a /setup per creare il primo amministratore.
Reset selettivo: solo database
Sezione intitolata “Reset selettivo: solo database”Se ti serve azzerare solo il DB mantenendo gli upload e la config:
sudo find /mnt/<pool>/Apps/Xiquil/database -mindepth 1 -deletesudo chown -R 999:999 /mnt/<pool>/Apps/Xiquil/databasePoi riavvia l’app dalla UI.
Note sulla shell zsh
Sezione intitolata “Note sulla shell zsh”La shell di default su TrueNAS SCALE e zsh, che differisce da bash su alcuni punti che possono confondere il copia-incolla di comandi:
| Sintassi | Cosa fa zsh | Soluzione |
|---|---|---|
<placeholder> | Interpreta < come redirezione → errore | Sostituisci sempre i placeholder col valore reale prima di incollare |
# commento su riga isolata | command not found: # | Rimuovi le righe di commento prima di incollare |
.[!.]* o foo! | event not found (history expansion) | Quota con apici singoli o usa .??* |
sudo rm /protected/* | Glob espanso PRIMA di sudo, dall’utente non privilegiato → no matches found | Usa sudo find /protected -mindepth 1 -delete |
| Glob senza match | Errore no matches found (in bash passerebbe il pattern letterale) | Usa find per operare su path privilegiati |
Per le operazioni di reset/cleanup su /mnt/, find -delete sotto sudo e sempre la scelta sicura: aggira tutti i punti sopra ed e portabile fra zsh e bash.