Introdução ao Deploy de E-commerce Headless com Saleor
A migração para uma arquitetura headless representa um dos avanços mais significativos na infraestrutura de e-commerce moderna. Ao separar o frontend da lógica de negócios, ganhamos flexibilidade, escalabilidade e performance. Neste tutorial técnico, abordaremos a instalação e configuração do Saleor, uma plataforma de comércio eletrônico baseada em GraphQL, em um ambiente de produção Linux. O foco é fornecer um guia prático para sysadmins e desenvolvedores que desejam implementar um saleor servidor próprio, garantindo estabilidade e segurança.
O Saleor utiliza Django como backend e React no frontend, comunicando-se via API GraphQL. Para rodar isso em produção, especialmente em uma VPS de e-commerce, precisamos dominar a orquestração de containers com Docker e Docker Compose. Este guia cobre desde o provisionamento do servidor até a validação final da infraestrutura.
Pré-requisitos e Provisionamento da VPS
Antes de iniciar o deploy Saleor Linux, é fundamental garantir que a infraestrutura base esteja sólida. Para um setup inicial de produção, recomenda-se uma instância com pelo menos 4 vCPUs e 8GB de RAM. O sistema operacional deve ser uma versão LTS recente do Ubuntu (22.04 ou 24.04) ou Debian (Bookworm), garantindo compatibilidade e suporte a longo prazo.
O primeiro passo é acessar o servidor via SSH e atualizar os pacotes do sistema para garantir que todas as bibliotecas estejam seguras e atualizadas.
sudo apt update && sudo apt upgrade -y
Em seguida, instale as ferramentas essenciais de linha de comando que serão utilizadas durante o processo de instalação do Saleor em VPS.
sudo apt install curl git wget htop tmux jq -y
Instalação do Docker e Docker Compose
O ecossistema Saleor depende inteiramente de contêineres. Portanto, o setup Saleor produção exige a instalação robusta do Docker Engine e do plugin Docker Compose. Evite instalar versões antigas do Docker diretamente via apt do repositório padrão do Ubuntu, pois podem estar desatualizadas. Utilize o script oficial ou os repositórios da Docker Inc.
Inicie a instalação do Docker seguindo os passos abaixo:
- Instale dependências para permitir apt usar repositórios HTTPS:
sudo apt-get install -y ca-certificates curl gnupg lsb-release
- Adicione a chave GPG oficial do Docker:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- Configure o repositório estável:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- Instale o Docker Engine:
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Verifique se a instalação foi bem-sucedida executando um contêiner de teste:
sudo docker run hello-world
Configuração do Ambiente e Variáveis de Segurança
Para uma instalação segura, nunca armazene segredos (como chaves de API, senhas de banco de dados e tokens JWT) diretamente nos arquivos de configuração. Utilize um arquivo .env para gerenciar essas variáveis de ambiente.
Crie um diretório dedicado para o projeto:
mkdir ~/saleor-prod && cd ~/saleor-prod
Crie o arquivo de configuração inicial. Este arquivo conterá as credências e configurações específicas do seu ecommerce GraphQL.
nano .env
Dentro do arquivo, defina as variáveis essenciais. Certifique-se de gerar senhas aleatórias fortes para cada campo de senha.
# Configurações Gerais
COMPOSE_PROJECT_NAME=saleor-prod
SALEOR_BROWSER_API_TOKEN=seu_token_gerado_aleatoriamente
SALEOR_ENVIRONMENT=production
# Banco de Dados (PostgreSQL)
POSTGRES_DB=saleor_db
POSTGRES_USER=saleor_user
POSTGRES_PASSWORD=senha_forte_aqui
POSTGRES_PORT=5432
# Redis
REDIS_HOST=redis
REDIS_PORT=6379
# JWT Secrets
SALEOR_COOKIE_SECURE=true
SALEOR_CSRF_ENABLED=true
Defina as permissões corretas para este arquivo, garantindo que apenas o usuário atual tenha acesso:
chmod 600 .env
Criação do Arquivo docker-compose.yml
O coração da infraestrutura de um saleor servidor próprio é o arquivo docker-compose.yml. Este arquivo define os serviços necessários: a aplicação Saleor, o banco de dados PostgreSQL, o cache Redis e o Nginx para reverse proxy.
Crie o arquivo na raiz do seu diretório:
nano docker-compose.yml
Insira a seguinte configuração base. Note a utilização de volumes para persistência de dados e dependências entre serviços.
version: "3.9"
services:
db:
image: postgres:15-alpine
restart: always
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
restart: always
command: redis-server --appendonly yes
volumes:
- redis_data:/data
saleor:
image: ghcr.io/saleor/saleor:latest
restart: always
depends_on:
db:
condition: service_healthy
redis:
condition: service_started
environment:
- DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
- SECRET_KEY=${SALEOR_COOKIE_SECURE}
- ALLOWED_HOSTS=localhost,127.0.0.1,seu_dominio.com
- SITE_URL=https://seu_dominio.com
- PROMETHEUS_METRICS_ENABLED=True
volumes:
- static_data:/app/static
- media_data:/app/media
nginx:
image: nginx:alpine
restart: always
ports:
- "80:80"
- "443:443"
depends_on:
- saleor
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ssl_certs:/etc/nginx/ssl
volumes:
db_data:
redis_data:
static_data:
media_data:
ssl_certs:
Além do compose, você precisará de uma configuração básica para o Nginx que faça o reverse proxy das requisições GraphQL e estáticas para o container Saleor.
nano nginx.conf
server {
listen 80;
server_name seu_dominio.com www.seu_dominio.com;
location / {
proxy_pass http://saleor:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Inicialização e Migração do Banco de Dados
Agora que a infraestrutura está definida, podemos subir os serviços. Execute o comando abaixo para baixar as imagens e iniciar os contêineres em segundo plano.
docker compose up -d
Aguarde alguns minutos até que todos os serviços estejam no estado "Up". Você pode verificar o status com:
docker compose ps
Com os serviços rodando, é necessário inicializar o banco de dados e criar o usuário administrador. O Saleor requer a execução de migrações e a criação do superuser via linha de comando dentro do container.
- Rode as migrações do Django:
docker compose exec saleor python manage.py migrate
- Crie o usuário superadministrador:
docker compose exec saleor python manage.py createsuperuser
O sistema solicitará um nome de usuário, email e senha. Anote estas credenciais com segurança, pois elas serão utilizadas para acessar o painel administrativo (Dashboard) do seu ecommerce GraphQL.
Configuração de SSL e Segurança com Let's Encrypt
Em produção, a comunicação HTTPS é obrigatória. Utilizaremos o Certbot para obter certificados gratuitos do Let's Encrypt e integrá-los ao Nginx.
Instale o Certbot na sua VPS:
sudo apt install certbot python3-certbot-nginx -y
Execute o comando para gerar o certificado. O plugin do Nginx configurará automaticamente as regras de redirecionamento HTTP para HTTPS.
sudo certbot --nginx -d seu_dominio.com -d www.seu_dominio.com
Ao final, o Certbot pedirá que você escolha entre manter ou redirecionar todo o tráfego para HTTPS. Escolha a opção 2 (Redirecionar). Reinicie os containers do Docker para garantir que o Nginx dentro do container carregue as novas configurações de SSL se você estiver montando os certificados manualmente, ou ajuste o docker-compose.yml para montar os caminhos dos certificados gerados pelo host.
Se estiver usando o método padrão onde o Nginx do Docker serve o tráfego, você precisará ajustar o volume de montagem no docker-compose.yml para apontar para os certificados gerados pelo host em /etc/letsencrypt/live/seu_dominio.com/.
Otimização e Monitoramento
Para um setup robusto, considere habilitar o monitoramento de métricas. O Saleor integra-se nativamente com Prometheus. Certifique-se de que a variável PROMETHEUS_METRICS_ENABLED=True esteja ativa no seu ambiente.
Além disso, implemente backups automáticos do banco de dados PostgreSQL. Um script simples em cron pode ser utilizado para realizar dumps diários.
# Exemplo de script de backup via cron
docker compose exec db pg_dump -U saleor_user saleor_db > /backup/saleor_$(date +%F).sql
Conclusão e Próximos Passos
Com este guia, você concluiu o setup Saleor produção em sua própria VPS. Você agora possui uma infraestrutura de e-commerce headless, escalável e baseada em GraphQL pronta para receber tráfego.
Os próximos passos recomendados incluem:
- Configuração do Frontend: Clonar o repositório
@saleor/dashboardou utilizar o storefront pronto (como Next.js) e configurá-lo para apontar para a URL da sua API GraphQL. - Otimização de Imagens: Configurar um serviço de CDN (Cloudflare ou AWS CloudFront) para servir os assets estáticos e imagens dos produtos, reduzindo a carga na VPS.
- Automação de Deploy: Implementar pipelines CI/CD (GitHub Actions ou GitLab CI) para automatizar atualizações da imagem do Saleor e migrações de banco de dados.
A manutenção de um saleor servidor próprio exige monitoramento contínuo de logs e recursos. Utilize ferramentas como Prometheus e Grafana para visualizar a saúde do seu sistema em tempo real. Com a configuração correta, sua loja headless estará preparada para crescer junto com o seu negócio.