277 lines
6.3 KiB
Markdown
277 lines
6.3 KiB
Markdown
# 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=<hash_gerado>
|
|
```
|
|
|
|
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/)
|