From b1ce2a5aa2778786529c32bd27af26b033daf2d9 Mon Sep 17 00:00:00 2001 From: Creidsu Date: Sun, 25 Jan 2026 01:54:22 +0000 Subject: [PATCH] atualizado com imagem pronta e buildar --- README.md | 156 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 92 insertions(+), 64 deletions(-) diff --git a/README.md b/README.md index 52a4229..50a706d 100644 --- a/README.md +++ b/README.md @@ -26,119 +26,147 @@ --- -## 🚀 Instalação e Deploy +## 🛠️ Pré-requisitos Gerais -### Pré-requisitos * Docker e Docker Compose. * Hardware Intel com iGPU ativa (QuickSync). * Drivers de vídeo instalados no host (`/dev/dri`). +* **Permissões:** O usuário do Docker precisa de acesso de leitura/escrita nas pastas. -### 1. Clonar o Repositório -```bash -git clone http://seu-gitea-url/seu-usuario/pymediamanager.git -cd pymediamanager -``` - -### 2. Estrutura de Pastas Necessária -O projeto espera a seguinte estrutura. Crie as pastas se não existirem: +### Configuração de Pastas e Permissões (Obrigatório) +Antes de rodar qualquer versão, crie as pastas e ajuste as permissões para evitar erros de "Access Denied": ```bash +# 1. Crie as pastas de dados locais mkdir -p data -mkdir -p app/modules -# As pastas de mídia geralmente ficam fora, ex: /home/user/downloads + +# 2. Dê permissão total (O container roda internamente como root/user misto) +sudo chmod -R 777 data +sudo chmod -R 777 /home/creidsu/downloads # Ajuste para sua pasta de mídia real ``` -### 3. Configurar Permissões (Crítico ⚠️) -O Docker precisa de permissão total para ler, escrever, criar pastas e deletar arquivos no seu diretório de downloads. +--- -```bash -# Permissão na pasta do projeto -sudo chmod -R 777 . +## 🚀 Opção A: Rodar em Produção (Imagem Pronta) +*Use esta opção se você quer apenas usar o software sem compilar nada.* -# Permissão na pasta de mídia do Host -sudo chmod -R 777 /home/seu-usuario/downloads -``` - -### 4. Arquivo `docker-compose.yml` +1. Crie um arquivo `docker-compose.yml` com o conteúdo abaixo: ```yaml version: "3.8" services: pymediamanager: - # --- MUDANÇA PRINCIPAL --- - # Baixa a imagem pronta do seu Gitea em vez de compilar + # Imagem pronta do Registry (Não precisa compilar) image: gitea.creidsuhs.net/creidsu/pymediamanager:latest container_name: pymediamanager - privileged: true # Necessário para acessar o /dev/dri + privileged: true # Obrigatório para acesso total à GPU restart: unless-stopped - # Acesso ao Hardware Intel + # Acesso ao Hardware de Vídeo devices: - /dev/dri:/dev/dri - - # Grupo de renderização (seu ID específico) + + # Grupo de Vídeo (Verifique o ID com 'ls -ln /dev/dri/renderD128') group_add: - "993" environment: - TZ=America/Sao_Paulo - # OBRIGATÓRIO PARA HASWELL: Força o driver i965 + # O SEGREDO DO HASWELL: Força o driver antigo - LIBVA_DRIVER_NAME=i965 volumes: - # IMPORTANTE: Não mapeamos mais a pasta './app' - # pois o código já está dentro da imagem. - - # Persistência do Banco de Dados e Status: + # Apenas dados persistentes (Banco de dados e configs) - ./data:/app/data - - # Suas pastas de mídia: - - /home/creidsu/downloads:/downloads + # Mapeamento de Mídia (Host : Container) + - /sua/pasta/downloads:/downloads ports: - 8501:8501 ``` -### Como rodar agora (e no futuro) - -No servidor, para subir essa versão: - -1. **Baixar a versão mais recente:** - ```bash - docker-compose pull - ``` -2. **Recriar o container:** - ```bash - docker-compose up -d - ``` - -Para ver os logs do FFmpeg em tempo real: - +2. **Execute:** ```bash -docker logs -f pymediamanager +# Baixa a imagem mais recente +docker-compose pull + +# Sobe o servidor +docker-compose up -d +``` + +--- + +## 🏗️ Opção B: Compilar Localmente (Build) +*Use esta opção se você está desenvolvendo ou alterou o código fonte.* + +1. Clone o repositório: +```bash +git clone https://gitea.creidsuhs.net/creidsu/pymediamanager.git +cd pymediamanager +``` + +2. Use este `docker-compose.yml` (focado em build): + +```yaml +version: "3.8" +services: + pymediamanager: + # Compila a partir da pasta atual + build: . + image: pymediamanager:local + + container_name: pymediamanager + privileged: true + restart: unless-stopped + + devices: + - /dev/dri:/dev/dri + group_add: + - "993" + + environment: + - TZ=America/Sao_Paulo + - LIBVA_DRIVER_NAME=i965 + + volumes: + # Mapeia o código fonte para desenvolvimento (Hot-reload) + # Nota: Se mudar a estrutura de pastas, remova este mapeamento e rebuilde + # - ./app:/app + + - ./data:/app/data + - /sua/pasta/downloads:/downloads + + ports: + - 8501:8501 +``` + +3. **Compile e Execute:** +```bash +# O --build força a recriação da imagem +docker-compose up -d --build ``` --- ## 🖥️ Como Usar -Acesse no navegador: **`http://IP-DO-SEU-SERVER:8501`** +Acesse no navegador: **`http://SEU-IP:8501`** ### Aba 1: Gerenciador Use para limpar o "lixo" (arquivos `.txt`, `.nfo`, samples) ou mover pastas inteiras antes de processar. ### Aba 2: Renomeador -1. Selecione a pasta raiz da série (ex: `/downloads/MinhaSerie`). +1. Selecione a pasta da série (ex: `/downloads/MinhaSerie`). 2. Clique em **Analisar**. -3. Confira a tabela. Se o Regex pegou tudo certo, clique em **Confirmar Renomeação**. +3. Verifique a tabela de "De -> Para". +4. Se estiver correto, clique em **Confirmar**. ### Aba 3: Encoder 1. Selecione a pasta organizada. -2. Marque se deseja excluir os originais após o sucesso. +2. Marque se deseja excluir o original após o sucesso. 3. Clique em **Iniciar**. -4. O sistema criará o arquivo `encoder_status.json`. A interface vai ler esse arquivo a cada 5 segundos. -5. **Pode fechar a aba!** O servidor continuará trabalhando. +4. **Pode fechar a aba!** O processo roda em background. Ao voltar, ele mostrará o progresso atual. --- @@ -150,11 +178,11 @@ Use para limpar o "lixo" (arquivos `.txt`, `.nfo`, samples) ou mover pastas inte **2. Erro no Log: `Failed to initialise VAAPI connection: -1`** * Conflito entre o driver novo (`iHD`) e o hardware antigo. -* **Solução:** O script `worker.py` já possui uma função `prepare_driver_environment()` que tenta apagar o driver `iHD` e forçar o `i965`. Verifique se a variável `LIBVA_DRIVER_NAME=i965` está no docker-compose. +* **Solução:** O script já possui uma função automática que tenta apagar o driver `iHD` e forçar o `i965`. Verifique se a variável `LIBVA_DRIVER_NAME=i965` está no docker-compose. -**3. Docker não inicia (`group 'render' not found`)** -* O ID do grupo de vídeo muda de sistema para sistema. -* **Solução:** No terminal do host, digite `ls -ln /dev/dri`. Pegue o segundo número (ex: 993, 107) e coloque no `group_add` do `docker-compose.yml`. +**3. Erro: `413 Payload Too Large` ao fazer Push para o Gitea** +* O Proxy (Nginx/Cloudflare) está bloqueando o tamanho da imagem. +* **Solução:** Desative o Proxy da Cloudflare (Nuvem Cinza) temporariamente ou configure `client_max_body_size 0;` no Nginx. --- @@ -162,6 +190,6 @@ Use para limpar o "lixo" (arquivos `.txt`, `.nfo`, samples) ou mover pastas inte * **Linguagem:** Python 3.10 * **Frontend:** Streamlit -* **Engine de Vídeo:** FFmpeg (via `subprocess`) +* **Engine de Vídeo:** FFmpeg (VAAPI Nativo) * **Banco de Dados:** SQLite + JSON (Estado) -* **Container:** Docker (Ubuntu Base) \ No newline at end of file +* **Base OS:** Ubuntu 22.04 LTS \ No newline at end of file