Instalación Supabase · 8 min read · Sep 13, 2025

Cómo instalar Supabase (alternativa a Firebase) con Docker en Ubuntu 24.04

Supabase es una alternativa de código abierto a Firebase construida sobre la base de datos PostgreSQL, la base de datos relacional más confiable del mundo. Permite a los desarrolladores crear aplicaciones web, móviles e IA completas. Supabase ofrece base de datos PostgreSQL, autenticación, APIs, almacenamiento, suscripciones en tiempo real y embeddings vectoriales. Con la configuración simple y la interfaz de usuario, los desarrolladores pueden construir rápidamente aplicaciones sobre Supabase.

En este tutorial, aprenderás cómo instalar Supabase en un servidor Ubuntu 24.04. Ejecutarás Supabase como contenedores con Docker, y asegurarás Supabase con autenticación por contraseña y tokens JWT. Por último, también aprenderás cómo configurar Nginx como un proxy inverso para Supabase.

Requisitos previos

Para comenzar con esta guía, asegúrate de tener lo siguiente:

  • Un servidor Ubuntu 24.04
  • Un usuario no root con privilegios de administrador
  • Un nombre de dominio apuntando a la dirección IP del servidor

Instalando Docker Engine

Para desplegar Supabase en tu servidor, necesitas instalar Docker Engine en tu máquina. Las aplicaciones de Supabase se ejecutarán como un contenedor en tu servidor.

En esta sección, instalarás Docker Engine a través del repositorio oficial de Docker.

Primero, ejecuta el siguiente comando para actualizar el índice de paquetes de Ubuntu e instalar paquetes como ‘ ca-certificates ‘, ‘ curl ‘ y ‘ git ‘.

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

install deps

Ahora ejecuta el siguiente comando para agregar la clave GPG para el repositorio de 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

Agrega el repositorio de Docker Engine para tu servidor Ubuntu ejecutando el siguiente comando.

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 clave GPG de Docker y el repositorio agregados, ejecuta el comando ‘ apt ‘ a continuación para refrescar tu índice de paquetes e instalar Docker Engine. Con esto, también instalarás los plugins Docker Compose y buildx.

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

Ingresa ‘ Y ‘ para confirmar la instalación.

install docker

Agregando usuario al grupo Docker

En esta guía, ejecutarás Supabase como un usuario no root, así que asegúrate de que se haya creado un usuario dedicado. Luego, necesitas agregar tu usuario al grupo ‘docker’, lo que permitirá al usuario ejecutar contenedores.

Agrega tu usuario al grupo ‘ docker ‘ con el siguiente comando. Esto permitirá a tu usuario ejecutar y correr contenedores.

sudo usermod -aG sudo username

Inicia sesión en tu usuario con el comando ‘ su ‘ a continuación.

su - username

Por último, ejecuta el comando ‘ docker ‘ a continuación para ejecutar el contenedor ‘ hello-world ‘.

docker run hello-world

Si todo va bien, verás el mensaje ‘ Hello World ‘ de Docker.

docker hello world

Descargando e instalando Supabase

Ahora que has instalado Docker, el siguiente paso es descargar Supabase y ejecutarlo como un contenedor. En esta sección, aprenderás cómo poner Supabase en funcionamiento, y más adelante, aprenderás cómo asegurarla.

Descarga el código fuente de ‘ supabase ‘ con el comando ‘ git ‘ a continuación.

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

Muévete al directorio ‘supabase/docker’ y copia el archivo ‘ .env.example ‘ a ‘ .env ‘. Este archivo se utilizará para configurar tu instalación de Supabase.

cd supbase/docker  
cp .env.example .env

A continuación, ejecuta el comando ‘ docker compose ‘ a continuación para descargar las imágenes de Supabase del repositorio de Docker. Esto descargará múltiples imágenes para Supabase.

docker compose pull

Puedes ver el proceso de descarga de las imágenes de Docker de Supabase a continuación.

download images

Una vez que el proceso haya terminado, ejecuta el siguiente comando para iniciar los contenedores de Supabase. Con la opción ‘ -d ‘, ejecutarás los contenedores en segundo plano, por lo que los registros de los contenedores de Supabase no se mostrarán.

docker compose up -d

start containers

Por último, ejecuta el comando ‘ docker compose ‘ a continuación para verificar el estado de los contenedores de Supabase.

docker compose ps

En la salida a continuación, puedes ver que los contenedores de Supabase como ‘ supabase-auth ‘, ‘ supabase-kong ‘, ‘ supabase-rest ‘ y ‘ supabase-studio ‘ están en ejecución.

check containers

Asegurando Supabase

Actualmente, Supabase está en funcionamiento en tu sistema, pero sin la contraseña y autenticación adecuadas. Así que por ahora, asegurarás la instalación de Supabase cambiando las credenciales dentro del archivo ‘.env’.

Antes de comenzar, generemos contraseñas para el servidor PostgreSQL y el panel de control de Supabase, y luego generemos el secreto y token JWT.

Ejecuta el siguiente comando dos veces para generar una contraseña segura para el panel de control de Supabase y el servidor PostgreSQL.

openssl rand -hex 16

generate key

Ahora ve al sitio web de Supabase para generar dos tokens JWT para Supabase. Asegúrate de anotar lo siguiente:

  • Secreto JWT
  • Clave para ambos ANON_KEY y SERVICE_KEY
  • Tokens JWT generados para ambos

JWT token

Ahora que has generado contraseñas y tokens para Supabase, apliquemos esos cambios editando el archivo ‘.env’.

Abre el archivo ‘ .env ‘ usando el editor ‘ vim ‘.

vim .env

Pega tu contraseña generada por OpenSSL en la opción ‘ POSTGRES_PASSWORD ‘.

POSTGRES_PASSWORD=f489d6f61514eb90fbf57fb574c3d367

Ingresa tu clave secreta JWT en la opción ‘ JWT_SECRET ‘.

JWT_SECRET=PUaiJLm1PKAebJJRIdXylVJrfgGbRWdWvzN0EUgh

Reemplaza el valor de ‘ ANON_KEY ‘ con tu token JWT generado para el usuario ‘ anon ‘.

ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogImFub24iLAogICJpc3MiOiAic3VwYWJhc2UiLAogICJpYXQiOiAxNzM2MzU1NjAwLAogICJleHAiOiAxODk0MTIyMDAwCn0.f8_wST3WX1bmvsHttRokJPCz7-rpyjU8HMNnYH7kSd4

Reemplaza el valor de ‘ SERVICE_ROLE_KEY ‘ con tu token JWT generado para el usuario ‘ service_role ‘.

SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogInNlcnZpY2Vfcm9sZSIsCiAgImlzcyI6ICJzdXBhYmFzZSIsCiAgImlhdCI6IDE3MzYzNTU2MDAsCiAgImV4cCI6IDE4OTQxMjIwMDAKfQ.DOo1lqH76AR_jCx0N9QDZBEdrQ8T_JBQqc7CagD1mWM

Si estás desplegando en un servidor público, ingresa los detalles de tu servidor 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

Ingresa tu nombre de usuario y contraseña en las opciones ‘ DASHBOARD_USERNAME ‘ y ‘ DASHBOARD_PASSWORD ‘. Este usuario se utilizará para iniciar sesión en Supabase.

DASHBOARD_USERNAME=supabase  
DASHBOARD_PASSWORD=91521851a4e1375145959eecddfaff45

Ingresa tu nombre de dominio en las opciones ‘ SITE_URL ‘, ‘ API_EXTERNAL_URL ‘ y ‘ SUPABASE_PUBLIC_URL ‘. En este ejemplo, utilizaremos 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

Guarda el archivo y sal del editor cuando termines.

Ahora ejecuta el comando ‘ docker ‘ a continuación para detener y eliminar los contenedores de Supabase.

docker compose down

Y luego recrea los contenedores para Supabase con el siguiente comando.

docker compose up -d

Una vez que todo esté en funcionamiento, verifica cada servicio de contenedor usando el siguiente comando.

docker compose ps

Puedes ver a continuación que cada contenedor de Supabase está en ejecución.

check coantainers

Configurando Nginx como un Proxy Inverso para Supabase

Ahora que Supabase está asegurada, instalemos el servidor web Nginx y configurémoslo como un proxy inverso para Supabase. Asegúrate de que tienes tu nombre de dominio listo y apuntando a la dirección IP del servidor.

Instala Nginx con el siguiente comando ‘ apt ‘.

sudo apt install nginx -y

Ahora crea una nueva configuración de bloque de servidor Nginx ‘ /etc/nginx/sites-available/supabase ‘ con el editor ‘vim’.

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

Pega la siguiente configuración y asegúrate de cambiar el nombre de dominio dentro de la opción ‘ 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;  
}  
}

Guarda el archivo y sal del editor cuando termines.

A continuación, ejecuta el siguiente comando para activar el bloque del servidor de Supabase y verificar la sintaxis de Nginx. Si no hay errores, obtendrás una salida ‘ syntax is ok - test is successful ‘.

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

setup nginx

Ahora ejecuta el comando ‘ systemctl ‘ a continuación para reiniciar el servidor web Nginx y aplicar tus cambios. Con esto, tu instalación de Supabase debería estar funcionando bajo el proxy inverso de Nginx.

sudo systemctl restart nginx

Por último, ejecuta el comando ‘systemctl’ a continuación para verificar el servicio de Nginx y asegurarte de que el servicio esté en funcionamiento.

sudo systemctl status nginx

Si todo va bien, verás una salida como la siguiente.

check nginx

Asegurando Supabase con HTTPS

Después de que Nginx esté en funcionamiento como un proxy inverso, generemos certificados SSL y habilitemos HTTPS para asegurar la instalación de Supabase.

Si estás en modo de desarrollo, puedes omitir esta parte y dejar Supabase sin HTTPS. Para producción, debes implementar HTTPS para asegurar tu servidor Supabase.

Instala Certbot y el plugin Certbot de Nginx con el siguiente comando ‘ apt ‘. Ingresa ‘Y’ para confirmar la instalación.

sudo apt install certbot python3-certbot-nginx

Una vez que la instalación esté completa, ejecuta el comando ‘certbot’ a continuación para generar certificados SSL para tu nombre de dominio. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico dentro del comando.

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

Una vez completado, tus certificados SSL estarán disponibles en el directorio ‘ /etc/letsencrypt/live/domain.com ‘ y Supabase estará asegurada con HTTPS automáticamente a través del plugin Certbot de Nginx.

Accediendo a Supabase Studio

Para acceder a Supabase, abre tu navegador web y visita https://supabase.howtoforge.local. Si tu instalación es exitosa, se te pedirá la autenticación básica por contraseña.

Ingresa el nombre de usuario y la contraseña dentro de las opciones ‘ DASHBOARD_USERNAME ‘ y ‘ DASHBOARD_PASSWORD ‘ y haz clic en ‘ Login ‘.

login

Si es exitoso, verás el siguiente panel de control de Supabase.

dashboard

Conclusión

¡Felicidades! Has terminado la instalación de Supabase en el servidor Ubuntu 24.04 a través de Docker. Has desplegado y asegurado Supabase con la autenticación por contraseña y el token JWT, y luego instalaste y configuraste Nginx como un proxy inverso. Por último, también has asegurado Supabase con HTTPS a través de Certbot y Letsencrypt. Desde aquí, ahora puedes intentar crear una nueva base de datos, insertar datos en Supabase y luego crear aplicaciones simples con el módulo Supabase para comunicarte a través de la API REST.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.