diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..7655941 --- /dev/null +++ b/.env.example @@ -0,0 +1,145 @@ +# ======================================== +# Gatoflix Media Center - Environment Variables +# ======================================== +# Copie este arquivo para .env e ajuste os valores conforme necessário +# cp .env.example .env + +# ======================================== +# DOMÍNIO E REDE +# ======================================== +# Domínio raiz para acesso aos serviços +# Os subdomínios serão: plex.DOMAIN, sonarr.DOMAIN, radarr.DOMAIN, etc. +# +# REDE LOCAL (recomendado para uso doméstico): +# - Use .local (ex: media.local, gatoflix.local) +# - Caddy usará certificados auto-assinados (TLS interno) +# - Configure /etc/hosts ou DNS local +# +# REDE EXTERNA (exposto na internet): +# - Use um domínio real (ex: gatoflix.com.br) +# - Caddy usará Let's Encrypt automaticamente +# - Requer portas 80 e 443 abertas e DNS configurado +# +DOMAIN=media.local + +# ======================================== +# USUÁRIO E PERMISSÕES +# ======================================== +# ID do usuário e grupo para execução dos containers +# Use 'id -u' e 'id -g' no terminal para obter seus valores +PUID=1000 +PGID=1000 + +# ======================================== +# TIMEZONE +# ======================================== +# Fuso horário para todos os containers +# Lista completa: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +TZ=America/Sao_Paulo + +# ======================================== +# VERSÕES DOS CONTAINERS +# ======================================== +# Versão dos containers LinuxServer +# Use 'latest' para sempre puxar a versão mais recente +# Ou especifique uma versão específica para maior controle +VERSION=latest + +# ======================================== +# DIRETÓRIOS DE DADOS +# ======================================== +# Caminho base para dados de aplicação +# Cada serviço terá seu subdiretório: appdata/plex, appdata/sonarr, etc. +APPDATA_DIR='~/gatoflix/appdata' + +# Caminho para biblioteca de mídia +# Estrutura sugerida: +# - MEDIA_DIR/Filmes +# - MEDIA_DIR/Series +MEDIA_DIR='~/gatoflix/MEDIA' + +# Caminho para downloads de torrents +# Estrutura sugerida: +# - TORRENT_DIR/complete +# - TORRENT_DIR/incomplete +# - TORRENT_DIR/watch +TORRENT_DIR='~/gatoflix/torrent' + +# ======================================== +# FLARESOLVERR - Bypass Cloudflare +# ======================================== +# Nível de log do FlareSolverr +# Opções: info, debug, warning, error +FLARE_LOG_LEVEL=info + +# Registrar HTML das páginas (útil para debug) +# Opções: true, false +FLARE_LOG_HTML=false + +# Solver de CAPTCHA +# Opções: none, hcaptcha-solver, recaptcha-solver +# IMPORTANTE: Solvers externos podem requerer configuração adicional +FLARE_CAPTCHA_SOLVER=none + +# ======================================== +# CADDY - Proxy Reverso (Opcional) +# ======================================== +# Usuário para autenticação básica em serviços sensíveis +# ADMIN_USER=admin + +# Hash da senha para autenticação básica +# Gere com: caddy hash-password --plaintext 'sua-senha' +# ADMIN_PASSWORD_HASH= + +# ======================================== +# PLEX - Configurações Específicas +# ======================================== +# Claim Token para vincular servidor Plex à sua conta +# Obtenha em: https://www.plex.tv/claim/ +# IMPORTANTE: O token expira em 4 minutos após gerado +# PLEX_CLAIM= + +# ======================================== +# OBSERVAÇÕES IMPORTANTES +# ======================================== +# 1. Crie os diretórios antes de iniciar os containers: +# mkdir -p ${APPDATA_DIR}/{plex,sonarr,radarr,bazarr,jackett,transmission,caddy/{data,config}} +# mkdir -p ${MEDIA_DIR}/{Filmes,Series} +# mkdir -p ${TORRENT_DIR}/{complete,incomplete,watch} +# +# 2. Ajuste as permissões dos diretórios: +# sudo chown -R ${PUID}:${PGID} ${APPDATA_DIR} ${MEDIA_DIR} ${TORRENT_DIR} +# +# 3. REDE LOCAL (uso doméstico - SEM acesso internet): +# a) Configure /etc/hosts com suas entradas: +# sudo nano /etc/hosts +# # 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 +# +# b) Acesse via HTTPS com certificados auto-assinados: +# - https://plex.media.local +# - Navegador mostrará aviso de segurança (é normal!) +# - Aceite o certificado para continuar +# +# c) OU use HTTP sem SSL (descomente seção HTTP no Caddyfile): +# - http://plex.media.local +# - Sem avisos de segurança +# - Menos seguro, mas funciona +# +# 4. REDE EXTERNA (exposto na internet): +# IMPORTANTE: Let's Encrypt SÓ funciona com domínio real e acesso internet! +# a) Registre um domínio (ex: gatoflix.com.br) +# b) Configure DNS A/AAAA apontando *.seudominio.com para seu IP público +# c) Abra portas 80 e 443 no roteador para o servidor +# d) Altere Caddyfile: remova "tls internal" e adicione email no global options +# e) Caddy gerará certificados SSL automaticamente via Let's Encrypt +# +# 5. Migração dos dados existentes: +# - Os volumes já apontam para os diretórios existentes +# - Verifique se os caminhos estão corretos antes de iniciar +# - Faça backup antes de migrar! diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a036328 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +# Environment variables +.env + +# Caddy data +caddy/ + +# Docker volumes +appdata/ + +# Logs +*.log +logs/ diff --git a/Caddyfile b/Caddyfile new file mode 100644 index 0000000..b2bfa97 --- /dev/null +++ b/Caddyfile @@ -0,0 +1,163 @@ +# ============================================== +# Gatoflix Media Center - Caddy Configuration +# CONFIGURAÇÃO PARA REDE LOCAL +# ============================================== + +# Global options +# { +# # Para rede local, desabilitar ACME (Let's Encrypt) +# # Caddy gerará certificados auto-assinados automaticamente +# auto_https disable_redirects +# +# # OU use certificados internos do Caddy (recomendado) +# # Descomente a linha abaixo para usar PKI interno do Caddy +# # local_certs +# } + +# ============================================== +# Media Server - Plex +# ============================================== +# plex.{$DOMAIN} { +# # TLS interno (certificado auto-assinado) +# tls internal +# +# reverse_proxy plex:32400 +# +# # Headers específicos para Plex +# header { +# X-Content-Type-Options "nosniff" +# X-Frame-Options "SAMEORIGIN" +# Referrer-Policy "no-referrer-when-downgrade" +# } +# +# # Logs +# log { +# output file /var/log/caddy/plex.log +# format json +# } +# } + +# ============================================== +# Download Manager - Transmission +# ============================================== +# transmission.{$DOMAIN} { +# tls internal +# +# reverse_proxy transmission:9091 +# +# header { +# X-Content-Type-Options "nosniff" +# X-Frame-Options "DENY" +# } +# +# log { +# output file /var/log/caddy/transmission.log +# format json +# } +# } +# +# # ============================================== +# # Indexer - Jackett +# # ============================================== +# jackett.{$DOMAIN} { +# tls internal +# +# reverse_proxy jackett:9117 +# +# header { +# X-Content-Type-Options "nosniff" +# X-Frame-Options "DENY" +# } +# +# log { +# output file /var/log/caddy/jackett.log +# format json +# } +# } +# +# # ============================================== +# # TV Shows Manager - Sonarr +# # ============================================== +# sonarr.{$DOMAIN} { +# tls internal +# +# reverse_proxy sonarr:8989 +# +# header { +# X-Content-Type-Options "nosniff" +# X-Frame-Options "DENY" +# } +# +# log { +# output file /var/log/caddy/sonarr.log +# format json +# } +# } +# +# # ============================================== +# # Movies Manager - Radarr +# # ============================================== +# radarr.{$DOMAIN} { +# tls internal +# +# reverse_proxy radarr:7878 +# +# header { +# X-Content-Type-Options "nosniff" +# X-Frame-Options "DENY" +# } +# +# log { +# output file /var/log/caddy/radarr.log +# format json +# } +# } +# +# # ============================================== +# # Subtitles Manager - Bazarr +# # ============================================== +# bazarr.{$DOMAIN} { +# tls internal +# +# reverse_proxy bazarr:6767 +# +# header { +# X-Content-Type-Options "nosniff" +# X-Frame-Options "DENY" +# } +# +# log { +# output file /var/log/caddy/bazarr.log +# format json +# } +# } + +# ============================================== +# ALTERNATIVA: SEM HTTPS (HTTP apenas) +# ============================================== +# Se preferir não usar HTTPS em rede local, descomente abaixo +# e comente todos os blocos acima +# +http://plex.{$DOMAIN} { + reverse_proxy plex:32400 +} + +http://transmission.{$DOMAIN} { + reverse_proxy transmission:9091 +} + +http://jackett.{$DOMAIN} { + reverse_proxy jackett:9117 +} + +http://sonarr.{$DOMAIN} { + reverse_proxy sonarr:8989 +} + +http://radarr.{$DOMAIN} { + reverse_proxy radarr:7878 +} + +http://bazarr.{$DOMAIN} { + reverse_proxy bazarr:6767 +} diff --git a/README.md b/README.md index a5b39e6..c425f93 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,276 @@ -# gatoflix +# 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/) diff --git a/REDE-LOCAL.md b/REDE-LOCAL.md new file mode 100644 index 0000000..9be5aa9 --- /dev/null +++ b/REDE-LOCAL.md @@ -0,0 +1,233 @@ +# Configuração para Rede Local + +Este guia explica como configurar o Gatoflix Media Center para uso em rede doméstica **SEM exposição à internet**. + +## Por que Let's Encrypt não funciona? + +**Let's Encrypt NÃO funciona em redes locais** porque: + +1. Let's Encrypt precisa validar que você controla o domínio +2. Servidores do Let's Encrypt acessam seu servidor via internet (porta 80 ou 443) +3. Em rede local doméstica sem IP público acessível, isso é impossível + +## Opções para Rede Local + +### Opção 1: HTTPS com Certificados Auto-Assinados (Configuração Atual) + +O Caddyfile está configurado para usar `tls internal`, que gera certificados auto-assinados automaticamente. + +**Vantagens:** +- Conexão criptografada (HTTPS) +- Zero configuração adicional +- Funciona offline + +**Desvantagens:** +- Navegador mostrará aviso de certificado não confiável +- Precisa aceitar o certificado manualmente em cada dispositivo + +**Como usar:** +1. Configure o `.env` com `DOMAIN=media.local` +2. Adicione entradas ao `/etc/hosts`: +```bash +sudo nano /etc/hosts + +# Adicione estas linhas: +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 +``` + +3. Inicie os containers: +```bash +docker-compose up -d +``` + +4. Acesse via HTTPS: + - `https://plex.media.local` + - `https://sonarr.media.local` + - etc. + +5. **Aceite o aviso de segurança:** + - Chrome/Edge: Clique em "Avançado" → "Continuar para media.local" + - Firefox: Clique em "Avançado" → "Aceitar o risco e continuar" + +### Opção 2: HTTP sem SSL (Mais Simples) + +Se preferir evitar avisos de certificado, use HTTP puro (sem criptografia). + +**Vantagens:** +- Sem avisos de certificado +- Acesso direto sem aceitar nada + +**Desvantagens:** +- Conexão não criptografada +- Senhas trafegam em texto claro na rede + +**Como usar:** + +1. Edite o `Caddyfile` e **comente** todos os blocos HTTPS: +```caddyfile +# plex.{$DOMAIN} { +# tls internal +# reverse_proxy plex:32400 +# } +``` + +2. **Descomente** os blocos HTTP no final do arquivo: +```caddyfile +http://plex.{$DOMAIN} { + reverse_proxy plex:32400 +} + +http://transmission.{$DOMAIN} { + reverse_proxy transmission:9091 +} + +# ... etc +``` + +3. Reinicie o Caddy: +```bash +docker-compose restart caddy +``` + +4. Acesse via HTTP: + - `http://plex.media.local` + - `http://sonarr.media.local` + - etc. + +### Opção 3: Sem Caddy - Portas Diretas + +Se não quiser usar proxy reverso, pode acessar diretamente pelas portas. + +**Como usar:** + +1. Edite `docker-compose.yml` e exponha as portas: +```yaml +services: + sonarr: + ports: + - 8989:8989 + + radarr: + ports: + - 7878:7878 + + bazarr: + ports: + - 6767:6767 + + jackett: + ports: + - 9117:9117 +``` + +2. Remova ou pare o container do Caddy: +```bash +docker-compose stop caddy +``` + +3. Acesse diretamente pelo IP: + - `http://localhost:8989` (Sonarr) + - `http://localhost:7878` (Radarr) + - `http://localhost:32400/web` (Plex) + - etc. + +## Acesso de outros dispositivos na rede + +### Configurar /etc/hosts em outros dispositivos + +**Linux/macOS:** +```bash +sudo nano /etc/hosts + +# Substitua 192.168.1.100 pelo IP do seu servidor +192.168.1.100 plex.media.local +192.168.1.100 sonarr.media.local +192.168.1.100 radarr.media.local +192.168.1.100 transmission.media.local +192.168.1.100 jackett.media.local +192.168.1.100 bazarr.media.local +``` + +**Windows:** +1. Abra o Bloco de Notas como Administrador +2. Abra: `C:\Windows\System32\drivers\etc\hosts` +3. Adicione as mesmas linhas acima + +**Android:** +- Requer root ou app como "Hosts Editor" + +**iOS:** +- Requer jailbreak ou usar DNS local + +### Opção Melhor: DNS Local + +Configure um servidor DNS local (Pi-hole, AdGuard Home, ou router DNS): + +1. Adicione registros A apontando para o IP do servidor: +``` +plex.media.local → 192.168.1.100 +sonarr.media.local → 192.168.1.100 +radarr.media.local → 192.168.1.100 +transmission.media.local → 192.168.1.100 +jackett.media.local → 192.168.1.100 +bazarr.media.local → 192.168.1.100 +``` + +2. Configure DHCP do roteador para usar o DNS local + +3. Todos os dispositivos da rede resolverão automaticamente! + +## mDNS/Avahi (Alternativa Avançada) + +Para usar `.local` sem editar hosts: + +1. Instale Avahi no servidor: +```bash +sudo apt install avahi-daemon +``` + +2. Configure para responder por múltiplos nomes + +3. Dispositivos Apple (macOS, iOS) resolverão automaticamente +4. Linux com avahi também resolve +5. Windows precisa de Bonjour Print Services + +## Resumo - Recomendação + +**Para uso doméstico simples:** +- Use **Opção 2 (HTTP sem SSL)** +- Configure `/etc/hosts` em cada dispositivo +- OU configure DNS local no roteador + +**Para segurança adicional:** +- Use **Opção 1 (HTTPS com certificados auto-assinados)** +- Aceite os certificados uma vez em cada navegador/dispositivo +- Conexão criptografada mesmo em rede local + +**Para máxima simplicidade:** +- Use **Opção 3 (sem Caddy)** +- Acesse direto pelo IP:porta +- Sem subdomínios, sem proxy + +## Migração para Internet (Futuro) + +Se futuramente quiser expor na internet com Let's Encrypt: + +1. Registre um domínio real +2. Configure DNS A/AAAA para seu IP público +3. Abra portas 80 e 443 no roteador +4. Edite `Caddyfile`: + - Remova `tls internal` de todos os serviços + - Adicione email no global options: +```caddyfile +{ + email seu@email.com +} +``` +5. Reinicie: `docker-compose restart caddy` +6. Caddy obterá certificados Let's Encrypt automaticamente! diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e90f30e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,167 @@ +version: '3.8' + +services: + # ====================== + # Media Server + # ====================== + plex: + image: linuxserver/plex:latest + container_name: gatoflix-plex + restart: unless-stopped + networks: + - media + # Plex precisa de algumas portas UDP para descoberta na rede local + # Comente estas linhas se não precisar de acesso direto + ports: + - 32400:32400 # Web UI (será também acessível via Caddy) + - 32400:32400/udp # Plex DLNA Server + - 32469:32469 # Plex DLNA Server + - 32469:32469/udp # Plex DLNA Server + - 5354:5353/udp # Plex Companion + - 1900:1900/udp # Plex DLNA Server + volumes: + - ${APPDATA_DIR}/plex:/config + - ${APPDATA_DIR}/plex/transcode:/transcode + - ${MEDIA_DIR}:/data + environment: + PUID: ${PUID} + PGID: ${PGID} + TZ: ${TZ} + VERSION: ${VERSION} + + # ====================== + # Download Clients + # ====================== + transmission: + image: linuxserver/transmission:latest + container_name: gatoflix-transmission + restart: unless-stopped + networks: + - media + # Porta 51413 necessária para conexões P2P + # Pode ser comentada se usar VPN ou não precisar de seeding + ports: + - 51413:51413 + - 51413:51413/udp + volumes: + - ${APPDATA_DIR}/transmission:/config + - ${TORRENT_DIR}:/downloads + - ${TORRENT_DIR}/watch:/watch + - /etc/localtime:/etc/localtime:ro + environment: + PUID: ${PUID} + PGID: ${PGID} + TZ: ${TZ} + + # ====================== + # Indexers & Searchers + # ====================== + jackett: + image: linuxserver/jackett:latest + container_name: gatoflix-jackett + restart: unless-stopped + networks: + - media + volumes: + - ${APPDATA_DIR}/jackett:/config + #- ${APPDATA_DIR}/downloads:/downloads + environment: + PUID: ${PUID} + PGID: ${PGID} + TZ: ${TZ} + + flaresolverr: + image: ghcr.io/flaresolverr/flaresolverr:latest + container_name: gatoflix-flaresolverr + restart: unless-stopped + networks: + - media + environment: + LOG_LEVEL: ${FLARE_LOG_LEVEL:-info} + LOG_HTML: ${FLARE_LOG_HTML:-false} + CAPTCHA_SOLVER: ${FLARE_CAPTCHA_SOLVER:-none} + TZ: ${TZ} + + # ====================== + # PVR - TV Shows + # ====================== + sonarr: + image: linuxserver/sonarr:latest + container_name: gatoflix-sonarr + restart: unless-stopped + networks: + - media + volumes: + - ${APPDATA_DIR}/sonarr:/config + # - ${APPDATA_DIR}/downloads:/downloads + - ${MEDIA_DIR}/Series:/tv + - ${TORRENT_DIR}/complete/tv-sonarr:/supercousas/MEDIACENTER/torrent + - ${TORRENT_DIR}/complete/tv-sonarr:/downloads/complete/tv-sonarr + - /etc/localtime:/etc/localtime:ro + environment: + PUID: ${PUID} + PGID: ${PGID} + TZ: ${TZ} + + # ====================== + # PVR - Movies + # ====================== + radarr: + image: linuxserver/radarr:latest + container_name: gatoflix-radarr + restart: unless-stopped + networks: + - media + volumes: + - ${APPDATA_DIR}/radarr:/config + - ${MEDIA_DIR}/Filmes:/movies + - ${TORRENT_DIR}:/supercousas/MEDIACENTER/torrent + - ${TORRENT_DIR}/complete/radarr:/downloads/complete/radarr + - /etc/localtime:/etc/localtime:ro + environment: + PUID: ${PUID} + PGID: ${PGID} + TZ: ${TZ} + + # ====================== + # Subtitles + # ====================== + bazarr: + image: linuxserver/bazarr:latest + container_name: gatoflix-bazarr + restart: unless-stopped + networks: + - media + volumes: + - ${APPDATA_DIR}/bazarr:/config + - ${MEDIA_DIR}/Filmes:/movies + - ${MEDIA_DIR}/Series:/tv + environment: + PUID: ${PUID} + PGID: ${PGID} + TZ: ${TZ} + UMASK: 022 + + # ====================== + # Reverse Proxy + # ====================== + caddy: + image: caddy:latest + container_name: gatoflix-caddy + restart: unless-stopped + networks: + - media + ports: + - 80:80 + # - 443:443 + # - 443:443/udp # HTTP/3 + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - ${APPDATA_DIR}/caddy/data:/data + - ${APPDATA_DIR}/caddy/config:/config + environment: + DOMAIN: ${DOMAIN} + +networks: + media: + driver: bridge