SnappSnapp
  • Per iniziare
  • Installazione
  • Configurazione
  • Styling
  • Introduzione
  • URL Personalizzati
  • Autenticazione
  • Architettura Multi-Dominio
  • Gestione dei Team
  • Integrazioni di Terze Parti
  • Metriche e Analytics
  • Riferimento API
  • English
  • Italiano
  • Per iniziare
  • Installazione
  • Configurazione
  • Styling
  • Introduzione
  • URL Personalizzati
  • Autenticazione
  • Architettura Multi-Dominio
  • Gestione dei Team
  • Integrazioni di Terze Parti
  • Metriche e Analytics
  • Riferimento API
  • English
  • Italiano
  • Guida

    • Per iniziare
    • Installazione
    • Configurazione
    • Styling

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:

  1. Si connette a PostgreSQL
  2. Esegue le migrazioni del database
  3. Inizializza i dati interni
  4. 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 beta può introdurre cambiamenti incompatibili

Prev
Per iniziare
Next
Configurazione