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:
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:
# 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=trueAvvio del servizio
- Crea le directory necessarie:
mkdir -p nocodb/db nocodb/app- Avvia i container:
docker-compose up -d- Verifica lo stato dei servizi:
docker-compose ps- Visualizza i log in caso di problemi:
docker-compose logs -f- 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 |