Recherche de site Web

Comment installer Supabase (alternative à Firebase) avec Docker sur Ubuntu 24.04


Sur cette page

  1. Conditions préalables
  2. Installation du moteur Docker
  3. Ajout d’un utilisateur au groupe Docker
  4. Téléchargement et installation de Supabase
  5. Sécurisation de Supabase
  6. Sécurisation de Supabase avec HTTPS
  7. Accéder à Supabase Studio
  8. Conclusion

Supabase est une alternative open-source à Firebase basée sur la base de données PostgreSQL, la base de données relationnelle la plus fiable au monde. Il permet aux développeurs de créer des applications Web, mobiles et d’IA complètes. Supabase propose une base de données PostgreSQL, l’authentification, des API, du stockage, des abonnements en temps réel et des intégrations vectorielles. Grâce à la configuration et à l’interface utilisateur simples, les développeurs peuvent rapidement créer des applications sur Supabase.

Dans ce tutoriel, vous allez apprendre à installer Supabase sur le serveur Ubuntu 24.04. Vous allez exécuter Supabase avec des conteneurs avec Docker, et la sécurisation de Supabase avec l'authentification par mot de passe et les jetons JWT. Enfin, vous apprendrez également à configurer Nginx en tant que proxy inverse pour Supabase.

Conditions préalables

Pour commencer avec ce guide, assurez-vous d’avoir les éléments suivants :

  • Un serveur Ubuntu 24.04
  • Un utilisateur non root avec des privilèges d’administrateur
  • Un nom de domaine pointait vers l’adresse IP du serveur

Installation du moteur Docker

Pour déployer Supabase sur votre serveur, vous devez installer Docker Engine sur votre machine. Les applications Supabase s’exécuteront en tant que conteneur sur votre serveur.

Dans cette section, vous allez installer Docker Engine via le référentiel Docker officiel.

Tout d'abord, exécutez la commande ci-dessous pour mettre à jour l'index de votre package Ubuntu et installer des packages tels que 'ca-certificates', 'curl' et 'git'.

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

Exécutez maintenant la commande suivante pour ajouter la clé GPG pour le référentiel du moteur Docker.

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

Ajoutez le référentiel Docker Engine pour votre serveur Ubuntu en exécutant la commande ci-dessous.

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

Une fois la clé GPG Docker et le référentiel ajoutés, exécutez la commande 'apt' ci-dessous pour actualiser l'index de votre package et installer Docker Engine. Avec cela, vous installerez également les plugins Docker Compose et buildx.

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

Entrez « Y » pour confirmer l'installation.

Ajout d’un utilisateur au groupe Docker

Dans ce guide, vous allez exécuter Supabase en tant qu'utilisateur non root, alors assurez-vous qu'un utilisateur dédié est créé. Ensuite, vous devez ajouter votre utilisateur au groupe 'docker', ce qui lui permettra d'exécuter des conteneurs.

Ajoutez votre utilisateur au groupe 'docker' à l'aide de la commande ci-dessous. Cela permettra à votre utilisateur d’exécuter et d’exécuter des conteneurs.

sudo usermod -aG sudo username

Connectez-vous à votre utilisateur à l'aide de la commande « su » ci-dessous.

su - username

Enfin, exécutez la commande 'docker' ci-dessous pour exécuter le conteneur 'hello-world'.

docker run hello-world

Si tout se passe bien, vous verrez le message « Hello World » de Docker.

Téléchargement et installation de Supabase

Maintenant que vous avez installé Docker, l'étape suivante consiste à télécharger Supabase et à l'exécuter en tant que conteneur. Dans cette section, vous apprendrez comment faire fonctionner Supabase, et plus tard, vous apprendrez comment le sécuriser.

Téléchargez le code source 'supabase' avec la commande 'git' ci-dessous.

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

Déplacez-vous vers le répertoire 'supabase/docker' et copiez le fichier '.env.example' dans le répertoire '.env'. Ce fichier sera utilisé pour configurer votre installation Supabase.

cd supbase/docker
cp .env.example .env

Ensuite, exécutez la commande 'docker compose' ci-dessous pour télécharger les images Supase à partir du référentiel Docker. Cela téléchargera plusieurs images pour Supabase.

docker compose pull

Vous pouvez voir le processus de téléchargement des images Docker Supabase ci-dessous.

Une fois le processus terminé, exécutez la commande suivante pour démarrer les conteneurs Supabase. Avec l'option '-d', vous allez exécuter les conteneurs en arrière-plan, de sorte que les journaux des conteneurs Supbase ne seront pas affichés.

docker compose up -d

Enfin, exécutez la commande 'docker compose' ci-dessous pour vérifier l'état des conteneurs Supbase.

docker compose ps

Dans le résultat ci-dessous, vous pouvez voir que les conteneurs Supbase tels que 'supabase-auth', 'supabase-kong', 'supabase-rest' et 'supabase-studio' sont en cours d'exécution.

Sécurisation de Supabase

Actuellement, Supabase est opérationnel sur votre système, mais sans mot de passe et authentification appropriés. Donc, pour l'instant, vous allez sécuriser l'installation de Supabase en modifiant les informations d'identification dans le fichier '.env'.

Avant de commencer, nous allons générer des mots de passe pour le serveur PostgreSQL et le tableau de bord Supabase, puis générer le secret et le jeton JWT.

Exécutez deux fois la commande ci-dessous pour générer un mot de passe sécurisé pour le tableau de bord Supabase et le serveur PostgreSQL.

openssl rand -hex 16

Allez maintenant sur le site Web de Supabase pour générer deux jetons JWT pour Supabase. Assurez-vous de noter les éléments suivants :

  • Secret JWT
  • Clé pour les ANON_KEY et les SERVICE_KEY
  • Génération de jetons JWT pour les deux

Maintenant que vous avez généré des mots de passe et des jetons pour Supabase, appliquons-les en modifiant le fichier '.env'.

Ouvrez le fichier '.env' à l'aide de l'éditeur 'vim'.

vim .env

Collez votre mot de passe OpenSSL généré dans l'option POSTGRES_PASSWORD.

POSTGRES_PASSWORD=f489d6f61514eb90fbf57fb574c3d367

Entrez votre clé secrète JWT dans l'option JWT_SECRET.

JWT_SECRET=PUaiJLm1PKAebJJRIdXylVJrfgGbRWdWvzN0EUgh

Remplacez la valeur 'ANON_KEY' par votre jeton JWT généré pour l'utilisateur 'anon'.

ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogImFub24iLAogICJpc3MiOiAic3VwYWJhc2UiLAogICJpYXQiOiAxNzM2MzU1NjAwLAogICJleHAiOiAxODk0MTIyMDAwCn0.f8_wST3WX1bmvsHttRokJPCz7-rpyjU8HMNnYH7kSd4

Remplacez la valeur SERVICE_ROLE_KEY par le jeton JWT généré pour l'utilisateur service_role.

SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogInNlcnZpY2Vfcm9sZSIsCiAgImlzcyI6ICJzdXBhYmFzZSIsCiAgImlhdCI6IDE3MzYzNTU2MDAsCiAgImV4cCI6IDE4OTQxMjIwMDAKfQ.DOo1lqH76AR_jCx0N9QDZBEdrQ8T_JBQqc7CagD1mWM

Si vous effectuez un déploiement sur un serveur public, entrez les détails de votre serveur SMTP.

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

Entrez votre nom d'utilisateur et votre mot de passe dans les options DASHBOARD_USERNAME et DASHBOARD_PASSWORD. Cet utilisateur sera utilisé pour se connecter à la Supabase.

DASHBOARD_USERNAME=supabase
DASHBOARD_PASSWORD=91521851a4e1375145959eecddfaff45

Entrez votre nom de domaine dans les options SITE_URL API_EXTERNAL_URL et SUPABASE_PUBLIC_URL. Dans cet exemple, nous allons utiliser un domaine 'https://supabase.howtoforge.local.

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

Enregistrez le fichier et quittez l’éditeur lorsque vous avez terminé.

Exécutez maintenant la commande 'docker' ci-dessous pour arrêter et supprimer les conteneurs Supabase.

docker compose down

Ensuite, recréez les conteneurs pour Supabase avec la commande suivante.

docker compose up -d

Une fois que tout est en cours d’exécution, vérifiez chaque service de conteneur à l’aide de la commande ci-dessous.

docker compose ps

Vous pouvez voir ci-dessous que chaque conteneur pour Supabase est en cours d’exécution.

Configuration de Nginx en tant que proxy inverse pour Supabase

Maintenant que Supabase est sécurisé, installons le serveur web Nginx et configurons-le en tant que proxy inverse pour Supabase. Assurez-vous que votre nom de domaine est prêt et que vous avez pointé vers l'adresse IP du serveur.

Installez Nginx avec la commande 'apt' suivante.

sudo apt install nginx -y

Créez maintenant une nouvelle configuration de bloc de serveur Nginx '/etc/nginx/sites-available/supabase' avec l'éditeur 'vim'.

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

Collez la configuration suivante et assurez-vous de modifier le nom de domaine dans l'option 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;
}
}

Enregistrez le fichier et quittez l’éditeur lorsque vous avez terminé.

Ensuite, exécutez la commande ci-dessous pour activer le bloc de serveur Supabase et vérifiez votre syntaxe Nginx. S'il n'y a pas d'erreur, vous obtiendrez un résultat « la syntaxe est correcte - le test est réussi ».

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

Exécutez maintenant la commande 'systemctl' ci-dessous pour redémarrer le serveur web Nginx et appliquer vos modifications. Avec cela, votre installation Supabase devrait fonctionner sous le proxy inverse Nginx.

sudo systemctl restart nginx

Enfin, exécutez la commande 'systemctl' ci-dessous pour vérifier le service Nginx et vous assurer que le service est en cours d'exécution.

sudo systemctl status nginx

Si tout se passe bien, vous verrez un résultat comme celui-ci.

Sécurisation de Supabase avec HTTPS

Une fois que Nginx est opérationnel en tant que proxy inverse, générons des certificats SSL et activons HTTPS pour sécuriser l'installation de Supabase.

Si vous êtes en mode développement, vous pouvez ignorer cette partie et laisser Supabase avec HTTPS. Pour la production, vous devez implémenter HTTPS pour sécuriser votre serveur Supabase.

Installez Certbot et Nginx Certbot Plugin avec la commande 'apt' ci-dessous. Entrez « Y » pour confirmer l'installation.

sudo apt install certbot python3-certbot-nginx

Une fois l'installation terminée, exécutez la commande 'certbot' ci-dessous pour générer des certificats SSL pour votre nom de domaine. Assurez-vous de modifier le nom de domaine et l’adresse e-mail dans la commande.

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

Une fois terminés, vos certificats SSL seront disponibles dans le répertoire '/etc/letsencrypt/live/domain.com' et Supabase sera automatiquement sécurisé avec HTTPS via le plugin Nginx Certbot.

Accéder à Supabase Studio

Pour accéder à Supabase, ouvrez votre navigateur Web et rendez-vous sur https://supabase.howtoforge.local. Si votre installation réussit, vous serez invité à effectuer l'authentification par mot de passe de base.

Entrez le nom d'utilisateur et le mot de passe dans les options « DASHBOARD_USERNAME » et « DASHBOARD_PASSWORD » et cliquez sur « Connexion ».

En cas de réussite, le tableau de bord Supabase suivant s'affiche.

Conclusion

Félicitations! Vous avez terminé l'installation de Supabase sur le serveur Ubuntu 24.04 via Docker. Vous avez déployé et sécurisé Supabase avec le jeton JWT d'authentification par mot de passe, puis installé et configuré Nginx en tant que proxy inverse. Enfin, vous avez également sécurisé Supabase avec HTTPS via Certbot et Letsencrypt. À partir de là, vous pouvez maintenant essayer de créer une nouvelle base de données, d’insérer des données dans Supabase, puis de créer des applications simples avec le module Supabase pour communiquer via l’API REST.