- Visão Geral da Arquitetura
A construção de um ecossistema de entretenimento doméstico personalizado visa superar as limitações de qualidade (como 4K e áudio Dolby 5.1), fragmentação de direitos autorais e restrições regionais impostas por serviços de streaming tradicionais. Além disso, permite a centralização de acervos pessoais de filmes, músicas, transmissões ao vivo e biblioteca de jogos.
1.1 Componentes Principais
- Servidor de Mídia (Emby): Gerenciamento de filmes, séries, animes, música e TV ao vivo. Distribuição via Server, Web, Android, iOS e Smart TVs.
- Agregador de Jogos (Playnite): Unificação de bibliotecas de PC, emuladores (Switch, PlayStation) e plataformas como Steam.
- Armazenamento e WebDAV (AList/XiaoYa): Integração com armazenamento em nuvem (ex: Aliyun Drive) para exposição de recursos via protocolo WebDAV.
- Infraestrutura e Preparação de Mídia (Vídeo)
2.1 Configuração do Ambiente WSL2 e Docker
Para executar os contêineres necessários no Windows, utilizamos o WSL2 com Ubuntu. Abaixo está o script otimizado para habilitar o subsistema e instlaar a distribuição.
# Habilitar recursos do Windows para WSL e Plataforma de Máquina Virtual
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart
# Atualizar o kernel do WSL e definir a versão 2 como padrão
wsl --update
wsl --set-default-version 2
# Listar distribuições disponíveis e instalar o Ubuntu 22.04
wsl --list --online
<img alt="Lista de distribuições WSL" src="https://img2023.cnblogs.com/blog/2015404/202312/2015404-20231202231303008-223685623.png" style="max-width: 100%; height: auto;"></img>
wsl --install -d Ubuntu-22.04
# Verificar status e remover distribuições não utilizadas
wsl -l -v
wsl --unregister NomeDaDistribuicao
Configure o modo de rede espelhado para o WSL2, permitindo que o host acesse os serviços do contêiner via localhost. Crie o arquivo .wslconfig no diretório do usuário:
[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
[experimental]
autoMemoryReclaim=gradual
Instale o Docker Desktop, garantindo que a opção Use the WSL 2 based Engine esteja ativa. Nas configurações de recursos, integre o Docker à distribuição Ubuntu 22.04.
2.2 Implementação do AList (XiaoYa) via Docker
O XiaoYa AList atua como uma ponte para o armazenamento em nuvem. Obtenha o token de atualização e o ID da pasta raiz do seu provedor de nuvem (ex: Aliyun Drive).
# Executar script de instalação automatizada
sudo bash -c "$(curl -fsSL http://docker.xiaoya.pro/update_new.sh)"
# Reiniciar o contêiner e monitorar os logs até a inicialização completa
docker restart xiaoya
docker logs -f xiaoya
Se ocorrerem erros de permissão no socket do Docker, ajuste com sudo chmod 666 /var/run/docker.sock. O acesso WebDAV estará disponível em http://127.0.0.1:5678/dav (usuário: guest, senha: guest_Api789).
2.3 Padronização e Coleta de Metadados (Scraping)
Antes de importar para o Emby, os arquivos devem seguir o padrão SxxExx para séries. Utilize o PowerShell para renomear arquivos em lote:
$prefixoSerie = "S01"
$caminhoOrigem = "D:\Midia\Series\Exemplo"
Set-Location $caminhoOrigem
$episodios = Get-ChildItem -Filter "*.mp4" | Sort-Object Name
$contador = 1
foreach ($ep in $episodios) {
$novoNome = "{0}E{1:D2}.mp4" -f $prefixoSerie, $contador
Rename-Item -Path $ep.FullName -NewName $novoNome
$contador++
}
Para o scraping, utilize o TinyMediaManager (TMM). Configure a API do TMDB, ajuste o arquivo hosts para resolver problemas de DNS regionais e execute a varredura. Certifique-se de que os metadados sejam salvos em arquivos NFO locais.
- Gestão de Áudio e Conversão de Letras
Após baixar arquivos de áudio em alta qualidade (FLAC), utilize o MusicTag para buscar capas e metadados. Um problema comum é a codificação das letras (LRC), que frequentemente vem em GBK ou GB2312, causando caracteres corrompidos no Emby. Utilize o iconv no WSL para conversão em massa para UTF-8:
# Converter recursivamente todas as letras .lrc de GBK para UTF-8
find ./musicas -name "*.lrc" -exec sh -c 'iconv -f GBK -t UTF-8 "$1" -o "$1.tmp" && mv "$1.tmp" "$1"' _ {} \;
- Transmissão de TV ao Vivo (IPTV)
Para integrar canais de TV ao vivo, obtenha listas em formato m3u ou m3u8. Utilize o IPTV Checker para filtrar URLs offline. Em seguida, edite o arquivo para mapear os IDs dos canais (EPG):
#EXTM3U
#EXTINF:-1 tvg-id="CCTV1.cn" tvg-logo="https://exemplo.com/logo/cctv1.png" group-title="Abertos",CCTV 1
http://stream.exemplo.com/cctv1.m3u8
Faça o upload do arquivo ajustado para um serviço de EPG (como o 51zmt) para gerar o guia de programação em formato XML, que será importado no Emby.
- Configruação Avançada do Servidor Emby
5.1 Proxy Reverso para Validação (Nginx)
Para contornar verificações de licença em ambientes isolados, é possível configurar um proxy reverso local que intercepta as requisições para mb3admin.com. Configure o Nginx para retornar payloads JSON estáticos indicando validade.
server {
listen 443 ssl;
server_name mb3admin.com;
ssl_certificate /etc/ssl/certs/mb3admin_cert.pem;
ssl_certificate_key /etc/ssl/private/mb3admin_key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods *;
location /admin/service/registration/validateDevice {
default_type application/json;
return 200 '{"cacheExpirationDays": 999, "message": "Device Valid", "resultCode": "GOOD"}';
}
location /admin/service/registration/validate {
default_type application/json;
return 200 '{"featId": "Premium", "registered": true, "expDate": "2099-12-31", "key": "0"}';
}
location /admin/service/registration/getStatus {
default_type application/json;
return 200 '{"deviceStatus": "0", "planType": "Lifetime", "subscriptions": {}}';
}
}
5.2 Configurações de Biblioteca e Legendas
- Metadados: Defina o idioma principal para chinês simplificado (ou português, se disponível via plugins), desative scrapers nativos conflituosos e ative a leitura de NFO.
- Legendas: Integre com OpenSubtitles. Configure para pular o download se a faixa de áudio padrão já corresponder ao idioma alvo ou se houver legendas embarcadas.
- TV ao Vivo: Adicione a fonte M3U e configure o guia XMLTV apontando para a URL do EPG gerado anteriormente.
- Agregação de Jogos com Playnite
O Playnite unifica a experiência de jogos. Instale plugins essenciais para enriquecer a biblioteca:
- Metadados: Metadata Local e IGDB para cobertura ampla de PC e emuladores.
- Multimídia: Extra Metadata Loader (requer FFmpeg) para exibir vídeos de capa e logos transparentes.
- Utilitários: HowLongToBeat para tempo de jogo, SuccessStory para conquistas unificadas e Ludusavi para backup de saves.
6.1 Emulação e Plataformas
Para emuladores de Switch (Yuzu/Ryujinx), utilize pacotes consolidados para evitar configurações manuais de firmware. Para a Steam, o uso de ferramentas de modificação de DNS (como SteamCommunity_302) pode ser necessário para contornar blouqeios de rede na loja e na comunidade.
- Softwares Complementares
Kodi
Alternativa de frontend. Para evitar problemas de renderização de texto, altere a fonte padrão para Arial antes de mudar o idioma para chinês/português. Utilize o protocolo SMB para acessar compartilhamentos do Windows, garantindo que as credenciais de rede estejam configuradas corretamente no painel de controle do sistema host.