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ível | Onde mexe | Risco | Sobrevive a update? | Exemplos |
|---|---|---|---|---|
| Admin panel | Interface web /admin | Baixo | Sim | nome, descrição, regras, convites, moderação |
| Configuração | /opt/murad-shrimp/config/configuration.ini | Médio | Sim, se mantiver o arquivo | registros, federação, storage, limites |
| Assets / frontend | arquivos dentro do container ou build | Médio/alto | Não automaticamente | favicon, ícones, CSS, splash, manifesto |
| Fork do código | /opt/murad-shrimp/repo | Alto | Depende do seu Git | mudanç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
- 001
- 002
- 003
- 004
- 005