Docker Compose
Snapp può essere distribuito utilizzando Docker Compose. Questa configurazione avvia l’applicazione e un database PostgreSQL con storage persistente.
Requisiti
- Docker
- Docker Compose
- PostgreSQL 14+
Configurazione di base
Crea un file docker-compose.yml:
services:
db:
image: postgres:16
container_name: snapp-db
restart: always
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: password
POSTGRES_DB: local
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U root -d local']
interval: 5s
timeout: 3s
retries: 10
start_period: 5s
snapp:
image: uraniadev/snapp:beta
container_name: snapp
ports:
- '3000:3000'
volumes:
- ./data/settings.yaml:/app/config/settings.yaml
# opzionale – avatar utenti caricati
- ./data/avatars:/app/config/avatars
# opzionale – loghi delle organizzazioni caricati
- ./data/logos:/app/config/logos
environment:
DATABASE_URL: postgres://root:password@db:5432/local
depends_on:
database:
condition: service_healthy
restart: unless-stopped
volumes:
pgdata:
Perché è importante
- PostgreSQL espone uno stato di salute tramite
pg_isready - Snapp si avvia solo dopo che il database è raggiungibile
- Evita race condition al primo avvio e durante i riavvii
- Nessuno script di attesa personalizzato, nessun ciclo di polling
Configurazione dell’applicazione
Snapp richiede un file di configurazione in: ./data/settings.yaml
Questo file è opzionale. L’applicazione genererà una configurazione di fallback.
settings.yaml minimo
appname: Snapp
admin:
- email: admin@example.org
username: admin
hosts:
- origin: https://example.org
options:
customRedirect: /dashboard
Note di configurazione
admin- Gli utenti amministratori vengono inizializzati al primo avvio
- Le password vengono generate automaticamente una sola volta
hosts- Definisce le origini pubbliche consentite
- Ogni host può avere opzioni e comportamenti indipendenti
Un riferimento completo alla configurazione è disponibile nella sezione Configurazione.
Primo avvio
Dalla directory del progetto:
docker compose up -d
Al primo avvio, Snapp:
- Si connette a PostgreSQL
- Esegue le migrazioni del database
- Inizializza i dati interni
- Genera una password amministratore
La password amministratore generata viene stampata una sola volta nei log del container.
Per recuperarla:
docker logs snapp
Recupero password
Dopo il primo avvio, le password non vengono rigenerate né memorizzate.
Per abilitare il recupero password:
- Configura un provider SMTP in
settings.yaml - Riavvia il container
Senza SMTP configurato, l’email verrà renderizzata nei log.
Aggiornare Snapp
Per aggiornare a un’immagine più recente:
docker compose pull
docker compose up -d
Le migrazioni del database vengono applicate automaticamente se necessarie.
Note
Snapp è self-hosted e stateful
Esegui il backup di:
- volume PostgreSQL
settings.yaml- asset caricati (
avatars,logos)
L’immagine
betapuò introdurre cambiamenti incompatibili