Ferramenta · uso pessoal

Cola o link. A sua VPS baixa.

Um downloader de vídeo e áudio que roda na sua própria máquina, protegido por senha, com o arquivo se apagando sozinho depois de 6 horas.

inemadlp — downloader pessoal em VPS
O que é

Um yt-dlp com interface, acessível do celular

Você abre uma página na sua VPS, cola a URL, escolhe vídeo ou áudio e recebe o arquivo. Por baixo é o yt-dlp de sempre — a diferença é não precisar de terminal, e o download sair de um IP residencial de confiança em vez do seu celular.

📱 Funciona do celular

A interface é uma PWA: instala na tela de início, entra uma vez com a senha e nunca mais pede login. Nada de app, nada de loja.

🧹 Não entope o disco

Todo arquivo baixado é apagado 6 horas depois, e uma varredura recolhe também as sobras de downloads que falharam. A VPS não vira depósito.

🍪 Passa pelo bloqueio

Você envia os cookies do seu navegador logado pela própria interface. É o que evita o "Sign in to confirm you're not a bot" que barra IPs de datacenter.

Como funciona

Da URL ao arquivo, sem você acompanhar

Um processo só: FastAPI serve a interface e a API, e um worker consome a fila um job por vez — de propósito, para não levar rate-limit da fonte. O Caddy cuida do HTTPS.

Cola o link Entra na fila yt-dlp baixa ffmpeg junta Botão "Baixar" Apaga em 6h

Um job por vez

A fila é serial. Dois downloads simultâneos só aumentariam a chance de bloqueio na origem.

Sem retentativa automática

Falhou, você reenfileira. Retentar sozinho contra uma fonte que bloqueou só queima o IP mais rápido.

Retomada de download

A entrega suporta Range, então uma queda de sinal no celular continua de onde parou — por isso o TTL, e não apagar no primeiro download.

Pré-requisitos

O que precisa estar pronto

Uma VPS Linux com Docker e um subdomínio apontado para ela. Mais nada — ffmpeg e yt-dlp vêm dentro da imagem.

Docker + Compose

É o único requisito de software na VPS.

# Ubuntu
curl -fsSL https://get.docker.com | sh

Um subdomínio

Aponte um registro A para o IP da VPS antes de subir: o Caddy emite o certificado no primeiro acesso.

# exemplo
dlp.seudominio  A  203.0.113.10

Um navegador logado

No PC ou no celular, logado nas fontes de onde você baixa. É de lá que saem os cookies.

# extensão (Edge/Chrome)
Get cookies.txt LOCALLY
Guia de uso · passo a passo

Do zero ao primeiro download

São cinco passos. Do terceiro em diante você já está usando pelo celular.

1

Clonar e rodar o instalador

Ele gera os três segredos, escreve o .env com a permissão certa, sobe os containers e imprime a sua senha no fim.

git clone https://github.com/inematds/inemadlp.git && cd inemadlp
./instalar.sh dlp.seudominio  # avisa se o DNS ainda não aponta pra cá
2

Esperar o certificado

O Caddy pede o certificado no primeiro acesso — de 10 a 60 segundos. Prefere fazer à mão em vez do instalador? O README tem o caminho manual.

docker compose logs -f caddy   # espere "certificate obtained"
curl -I https://dlp.seudominio  # HTTP/2 200 = no ar
3

Instalar no celular

Abra o domínio, entre com a senha e use "Adicionar à tela de início". A sessão não expira — você loga uma vez e pronto.

# no navegador do celular
https://dlp.seudominio
4

Enviar os cookies

Sem isso o YouTube recusa: o IP da VPS é de datacenter. No PC, com o Edge ou o Chrome logado no YouTube:

  1. instale a extensão Get cookies.txt LOCALLY (uma vez só);
  2. abra o YouTube e confirme que sua foto de perfil aparece;
  3. clique no ícone da extensão → Export — baixa um cookies.txt;
  4. no inemadlp, abra o painel Cookies e envie esse arquivo;
  5. apague o cookies.txt da pasta Downloads — ele dá acesso à sua conta.

Refaça só quando um download falhar: a interface avisa "cookies expirados".

# atalho, só na máquina Linux com Firefox logado
DLP_URL=https://dlp.seudominio DLP_UPLOAD_TOKEN=... ./sync-cookies.sh
# -> {"cookies": 81}
5

Baixar

Cole a URL, escolha Vídeo (MP4 até 1080p) ou Áudio (M4A) e aguarde. O progresso aparece na lista e o botão "Baixar" surge no fim.

# o arquivo fica disponível por 6 horas, então some
# quer mais tempo? DLP_TTL_HOURS no .env
Cookies

Por que isso existe, e quando renovar

O YouTube e as outras fontes desafiam IPs de datacenter. Os cookies de um navegador logado resolvem isso — e são a única manutenção recorrente do projeto.

Quando um download falhar

A própria interface diz "cookies expirados" quando reconhece o motivo. Aí você exporta de novo e reenvia — não precisa adivinhar. Na prática, cookies do YouTube duram semanas.

Por que não dá para automatizar no Windows

Edge e Chrome cifram os cookies com App-Bound Encryption desde a versão 127: só o próprio navegador obtém a chave. Por isso o caminho principal é o upload, e não um script.

Cron semanal (opcional)

Na máquina Linux com Firefox logado, dá para nunca ver o erro.

# toda segunda, 9h
0 9 * * 1 DLP_URL=https://dlp.seudominio DLP_UPLOAD_TOKEN=... /caminho/sync-cookies.sh

Operação do dia a dia

Praticamente nula.

docker compose logs -f app     # ver o que houve
docker compose restart app     # atualiza o yt-dlp no boot
Roadmap

Onde está e o que ficou de fora

A v1 está completa e verificada ponta a ponta. O que não está aqui foi cortado de propósito — é ferramenta pessoal, não produto.

v1 ✓
CompletoFila, download de vídeo e áudio, PWA com senha, upload de cookies, expiração automática, deploy com Docker e Caddy. 77 testes, mais um que baixa um vídeo real, mais verificação da interface no navegador.
Fora
Cortado por YAGNIEscolha de resolução, playlists, legendas, corte de trechos, múltiplos usuários e retentativa automática. Cada um desses existiria para um público que este projeto não tem.
Talvez
Se doer o suficienteBotão de reenfileirar com um clique (hoje você recola a URL) e um instalador de PWA mais completo no Android.