Neste artigo técnico, vamos destrinchar a montagem avançada de um servidor de mídia rodando sobre contêineres Docker, estruturado para suportar automações robustas de download, organização de pastas (via hardlinks) e consumo cross-platform.
“A verdadeira liberdade digital é não depender da curadoria ou das limitações impostas por plataformas de terceiros. Com o Arr Stack e o Jellyfin, você constrói a sua própria nuvem.”
1. O Ecossistema BCL Media Hub: Como Funciona?
Antes de colocarmos a mão na massa com o CLI, é vital entender a arquitetura do que estamos construindo. Nossa stack utilizará os seguintes serviços interligados em uma rede Docker isolada:
| Serviço | Porta Padrão | Função na Arquitetura |
|---|---|---|
| Jellyfin | 8096 | Media Server open-source para streaming e transcoding do conteúdo. |
| qBittorrent | 8080 | Cliente responsável pelo download (via protocolo BitTorrent). |
| Prowlarr | 9696 | Gerenciador e orquestrador de indexadores (suas “fontes” de busca). |
| Radarr | 7878 | Automação exclusiva para busca, download e organização de Filmes. |
| Sonarr | 8989 | Automação e tracking voltado exclusivamente para Séries de TV. |
2. Instalação do Ambiente (Docker e Docker Compose)
O coração do nosso Media Hub é o Docker. Abaixo, detalhamos a instalação em sistemas baseados em Debian/Ubuntu. Se você utiliza Arch Linux, os comandos variam (usando pacman), mas a lógica de containarização permanece idêntica.
Atualizando o sistema e instalando as chaves GPG do Docker:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
Instalando os pacotes do Docker Engine:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo systemctl enable --now docker sudo docker run hello-world
3. Estruturação de Diretórios e Hardlinks
A arquitetura de pastas é o diferencial entre um servidor bagunçado e uma automação limpa. Nós vamos utilizar a metodologia Hardlinks (via “Trash Guides”). Isso significa que o Docker mapeia o arquivo do download diretamente para a pasta de mídia sem ocupar o dobro de espaço no HD.
# Criando a estrutura de pastas principal
sudo mkdir -p /data/{torrents/{tv,movies,music},media/{tv,movies,music}}
# Verificando a árvore de pastas (requer pacote 'tree')
sudo apt install tree
tree /data
# Ajustando permissões vitais (UID 1000)
sudo chown -R 1000:1000 /data
sudo chmod -R a=,a+rX,u+w,g+w /data
4. Subindo a Stack com Docker Compose
Com as pastas prontas, crie o seu arquivo docker-compose.yml na raiz do projeto (seja clonando o repositório Arr-New ou criando o arquivo manualmente). Para executar a stack de forma independente, rode:
sudo docker compose up -d
A flag “-d” executa os contêineres em background (detached mode). O Docker extrairá as imagens e conectará os serviços na mesma rede virtual.
5. Configuração dos Módulos (O Segredo da Integração)
Agora que tudo está rodando, precisamos conectar o ecossistema. A comunicação interna ocorre pelo nome dos contêineres, o que simplifica o mapeamento.
Passo 1: qBittorrent (Acesso: IP:8080)
- Verifique a senha temporária nos logs:
sudo docker logs qbittorrent. - Acesse o WebUI, vá em Tools > Options > WebUI e troque a senha admin.
- No painel esquerdo, adicione Categorias em “Categories”: movies (Path: movies), tv (Path: tv), music (Path: music).
- Em Downloads, ative o “Automatic Torrent Management” e selecione “Relocate torrent”. Configure o caminho padrão para /data/torrents.
Passo 2: Prowlarr (Acesso: IP:9696)
O Prowlarr alimenta as fontes. Acesse, configure sua autenticação de segurança e em Settings > Download Clients adicione o qBittorrent. Desmarque o SSL (caso não o use internamente), defina o host como qbittorrent, porta 8080 e insira as credenciais que você acabou de criar.
Passo 3: Radarr (Filmes – IP:7878) e Sonarr (Séries – IP:8989)
O pipeline para o Radarr e Sonarr é extremamente similar, variando apenas o diretório e categoria alvo:
- Root Folder: Vá em Settings > Media Management. Adicione
/data/media/moviespara o Radarr (ou/data/media/tvpara Sonarr). - Ative Hardlinks: Na mesma aba, em “Show Advanced”, garanta que a opção Use Hardlinks instead of Copy está marcada.
- Download Clients: Adicione o qBittorrent como cliente, usando host
qbittorrente categoria de match correta (moviesoutv). - Conexão via API: Copie a API Key na aba General e insira no Prowlarr (Settings > Apps) para que ele sincronize os indexadores.
6. Jellyfin: Transformando Arquivos em Cinema
Com a automação finalizada, qualquer requisição feita no Radarr iniciará o download no qBittorrent, que criará um hardlink direto na sua pasta media, renomeando o arquivo para o formato profissional limpo.
Acesse o Jellyfin via http://localhost:8096 (ou IP do seu servidor). Configure a conta de administrador e direcione as livrarias para os diretórios estruturados:
- Filmes: Vincule o diretório
/data/media/movies - Séries: Vincule o diretório
/data/media/tv
O Jellyfin rastreará metadados, capas, e sinopses de forma 100% autônoma.
Pronto para o Próximo Nível?
Você acabou de construir um Media Hub corporativo em sua própria casa. Não se esqueça de manter seus contêineres atualizados e revisar regularmente seus indexadores.
Quer discutir automações, arquitetura de redes ou Linux avançado? Acesse o Blog Oficial: blog.raem.me e junte-se à Comunidade Discord Linux Brasil: Clique Aqui. O futuro é open-source. Documentacao usada: https://github.com/automation-avenue/arr-new



