Supabase Installazione · 8 min read · Sep 13, 2025

Come Installare Supabase (Alternativa a Firebase) con Docker su Ubuntu 24.04

Supabase è un’alternativa open-source a Firebase costruita sopra il database PostgreSQL, il database relazionale più affidabile al mondo. Permette agli sviluppatori di costruire applicazioni web, mobili e AI complete. Supabase offre database PostgreSQL, autenticazione, API, Storage, abbonamenti in tempo reale e vettori di embedding. Con la semplice configurazione e interfaccia utente, gli sviluppatori possono rapidamente costruire applicazioni su Supabase.

In questo tutorial, imparerai come installare Supabase su un server Ubuntu 24.04. Eseguirai Supabase come contenitori con Docker, e proteggerai Supabase con autenticazione a password e token JWT. Infine, imparerai anche come configurare Nginx come reverse proxy per Supabase.

Prerequisiti

Per iniziare con questa guida, assicurati di avere quanto segue:

  • Un server Ubuntu 24.04
  • Un utente non root con privilegi di amministratore
  • Un nome di dominio puntato all’indirizzo IP del server

Installazione di Docker Engine

Per distribuire Supabase sul tuo server, devi installare Docker Engine sulla tua macchina. Le applicazioni Supabase verranno eseguite come contenitore sul tuo server.

In questa sezione, installerai Docker Engine tramite il repository ufficiale di Docker.

Prima, esegui il comando qui sotto per aggiornare l’indice dei pacchetti di Ubuntu e installare pacchetti come ‘ ca-certificates ‘, ‘ curl ‘ e ‘ git ‘.

sudo apt update  
sudo apt install -y ca-certificates curl git

install deps

Ora esegui il seguente comando per aggiungere la chiave GPG per il repository di Docker Engine.

sudo install -m 0755 -d /etc/apt/keyrings  
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc  
sudo chmod a+r /etc/apt/keyrings/docker.asc

Aggiungi il repository di Docker Engine per il tuo server Ubuntu eseguendo il comando qui sotto.

echo \  
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \  
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \  
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

add repo

Con la chiave GPG e il repository di Docker aggiunti, esegui il comando ‘ apt ‘ qui sotto per aggiornare l’indice dei pacchetti e installare Docker Engine. Con questo, installerai anche i plugin Docker Compose e buildx.

sudo apt update  
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Inserisci ‘ Y ‘ per confermare l’installazione.

install docker

Aggiungere Utente al Gruppo Docker

In questa guida, eseguirai Supabase come utente non root, quindi assicurati che venga creato un utente dedicato. Poi, devi aggiungere il tuo utente al gruppo ‘docker’, che permetterà all’utente di eseguire contenitori.

Aggiungi il tuo utente al gruppo ‘ docker ‘ con il comando qui sotto. Questo permetterà al tuo utente di eseguire e gestire contenitori.

sudo usermod -aG sudo username

Accedi al tuo utente con il comando ‘ su ‘ qui sotto.

su - username

Infine, esegui il comando ‘ docker ‘ qui sotto per eseguire il contenitore ‘ hello-world ‘.

docker run hello-world

Se tutto va bene, vedrai il messaggio ‘ Hello World ‘ da Docker.

docker hello world

Scaricare e Installare Supabase

Ora che hai installato Docker, il passo successivo è scaricare Supabase ed eseguirlo come contenitore. In questa sezione, imparerai come far funzionare Supabase e, in seguito, come proteggerlo.

Scarica il codice sorgente ‘ supabase ‘ con il comando ‘ git ‘ qui sotto.

git clone --depth 1 https://github.com/supabase/supabase

Spostati nella directory ‘supabase/docker’ e copia il file ‘ .env.example ‘ in ‘ .env ‘. Questo file verrà utilizzato per configurare la tua installazione di Supabase.

cd supbase/docker  
cp .env.example .env

Successivamente, esegui il comando ‘ docker compose ‘ qui sotto per scaricare le immagini di Supabase dal repository Docker. Questo scaricherà più immagini per Supabase.

docker compose pull

Puoi vedere il processo di download delle immagini Docker di Supabase qui sotto.

download images

Una volta terminato il processo, esegui il seguente comando per avviare i contenitori di Supabase. Con l’opzione ‘ -d ‘, eseguirai i contenitori in background, quindi i log per i contenitori di Supabase non verranno mostrati.

docker compose up -d

start containers

Infine, esegui il comando ‘ docker compose ‘ qui sotto per controllare lo stato dei contenitori di Supabase.

docker compose ps

Nell’output qui sotto, puoi vedere che i contenitori di Supabase come ‘ supabase-auth ‘, ‘ supabase-kong ‘, ‘ supabase-rest ‘ e ‘ supabase-studio ‘ sono in esecuzione.

check containers

Proteggere Supabase

Attualmente, Supabase è attivo e funzionante sul tuo sistema, ma senza una corretta password e autenticazione. Quindi, per ora, proteggerai l’installazione di Supabase cambiando le credenziali all’interno del file ‘.env’.

Prima di iniziare, generiamo le password per il server PostgreSQL e il dashboard di Supabase, e poi generiamo il segreto e il token JWT.

Esegui il comando qui sotto due volte per generare una password sicura per il dashboard di Supabase e il server PostgreSQL.

openssl rand -hex 16

generate key

Ora vai sul sito web di Supabase per generare due token JWT per Supabase. Assicurati di annotare quanto segue:

  • JWT Secret
  • Chiave per entrambi ANON_KEY e SERVICE_KEY
  • Token JWT generati per entrambi

JWT token

Ora che hai generato password e token per Supabase, applichiamo queste modifiche modificando il file ‘.env’.

Apri il file ‘ .env ‘ utilizzando l’editor ‘ vim ‘.

vim .env

Incolla la tua password OpenSSL generata nell’opzione ‘ POSTGRES_PASSWORD ‘.

POSTGRES_PASSWORD=f489d6f61514eb90fbf57fb574c3d367

Inserisci la tua chiave segreta JWT nell’opzione ‘ JWT_SECRET ‘.

JWT_SECRET=PUaiJLm1PKAebJJRIdXylVJrfgGbRWdWvzN0EUgh

Sostituisci il valore ‘ ANON_KEY ‘ con il tuo token JWT generato per l’utente ‘ anon ‘.

ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogImFub24iLAogICJpc3MiOiAic3VwYWJhc2UiLAogICJpYXQiOiAxNzM2MzU1NjAwLAogICJleHAiOiAxODk0MTIyMDAwCn0.f8_wST3WX1bmvsHttRokJPCz7-rpyjU8HMNnYH7kSd4

Sostituisci il valore ‘ SERVICE_ROLE_KEY ‘ con il tuo token JWT generato per l’utente ‘ service_role ‘.

SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogInNlcnZpY2Vfcm9sZSIsCiAgImlzcyI6ICJzdXBhYmFzZSIsCiAgImlhdCI6IDE3MzYzNTU2MDAsCiAgImV4cCI6IDE4OTQxMjIwMDAKfQ.DOo1lqH76AR_jCx0N9QDZBEdrQ8T_JBQqc7CagD1mWM

Se stai distribuendo su un server pubblico, inserisci i dettagli del tuo server SMTP.

Email auth  
ENABLE_EMAIL_SIGNUP=true  
ENABLE_EMAIL_AUTOCONFIRM=false  
[email protected]  
SMTP_HOST=smtp.server.address  
SMTP_PORT=2500  
SMTP_USER=username  
SMTP_PASS=password  
SMTP_SENDER_NAME=sender_name  
ENABLE_ANONYMOUS_USERS=false

Inserisci il tuo nome utente e password nelle opzioni ‘ DASHBOARD_USERNAME ‘ e ‘ DASHBOARD_PASSWORD ‘. Questo utente verrà utilizzato per accedere a Supabase.

DASHBOARD_USERNAME=supabase  
DASHBOARD_PASSWORD=91521851a4e1375145959eecddfaff45

Inserisci il tuo nome di dominio nelle opzioni ‘ SITE_URL ‘, ‘ API_EXTERNAL_URL ‘ e ‘ SUPABASE_PUBLIC_URL’. In questo esempio, utilizzeremo un dominio ‘https://supabase.howtoforge.local’.

SITE_URL=https://supabase.howtoforge.local  
API_EXTERNAL_URL=https://supabase.howtoforge.local  
SUPABASE_PUBLIC_URL=https://supabase.howtoforge.local

Salva il file e esci dall’editor quando hai finito.

Ora esegui il comando ‘ docker ‘ qui sotto per fermare e rimuovere i contenitori di Supabase.

docker compose down

E poi ricrea i contenitori per Supabase con il seguente comando.

docker compose up -d

Una volta che tutto è in esecuzione, controlla ciascun servizio del contenitore utilizzando il comando qui sotto.

docker compose ps

Puoi vedere qui che ciascun contenitore per Supabase è in esecuzione.

check coantainers

Impostare Nginx come Reverse Proxy per Supabase

Ora che Supabase è protetto, installiamo il server web Nginx e configuriamolo come reverse proxy per Supabase. Assicurati di avere il tuo nome di dominio pronto e puntato all’indirizzo IP del server.

Installa Nginx con il seguente comando ‘ apt ‘.

sudo apt install nginx -y

Ora crea una nuova configurazione del blocco server Nginx ‘ /etc/nginx/sites-available/supabase ‘ con l’editor ‘vim’.

sudo vim /etc/nginx/sites-available/supabase

Incolla la seguente configurazione e assicurati di cambiare il nome di dominio all’interno dell’opzione ‘ server_name ‘.

map $http_upgrade $connection_upgrade {  
default upgrade;  
'' close;  
}  
  
upstream kong {  
server localhost:8000;  
}  
  
server {  
listen 80;  
server_name supabase.howtoforge.local;  
  
# REST  
location ~ ^/rest/v1/(.*)$ {  
proxy_set_header Host $host;  
proxy_pass http://kong;  
proxy_redirect off;  
}  
  
# AUTH  
location ~ ^/auth/v1/(.*)$ {  
proxy_set_header Host $host;  
proxy_pass http://kong;  
proxy_redirect off;  
}  
  
# REALTIME  
location ~ ^/realtime/v1/(.*)$ {  
proxy_redirect off;  
proxy_pass http://kong;  
proxy_http_version 1.1;  
proxy_set_header Upgrade $http_upgrade;  
proxy_set_header Connection $connection_upgrade;  
proxy_set_header Host $host;  
}  
  
# STUDIO  
location / {  
proxy_set_header Host $host;  
proxy_pass http://kong;  
proxy_redirect off;  
proxy_set_header Upgrade $http_upgrade;  
}  
}

Salva il file e esci dall’editor quando hai finito.

Successivamente, esegui il comando qui sotto per attivare il blocco server di Supabase e verificare la sintassi di Nginx. Se non ci sono errori, riceverai un output ‘ syntax is ok - test is successful ‘.

sudo ln -s /etc/nginx/sites-available/supabase /etc/nginx/sites-enabled/  
sudo nginx -t

setup nginx

Ora esegui il comando ‘ systemctl ‘ qui sotto per riavviare il server web Nginx e applicare le tue modifiche. Con questo, la tua installazione di Supabase dovrebbe essere in esecuzione sotto il reverse Proxy Nginx.

sudo systemctl restart nginx

Infine, esegui il comando ‘systemctl’ qui sotto per verificare il servizio Nginx e assicurarti che il servizio sia in esecuzione.

sudo systemctl status nginx

Se tutto va bene, vedrai un output simile al seguente.

check nginx

Proteggere Supabase con HTTPS

Dopo che Nginx è attivo e funzionante come reverse proxy, generiamo certificati SSL e abilitiamo HTTPS per proteggere l’installazione di Supabase.

Se sei in modalità di sviluppo, puoi saltare questa parte e lasciare Supabase senza HTTPS. Per la produzione, devi implementare HTTPS per proteggere il tuo server Supabase.

Installa Certbot e il plugin Nginx Certbot con il comando ‘ apt ‘ qui sotto. Inserisci ‘Y’ per confermare l’installazione.

sudo apt install certbot python3-certbot-nginx

Dopo che l’installazione è completata, esegui il comando ‘certbot’ qui sotto per generare certificati SSL per il tuo nome di dominio. Assicurati di cambiare il nome di dominio e l’indirizzo email all’interno del comando.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d supabase.howtoforge.local

Una volta completato, i tuoi certificati SSL saranno disponibili nella directory ‘ /etc/letsencrypt/live/domain.com ‘ e Supabase sarà protetto automaticamente con HTTPS tramite il plugin Nginx Certbot.

Accedere a Supabase Studio

Per accedere a Supabase, apri il tuo browser web e visita https://supabase.howtoforge.local. Se la tua installazione ha avuto successo, ti verrà chiesto di inserire l’autenticazione di base con password.

Inserisci il nome utente e la password nelle opzioni ‘ DASHBOARD_USERNAME ‘ e ‘ DASHBOARD_PASSWORD ‘ e fai clic su ‘ Login ‘.

login

Se hai successo, vedrai il seguente Dashboard di Supabase.

dashboard

Conclusione

Congratulazioni! Hai completato l’installazione di Supabase sul server Ubuntu 24.04 tramite Docker. Hai distribuito e protetto Supabase con l’autenticazione a password e il token JWT, e poi hai installato e configurato Nginx come reverse proxy. Infine, hai anche protetto Supabase con HTTPS tramite Certbot e Letsencrypt. Da qui, puoi ora provare a creare un nuovo database, inserire dati in Supabase e poi creare semplici applicazioni con il modulo Supabase per comunicare tramite REST API.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.