Ter sua própria instância do Mastodon dá controle total sobre sua presença nas redes sociais e seus dados. Para um único usuário, um VPS barato de provedores como DigitalOcean, Linode ou Vultr é suficiente para hospedar uma instância funcional. A principal restrição é que o Mastodon exige pelo menos 2 GB de RAM e um nome de domínio dedicado. Este artigo mostra como provisionar um VPS, instalar o Mastodon com Docker e configurar a instância para uma pessoa.
Principais Pontos: Mastodon para Um Usuário em VPS Econômico
- VPS com 2 GB de RAM e 2 vCPUs: Hardware mínimo para rodar o Mastodon sem travamentos ou uso de swap.
- Implantação com Docker Compose: Simplifica a instalação e as atualizações usando contêineres pré-construídos.
- DNS e proxy SSL do Cloudflare: Fornece terminação TLS gratuita e proteção DDoS para a instância.
O que o Mastodon Exige para uma Instância de Único Usuário
O Mastodon é uma aplicação Rails que usa PostgreSQL para armazenamento de dados e Redis para filas de tarefas em segundo plano. Mesmo com um único usuário, o servidor de aplicação, o servidor de banco de dados e os workers em segundo plano rodam simultaneamente. A documentação oficial recomenda 2 GB de RAM como o mínimo absoluto para uma instância de produção. Uma instância de único usuário com uso leve pode rodar em um VPS de $6 a $12 por mês, se você escolher um provedor que ofereça 2 GB de RAM nessa faixa de preço.
Os requisitos de armazenamento são modestos. O banco de dados e os arquivos de mídia para um usuário ativo raramente ultrapassam 10 GB no primeiro ano. Você pode começar com um disco de 25 GB e expandir depois. O nome de domínio deve ser um domínio registrado onde você possa configurar registros DNS. Um subdomínio como social.exemplo.com é comum.
Dependências de Software
A pilha do Mastodon inclui:
- Ruby on Rails (servidor de aplicação)
- PostgreSQL 12 ou superior (banco de dados)
- Redis 6 ou superior (cache e filas)
- Node.js 16+ (compilação de assets)
- Nginx ou Caddy (proxy reverso)
Instalar tudo manualmente em um VPS barato é possível, mas sujeito a erros. O método com Docker Compose empacota todas as dependências em contêineres, o que reduz erros de configuração e simplifica as atualizações.
Instruções Passo a Passo para Implantar o Mastodon com Docker em um VPS
Passo 1: Provisionar o VPS e Configurar Acesso SSH
- Crie um VPS com 2 GB de RAM e Ubuntu 22.04
Acesse o painel do seu provedor de VPS. Selecione o plano mais barato que ofereça 2 GB de RAM e pelo menos 25 GB de armazenamento SSD. Escolha Ubuntu 22.04 LTS como sistema operacional. Anote o endereço IP público após a criação. - Conecte-se via SSH e atualize os pacotes
Abra um terminal. Executessh root@seu-ip-vps. Após conectar, executeapt update && apt upgrade -ypara instalar todas as correções de segurança disponíveis. - Defina o hostname para seu domínio
Executehostnamectl set-hostname social.exemplo.come substitua o domínio pelo seu. Edite/etc/hostspara adicionar uma linha:127.0.0.1 social.exemplo.com.
Passo 2: Instalar Docker e Docker Compose
- Instale o Docker a partir do repositório oficial
Execute os seguintes comandos em sequência:apt install -y ca-certificates curl gnupg lsb-releasemkdir -p /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/nullapt updateapt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin - Verifique a instalação
Executedocker --versionedocker compose version. Ambos os comandos devem retornar números de versão sem erros.
Passo 3: Baixar o Mastodon e Configurar Variáveis de Ambiente
- Clone o repositório do Mastodon
Executegit clone https://github.com/mastodon/mastodon.gite depoiscd mastodon. - Copie o arquivo de ambiente de exemplo
Executecp .env.production.sample .env.production. - Gere uma chave secreta e segredos OTP
Executeopenssl rand -hex 64e copie a saída. Abra.env.productioncom um editor de texto. DefinaSECRET_KEY_BASEcom esse valor. Executeopenssl rand -hex 64novamente e definaOTP_SECRET. Executehead -c 64 /dev/urandom | base64e definaVAPID_PRIVATE_KEY. Em seguida, executeopenssl ecparam -name prime256v1 -genkey -noout -out /dev/stdout | base64 | tr -d '\n'e definaVAPID_PUBLIC_KEY. - Defina o domínio e as credenciais do banco de dados
No mesmo arquivo, edite estas linhas:LOCAL_DOMAIN=social.exemplo.comDB_HOST=dbDB_USER=postgresDB_NAME=postgresDB_PASS=REDIS_HOST=redis
Deixe DB_PASS vazio por enquanto. O arquivo Docker Compose usa o usuário PostgreSQL padrão sem senha.
Passo 4: Configurar Nginx e SSL com Cloudflare
- Configure o DNS no Cloudflare
No painel do Cloudflare, adicione um registro A parasocialapontando para o IP do seu VPS. Ative o ícone de nuvem laranja (proxy) para ativar o SSL do Cloudflare. - Crie um arquivo de configuração do Nginx
No VPS, crie/etc/nginx/sites-available/mastodoncom o seguinte conteúdo:server { listen 80; server_name social.exemplo.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name social.exemplo.com; ssl_certificate /etc/ssl/certs/cloudflare.crt; ssl_certificate_key /etc/ssl/private/cloudflare.key; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /api/v1/streaming { proxy_pass http://127.0.0.1:4000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } - Ative o site e reinicie o Nginx
Executeln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/. Depois executesystemctl restart nginx. - Faça upload do certificado de origem do Cloudflare
No Cloudflare, vá em SSL/TLS > Servidor de Origem. Crie um certificado de origem que cubra seu domínio e todos os subdomínios. Copie o conteúdo do certificado e da chave para os arquivos referenciados na configuração do Nginx acima.
Passo 5: Construir e Iniciar os Contêineres do Mastodon
- Construa as imagens Docker
A partir do diretóriomastodon, executedocker compose build. Esta etapa compila os assets e pode levar de 10 a 15 minutos em um VPS barato. - Execute as migrações do banco de dados
Executedocker compose run --rm web rails db:migrate. Isso cria as tabelas do banco de dados. - Crie a conta de administrador
Executedocker compose run --rm web rails db:seed. Isso cria um usuário administrador padrão com emailadmin@example.come senhamastodonadmin. Altere esses dados imediatamente após o primeiro login. - Inicie todos os serviços
Executedocker compose up -d. Isso inicia os contêineres web, streaming, sidekiq e banco de dados em modo destacado.
Problemas Comuns Após a Implantação
VPS Fica sem Memória Durante a Construção
Se o processo de construção falhar com um processo morto ou erro OOM, seu VPS provavelmente tem menos de 2 GB de RAM. Adicione um arquivo de swap de 2 GB: fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile. Adicione /swapfile none swap sw 0 0 ao /etc/fstab para torná-lo permanente.
Não é Possível Enviar E-mails para Confirmação de Conta
O Mastodon requer um servidor SMTP para enviar e-mails de confirmação. Para uma instância de único usuário, você pode usar uma conta gratuita do SendGrid (100 e-mails por dia) ou um teste do Mailgun. Adicione estas variáveis ao .env.production: SMTP_SERVER=smtp.sendgrid.net, SMTP_PORT=587, SMTP_LOGIN=apikey, SMTP_PASSWORD=sua-chave-api-sendgrid, SMTP_FROM_ADDRESS=noreply@social.exemplo.com. Depois reinicie os contêineres com docker compose restart.
Interface Web do Mastodon Retorna 502 Bad Gateway
Isso geralmente significa que o Nginx não consegue alcançar os contêineres Docker. Verifique se os contêineres estão rodando com docker ps. Confirme que o contêiner web expõe a porta 3000 e o contêiner de streaming expõe a porta 4000. Verifique também se LOCAL_DOMAIN no .env.production corresponde ao server_name na configuração do Nginx.
Instância Mastodon para Um Usuário vs Plano Hospedado do Mastodon
| Item | Instância Auto-Hospedada para Um Usuário | Plano Hospedado do Mastodon (Mastodon.social) |
|---|---|---|
| Custo mensal | $6 a $12 (VPS) mais domínio ($1-2) | Gratuito para conta básica |
| Controle | Acesso total de administrador, regras de moderação personalizadas | Sem configurações no nível do servidor |
| Manutenção | Atualizações manuais, correções de segurança | Atualizações automáticas pelo host |
| Propriedade dos dados | Todos os dados no seu VPS | Dados armazenados nos servidores do host |
| Escalabilidade | Limitada pelos recursos do VPS | Suporta muitos usuários |
Após os contêineres estarem rodando, abra https://social.exemplo.com em um navegador. Faça login com a conta de administrador criada durante a configuração. Vá em Preferências > Administração > Configurações do Servidor para personalizar o nome da instância, descrição e e-mail de contato. Para uma instância de único usuário, desative o registro aberto em Preferências > Administração > Configurações do Servidor > Registros para impedir que outros entrem. Considere configurar backups automáticos semanais do banco de dados PostgreSQL usando docker compose exec db pg_dump -U postgres > backup.sql e armazenar o arquivo fora do servidor via rsync ou um bucket de armazenamento em nuvem.