Instalação Supabase · 8 min read · Sep 13, 2025

Como Instalar Supabase (Alternativa ao Firebase) com Docker no Ubuntu 24.04

Supabase é uma alternativa ao Firebase de código aberto construída sobre o banco de dados PostgreSQL, o banco de dados relacional mais confiável do mundo. Ele permite que os desenvolvedores construam aplicações web, móveis e de IA completas. O Supabase oferece banco de dados PostgreSQL, autenticação, APIs, armazenamento, assinaturas em tempo real e embeddings vetoriais. Com a configuração simples e a interface do usuário, os desenvolvedores podem rapidamente construir aplicações sobre o Supabase.

Neste tutorial, você aprenderá como instalar o Supabase no servidor Ubuntu 24.04. Você estará executando o Supabase como contêineres com Docker e garantindo o Supabase com autenticação por senha e tokens JWT. Por fim, você também aprenderá como configurar o Nginx como um proxy reverso para o Supabase.

Pré-requisitos

Para começar este guia, certifique-se de que você tem o seguinte:

  • Um servidor Ubuntu 24.04
  • Um usuário não-root com privilégios de administrador
  • Um nome de domínio apontado para o endereço IP do servidor

Instalando o Docker Engine

Para implantar o Supabase em seu servidor, você precisa instalar o Docker Engine em sua máquina. As aplicações do Supabase serão executadas como um contêiner em seu servidor.

Nesta seção, você instalará o Docker Engine através do repositório oficial do Docker.

Primeiro, execute o comando abaixo para atualizar o índice de pacotes do Ubuntu e instalar pacotes como ‘ ca-certificates ‘, ‘ curl ‘ e ‘ git ‘.

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

install deps

Agora execute o seguinte comando para adicionar a chave GPG para o repositório do 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

Adicione o repositório do Docker Engine para o seu servidor Ubuntu executando o comando abaixo.

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

Com a chave GPG do Docker e o repositório adicionados, execute o comando ‘ apt ‘ abaixo para atualizar seu índice de pacotes e instalar o Docker Engine. Com isso, você também instalará os plugins Docker Compose e buildx.

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

Digite ‘ Y ‘ para confirmar a instalação.

install docker

Adicionando Usuário ao Grupo Docker

Neste guia, você estará executando o Supabase como um usuário não-root, então certifique-se de que um usuário dedicado seja criado. Em seguida, você precisa adicionar seu usuário ao grupo ‘docker’, o que permitirá que o usuário execute contêineres.

Adicione seu usuário ao grupo ‘ docker ‘ com o comando abaixo. Isso permitirá que seu usuário execute e rode contêineres.

sudo usermod -aG sudo username

Faça login no seu usuário com o comando ‘ su ‘ abaixo.

su - username

Por fim, execute o comando ‘ docker ‘ abaixo para rodar o contêiner ‘ hello-world ‘.

docker run hello-world

Se tudo correr bem, você verá a mensagem ‘ Hello World ‘ do Docker.

docker hello world

Baixando e Instalando o Supabase

Agora que você instalou o Docker, o próximo passo é baixar o Supabase e executá-lo como um contêiner. Nesta seção, você aprenderá como colocar o Supabase em funcionamento e, mais tarde, aprenderá como protegê-lo.

Baixe o código-fonte do ‘ supabase ‘ com o comando ‘ git ‘ abaixo.

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

Mova para o diretório ‘supabase/docker’ e copie o arquivo ‘ .env.example ‘ para o ‘. env ‘. Este arquivo será usado para configurar sua instalação do Supabase.

cd supbase/docker  
cp .env.example .env

Em seguida, execute o comando ‘ docker compose ‘ abaixo para baixar as imagens do Supabase do repositório Docker. Isso baixará várias imagens para o Supabase.

docker compose pull

Você pode ver o processo de download das imagens Docker do Supabase abaixo.

download images

Uma vez que o processo esteja concluído, execute o seguinte comando para iniciar os contêineres do Supabase. Com a opção ‘ -d ‘, você executará os contêineres em segundo plano, então os logs dos contêineres do Supabase não serão mostrados.

docker compose up -d

start containers

Por fim, execute o comando ‘ docker compose ‘ abaixo para verificar o status dos contêineres do Supabase.

docker compose ps

Na saída abaixo, você pode ver que os contêineres do Supabase, como ‘ supabase-auth ‘, ‘ supabase-kong ‘, ‘ supabase-rest ‘ e ‘ supabase-studio ‘ estão em execução.

check containers

Protegendo o Supabase

Atualmente, o Supabase está em funcionamento em seu sistema, mas sem a devida senha e autenticação. Portanto, por enquanto, você protegerá a instalação do Supabase alterando as credenciais dentro do arquivo ‘.env’.

Antes de começar, vamos gerar senhas para o servidor PostgreSQL e o painel do Supabase, e então gerar o segredo e token JWT.

Execute o comando abaixo duas vezes para gerar uma senha segura para o painel do Supabase e o servidor PostgreSQL.

openssl rand -hex 16

generate key

Agora vá para o site do Supabase para gerar dois tokens JWT para o Supabase. Certifique-se de anotar o seguinte:

  • Segredo JWT
  • Chave para ambos ANON_KEY e SERVICE_KEY
  • Tokens JWT gerados para ambos

JWT token

Agora que você gerou senhas e tokens para o Supabase, vamos aplicá-los editando o arquivo ‘.env’.

Abra o arquivo ‘ .env ‘ usando o editor ‘ vim ‘.

vim .env

Cole sua senha gerada pelo OpenSSL na opção ‘ POSTGRES_PASSWORD ‘.

POSTGRES_PASSWORD=f489d6f61514eb90fbf57fb574c3d367

Digite sua chave secreta JWT na opção ‘ JWT_SECRET ‘.

JWT_SECRET=PUaiJLm1PKAebJJRIdXylVJrfgGbRWdWvzN0EUgh

Substitua o valor de ‘ ANON_KEY ‘ pelo seu token JWT gerado para o usuário ‘ anon ‘.

ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogImFub24iLAogICJpc3MiOiAic3VwYWJhc2UiLAogICJpYXQiOiAxNzM2MzU1NjAwLAogICJleHAiOiAxODk0MTIyMDAwCn0.f8_wST3WX1bmvsHttRokJPCz7-rpyjU8HMNnYH7kSd4

Substitua o valor de ‘ SERVICE_ROLE_KEY ‘ pelo seu token JWT gerado para o usuário ‘ service_role ‘.

SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogInNlcnZpY2Vfcm9sZSIsCiAgImlzcyI6ICJzdXBhYmFzZSIsCiAgImlhdCI6IDE3MzYzNTU2MDAsCiAgImV4cCI6IDE4OTQxMjIwMDAKfQ.DOo1lqH76AR_jCx0N9QDZBEdrQ8T_JBQqc7CagD1mWM

Se você estiver implantando em um servidor público, insira os detalhes do seu 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

Digite seu nome de usuário e senha nas opções ‘ DASHBOARD_USERNAME ‘ e ‘ DASHBOARD_PASSWORD ‘. Este usuário será usado para fazer login no Supabase.

DASHBOARD_USERNAME=supabase  
DASHBOARD_PASSWORD=91521851a4e1375145959eecddfaff45

Digite seu nome de domínio nas opções ‘ SITE_URL ‘, ‘ API_EXTERNAL_URL ‘ e ‘ SUPABASE_PUBLIC_URL’. Neste exemplo, usaremos um domínio ‘https://supabase.howtoforge.local’.

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

Salve o arquivo e saia do editor quando terminar.

Agora execute o comando ‘ docker ‘ abaixo para parar e remover os contêineres do Supabase.

docker compose down

E então recrie os contêineres para o Supabase com o seguinte comando.

docker compose up -d

Uma vez que tudo esteja em funcionamento, verifique cada serviço de contêiner usando o comando abaixo.

docker compose ps

Você pode ver abaixo que cada contêiner do Supabase está em execução.

check coantainers

Configurando o Nginx como um Proxy Reverso para o Supabase

Agora que o Supabase está protegido, vamos instalar o servidor web Nginx e configurá-lo como um proxy reverso para o Supabase. Certifique-se de que você tenha seu nome de domínio pronto e apontado para o endereço IP do servidor.

Instale o Nginx com o seguinte comando ‘ apt ‘.

sudo apt install nginx -y

Agora crie uma nova configuração de bloco de servidor Nginx ‘ /etc/nginx/sites-available/supabase ‘ com o editor ‘vim’.

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

Cole a seguinte configuração e certifique-se de alterar o nome do domínio na opção ‘ 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;  
}  
}

Salve o arquivo e saia do editor quando terminar.

Em seguida, execute o comando abaixo para ativar o bloco de servidor do Supabase e verificar sua sintaxe do Nginx. Se não houver erro, você receberá uma saída ‘ syntax is ok - test is successful ‘.

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

setup nginx

Agora execute o comando ‘ systemctl ‘ abaixo para reiniciar o servidor web Nginx e aplicar suas alterações. Com isso, sua instalação do Supabase deve estar rodando sob o Proxy Reverso do Nginx.

sudo systemctl restart nginx

Por fim, execute o comando ‘systemctl’ abaixo para verificar o serviço Nginx e garantir que o serviço esteja em execução.

sudo systemctl status nginx

Se tudo correr bem, você verá uma saída como a seguinte.

check nginx

Protegendo o Supabase com HTTPS

Depois que o Nginx estiver em funcionamento como um proxy reverso, vamos gerar certificados SSL e habilitar HTTPS para proteger a instalação do Supabase.

Se você estiver no modo de desenvolvimento, pode pular esta parte e deixar o Supabase sem HTTPS. Para produção, você deve implementar HTTPS para proteger seu servidor Supabase.

Instale o Certbot e o Plugin Certbot do Nginx com o comando ‘ apt ‘ abaixo. Digite ‘Y’ para confirmar a instalação.

sudo apt install certbot python3-certbot-nginx

Após a conclusão da instalação, execute o comando ‘certbot’ abaixo para gerar certificados SSL para seu nome de domínio. Certifique-se de alterar o nome do domínio e o endereço de e-mail dentro do comando.

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

Uma vez concluído, seus certificados SSL estarão disponíveis no diretório ‘ /etc/letsencrypt/live/domain.com ‘ e o Supabase estará protegido com HTTPS automaticamente através do plugin Certbot do Nginx.

Acessando o Supabase Studio

Para acessar o Supabase, abra seu navegador e visite https://supabase.howtoforge.local. Se sua instalação for bem-sucedida, você será solicitado a autenticação básica por senha.

Digite o nome de usuário e a senha nas opções ‘ DASHBOARD_USERNAME ‘ e ‘ DASHBOARD_PASSWORD ‘ e clique em ‘ Login ‘.

login

Se for bem-sucedido, você verá o seguinte Painel do Supabase.

dashboard

Conclusão

Parabéns! Você concluiu a instalação do Supabase no servidor Ubuntu 24.04 via Docker. Você implantou e protegeu o Supabase com a autenticação por senha do token JWT, e então instalou e configurou o Nginx como um proxy reverso. Por fim, você também protegeu o Supabase com HTTPS através do Certbot e Letsencrypt. A partir daqui, você pode agora tentar criar um novo banco de dados, inserir dados no Supabase e, em seguida, criar aplicações simples com o módulo Supabase para se comunicar via API REST.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.