Implementar um Saleor servidor próprio representa um salto significativo na maturidade técnica de qualquer operação de e-commerce. Diferente de plataformas SaaS tradicionais, onde a infraestrutura é abstraída, o modelo self-hosted commerce oferece controle total sobre a stack tecnológica, permitindo otimizações específicas para GraphQL ecommerce e garantindo escalabilidade horizontal sem as limitações de tiers de hospedagem compartilhada. Este tutorial detalha o processo de instalação do Saleor em uma VPS (Virtual Private Server), utilizando Docker como ferramenta de orquestração principal, padrão da indústria para garantir consistência entre ambientes de desenvolvimento e produção.
1. Preparação do Ambiente na VPS
O primeiro passo para um install saleor vps bem-sucedido é garantir que o sistema operacional esteja atualizado e preparado para receber as dependências necessárias. Recomendamos o uso de distribuições LTS (Long Term Support) como Ubuntu 22.04 ou Debian 12, devido à estabilidade das bibliotecas do sistema.
Acesse seu servidor via SSH e execute os comandos abaixo para atualizar o repositório de pacotes e instalar as ferramentas básicas de gerenciamento:
sudo apt update
sudo apt upgrade -y
sudo apt install curl git ca-certificates lsb-release -y
Além disso, é crucial definir uma regra de firewall básica para liberar apenas as portas necessárias. Para um setup inicial, libere a porta 80 (HTTP) e 443 (HTTPS), além da porta SSH (geralmente 22). Se estiver utilizando ufw:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
2. Instalação do Docker e Docker Compose
O Docker deployment é a maneira mais robusta de gerenciar as múltiplas dependências do Saleor, incluindo Django, Celery, Redis e PostgreSQL. Em vez de instalar cada serviço manualmente, o Docker encapsula todas as aplicações em contêineres isolados.
Instale o Docker Engine seguindo a documentação oficial da comunidade, ou utilize o script de conveniência para testes (não recomendado para produção sem revisão):
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
Após a instalação, verifique se o daemon está rodando e se o comando docker está disponível:
docker --version
docker compose version
O Docker Compose é essencial para definir como os serviços do Saleor interagem. Ele permite que você suba toda a stack de uma vez com um único comando, gerenciando redes e volumes internamente.
3. Configuração do Banco de Dados e Armazenamento
O Saleor utiliza PostgreSQL como banco de dados principal e Redis para cache e filas de tarefas assíncronas. Para um setup de produção, é vital configurar senhas fortes e volumes persistentes para evitar perda de dados.
Crie um diretório dedicado para os dados do banco:
sudo mkdir -p /var/lib/saleor/postgres
sudo chown 999:999 /var/lib/saleor/postgres
No arquivo docker-compose.yml, a configuração do serviço postgres deve expor o volume corretamente. Certifique-se de que as variáveis de ambiente para usuário e senha estejam definidas, preferencialmente utilizando um arquivo .env para não commitar credenciais no repositório.
4. Estrutura do Projeto Saleor
Para um Saleor setup organizado, crie uma estrutura de diretórios limpa. Isso facilita a manutenção e o versionamento do código.
mkdir -p ~/saleor-app
cd ~/saleor-app
mkdir config media static
Crie o arquivo principal docker-compose.yml. Este arquivo definirá os serviços: api (Saleor), dashboard, worker (Celery), postgres, redis e nginx (opcional na camada de proxy).
version: "3.9"
services:
saleor-api:
image: saleor/saleor:latest
restart: always
command: runserver 0.0.0.0:8000
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgres://saleor:saleor_password@db:5432/saleor
- SECRET_KEY=seu_segredo_super_forte_aqui
- ALLOWED_CLIENT_HOSTS=localhost,127.0.0.1
depends_on:
- db
- redis
db:
image: postgres:15-alpine
restart: always
volumes:
- pgdata:/var/lib/postgresql/data
environment:
- POSTGRES_DB=saleor
- POSTGRES_USER=saleor
- POSTGRES_PASSWORD=saleor_password
redis:
image: redis:7-alpine
restart: always
volumes:
pgdata:
Atenção: Nunca utilize a chave secreta padrão ou senhas fáceis em produção. Gere uma chave segura usando openssl rand -hex 32.
5. Execução e Migração do Banco de Dados
Com a configuração inicial realizada, inicie os contêineres:
docker compose up -d
O Saleor requer uma etapa crítica de migração de banco de dados e criação dos schemas GraphQL. Execute o comando de setup dentro do contêiner da API:
docker compose exec saleor-api python manage.py migrate
docker compose exec saleor-api python manage.py populatedb --createsuperuser
O último comando solicitará a criação de um usuário administrador. Este login será utilizado para acessar o painel administrativo e configurar as configurações iniciais da loja, como moeda, região e métodos de pagamento.
6. Configuração do GraphQL e Endpoints
A essência do graphql ecommerce no Saleor é a flexibilidade na consulta de dados. Após o setup inicial, você deve acessar o endpoint GraphQL, geralmente disponível em http://seu-ip:8000/graphql/. O Saleor fornece um playground interativo que permite testar queries e mutações.
Para integrar com seu frontend (Next.js, React, Vue), você precisará das credenciais do superusuário criado. Utilize a mutation tokenCreate para obter o token de autenticação:
mutation {
tokenCreate(email: "admin@example.com", password: "sua_senha") {
token
refreshToken
errors {
field
message
}
}
}
Armazene o token retornado. Ele deve ser enviado no header Authorization: Bearer <token> em todas as requisições subsequentes que exijam autenticação.
7. Proxy Reverso com Nginx
Expor a porta 8000 diretamente não é uma prática recomendada para produção. Utilize o Nginx como proxy reverso para lidar com SSL/TLS, compressão de gzip e balanceamento de carga básico.
Crie um arquivo de configuração /etc/nginx/sites-available/saleor:
server {
listen 80;
server_name seu-dominio.com;
location /graphql/ {
proxy_pass http://127.0.0.1:8000/graphql/;
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;
}
location /api/ {
proxy_pass http://127.0.0.1:8000/api/;
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;
}
}
Ative a configuração e reinicie o Nginx:
sudo ln -s /etc/nginx/sites-available/saleor /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
8. Segurança e Hardening em Cloud Hosting
O cloud hosting para aplicações Python ecommerce exige atenção redobrada com a segurança. Instale o Certbot para automatizar a emissão de certificados SSL gratuitos:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d seu-dominio.com
Configure também o fail2ban para proteger contra ataques de força bruta no SSH e nas tentativas de login da API:
sudo apt install fail2ban
sudo systemctl enable fail2ban
Além disso, desative o acesso root direto via SSH e utilize chaves SSH em vez de senhas. Edite o /etc/ssh/sshd_config e defina PermitRootLogin no.
9. Monitoramento e Logs
Para manter a saúde do seu Saleor servidor próprio, é fundamental monitorar os logs e o consumo de recursos. O Docker facilita o acesso aos logs:
docker compose logs -f saleor-api
Considere integrar ferramentas como Prometheus e Grafana para métricas detalhadas ou usar soluções de APM (Application Performance Monitoring) compatíveis com Python, como Sentry, que pode ser integrado facilmente ao Django via variáveis de ambiente.
10. Backup Automatizado
Nenhum setup de produção está completo sem um plano de backup. Configure backups automáticos do banco de dados PostgreSQL e dos arquivos estáticos/media uploads.
Crie um script simples de backup e agende-o via cron:
#!/bin/bash
BACKUP_DIR="/backups/saleor"
DATE=$(date +%F)
mkdir -p $BACKUP_DIR
# Backup do banco
docker exec saleor-db_1 pg_dump -U saleor saleor > $BACKUP_DIR/db_$DATE.sql
# Compressão
gzip $BACKUP_DIR/db_$DATE.sql
# Limpeza de backups antigos (manter últimos 7 dias)
find $BACKUP_DIR -name "db_*.sql.gz" -mtime +7 -delete
Este script garante que, em caso de falha de hardware ou erro humano, seus dados estejam seguros e recuperáveis.
Conclusão
Configurar um Saleor servidor próprio é um investimento técnico valioso. Ao dominar o install saleor vps e a orquestração via Docker, você ganha agilidade para iterar sobre sua plataforma de e-commerce, aproveitando todo o poder do GraphQL para criar experiências de compra personalizadas e performáticas. Lembre-se que a manutenção contínua, atualizações de segurança e monitoramento são responsabilidades do administrador da infraestrutura, mas os benefícios em controle e customização são incomparáveis.