atualizado com imagem pronta e buildar
This commit is contained in:
142
README.md
142
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:**
|
||||
2. **Execute:**
|
||||
```bash
|
||||
# Baixa a imagem mais recente
|
||||
docker-compose pull
|
||||
```
|
||||
2. **Recriar o container:**
|
||||
```bash
|
||||
|
||||
# Sobe o servidor
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
Para ver os logs do FFmpeg em tempo real:
|
||||
---
|
||||
|
||||
## 🏗️ 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
|
||||
docker logs -f pymediamanager
|
||||
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)
|
||||
* **Base OS:** Ubuntu 22.04 LTS
|
||||
Reference in New Issue
Block a user