# Tutorial Mastodon server: Criar servidor Mastodon

Com um servidor Mastodon próprio, você obtém total controle sobre os seus dados e a moderação da sua **comunidade**. Dessa forma é possível ter uma experiência de usuário personalizada, focada na privacidade e livre de anúncios.

## Pré-requisitos para criar um servidor Mastodon

Você pode **criar um servidor pequeno e escalá-lo** sempre que necessário, para acompanhar o crescimento da sua comunidade. Para configurar um Mastodon server, você precisa de:

- **VPS ou outro servidor**: Embora você possa operar o Mastodon em um servidor local, um [servidor virtual privado (VPS)](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/vps-o-que-e-servidor-virtual-privado/ "VPS: O que é servidor virtual privado") é uma solução mais flexível e fácil de gerenciar. Este servidor deve, de preferência, usar Ubuntu 20.04 ou Debian 11 como sistema operacional e fornecer acesso root para configurar o necessário.
- **Domínio ou subdomínio**: Você precisa de um domínio próprio ou de um subdomínio para identificar seu Mastodon server. Isso permite que os usuários encontrem e se conectar à sua instância.

- **Disponibilidade on-line constante**: Seu servidor deve estar on-line o tempo todo para que outros possam usar sua instância Mastodon.
- **Provedor de e-mail**: O Mastodon envia notificações e links de confirmação por e-mail, portanto, você precisa de um provedor de e-mail para oferecer suporte a essas funções. Você pode instalar um servidor SMTP, mas geralmente, o software de terceiros é mais prático. O Mastodon recomenda, entre outros, Mailgun, SparkPost ou Sendgrid.
- **Provedor de armazenamento de objetos (object storage)**: Apesar de opcional, é recomendável usar um provedor de armazenamento de objetos compatível com Amazon S3, pois o Mastodon armazena dados como imagens, vídeos e outros mídias no servidor. O espaço adicional garante que sua instância Mastodon funcione sem problemas e tenha espaço suficiente para os dados dos usuários.

Seu servidor também deve atender aos seguintes requisitos técnicos mínimos:

- **CPU/Processamento**: mín. 2 núcleos
- **RAM/Memória**: mín. 2 GB
- **Espaço em disco**: mín. 30 GB

O Mastodon utiliza um banco de dados (PostgreSQL) para armazenar dados dos usuários e outras informações. Com uma grande base de usuários, o número de acessos ao banco de dados pode ser alto. Certifique-se de que seu **banco de dados esteja adequadamente otimizado** e tenha recursos suficientes (CPU e RAM) para processar esses acessos de forma eficiente.

## Hospedar servidor Mastodon com o VPS da IONOS

Quer começar com sua própria instância Mastodon, mas não tem certeza de qual plano VPS atenderá às suas necessidades? O IONOS oferece **pacotes VPS poderosos** com recursos dedicados e tráfego ilimitado a preços acessíveis.

Para um Mastodon server simples, o [VPS Linux M+](https://www.ionos.com/servers/vps "VPS Linux M+ — IONOS") da IONOS é a escolha perfeita. Ele oferece 80 GB de espaço e até 1 Gbit/s de largura de banda. Se precisar de mais recursos, basta escolher o pacote de desempenho adequado.

## Servidores Mastodon e os planos da IONOS adequados

Ao escolher o pacote VPS mais adequado, você deve estimar o número potencial de usuários da sua instância Mastodon. Dependendo do tráfego esperado, recomendamos os seguintes planos da IONOS:

<table>
  <thead>
    <tr>
      <th><strong>Cenário do servidor Mastodon</strong></th>
      <th><strong>Servidor VPS IONOS mais adequado</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Até 100 pessoas</td>
      <td>VPS Linux M</td>
    </tr>
    <tr>
      <td>100 a 1000 pessoas</td>
      <td>VPS Linux L</td>
    </tr>
    <tr>
      <td>1000 a 10000 pessoas</td>
      <td>VPS Linux XL</td>
    </tr>
    <tr>
      <td>A partir de 10000 pessoas</td>
      <td>VPS Linux XXL</td>
    </tr>
  </tbody>
</table>

Além disso, você pode executar seu Mastodon server em paralelo com outros serviços. Para uma base de usuários simples, você pode começar com esses planos:

<table>
  <thead>
    <tr>
      <th><strong>Cenário do servidor Mastodon</strong></th>
      <th>Servidor VPS IONOS mais adequado</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Operação paralela de um site simples</strong></td>
      <td>VPS Linux M</td>
    </tr>
    <tr>
      <td><strong>Operação paralela de um servidor de voz</strong></td>
      <td>VPS Linux M</td>
    </tr>
    <tr>
      <td><strong>Operação paralela de uma loja on-line</strong></td>
      <td>VPS Linux L</td>
    </tr>
  </tbody>
</table>

## Criar servidor Mastodon: Passo a passo

Aprenda com as nossas instruções passo a passo como criar um servidor Mastodon.

### Passo 1: Preparar o servidor

A maioria dos provedores de hospedagem oferece a possibilidade de escolher o sistema operacional durante a configuração. O Mastodon funciona melhor em Ubuntu 20.04 e Debian 11. Se possível, selecione um desses sistemas operacionais. Depois que seu VPS estiver configurado, **conecte-se ao seu servidor via SSH**. Para isso, use um terminal (Linux/Mac) ou um cliente SSH como o PuTTY (Windows).

```bash
ssh root@your_server_ip
```

Substitua `your_server_ip` pelo endereço IP do seu VPS.

Para proteger seu sistema, você deve usar chaves SSH e configurar regras de firewall com **iptables** para liberar apenas as portas HTTP(S) e SSH. Em seguida, você precisa apontar o registro A do seu domínio ou subdomínio para o IP do VPS. Para IPv6, adicione também um registro AAAA.

Execute uma atualização do gerenciador de pacotes e dos pacotes do sistema:

```bash
apt update && apt upgrade -y
```

### Passo 2: Instalar as dependências

O Mastodon requer vários pacotes e dependências para funcionar corretamente, incluindo Node.js, Yarn, PostgreSQL, Redis e Nginx.

Primeiro, instale os pacotes básicos:

```bash
apt install -y curl wget gnupg apt-transport-https lsb-release ca-certificates
```

**Node.js**

```bash
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
```

**PostgreSQL**

```bash
wget -O /usr/share/keyrings/postgresql.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc
echo "deb [signed-by=/usr/share/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/postgresql.list
```

**Pacotes do sistema**

```bash
apt update
```

```bash
apt install -y imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core g++ libprotobuf-dev protobuf-compiler pkg-config gcc autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev nginx nodejs redis-server redis-tools postgresql postgresql-contrib certbot python3-certbot-nginx libidn11-dev libicu-dev libjemalloc-dev
```

**Yarn**

```bash
corepack enable
yarn set version classic
```

**Ruby**

Como o Mastodon é escrito em Ruby, ele requer Ruby e Bundler. Primeiramente, crie o usuário no qual o Mastodon será executado:

```bash
adduser --disabled-login mastodon
```

Em seguida, troque para a conta de usuário criada:

```bash
su - mastodon
```

Instale `rbenv` e `rbenv-build`:

```bash
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec bash
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
```

Após concluir essa parte, instale a versão correta do Ruby e o Bundler:

```bash
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.2.3
rbenv global 3.2.3
gem install bundler --no-document
```

Volte para o usuário root com `exit`.

### Passo 3: Configurar o PostgreSQL

O PostgreSQL é utilizado pelo servidor Mastodon para armazenar e gerenciar dados. Você já instalou o servidor de banco de dados na etapa anterior. Agora vá para o usuário `postgres` para acessar o shell do PostgreSQL:

```bash
sudo -u postgres psql
```

O Mastodon se conecta ao servidor de banco de dados sem senha. Portanto, o nome de usuário do sistema Linux e o nome de usuário do banco de dados devem corresponder. Execute os seguintes comandos no shell do PostgreSQL para criar o banco de dados:

```sql
CREATE USER mastodon CREATEDB;
\q
```

Você pode melhorar o desempenho do seu banco de dados PostgreSQL ajustando os recursos do sistema disponíveis. Uma ferramenta útil para isso é o gerador de configurações **pgTune**. Nele, você insere informações como o número de núcleos de CPU e o tamanho da RAM, e obtém uma configuração otimizada do PostgreSQL, que você especifica em `postgresql.conf`.

### Passo 4: Instalar o Mastodon

Em seguida, volte para o usuário Mastodon:

```bash
su - mastodon
```

Baixe a versão estável mais recente do Mastodon:

```bash
git clone https://github.com/mastodon/mastodon.git live && cd live
git checkout $(git tag -l | grep '^v[0-9.]*$' | sort -V | tail -n 1)
```

Instale também as dependências do Ruby e do JavaScript:

```bash
bundle config deployment 'true'
bundle config without 'development test'
bundle install -j$(getconf _NPROCESSORS_ONLN)
yarn install --pure-lockfile
```

Execute o assistente de configuração do Mastodon:

```bash
RAILS_ENV=production bundle exec rake mastodon:setup
```

Você será perguntado sobre preferências de configuração, que serão salvas no final no arquivo `.env.production`.

- **Domain name**: Informe o nome de domínio do servidor VPS
- **Do you want to enable single user mode?**: N
- **Are you using Docker to run Mastodon?**: N
- **PostgreSQL host**: default - Enter
- **PostgreSQL port**: default - Enter
- **Name of PostgreSQL database**: default - Enter
- **Name of PostgreSQL user**: default - Enter
- **Password of PostgreSQL user**: deixar em branco - Enter
- **Redis host**: default - Enter
- **Redis port**: default - Enter
- **Redis password**: default – Enter
- **Do you want to store uploaded files on the cloud?**: N
- **Do you want to send e-mails from localhost?**: N
- **SMTP server**: Informe o servidor SMTP
- **SMTP port**: Informe a porta do servidor SMTP
- **SMTP username**: Nome de usuário para login
- **SMTP authentication**: plain
- **SMTP OpenSSL verify mode**: none
- **E-mail address to send e-mails “from”**: geralmente igual ao login SMTP
- **Send a test e-mail with this configuration right now?**: Y
- **Send test e-mail to**: Informe um endereço de e-mail qualquer como destinatário
- **Save configuration?**: Y
- **Prepare the database now?**: Y
- **Compile the assets now?**: Y
- **Do you want to create an admin user straight away?**: Y
- **Username**: admin
- **E-Mail**: Informe seu próprio endereço de e-mail

Volte para o usuário root:

```bash
exit
```

### Passo 5: Instalar certificado SSL

Os servidores VPS da IONOS já incluem um certificado SSL por padrão. No entanto, se o seu pacote não incluir um certificado, você pode instalá-lo facilmente.

Você pode obter um certificado SSL gratuito do **Let’s Encrypt**. O Let’s Encrypt oferece certificados automatizados que são fáceis de instalar e renovar.

```bash
certbot certonly --nginx -d example.com
```

O certificado será salvo no diretório `/etc/letsencrypt/live/example.com/` no seu servidor Mastodon.

### Passo 6: Configurar o Nginx

Você precisará copiar o template de configuração para o Nginx do diretório Mastodon e colá-lo no diretório `sites-available` do Nginx:

```bash
cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
```

Crie um link simbólico do arquivo de configuração em `sites-enabled` para ativá-lo e remova a configuração padrão:

```bash
ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
rm /etc/nginx/sites-enabled/default
```

Abra o arquivo de configuração para o seu Mastodon server:

```bash
nano /etc/nginx/sites-available/mastodon
```

Substitua `example.com` pelo seu próprio nome de domínio.

Apague os comentários das linhas `ssl_certificate` e `ssl_certificate_key`, e substitua os respectivos caminhos pelos caminhos do seu certificado SSL. Se você estiver usando o **certificado auto assinado padrão**, mantenha os caminhos inalterados:

```bash
ssl_certificate     /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
```

Após ajustar a configuração, você precisará recarregar o Nginx para que as alterações entrem em vigor:

```bash
systemctl reload nginx
```

### Passo 7: Configurar serviços Systemd

Ao configurar os serviços Systemd, a aplicação web Mastodon e as funções de streaming em tempo real serão iniciadas automaticamente quando o servidor for reiniciado. Isso garante que seu servidor Mastodon esteja **sempre disponível**.

Copie os templates de serviço Systemd do Mastodon para o diretório apropriado:

```bash
cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
```

Se você tiver feito alterações nos valores padrão, verifique se o nome de usuário e os caminhos nos templates de serviço estão corretos:

```bash
$EDITOR /etc/systemd/system/mastodon-*.service
```

Inicie e habilite os serviços Systemd:

```bash
systemctl daemon-reload
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
```

- `systemctl daemon-reload`: Atualiza a configuração do Systemd para incluir os novos templates de serviço.
- `systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming`: Esses serviços são responsáveis pela aplicação web, processamento em segundo plano e funções de streaming em tempo real do Mastodon.

### Passo 8: Alterar o limite de caracteres

Ao operar seu próprio Mastodon server, você tem a liberdade de ajustar configurações que normalmente não estão disponíveis em servidores públicos. Um exemplo é a personalização do limite de caracteres para posts. O padrão é de 500 caracteres, mas você pode aumentar ou diminuir esse valor.

Primeiramente, altere para o usuário Mastodon no console. Em seguida, edite dois arquivos específicos.

Defina o valor desejado para o limite de caracteres nos seguintes arquivos:

- `compose_form.js` no diretório `~/live/app/javascript/mastodon/features/compose/components/`
- `status_length_validator.rb` em `~/live/app/validators/`

No arquivo `instance_serializer.rb` no diretório `~/live/app/serializers/rest/`, encontre a linha que contém `:languages, :registrations,` e adicione `:max_toot_chars,` logo após.

Além disso, adicione o seguinte código abaixo da linha que começa com `private`, ajustando o valor de `max_toot_chars` conforme desejado:

```ruby
def max_toot_chars
    1000
end
```

Depois de fazer essas alterações, os serviços do Mastodon devem ser reiniciados. Isso é feito como usuário root com o comando:

```bash
service mastodon-* restart
```

Agora você pode escrever posts com um limite de 1000 caracteres.

### Passo 9: Função de moderação

A função de moderação em “Configurações &gt; Moderação” em seu servidor Mastodon permite que você, como administrador, monitore e controle os conteúdos e atividades dos usuários em sua instância para garantir que as **diretrizes da comunidade** sejam seguidas e para remover conteúdos indesejados.

Você tem a opção de **bloquear, desbloquear ou excluir contas, domínios, endereços IP ou servidores de e-mail**. Além disso, você pode moderar conteúdos publicados por usuários, removendo ou editando posts inadequados ou ofensivos.


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/criar-mastodon-server/](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/criar-mastodon-server/) for AI/LLM consumption.