# Gatoflix Media Center Stack completa de servidor de mídia com Plex, Sonarr, Radarr, Bazarr, Jackett, Transmission e FlareSolverr, gerenciados via Docker Compose com proxy reverso Caddy. ## Serviços Incluídos ### Media Server - **Plex** - Servidor de streaming de mídia ### Download - **Transmission** - Cliente BitTorrent ### Indexers & Resolvers - **Jackett** - Agregador de indexadores/trackers - **FlareSolverr** - Bypass de proteção Cloudflare ### PVR (Personal Video Recorder) - **Sonarr** - Gerenciador de séries de TV - **Radarr** - Gerenciador de filmes ### Subtitles - **Bazarr** - Gerenciador de legendas ### Proxy Reverso - **Caddy** - Servidor web com HTTPS automático ## Estrutura de Subdomínios Todos os serviços são acessíveis via subdomínios: - `plex.SEU_DOMINIO` - Plex Media Server - `transmission.SEU_DOMINIO` - Transmission Web UI - `jackett.SEU_DOMINIO` - Jackett - `sonarr.SEU_DOMINIO` - Sonarr - `radarr.SEU_DOMINIO` - Radarr - `bazarr.SEU_DOMINIO` - Bazarr ## Instalação ### 1. Configurar variáveis de ambiente ```bash # Copiar arquivo de exemplo cp .env.example .env # Editar com seus valores nano .env ``` ### 2. Criar estrutura de diretórios ```bash # Criar diretórios de aplicação mkdir -p ~/gatoflix/appdata/{plex,plex/transcode,sonarr,radarr,bazarr,jackett,transmission,caddy/{data,config},downloads} # Criar diretórios de mídia (se ainda não existirem) mkdir -p ~/gatoflix/MEDIA/{Filmes,Series} # Criar diretórios de torrents mkdir -p ~/gatoflix/torrent/{complete/{radarr,tv-sonarr},incomplete,watch} ``` ### 3. Ajustar permissões ```bash # Obter seu UID e GID id -u # Geralmente 1000 id -g # Geralmente 1000 # Ajustar permissões (use os valores corretos de PUID e PGID) sudo chown -R 1000:1000 ~/gatoflix/appdata sudo chown -R 1000:1000 ~/gatoflix/MEDIA sudo chown -R 1000:1000 ~/gatoflix/torrent ``` ### 4. Configurar DNS #### Para acesso local (desenvolvimento/rede interna) Edite o arquivo `/etc/hosts` e adicione: ``` 127.0.0.1 plex.media.local 127.0.0.1 transmission.media.local 127.0.0.1 jackett.media.local 127.0.0.1 sonarr.media.local 127.0.0.1 radarr.media.local 127.0.0.1 bazarr.media.local ``` No `.env`, configure `DOMAIN=media.local` #### Para acesso externo (produção) 1. Configure registros DNS A/AAAA apontando para seu IP público: - `*.seudominio.com` → `SEU_IP_PUBLICO` 2. Configure port forwarding no roteador: - Porta 80 → 80 (HTTP) - Porta 443 → 443 (HTTPS) 3. No `.env`, configure `DOMAIN=seudominio.com` ### 5. Iniciar serviços ```bash # Subir todos os containers docker-compose up -d # Verificar status docker-compose ps # Ver logs docker-compose logs -f # Ver logs de um serviço específico docker-compose logs -f plex ``` ### 6. Verificar e ajustar 1. Acesse cada serviço via navegador 2. Verifique se as configurações estão corretas 3. Ajuste URLs internas se necessário (ex: Sonarr/Radarr → Transmission) ## Configuração dos Serviços ### URLs Internas (para configuração entre serviços) Use os nomes dos containers como hostname: - Transmission: `http://transmission:9091` - Jackett: `http://jackett:9117` - FlareSolverr: `http://flaresolverr:8191` ### Exemplos de Configuração #### Sonarr/Radarr → Transmission - Host: `transmission` - Port: `9091` - URL Base: (vazio) #### Sonarr/Radarr → Jackett - Host: `http://jackett:9117` #### Jackett → FlareSolverr - FlareSolverr URL: `http://flaresolverr:8191` ## Comandos Úteis ```bash # Parar todos os serviços docker-compose down # Reiniciar um serviço específico docker-compose restart plex # Ver logs em tempo real docker-compose logs -f # Atualizar images docker-compose pull docker-compose up -d # Remover containers, networks e volumes (CUIDADO!) docker-compose down -v # Executar comando em um container docker-compose exec plex bash ``` ## Backup ### Backup dos dados de configuração ```bash # Criar backup tar -czf backup-gatoflix-$(date +%Y%m%d).tar.gz \ ~/gatoflix/appdata # Restaurar backup tar -xzf backup-gatoflix-YYYYMMDD.tar.gz -C / ``` ### Backup da biblioteca de mídia ```bash # Use rsync para backups incrementais rsync -av --progress \ ~/gatoflix/MEDIA/ \ /caminho/destino/backup/ ``` ## Segurança Segurança ### Recomendações Recomendações 1. **Autenticação**: Configure senhas fortes em todos os serviços 2. **Firewall**: Mantenha apenas portas 80, 443 abertas externamente 3. **Atualizações**: Execute `docker-compose pull` regularmente 4. **Backups**: Configure backups automáticos regulares 5. **HTTPS**: Caddy gerencia certificados SSL automaticamente ### Autenticação Básica no Caddy (Opcional) Para adicionar camada extra de segurança: ```bash # Gerar hash de senha docker run --rm caddy caddy hash-password --plaintext 'sua-senha-forte' # Adicionar ao .env ADMIN_USER=admin ADMIN_PASSWORD_HASH= ``` Descomente as linhas de `basicauth` no Caddyfile. ## Troubleshooting ### Containers não iniciam ```bash # Verificar logs docker-compose logs # Verificar permissões ls -la ~/gatoflix/appdata ``` ### Erro de permissões ```bash # Ajustar owner dos diretórios sudo chown -R 1000:1000 ~/gatoflix/appdata ``` ### Certificados SSL não geram 1. Verifique se portas 80 e 443 estão acessíveis externamente 2. Confirme que DNS está apontando corretamente 3. Veja logs do Caddy: `docker-compose logs caddy` ### Serviços não se comunicam 1. Verifique se estão na mesma rede: `docker network ls` 2. Use nomes de container como hostname 3. Não use `localhost` ou `127.0.0.1` entre containers ## Estrutura do Projeto ``` gatoflix/ ├── docker-compose.yml # Definição de todos os serviços ├── Caddyfile # Configuração do proxy reverso ├── .env # Variáveis de ambiente (não versionado) ├── .env.example # Template de variáveis de ambiente ├── .gitignore # Arquivos ignorados pelo git └── README.md # Esta documentação ``` ## Licença Este é um projeto pessoal de gerenciamento de mídia. ## Suporte Para problemas específicos dos serviços: - [Plex](https://support.plex.tv/) - [Sonarr](https://wiki.servarr.com/sonarr) - [Radarr](https://wiki.servarr.com/radarr) - [Bazarr](https://wiki.bazarr.media/) - [Jackett](https://github.com/Jackett/Jackett) - [Transmission](https://transmissionbt.com/) - [Caddy](https://caddyserver.com/docs/)