bolhaverse EN

mastodon 4.7.3 · bolha-tangerine

O Mastodon da bolha, com mais espaço

A bolha.us roda uma versão própria do Mastodon: o código oficial com alguns limites maiores e alguns recursos a mais. Aqui está tudo que muda, o código-fonte, as imagens prontas e como usar na sua instância.

o que muda

RecursoMastodon oficialNa bolha
Tamanho do post500 caracteres1200 caracteres
Bio do perfil500 caracteres1200 caracteres
Metadados na bio4 campos24 campos
Opções na enquete4 opções de 50 caracteres12 opções de 60 caracteres
Silenciar por pouco tempoa partir de 6 horas10, 30 ou 60 minutos
Markdown nos postsnão temtítulos, listas e código colorido
Post que se apaga sozinhonão temde 15 minutos a 24 horas
Limite de uso da APIpadrãoo dobro
TemapadrãoTangerine UI, em 5 cores

detalhes

Markdown com código colorido

O compositor ganha um botão para escrever em Markdown. Blocos de código saem coloridos por linguagem (highlight.js, com um conjunto de linguagens comuns) e os títulos de H1 a H6 têm tamanhos diferentes. Instâncias que não entendem Markdown recebem o post já convertido em HTML.

Post que se apaga sozinho

Uma ampulheta no compositor define a validade: 15 ou 30 minutos, 1, 2, 4, 6, 12 ou 24 horas. Na hora marcada o post é excluído como se o autor tivesse apagado: some para todo mundo e a exclusão é enviada às outras instâncias. Cada instância remota decide se obedece, como em qualquer exclusão no fediverso.

O dobro de acesso à API

Os limites de requisições por conta, por token, de paginação e de mídia foram dobrados. Quem usa clientes com várias colunas (o modo avançado, Phanpy, Elk) esgotava o limite oficial em poucos minutos. Os limites de login, cadastro e troca de senha não mudaram.

Silenciar por pouco tempo

A janela de silenciar um perfil ganhou as opções de 10, 30 e 60 minutos, além das durações longas que já existiam.

para quem faz cliente

Os dois recursos novos aparecem na API de criar post. A instância publica as durações aceitas em configuration.statuses.expirations, na resposta de /api/v2/instance.

# post que se apaga em uma hora (expires_in em segundos)
curl -X POST https://{dominio}/api/v1/statuses \
  -H "Authorization: Bearer $TOKEN" \
  -d "status=some em uma hora" \
  -d "expires_in=3600"
# post em markdown
curl -X POST https://{dominio}/api/v1/statuses \
  -H "Authorization: Bearer $TOKEN" \
  -d "content_type=text/markdown" \
  --data-urlencode $'status=# titulo\n\n```python\nprint("oi")\n```'

código-fonte

O código é público, sob a mesma licença AGPL-3.0 do Mastodon. Cada versão é um branch com os commits da bolha aplicados em cima da tag oficial, então dá para ler exatamente o que muda.

imagens docker

As imagens ficam em um registry público, sem login. São duas por versão, como no Mastodon oficial: web (usada também pelo sidekiq) e streaming. Só há build para linux/amd64.

# baixar a versão atual
docker pull registry.gutocarvalho.net/images/mastodon:v4.7.3-web-bolha-tangerine-prod-2
docker pull registry.gutocarvalho.net/images/mastodon:v4.7.3-streaming-prod-1
VersãoImagem webImagem streaming
4.7.3 atualv4.7.3-web-bolha-tangerine-prod-2v4.7.3-streaming-prod-1
4.7.2v4.7.2-web-bolha-tangerine-prod-1v4.7.2-streaming-prod-1
4.7.1v4.7.1-web-bolha-tangerine-prod-1v4.7.1-streaming-prod-1
4.7.0v4.7.0-web-bolha-tangerine-prod-1v4.7.0-streaming-prod-1
4.6.4v4.6.4-web-bolha-tangerine-prod-4—
4.5.3v4.5.3-web-bolha-tangerine-prod-1v4.5.3-streaming-prod-1

Ver todas as tags no registry →

docker compose

Parta do docker-compose.yml oficial do Mastodon e troque só as três linhas de image. O resto (banco, Redis, .env.production, volumes) fica igual, e nenhuma variável de ambiente nova é necessária.

  1. Faça backup do banco antes.

  2. Troque as imagens no docker-compose.yml:

    services:
      web:
        image: registry.gutocarvalho.net/images/mastodon:v4.7.3-web-bolha-tangerine-prod-2
      sidekiq:
        image: registry.gutocarvalho.net/images/mastodon:v4.7.3-web-bolha-tangerine-prod-2
      streaming:
        image: registry.gutocarvalho.net/images/mastodon:v4.7.3-streaming-prod-1
  3. Baixe, rode as migrations e suba:

    docker compose pull
    docker compose run --rm web bundle exec rails db:migrate
    docker compose up -d
  4. Confira a versão e os limites:

    curl -s https://{dominio}/api/v2/instance | jq '.version, .configuration.statuses'
Antes de trocar
  • Use a imagem da mesma versão do Mastodon que você já roda, ou siga antes as notas de atualização oficiais da versão de destino.
  • As migrations só acrescentam três colunas e um índice. Em uma tabela com 41 milhões de posts, o índice levou cerca de 100 segundos.
  • O post que se apaga depende do sidekiq processando as filas default e scheduler. Se você separa as filas em vários processos, confira as duas.
  • Para voltar ao Mastodon oficial basta trocar as imagens de volta. Os posts longos e os metadados extras continuam no banco.

quem usa

Instâncias que rodam esta versão:

Sua instância usa esta versão?

Avise o @gutocarvalho@bolha.us que a gente coloca você aqui na lista.