Salta ai contenuti

TrueNAS SCALE

Guida all’installazione di XIQUIL su TrueNAS SCALE (Electric Eel 24.10+).

  • TrueNAS SCALE Electric Eel 24.10+
  • Accesso alla shell TrueNAS (SSH o Web Shell)
  • Pool configurato con spazio disponibile

Dalla UI TrueNAS: Storage > Create Dataset

Crea tre dataset:

  • xiquil/data — per i dati dell’applicazione
  • xiquil/backups — per i backup
  • xiquil/db — per il database PostgreSQL

I dataset richiedono permessi specifici:

Terminal window
# Dataset app (data e backups) — utente apps di TrueNAS
sudo chown -R 568:568 /mnt/pool/xiquil/data
sudo chown -R 568:568 /mnt/pool/xiquil/backups
# Dataset db — utente postgres del container
sudo chown -R 999:999 /mnt/pool/xiquil/db

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 60s
Terminal window
cd /mnt/pool/xiquil
docker compose up -d

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:

  1. 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):

Terminal window
sudo docker compose down --remove-orphans
sudo docker network prune -f
sudo docker compose up -d

Se il download dell’immagine fallisce:

Terminal window
# Verifica connettivita
nslookup ghcr.io
# Pull manuale
sudo docker pull ghcr.io/justvitlab/xiquil:latest
sudo docker pull postgres:18-alpine

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.

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.


Terminal window
# Stato container
sudo docker ps -a --filter name=xiquil
# Log app
sudo docker logs --tail 50 xiquil_app
# Log database
sudo docker logs --tail 50 xiquil_db
# Risorse
sudo docker stats --no-stream --filter name=xiquil
# Pulizia
sudo docker system df
sudo docker image prune -f

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.

1. Identifica i container (escludendo eventuali altre istanze come xiquil-test):

Terminal window
sudo docker ps -a | grep -i xiquil

Verifica nella colonna NAMES quale e l’istanza di produzione.

2. Trova i dataset di produzione:

Terminal window
sudo zfs list -o name,mountpoint | grep -i xiquil | grep -vi test

Esempio output:

Mercurio/Apps/Xiquil/data /mnt/Mercurio/Apps/Xiquil/data
Mercurio/Apps/Xiquil/database /mnt/Mercurio/Apps/Xiquil/database
Backups/Apps/xiquil_beta /mnt/Backups/Apps/xiquil_beta

I 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:

Terminal window
sudo ls -la /mnt/<pool>/Apps/Xiquil/data /mnt/<pool>/Apps/Xiquil/database

5. Svuota i contenuti (sostituisci <pool> col nome reale del tuo pool, es. Mercurio):

Terminal window
sudo find /mnt/<pool>/Apps/Xiquil/data -mindepth 1 -delete
sudo find /mnt/<pool>/Apps/Xiquil/database -mindepth 1 -delete

6. Verifica che siano vuoti:

Terminal window
sudo ls -la /mnt/<pool>/Apps/Xiquil/data /mnt/<pool>/Apps/Xiquil/database

Devi vedere solo le voci . e ...

7. Ripristina permessi numerici:

Terminal window
sudo chown -R 568:568 /mnt/<pool>/Apps/Xiquil/data
sudo chown -R 999:999 /mnt/<pool>/Apps/Xiquil/database

L’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.

Se ti serve azzerare solo il DB mantenendo gli upload e la config:

Terminal window
sudo find /mnt/<pool>/Apps/Xiquil/database -mindepth 1 -delete
sudo chown -R 999:999 /mnt/<pool>/Apps/Xiquil/database

Poi riavvia l’app dalla UI.


La shell di default su TrueNAS SCALE e zsh, che differisce da bash su alcuni punti che possono confondere il copia-incolla di comandi:

SintassiCosa fa zshSoluzione
<placeholder>Interpreta < come redirezione → erroreSostituisci sempre i placeholder col valore reale prima di incollare
# commento su riga isolatacommand 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 foundUsa sudo find /protected -mindepth 1 -delete
Glob senza matchErrore 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.