Mastodon: como instalar e criar sua própria instância

EnglishSpanishChinese (Simplified)ItalianPortuguese

O Mastodon é uma rede social que lembra o Twitter, mas com a diferença de ser open source e descentralizada. Não há um site central para se inscrever e as pessoas podem se cadastrar na instância (servidor) que desejar.

Cada instância tem suas próprias regras, políticas e moderação, ou a ausência de tudo isso. Você pode ingressar em instâncias públicas como Mastodon.social, Ursal.zone ou Mas.to ou pode ainda criar sua própria instância a seguir.

O Mastodon é uma rede federada composta por várias instâncias diferentes, mas os membros de cada uma podem conversar entre si e acompanhar as mensagens uns dos outros numa timeline unificada.

Por exemplo, [email protected] pode se comunicar com [email protected] normalmente mesmo estando em instâncias diferentes e podem ler os toots (equivalente a um tweet) uns dos outros em uma só timeline.

Podem procurar um ao outro por meio da busca universal, se seguir, mandar mensagens privadas, curtir postagens e quase tudo o que você já deve estar familiarizado no Twitter.

Falando em Twitter, com a série de péssimas decisões de Elon Musk, que resultaram na demissão ou pedidos de demissão de diversos funcionários, os usuários da rede estão em busca de um novo lugar.

Temendo o fim iminente do passarinho azul, milhares de usuários correram para serviços como Mastodon, Cohost e… Koo. Isso levou a um aumento de carga nesses serviços e momentos de instabilidade.

Isso torna interessante criar sua própria instância do Mastodon.

Preparando a instalação

Sem mais delongas, vamos ao que interessa. Você pode criar uma instância do Mastodon só para você usar ou pode criar sua própria comunidade com amigos, familiares ou mesmo aberto a quem se interessar.

Resumo do que você vai precisar:

  • Um domínio registrado e sob seu controle;
  • Apontar esse domínio para o endereço IP do seu VPS;
  • Um servidor VPS com pelo menos 4 GB de RAM iniciais;
  • Um servidor SMTP para enviar e-mails (serve o do GMail);
  • Este tutorial super conciso;
  • Tesoura sem ponta.

Se você planeja colocar sua instância atrás do Cloudflare, lembre de desativar o recurso “Minificação Automática” no menu Speed » Otimização no painel do Cloudflare no domínio usado no seu servidor.

Caso não faça isso, os arquivos serão comprimidos e não serão reconhecidos pela verificação de integridade dos navegadores. Assim sua instância pode aparecer com páginas quebradas.

Mais pra frente será solicitado um servidor SMTP para que seja possível enviar e-mails a partir da sua instância com as notificações do sistema. Vamos utilizar como exemplo o GMail, mas você pode usar também outros serviços de e-mail.

Basta pesquisar as configurações de SMTP dele, como o Outlook. Você pode usar ainda serviços especializados como Mailgun, Sendgrid, entre outros.

Você vai precisar de um VPS com 4 GB de memória (recomendado) e um domínio, mesmo que seja um gratuito da Freenom. Após registrar seu domínio, você precisará apontar ele para o IP do seu servidor VPS.

Isso varia conforme o lugar que você registrou o domínio, bastando criar um “A record” que aponte para o IP do VPS. Você pode assinar um VPS através de empresas como a Vultr, DigitalOcean, Linode, ReadyDedis, Hostgator, etc.

Os 4 GB de memória só são necessários para executar a instalação pois há um momento em que os arquivos estáticos são compilados e isso requer bastante RAM. Depois você pode reduzir a quantidade e só aumentar quando necessário.

A máquina virtual (VM) a ser criada na empresa escolhida precisa usar o Debian 11 como sistema operacional. Depois de criá-la, você ficará sabendo o endereço IP para que possa apontar seu domínio.

Pode demorar um pouco para que os servidores DNS pelo mundo percebam a edição e passem a apontar seu domínio para o IP que você definiu. Depois de fazer login via SSH na sua VM, vamos instalar os pacotes necessários.

São eles:

apt install build-essential bundler git libidn11-dev libjemalloc-dev libpq-dev nginx postgresql postgresql-contrib rbenv redis-server ruby ruby-dev libicu-dev imagemagick sudo ffmpeg curl wget gnupg apt-transport-https lsb-release ca-certificates libssl-dev libreadline-dev libgdbm-dev openssl libz-dev --no-install-recommends -y

Não se assuste com a quantidade de pacotes, alguns deles já podem estar instalados no seu servidor mas são mencionados só para garantir que você terá tudo o que precisa. Você também vai precisar do nodejs:

curl -sL https://deb.nodesource.com/setup_16.x | bash -
apt install nodejs

Agora vamos instalar outro requerimento, o yarn:

npm install --global yarn
corepack enable
yarn set version stable

Configurando o banco de dados

Terminados todos esses passos, vamos dar continuidade ao tutorial com a preparação do banco de dados. Execute, linha por linha, os comandos a seguir:

sudo -u postgres psql
CREATE DATABASE mastodon_production;
CREATE USER mastodon;
ALTER USER mastodon createdb;
ALTER USER mastodon WITH ENCRYPTED PASSWORD 'senha_super_secreta';
ALTER DATABASE mastodon_production OWNER TO mastodon;
exit

Lembre de trocar senha_super_secreta por uma senha forte.

Configurando o usuário do sistema

Agora vamos criar um usuário novo no sistema operacional sob o qual o Mastodon que você está instalando irá funcionar. Lembrando que esta é uma conta no sistema operacional e não na instância do Mastodon.

sudo adduser --group --system --disabled-login mastodon

Baixando e preparando o Mastodon

O próximo passo é baixar os arquivos necessários para instalar o Mastodon no seu servidor e assim criar sua própria instância. Para isso, execute os seguintes comandos:

sudo mkdir -p /var/www
cd /var/www

Uma vez dentro da pasta /var/www, execute:

sudo git clone https://github.com/mastodon/mastodon.git

Isso vai criar uma pasta chamada mastodon com os arquivos necessários. Agora vamos dar mudar a propriedade deste diretório para que ele pertença ao usuário que criamos agora pouco:

sudo chown -R mastodon:mastodon mastodon

Por fim, vamos entrar na pasta mastodon para dar continuidade ao tutorial usando o comando cd mastodon.

Agora vamos adicionar este diretório na lista segura para não ter problemas com o comando git e para permitir que o usuário mastodon gerencie os arquivos da pasta mastodon:

sudo -u mastodon git config --global --add safe.directory /var/www/mastodon

A seguir, entre nesta página para saber qual a versão mais recente do Mastodon. No momento da redação deste post é a v4.0.2. Agora execute:

sudo -u mastodon git checkout v4.0.2

Lembre de mudar o número da versão para a que for mais recente quando você seguir este tutorial. Agora vamos precisar de mais alguns pacotes para instalar o Mastodon com sucesso:

sudo gem install bundler sidekiq puma

E então os últimos preparativos antes de colocar a mão na massa:

sudo -u mastodon bundle config deployment 'true'
sudo -u mastodon bundle config without 'development test'
sudo -u mastodon bundle install -j$(getconf _NPROCESSORS_ONLN)

Instalando o Mastodon

Prometo que está quase no fim! O comando a seguir executa o assistente de instalação do Mastodon:

sudo -u mastodon RAILS_ENV=production bundle exec rake mastodon:setup

Continuando, serão feitas as seguintes perguntas:

  • Domain name: digite exatamente o endereço do domínio ou subdomínio no qual sua instância do Mastodon ficará acessível após instalada;
  • Enable single user mode: nesse ponto ele pergunta se essa instância será para uso pessoal (só seu) ou se permitirá que outras pessoas a utilizem;
  • Are you using Docker: a pergunta aqui é se você está instalando o Mastodon por meio do Docker, o que não é o caso;
  • PostgreSQL host: aperte Enter aqui para usar o padrão;
  • PostgreSQL port: mais uma vez aperte Enter para usar o padrão;
  • Name of PostgreSQL database: o nome do banco de dados que você criou no início do tutorial, que é o mesmo do padrão, então apenas aperte Enter;
  • Name of PostgreSQL user: aqui também deixamos no padrão quando criamos o banco de dados, então aperte Enter outra vez;
  • Password of PostgreSQL user: é aquela tal senha super secreta que você criou durante a configuração do banco de dados. Digite-a aqui;
  • Redis host: aperte Enter para usar o padrão;
  • Redis port: aperte Enter para usar o padrão;
  • Redis password: como não há senha, simplesmente aperte Enter;
  • Store uploaded files in the cloud: a pergunta aqui é se você vai usar uma hospedagem na nuvem ou seu próprio servidor para hospedar arquivos que os usuários ou você compartilhem. Aperte Enter para responder não e usar seu próprio servidor para os arquivos enviados por você ou usuários;
  • Send e-mails from localhost: aqui ele pergunta se você deseja usar seu próprio servidor para enviar e-mails, caso tenha um servidor de e-mail configurado. Aperte Enter para responder que não;
  • SMTP server: a seguir ele vai perguntar o servidor que será utilizado para enviar e-mails. Para o GMail, digite smtp.gmail.com;
  • SMTP port: informe 587;
  • SMTP user: informe seu e-mail do GMail, caso use esse serviço;
  • SMTP password: informe sua senha do GMail aqui;
  • SMTP authentication: selecione plain;
  • SMTP OpenSSL verify mode: selecione none;
  • E-mail address to send e-mails ‘from’: digite seu e-mail do GMail;
  • Send a test e-mail: aqui você escolhe se deseja enviar um e-mail de teste para ver se está tudo funcionando;
  • Send test e-mail to: caso tenha escolhido sim na pergunta anterior, informe o endereço de destino da mensagem de teste;
  • Save configuration: aperte Enter para responder sim e salvar as configurações inseridas;
  • Prepare the database now: responda se deseja preparar o banco de dados agora para o funcionamento da sua instância. Enter significa sim;
  • Compile assets now: nesse momento vem a importância de ter um VPS com pelo menos 4 GB de memória para compilar os arquivos estáticos do Mastodon e dar continuidade ao tutorial. Aperte Enter para responder que sim e continuar o tutorial;
  • Create an admin user straight away: aqui você pode criar o usuário com poderes de administrador da instância. Aperte Enter para responder que sim;
  • Username: informe o nome de usuário da sua conta de administrador. Não utilize o padrão, que é admin. Escolha o nome de usuário que você gostaria de ver no seu perfil;
  • E-mail: informe seu endereço de e-mail;
  • Nesse ponto salve a senha que foi gerada para sua conta em um local seguro.

Pronto! O Mastodon foi instalado. Agora o acabamento. Vamos configurar os serviços para que o Mastodon inicie junto com o sistema operacional. Execute, linha por linha, os comandos a seguir:

sudo cp /var/www/mastodon/dist/mastodon-*.service /etc/systemd/system
sudo sed -i 's/home\/mastodon\/live/var\/www\/mastodon/g' /etc/systemd/system/mastodon-*.service
sudo sed -i 's/home\/mastodon\/.rbenv\/shims/usr\/local\/bin/g' /etc/systemd/system/mastodon-*.service
sudo systemctl daemon-reload
sudo systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming

O que eles vão fazer é:

  • Mover os arquivos que gerenciam os serviços do Mastodon junto ao sistema operacional para a pasta correta;
  • Modificar esses arquivos para que apontem para os caminhos corretos da instalação de sua instância;
  • Informar o sistema operacional para que leia novamente o diretório de serviços para detectar as novas adições;
  • Ativar os serviços para que iniciem com o sistema e já de cara vai os executar também.

Agora finalmente vamos expor sua instalação para que se torne acessível ao mundo. Para isso, vamos contar com o nginx, um servidor web que vai operar como proxy reverso intermediando o acesso ao Mastodon.

Execute os seguintes comandos:

sudo cp /var/www/mastodon/dist/nginx.conf /etc/nginx/conf.d/mastodon.conf
sudo nano /etc/nginx/conf.d/mastodon.conf

Eles vão copiar o arquivo de configuração de site do nginx para a pasta correta e abrir esse arquivo com o editor de textos nano. O que você precisa fazer a seguir é modificar o arquivo e informar a pasta correta dos arquivos do Mastodon.

Sempre que você encontrar:

server_name example.com;

Substitua example.com pelo domínio ou subdomínio que você informou anteriormente durante o tutorial.

Sempre que você encontrar:

root /home/mastodon/live/public;

Substitua /home/mastodon/live/public por /var/www/mastodon/public. Essas configurações acima aparecem pelo menos duas vezes no arquivo. Edite todas que encontrar. Agora, onde você achar essas linhas:

# Uncomment these lines once you acquire a certificate:
# ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Edite desta forma, removendo o # conforme abaixo:

# Uncomment these lines once you acquire a certificate:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Mais uma vez, no lugar de example.com informe o domínio ou subdomínio através do qual sua instância do Mastodon estará acessível na internet. É o mesmo que você já informou anteriormente no decorrer deste conciso tutorial.

Gerando um certificado SSL

Para fechar, vamos gerar um certificado para que sua instância seja acessada de maneira segura sem que intrusos interceptem a conexão entre você ou seu usuário e seu servidor.

Para isso, vamos usar os seguintes comandos:

sudo apt install snapd
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx

Mais uma vez serão feitas algumas perguntas pra você:

  • E-mail: usado para receber alertas de segurança e avisos de renovação do certificado. Informe um endereço válido que você tenha acesso;
  • Terms of Service: aceite os termos de serviço digitando Y e apertando Enter;
  • Newsletters: digite N e aperte Enter para recusar receber e-mails de campanhas e novidades da EFF;
  • Names to activate HTTPS: selecione para quais domínios ou subdomínios deseja gerar os certificados. Nesse tutorial só deve aparecer um endereço para você, portanto responda com o número 1;

Se tudo correr como esperado, o certificado será gerado com sucesso e o nginx já estará preparado para usá-lo. Para isso, execute o seguinte comando após terminar todos os passos acima:

sudo nginx -t

Caso nenhum erro seja apresentado, digite:

sudo systemctl restart nginx

Agora você já pode acessar o endereço da sua instância em seu navegador e deverá ser recepcionado pela página inicial do Mastodon. Caso tenha instalado essa instância só pra você, será redirecionado ao seu perfil.

E é isto, agora é só começar a usar! Você pode definir as configurações da sua instância como idiomas, emojis, regras e tudo mais a partir das configurações do seu perfil, que é o administrador do sistema.

Depois que tudo estiver como você deseja, basta começar a seguir pessoas e divulgar sua instância para atrair usuários (caso seja esse seu objetivo). Este texto é baseado num tutorial do site Learn Linux, com algumas modificações.

Durante minha primeira tentativa de executar os passos, alguns pacotes necessários não estavam instalados, resultando em erros e impedimentos. Então incluí tudo o que você precisa nesta versão traduzida para o português.