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.
NOTA IMPORTANTE: FLAKE ESTERNO
NocoDB non è in nixpkgs
NocoDB non è presente nei repository ufficiali di nixpkgs, quindi non lo troverai su search.nixos.org . Il team di NocoDB ha scelto di distribuire il package e il modulo NixOS tramite il proprio flake su GitHub.
Questo significa che:
- Non puoi installarlo con un semplice
pkgs.nocodb - Devi usare i Nix Flakes e aggiungere l’input
github:nocodb/nocodb - Il modulo
services.nocodbè disponibile solo dopo aver importato il flake
Questa scelta permette al progetto di rilasciare aggiornamenti più frequenti senza dipendere dai cicli di release di nixpkgs.
PROCESSO DI INSTALLAZIONE
NocoDB fornisce un modulo NixOS ufficiale tramite il suo flake. Questo permette un’installazione dichiarativa e riproducibile direttamente nella configurazione del sistema.
Configurazione del Flake
Nel tuo flake.nix, aggiungi NocoDB come input:
{
description = "NixOS configuration with NocoDB";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nocodb.url = "github:nocodb/nocodb";
};
outputs = { self, nixpkgs, nocodb }: {
nixosConfigurations.hostname = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
nocodb.nixosModules.nocodb
];
};
};
}Configurazione Base (SQLite)
Il modulo NixOS usa SQLite di default, perfetto per installazioni single-user o piccoli team:
{ config, pkgs, ... }:
{
services.nocodb = {
enable = true;
environment = {
NC_PORT = "8080";
NC_DISABLE_TELE = "true";
NC_INVITE_ONLY_SIGNUP = "true";
};
};
# Apri la porta nel firewall
networking.firewall.allowedTCPPorts = [ 8080 ];
}Configurazione Avanzata con PostgreSQL
Per ambienti di produzione, è consigliato utilizzare PostgreSQL come database backend:
{ config, pkgs, ... }:
{
# Database PostgreSQL
services.postgresql = {
enable = true;
ensureDatabases = [ "nocodb" ];
ensureUsers = [
{
name = "nocodb";
ensureDBOwnership = true;
}
];
};
# Servizio NocoDB
services.nocodb = {
enable = true;
environmentFile = "/var/lib/nocodb/secrets.env";
environment = {
NC_DB = "pg://localhost:5432?u=nocodb&d=nocodb";
NC_PORT = "8080";
NC_DISABLE_TELE = "true";
NC_INVITE_ONLY_SIGNUP = "true";
};
};
# Apri la porta nel firewall
networking.firewall.allowedTCPPorts = [ 8080 ];
}File dei Segreti
Crea il file /var/lib/nocodb/secrets.env con le variabili sensibili:
# Autenticazione PostgreSQL
NC_DB_PASSWORD=password_sicura_database
# JWT Secret (minimo 256 bit)
NC_AUTH_JWT_SECRET=chiave_jwt_molto_lunga_e_sicura_generata_casualmente
# Credenziali Admin iniziali
NC_ADMIN_EMAIL=admin@nome-dominio.com
NC_ADMIN_PASSWORD=password_admin_sicura
# SMTP (opzionale)
NC_SMTP_HOST=smtp.gmail.com
NC_SMTP_PORT=587
NC_SMTP_USERNAME=your_email@gmail.com
NC_SMTP_PASSWORD=your_app_password
NC_SMTP_FROM=noreply@nome-dominio.comProteggi il file:
sudo mkdir -p /var/lib/nocodb
sudo chown root:root /var/lib/nocodb/secrets.env
sudo chmod 600 /var/lib/nocodb/secrets.envApplicazione della Configurazione
- Aggiorna il flake:
nix flake update- Ricostruisci il sistema:
sudo nixos-rebuild switch --flake .#hostname- Verifica lo stato del servizio:
systemctl status nocodb- Visualizza i log:
journalctl -u nocodb -f- Accedi all’interfaccia web:
Apri il browser e vai su
http://localhost:8080
SPIEGAZIONE DEL CODICE
Modulo NixOS
Il modulo NixOS di NocoDB crea automaticamente un servizio systemd con le seguenti caratteristiche:
- Utente dinamico: Il servizio gira con un utente non privilegiato creato automaticamente
- Stato persistente: I dati vengono salvati in
/var/lib/nocodb/ - Riavvio automatico: In caso di crash, il servizio si riavvia automaticamente
- Isolamento: Il servizio è isolato dal resto del sistema per maggiore sicurezza
Integrazione PostgreSQL
Utilizzando services.postgresql di NixOS, il database viene gestito in modo dichiarativo:
- Il database e l’utente vengono creati automaticamente
- Le migrazioni dello schema sono gestite da NocoDB all’avvio
- Il backup può essere integrato con gli strumenti standard di NixOS
Tabella delle Variabili d’Ambiente
| Nome Variabile | Scopo | Valore Default | Note |
|---|---|---|---|
NC_DB |
Stringa di connessione database | SQLite locale | Formato: pg://host:port?u=user&d=database |
NC_PORT |
Porta dell’interfaccia web | 8080 | Modifica se la porta è occupata |
NC_AUTH_JWT_SECRET |
Chiave segreta per JWT | - | Obbligatoria - Minimo 256 bit |
NC_ADMIN_EMAIL |
Email amministratore iniziale | - | Obbligatoria al primo avvio |
NC_ADMIN_PASSWORD |
Password amministratore iniziale | - | Obbligatoria al primo avvio |
NC_SMTP_HOST |
Server SMTP per email | - | Opzionale per notifiche |
NC_SMTP_PORT |
Porta server SMTP | 587 | Standard per TLS |
NC_SMTP_USERNAME |
Username SMTP | - | Per autenticazione email |
NC_SMTP_PASSWORD |
Password SMTP | - | App password per Gmail |
NC_SMTP_FROM |
Indirizzo mittente email | - | Email visibile agli utenti |
NC_DISABLE_TELE |
Disabilita telemetria | false | Consigliato: “true” |
NC_INVITE_ONLY_SIGNUP |
Registrazione solo su invito | false | Consigliato: “true” per sicurezza |
Opzioni del Modulo NixOS
| Opzione | Tipo | Default | Descrizione |
|---|---|---|---|
services.nocodb.enable |
bool | false |
Abilita il servizio NocoDB |
services.nocodb.package |
package | dal flake | Package NocoDB da utilizzare |
services.nocodb.environment |
attrs | { } |
Variabili d’ambiente non sensibili |
services.nocodb.environmentFile |
path | null |
File con variabili sensibili |