NocoDB è una piattaforma open source no-code che permette di costruire database potenti con la semplicità di un foglio di calcolo. In pratica, trasforma qualsiasi database (PostgreSQL, MySQL, SQLite, SQL Server) in un’interfaccia visuale intuitiva, accessibile anche a chi non ha competenze tecniche di programmazione. Questo progetto è nato come alternativa open source ad Airtable.

A differenza dei servizi SaaS proprietari, NocoDB non impone limiti artificiali sull’accesso ai tuoi dati. Facendo self-hosting sulla tua infrastruttura puoi mantenere il pieno controllo dei tuoi dati senza vendor lock-in. La piattaforma gestisce grandi moli di dati senza dover passare a un piano a pagamento per sbloccare funzionalità specifiche.

A livello pratico, NocoDB può essere utilizzato in varie modalità: l’interfaccia è nativamente responsive, permette di visualizzare i dati in modi differenti (Grid, Kanban, Gallery, Form, Calendar) e genera API REST in automatico per integrare le varie fonti dati senza dover scrivere codice aggiuntivo.

PROCESSO DI INSTALLAZIONE

File Docker Compose

Crea il file docker-compose.yml:

yaml
version: '3.8'

services:

  nocodb_app:
    image: nocodb/nocodb:latest
    container_name: nocodb_app
    restart: unless-stopped
    ports:
      - "${NOCODB_PORT}:8080"
    environment:
      # Database
      NC_DB: "pg://nocodb_postgres:5432?u=${NOCODB_DB_USER}&p=${NOCODB_DB_PASSWORD}&d=${NOCODB_DB_NAME}"
      # Autenticazione
      NC_AUTH_JWT_SECRET: ${NOCODB_JWT_SECRET}
      # Admin iniziale
      NC_ADMIN_EMAIL: ${NOCODB_ADMIN_EMAIL}
      NC_ADMIN_PASSWORD: ${NOCODB_ADMIN_PASSWORD}
      # SMTP (opzionale)
      NC_SMTP_HOST: ${NOCODB_SMTP_HOST}
      NC_SMTP_PORT: ${NOCODB_SMTP_PORT}
      NC_SMTP_USERNAME: ${NOCODB_SMTP_USERNAME}
      NC_SMTP_PASSWORD: ${NOCODB_SMTP_PASSWORD}
      NC_SMTP_FROM: ${NOCODB_SMTP_FROM}
      NC_SMTP_SECURE: ${NOCODB_SMTP_SECURE}
      # Sicurezza
      NC_INVITE_ONLY_SIGNUP: ${NOCODB_INVITE_ONLY}
      NC_DISABLE_TELE: "true"
    volumes:
      - ./nocodb/app:/usr/app/data/
    depends_on:
      nocodb_postgres:
        condition: service_healthy
    networks:
      - nocodb_network

  nocodb_postgres:
    image: postgres:15
    container_name: nocodb_postgres
    restart: unless-stopped
    environment:
      POSTGRES_USER: ${NOCODB_DB_USER}
      POSTGRES_PASSWORD: ${NOCODB_DB_PASSWORD}
      POSTGRES_DB: ${NOCODB_DB_NAME}
    volumes:
      - ./nocodb/db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${NOCODB_DB_USER} -d ${NOCODB_DB_NAME}"]
      interval: 30s
      timeout: 10s
      retries: 5
    networks:
      - nocodb_network

networks:
  nocodb_network:
    driver: bridge

volumes:
  nocodb_db:
  nocodb_app:

File delle variabili d’ambiente

Crea il file .env nella stessa directory:

bash
# Database Configuration
NOCODB_DB_USER=nocodb_user
NOCODB_DB_PASSWORD=secure_password_here
NOCODB_DB_NAME=nocodb_db

# NocoDB Application
NOCODB_PORT=8080
NOCODB_JWT_SECRET=your_very_long_random_jwt_secret_at_least_256_bits
NOCODB_ADMIN_EMAIL=admin@nome-dominio.com
NOCODB_ADMIN_PASSWORD=admin_password_secure

# SMTP Configuration (opzionale)
NOCODB_SMTP_HOST=smtp.gmail.com
NOCODB_SMTP_PORT=587
NOCODB_SMTP_USERNAME=your_email@gmail.com
NOCODB_SMTP_PASSWORD=your_app_password
NOCODB_SMTP_FROM=noreply@nome-dominio.com
NOCODB_SMTP_SECURE=false

# Security Settings
NOCODB_INVITE_ONLY=true

Avvio del servizio

  1. Crea le directory necessarie:
bash
mkdir -p nocodb/db nocodb/app
  1. Avvia i container:
bash
docker-compose up -d
  1. Verifica lo stato dei servizi:
bash
docker-compose ps
  1. Visualizza i log in caso di problemi:
bash
docker-compose logs -f
  1. Accedi all’interfaccia web: Apri il browser e vai su http://localhost:8080 (o la porta configurata)

SPIEGAZIONE DEL CODICE

Servizio Database (nocodb_postgres)

Il container PostgreSQL fornisce il database principale per NocoDB. Utilizza l’immagine ufficiale PostgreSQL 15 con configurazioni ottimizzate per la persistenza dei dati e il controllo dello stato di salute.

Servizio Applicazione (nocodb_app)

Il container principale di NocoDB che espone l’interfaccia web e le API. Si connette automaticamente al database PostgreSQL e gestisce tutte le funzionalità della piattaforma.

Rete e Volumi

  • Rete personalizzata: Isola i servizi e consente la comunicazione sicura tra container
  • Volumi persistenti: Garantiscono la conservazione dei dati anche dopo riavvii o aggiornamenti

Tabella delle Variabili d’Ambiente

Nome Variabile Scopo Valore Default Note
NOCODB_DB_USER Username del database PostgreSQL nocodb_user Personalizzabile
NOCODB_DB_PASSWORD Password del database - Obbligatoria - Usa password sicura
NOCODB_DB_NAME Nome del database PostgreSQL nocodb_db Personalizzabile
NOCODB_PORT Porta esposta per l’interfaccia web 8080 Modifica se la porta è occupata
NOCODB_JWT_SECRET Chiave segreta per JWT - Obbligatoria - Minimo 256 bit
NOCODB_ADMIN_EMAIL Email amministratore iniziale - Obbligatoria
NOCODB_ADMIN_PASSWORD Password amministratore iniziale - Obbligatoria
NOCODB_SMTP_HOST Server SMTP per email - Opzionale per notifiche
NOCODB_SMTP_PORT Porta server SMTP 587 Standard per TLS
NOCODB_SMTP_USERNAME Username SMTP - Per autenticazione email
NOCODB_SMTP_PASSWORD Password SMTP - App password per Gmail
NOCODB_SMTP_FROM Indirizzo mittente email - Email visibile agli utenti
NOCODB_SMTP_SECURE Connessione sicura SMTP false true per SSL/TLS
NOCODB_INVITE_ONLY Registrazione solo su invito true Maggiore sicurezza