Murad Library
Murad LibraryREF-0338MD

Tutorial de Customização do Murad Shrimp

Catalogued
Reading
10 min read

Instância: murad.social
Software: Iceshrimp.NET
Servidor: Debian 12 + Docker Compose + Nginx
Caminho da instância: /opt/murad-shrimp
Compilado para: Pablo Murad / Grupo Murad
Data: 2026-06-18


1. Até onde dá para customizar?

A instância pode ser customizada em quatro níveis:

NívelOnde mexeRiscoSobrevive a update?Exemplos
Admin panelInterface web /adminBaixoSimnome, descrição, regras, convites, moderação
Configuração/opt/murad-shrimp/config/configuration.iniMédioSim, se mantiver o arquivoregistros, federação, storage, limites
Assets / frontendarquivos dentro do container ou buildMédio/altoNão automaticamentefavicon, ícones, CSS, splash, manifesto
Fork do código/opt/murad-shrimp/repoAltoDepende do seu Gitmudanças profundas de layout, componentes, textos

A regra de ouro:

Tudo que for feito pelo painel admin e pelo configuration.ini é mais seguro.
Tudo que mexe nos arquivos do frontend precisa ser documentado para reaplicar depois de updates.


2. O que customizar primeiro pelo painel admin

Acesse:

https://murad.social/admin

Comece por estes itens:

2.1 Nome da instância

Sugestão:

Murad Shrimp

2.2 Descrição curta

Exemplo:

Uma pequena instância federada mantida por Pablo Murad.

2.3 Descrição longa

Exemplo:

Murad Shrimp é uma instância pessoal e comunitária do Fediverse, mantida por Pablo Murad, voltada para conversas, experimentos, cultura digital, bibliotecas, tecnologia e redes abertas.

2.4 Regras

Sugestão inicial:

1. Seja respeitoso.
2. Não publique spam.
3. Não pratique assédio, perseguição ou ataques coordenados.
4. Conteúdo ilegal será removido.
5. Esta é uma instância pequena: o administrador pode limitar registros, federação e conteúdo para preservar a saúde da comunidade.

2.5 Registro

Você já deixou assim:

[Security]
Registrations = Invite

Esse é o melhor modo para uma instância pequena: ninguém entra livremente, mas você consegue gerar convites.


3. Customização pelo configuration.ini

Arquivo principal:

/opt/murad-shrimp/config/configuration.ini

Abrir para editar:

nano /opt/murad-shrimp/config/configuration.ini

Depois de alterar:

cd /opt/murad-shrimp
docker compose restart app

Conferir:

docker compose ps
docker logs murad-shrimp-app --tail=80

3.1 Campos importantes já configurados

[Instance]
WebDomain = murad.social
AccountDomain = murad.social
CharacterLimit = 8192

Não altere WebDomain nem AccountDomain depois que a instância já federou. Isso pode quebrar identidade, links, atores ActivityPub e federação.

3.2 Registro

Opções comuns:

Registrations = Closed
Registrations = Invite
Registrations = Open

Recomendado para murad.social:

Registrations = Invite

3.3 Limite de caracteres

Você pode ajustar:

CharacterLimit = 8192

Sugestões:

500      estilo Mastodon clássico
2000     confortável
5000     longo
8192     bem generoso

3.4 Uploads

Você tem algo parecido com:

[Storage]
MaxUploadSize = 100M
MaxCacheSize = 20M
MediaRetention = 30d
ProxyRemoteMedia = true

Sugestões:

MaxUploadSize = 100M
MediaRetention = 30d
ProxyRemoteMedia = true

Para instância pequena, isso está bom.


4. Cores e tema visual

Há três caminhos:

Caminho A: tema do próprio usuário

Mais simples. Cada usuário ajusta aparência no próprio cliente ou interface web.

Use quando:

quero mudar só minha experiência pessoal

Caminho B: CSS global pelo painel, se disponível

Procure no painel admin por campos como:

Custom CSS
Theme
Branding
Appearance
Instance CSS

Se existir, esse é o melhor caminho para cores, fontes e pequenos ajustes.

Exemplo de CSS para identidade "Murad Shrimp":

:root {
  --murad-bg: #f7efe2;
  --murad-ink: #16110d;
  --murad-orange: #f47b3f;
  --murad-blue: #1f6feb;
  --murad-panel: #fff8ec;
}

body {
  background: var(--murad-bg);
}

a {
  color: var(--murad-blue);
}

button,
.button {
  border-radius: 14px;
}

Caminho C: mexer no frontend e rebuildar

Use quando:

quero trocar favicon, ícone PWA, splash, CSS embutido, título padrão ou assets do app

Esse caminho exige rebuild:

cd /opt/murad-shrimp
docker compose build app
docker compose up -d app

5. Favicon, ícone e PWA

A interface carregada pelo navegador usa arquivos como:

/favicon.png
/manifest.webmanifest
/apple-touch-icon
/_content/Iceshrimp.Assets.Branding/...

Isso significa que a customização de ícones pode envolver:

favicon.png
manifest.webmanifest
ícones 192x192
ícones 512x512
apple-touch-icon
assets de branding do frontend

5.1 Formatos recomendados

Prepare:

favicon.png       64x64 ou 128x128
icon-192.png      192x192
icon-512.png      512x512
apple-touch.png   512x512

Sugestão visual para Murad Shrimp:

fundo creme
camarão/mascote simples
contorno preto
detalhe laranja ou azul
estética zine / fediverse artesanal

6. Método seguro para trocar favicon via Nginx

Este método é mais seguro porque não mexe no código do Iceshrimp.NET.
Ele intercepta /favicon.png no Nginx e entrega seu arquivo customizado.

6.1 Criar pasta de branding

mkdir -p /opt/murad-shrimp/branding

Envie seu favicon para:

/opt/murad-shrimp/branding/favicon.png

6.2 Adicionar regra no Nginx

Antes de editar:

cp -a /etc/nginx/nginx.conf /etc/nginx/nginx.conf.before-murad-branding-$(date +%F-%H%M%S)
nano /etc/nginx/nginx.conf

Dentro do bloco do murad.social, adicione antes de location /:

location = /favicon.png {
    alias /opt/murad-shrimp/branding/favicon.png;
    add_header Cache-Control "public, max-age=3600";
}

Testar:

nginx -t
systemctl reload nginx
curl -I https://murad.social/favicon.png

Se quiser reverter, remova esse location e recarregue o Nginx.


7. Método seguro para custom CSS via Nginx

Se o painel não oferecer CSS global, dá para injetar um CSS próprio com Nginx, mas é mais delicado.

Mais seguro: hospedar um CSS estático e usá-lo em páginas públicas externas.
Mais agressivo: alterar HTML/Blazor gerado. Não recomendo no começo.

Criar CSS:

mkdir -p /opt/murad-shrimp/branding
nano /opt/murad-shrimp/branding/murad.css

Exemplo:

:root {
  --murad-cream: #f7efe2;
  --murad-ink: #16110d;
  --murad-orange: #f47b3f;
}

body {
  background-color: var(--murad-cream);
}

Servir via Nginx:

location = /murad.css {
    alias /opt/murad-shrimp/branding/murad.css;
    add_header Cache-Control "public, max-age=3600";
}

Teste:

nginx -t
systemctl reload nginx
curl -I https://murad.social/murad.css

A parte de injetar esse CSS no frontend depende da estrutura do Iceshrimp.NET e pode quebrar em updates. Portanto, só faça depois que a instância estiver estável.


8. Customização profunda do frontend

Arquivos prováveis dentro do repositório:

cd /opt/murad-shrimp/repo
find . -iname '*favicon*' -o -iname '*branding*' -o -iname '*manifest*' -o -iname '*.css' | sort

Também dá para procurar textos:

grep -R "Iceshrimp.Frontend" -n /opt/murad-shrimp/repo | head -n 50
grep -R "favicon.png" -n /opt/murad-shrimp/repo | head -n 50
grep -R "manifest.webmanifest" -n /opt/murad-shrimp/repo | head -n 50

Depois de alterar assets no repo:

cd /opt/murad-shrimp
docker compose build app
docker compose up -d app

Teste:

curl -I https://murad.social
docker logs murad-shrimp-app --tail=80

9. Plugins

Nos logs da sua instância apareceu:

Found 0 plugins in /app/plugins/v1.

Isso indica que o Iceshrimp.NET tem um carregador de plugins procurando plugins em:

/app/plugins/v1

Na sua instalação Docker atual, ainda não configuramos um volume persistente para plugins. Então, se você quiser experimentar plugins no futuro, primeiro precisamos mapear uma pasta do host para dentro do container.

9.1 Criar pasta de plugins no host

mkdir -p /opt/murad-shrimp/plugins/v1

9.2 Editar docker-compose.yml

Arquivo:

nano /opt/murad-shrimp/docker-compose.yml

No serviço app, adicionar volume:

      - ./plugins/v1:/app/plugins/v1

Exemplo da seção volumes do app:

    volumes:
      - ./config/configuration.ini:/app/configuration.ini:ro
      - ./media:/media
      - ./plugins/v1:/app/plugins/v1

Aplicar:

cd /opt/murad-shrimp
docker compose up -d app

Ver logs:

docker logs murad-shrimp-app --tail=80

9.3 Cuidado com plugins

Como o Iceshrimp.NET ainda evolui bastante, trate plugins como área experimental.

Regras:

não instalar plugin sem backup
não instalar plugin desconhecido
não instalar plugin que peça acesso amplo sem necessidade
testar um plugin por vez
documentar tudo

Backup antes:

cd /opt/murad-shrimp
docker exec murad-shrimp-postgres pg_dump -U iceshrimp -d iceshrimp | gzip > /opt/murad-shrimp/backups/postgres-before-plugin-$(date +%F-%H%M%S).sql.gz
cp -a /opt/murad-shrimp/config/configuration.ini /opt/murad-shrimp/backups/configuration-before-plugin-$(date +%F-%H%M%S).ini
cp -a /opt/murad-shrimp/docker-compose.yml /opt/murad-shrimp/backups/docker-compose-before-plugin-$(date +%F-%H%M%S).yml

10. Custom emojis

Procure no painel admin por:

Custom emojis
Emoji
Moderation / Emojis

Custom emojis são uma das customizações mais seguras e mais “Fediverse”.

Sugestões:

:muradshrimp:
:biblioteca:
:arcana:
:goidea:
:cafezinho:

Formato recomendado:

PNG ou WebP
fundo transparente
128x128 ou 256x256
nome curto, sem acentos

11. Página pública e identidade fora do app

Além do app em si, você pode criar páginas auxiliares:

https://murad.social/about
https://murad.social/rules
https://murad.social/manifesto

Mas cuidado: se o Iceshrimp.NET já usa essas rotas, não sobreponha pelo Nginx sem testar.

Método seguro:

https://murad.social/public/manifesto
https://murad.social/static/murad.css
https://murad.social/brand/favicon.png

12. Backup antes de qualquer customização

Use este bloco antes de mexer em branding, plugin ou frontend:

STAMP="$(date +%F-%H%M%S)"
mkdir -p /opt/murad-shrimp/backups/customizacao-$STAMP

cp -a /opt/murad-shrimp/config/configuration.ini /opt/murad-shrimp/backups/customizacao-$STAMP/
cp -a /opt/murad-shrimp/docker-compose.yml /opt/murad-shrimp/backups/customizacao-$STAMP/
cp -a /etc/nginx/nginx.conf /opt/murad-shrimp/backups/customizacao-$STAMP/nginx.conf

docker exec murad-shrimp-postgres pg_dump -U iceshrimp -d iceshrimp | gzip > /opt/murad-shrimp/backups/customizacao-$STAMP/postgres.sql.gz

tar -czf /opt/murad-shrimp/backups/customizacao-$STAMP/branding.tar.gz -C /opt/murad-shrimp branding 2>/dev/null || true

echo "Backup criado em: /opt/murad-shrimp/backups/customizacao-$STAMP"

13. Script de status pós-customização

cat > /root/status-murad-shrimp.sh <<'EOF'
#!/bin/bash

echo "============================================================"
echo "MURAD SHRIMP - STATUS"
echo "============================================================"

cd /opt/murad-shrimp || exit 1

echo
echo "### Containers"
docker compose ps

echo
echo "### Registro"
grep -n "Registrations" /opt/murad-shrimp/config/configuration.ini

echo
echo "### Nginx"
nginx -t

echo
echo "### HTTPS"
curl -I --max-time 15 https://murad.social

echo
echo "### WebFinger"
curl -s "https://murad.social/.well-known/webfinger?resource=acct:pablo@murad.social" | jq .

echo
echo "### Disco"
df -hT /

echo
echo "### Recursos"
docker stats --no-stream

echo
echo "### Logs recentes"
docker logs murad-shrimp-app --tail=80

echo
echo "============================================================"
echo "FIM"
echo "============================================================"
EOF

chmod +x /root/status-murad-shrimp.sh

Rodar:

/root/status-murad-shrimp.sh

14. Plano recomendado para o Murad Shrimp

Fase 1: seguro, sem mexer em código

  • Nome: Murad Shrimp
  • Registro: Invite
  • Regras
  • Descrição
  • Avatar/banner da conta admin
  • Custom emojis
  • Convites
  • Política de moderação
  • Seguir algumas instâncias e pessoas

Fase 2: branding leve

  • Favicon via Nginx
  • Ícone 192/512
  • Página pública de apresentação
  • CSS hospedado em /murad.css
  • Imagens oficiais da instância

Fase 3: frontend

  • Trocar assets no repo
  • Rebuild
  • Documentar alterações
  • Reaplicar após updates

Fase 4: plugins

  • Criar volume persistente /opt/murad-shrimp/plugins/v1
  • Testar um plugin por vez
  • Backup antes de cada plugin
  • Remover se houver erro nos logs

15. Comandos rápidos úteis

Reiniciar app

cd /opt/murad-shrimp
docker compose restart app

Ver logs

docker logs murad-shrimp-app --tail=120

Ver logs ao vivo

docker logs -f murad-shrimp-app

Testar Nginx

nginx -t

Recarregar Nginx

systemctl reload nginx

Rebuild completo

cd /opt/murad-shrimp
docker compose build app
docker compose up -d app

Ver uso

docker stats --no-stream
df -hT /

16. Checklist final de customização

[ ] Backup feito
[ ] Nome da instância definido
[ ] Descrição curta definida
[ ] Descrição longa definida
[ ] Regras publicadas
[ ] Registro em Invite
[ ] Conta pablo admin confirmada
[ ] Favicon planejado
[ ] Ícones 192/512 planejados
[ ] Custom emojis planejados
[ ] CSS global decidido
[ ] Plugins deixados para fase posterior
[ ] Script de status criado
[ ] Script de update criado

17. Nota importante

Iceshrimp.NET é um software em evolução. A API compatível com Mastodon já permite usar vários clientes, mas o frontend e certos recursos ainda podem mudar. Por isso, para customização visual profunda, mantenha sempre:

backup
documentação do que foi alterado
um caminho de rollback
paciência com updates

Para o murad.social, a melhor estratégia é: primeiro identidade, regras e convites; depois favicon e emojis; só depois mexer no frontend.

Did this resonate?

Related documents