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

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

En este tutorial, aprenderás a 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 a configurar Nginx como proxy inverso para Supabase.

Requisitos previos

Para empezar con esta guía, asegúrate de que tienes 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

Instalación del motor Docker

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.

En primer lugar, ejecuta el siguiente comando para actualizar tu í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

instalar deps

Ahora ejecuta el siguiente comando para añadir 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

Añade el repositorio 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

añadir repo

Con la clave GPG de Docker y el repositorio añadidos, ejecuta el siguiente comando‘apt‘ para actualizar 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

Introduce ‘Y’ para confirmar la instalación.

instalar docker

Añadir un Usuario al Grupo Docker

En esta guía, ejecutarás Supabase como usuario no root, así que asegúrate de crear un usuario dedicado. A continuación, tienes que añadir tu usuario al grupo ‘docker’, que permitirá al usuario ejecutar contenedores.

Añade 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 con tu usuario con el comando‘su’ que aparece a continuación.

su - username

Por último, ejecuta el siguiente comando «docker» para ejecutar el contenedor«hola-mundo«.

docker run hello-world

Si todo va bien, verás el mensaje ‘Hola Mundo‘ de Docker.

docker hola mundo

Descarga e instalación de Supabase

Ahora que has instalado Docker, el siguiente paso es descargar Supabase y ejecutarlo como contenedor. En esta sección aprenderás a poner en marcha Supabase y, más adelante, aprenderás a asegurarlo.

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

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

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

cd supbase/docker
cp .env.example .env

A continuación, ejecuta el siguiente comando ‘docker compose‘ para descargar imágenes de Supase desde el repositorio Docker. Esto descargará varias imágenes para Supabase.

docker compose pull

A continuación puedes ver el proceso de descarga de las imágenes Docker de Supabase.

descargar imágenes

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

docker compose up -d

iniciar contenedores

Por último, ejecuta el siguiente comando‘docker compose‘ para comprobar el estado de los contenedores Supbase.

docker compose ps

En la salida de abajo, puedes ver que los contenedores Supbase como ‘supabase-auth‘,‘supabase-kong‘,‘supabase-rest‘ y‘supabase-studio‘ se están ejecutando.

comprueba los contenedores

Asegurar Supabase

Actualmente, Supabase está funcionando 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 empezar, vamos a generar contraseñas para el servidor PostgreSQL y el panel de Supabase, y después generaremos el secreto y el token JWT.

Ejecuta el comando que aparece a continuación dos veces para generar una contraseña segura para el cuadro de mandos de Supabase y el servidor PostgreSQL.

openssl rand -hex 16

generar clave

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

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

Token JWT

Ahora que has generado las contraseñas y los tokens para Supabase, vamos a aplicarlos editando el archivo ‘.env’.

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

vim .env

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

POSTGRES_PASSWORD=f489d6f61514eb90fbf57fb574c3d367

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

JWT_SECRET=PUaiJLm1PKAebJJRIdXylVJrfgGbRWdWvzN0EUgh

Sustituye el valor‘ANON_KEY‘ por tu token JWT generado para el usuario‘anon‘.

ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogImFub24iLAogICJpc3MiOiAic3VwYWJhc2UiLAogICJpYXQiOiAxNzM2MzU1NjAwLAogICJleHAiOiAxODk0MTIyMDAwCn0.f8_wST3WX1bmvsHttRokJPCz7-rpyjU8HMNnYH7kSd4

Sustituye el valor«SERVICE_ROLE_KEY» por 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, introduce los datos 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

Introduce tu nombre de usuario y contraseña en las opciones‘DASHBOARD_USERNAME‘ y‘DASHBOARD_PASSWORD‘. Este usuario se utilizará para acceder a la Supabase.

DASHBOARD_USERNAME=supabase
DASHBOARD_PASSWORD=91521851a4e1375145959eecddfaff45

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

Ahora ejecuta el siguiente comando‘docker‘ para detener y eliminar los contenedores Supabase.

docker compose down

Y, a continuación, vuelve a crear los contenedores para Supabase con el siguiente comando.

docker compose up -d

Una vez que todo esté en marcha, comprueba cada servicio de contenedor utilizando el comando siguiente.

docker compose ps

A continuación puedes ver que cada contenedor para Supabase se está ejecutando.

comprueba los coantenedores

Configurar Nginx como Proxy Inverso para Supabase

Ahora que Supabase está asegurado, vamos a instalar el servidor web Nginx y configurarlo como proxy inverso para Supabase. Asegúrate de que tienes tu nombre de dominio preparado y apuntando a la dirección IP del servidor.

Instala Nginx con el siguiente comando‘apt‘.

sudo apt install nginx -y

Ahora crea un nuevo bloque de configuración del 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 hayas terminado.

A continuación, ejecuta el siguiente comando para activar el bloque del servidor Supabase y verificar la sintaxis de tu Nginx. Si no se produce ningún error, obtendrás la salida ‘syntax is ok – test is successful‘.

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

configuración de nginx

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

sudo systemctl restart nginx

Por último, ejecuta el comando ‘systemctl’ que aparece a continuación para verificar el servicio Nginx y asegurarte de que se está ejecutando.

sudo systemctl status nginx

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

comprobar nginx

Asegurar Supabase con HTTPS

Después de que Nginx esté funcionando como proxy inverso, vamos a generar certificados SSL y habilitar HTTPS para asegurar la instalación de Supabase.

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

Instala Certbot y el plugin Certbot de Nginx con el comando‘apt‘ que aparece a continuación. Introduce ‘Y’ para confirmar la instalación.

sudo apt install certbot python3-certbot-nginx

Una vez completada la instalación, ejecuta el siguiente comando ‘certbot’ 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á protegido con HTTPS automáticamente a través del plugin Nginx Certbot.

Acceder a Supabase Studio

Para acceder a Supabase, abre tu navegador web y visita https://supabase.howtoforge.local. Si la instalación se ha realizado correctamente, se te solicitará la autenticación con contraseña básica.

Introduce el nombre de usuario y la contraseña en las opciones «DASHBOARD_USERNAME» y«DASHBOARD_PASSWORD» y haz clic en «Iniciar sesión«.

inicio de sesión

Si tienes éxito, verás el siguiente Panel de Supabase.

salpicadero

Conclusión

¡Enhorabuena! Has terminado la instalación de Supabase en el servidor Ubuntu 24.04 mediante Docker. Has desplegado y asegurado Supabase con el token JWT de autenticación de contraseña, y luego has instalado y configurado Nginx como proxy inverso. Por último, también has asegurado Supabase con HTTPS mediante Certbot y Letsencrypt. A partir de aquí, ya puedes intentar crear una nueva base de datos, insertar datos en Supabase y, a continuación, crear aplicaciones sencillas con el módulo Supabase para comunicarte a través de la API REST.

También te podría gustar...