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
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
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.
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.
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.
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
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.
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
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
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.
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
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.
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«.
Si tienes éxito, verás el siguiente Panel de Supabase.
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.