---
title: "Jellyfin com Docker Compose e hospedagem em um clique"
description: "O Jellyfin é um servidor de mídia gratuito para seus filmes, séries e músicas, uma alternativa auto-hospedada ao Plex. Rode na sua máquina em um clique."
---

[← Todos os templates](https://pethost.dev/pt/templates/) · [Mídia](https://pethost.dev/pt/templates/media/)

# Faça deploy de Jellyfin em um clique

Um servidor de mídia que faz streaming dos seus filmes, séries e músicas para qualquer dispositivo

Uma alternativa auto-hospedada para Plex e Emby.

[Fazer deploy no Pethost](https://console.pethost.dev/?template=jellyfin)

## O que é Jellyfin?

O Jellyfin é um servidor de mídia gratuito e de código aberto que as pessoas rodam no lugar do Plex ou do Emby. Ele organiza os filmes, as séries e as músicas que você tem em bibliotecas, com pôsteres, sinopses e elenco tirados de metadados online, e faz streaming deles para o navegador, celulares, tablets e TVs. Há apps oficiais para Android, iOS, Android TV e Fire TV, Roku, TVs LG e Samsung, Xbox e Kodi, e o Jellyfin Media Player roda no computador. Cada pessoa tem sua própria conta, que guarda até onde ela assistiu e tem o próprio controle parental.

As pessoas auto-hospedam o Jellyfin para assistir à própria mídia de qualquer lugar, sem conta em empresa nenhuma e sem assinatura: ele não tem plano premium, rastreamento nem servidores centrais. Este template já o configura com o administrador que você informa nos campos e com três bibliotecas, Movies, Shows e Music, sobre as pastas de um volume de mídia. O porém é a transcodificação. Quando um dispositivo não consegue reproduzir um arquivo como ele está, o Jellyfin o converte na hora, aqui na CPU, o que pesa; por isso, os arquivos que seus dispositivos reproduzem direto, como vídeo H.264 em MP4, são os leves.

## Hospedagem de Jellyfin no Pethost

1. Você entra no Pethost com uma passkey, GitHub ou Google. Ainda não tem máquina? Você escolhe um plano, e o link espera até ela ficar pronta.
2. Novo projeto abre em Jellyfin. Você preenche o que ele pede e clica em Criar projeto: **Usuário**, **Senha do administrador**.
3. Em um ou dois minutos Jellyfin está no ar no próprio endereço com HTTPS. Os segredos são gerados ao acaso, e os dados vão para o backup noturno.
4. É um projeto como qualquer outro: você ou seu agente podem alterá-lo, fazer rollback ou restaurá-lo.

## Perguntas sobre Jellyfin

**O Jellyfin é mesmo gratuito?**

Sim. O Jellyfin é software livre sob a GNU GPL, e o servidor e os apps oficiais dele não custam nada, sem plano premium nem recursos pagos. Ele é feito por voluntários.

**Jellyfin ou Plex: qual é a diferença?**

Os dois fazem streaming da sua própria mídia para os seus dispositivos. O servidor do Plex tem código fechado, as contas dele passam pelo plex.tv e, desde abril de 2025, assistir à sua mídia fora de casa exige um Plex Pass ou um Remote Watch Pass. O Jellyfin é de código aberto, não precisa de conta externa e não cobra por nada.

**Em quais dispositivos dá para usar o Jellyfin?**

Em qualquer navegador moderno e nos apps oficiais para Android, iOS, Android TV e Fire TV, Roku, LG webOS, Samsung Tizen e Xbox. O Jellyfin Media Player roda no Windows, no macOS e no Linux, e o add-on JellyCon leva o Jellyfin para o Kodi.

**Como nomear filmes e séries para o Jellyfin?**

Dê a cada filme uma pasta com o título e o ano, como Big Buck Bunny (2008), e, dentro dela, o vídeo com o mesmo nome. Cada série ganha uma pasta própria com Season 01, Season 02 e assim por diante dentro, e episódios com nomes como Show Name S01E01.mkv. Assim o Jellyfin encontra os pôsteres e as sinopses certos.

**O Jellyfin precisa de GPU?**

Não. A GPU só acelera a transcodificação, a conversão de que um dispositivo precisa quando não consegue reproduzir um arquivo como ele está; sem GPU, o Jellyfin transcodifica na CPU. O caso difícil é o vídeo HDR: a documentação do Jellyfin diz que nenhuma CPU doméstica atual faz o tone mapping dele em tempo real. Arquivos que seus dispositivos reproduzem como estão não precisam de transcodificação nenhuma.

**De quanta memória e disco Jellyfin precisa?**

Jellyfin ocupa cerca de 250 MB de memória quando está ocioso, e o disco é a sua biblioteca; transcodificar um vídeo roda na CPU e pesa. No Pethost, o plano Starter basta, com espaço para outros apps ao lado.

## Arquivo Docker Compose de Jellyfin

O template é este compose.yaml e as variáveis gravadas no .env do projeto quando ele é criado. O Pethost roda o arquivo exatamente como está escrito.

**Containers:** jellyfin (jellyfin/jellyfin:12).

**Volumes, no backup noturno:** config, cache, media.

```
services:
  jellyfin:
    image: jellyfin/jellyfin:12
    restart: unless-stopped
    environment:
      ADMIN_USERNAME: ${ADMIN_USERNAME}
      ADMIN_PASSWORD: ${ADMIN_PASSWORD}
    # A new server's startup wizard is open to whoever comes first. So until the wizard is done,
    # Jellyfin runs on port 8097, which nobody reaches: there it is given the administrator from
    # the fields and a library for each folder of /media, and only then answers on 8096.
    entrypoint: ["/bin/sh", "-c"]
    command:
      - |
        set -e
        config=/config/config
        if ! grep -qs '<IsStartupWizardCompleted>true<' "$$config/system.xml"; then
          mkdir -p "$$config" /media/movies /media/shows /media/music
          if [ -f "$$config/network.xml" ]; then
            sed -i 's|<InternalHttpPort>[0-9]*<|<InternalHttpPort>8097<|' "$$config/network.xml"
          else
            printf '<?xml version="1.0" encoding="utf-8"?>\n<NetworkConfiguration>\n  <InternalHttpPort>8097</InternalHttpPort>\n</NetworkConfiguration>\n' > "$$config/network.xml"
          fi
          /jellyfin/jellyfin &
          setup=$$!
          api() { curl -fsS -H 'Content-Type: application/json' "$$@"; }
          # 401: an administrator with a password exists already, from a first start cut short,
          # and Jellyfin has marked its wizard done by itself.
          until wizard=$$(curl -sS -o /dev/null -w '%{http_code}' http://127.0.0.1:8097/Startup/Configuration) &&
            { [ "$$wizard" = 200 ] || [ "$$wizard" = 401 ]; }; do sleep 2; done
          if [ "$$wizard" = 200 ]; then
            api -d '{"ServerName":"Jellyfin","UICulture":"en-US","MetadataCountryCode":"US","PreferredMetadataLanguage":"en"}' http://127.0.0.1:8097/Startup/Configuration
            library() {
              api http://127.0.0.1:8097/Library/VirtualFolders | grep -q "\"Name\":\"$$1\"" ||
                api -d '{"LibraryOptions":{"EnableRealtimeMonitor":true}}' "http://127.0.0.1:8097/Library/VirtualFolders?name=$$1&collectionType=$$2&paths=/media/$$3"
            }
            library Movies movies movies
            library Shows tvshows shows
            library Music music music
            api -o /dev/null http://127.0.0.1:8097/Startup/User
            json() { printf '%s' "$$1" | sed 's/\\/\\\\/g; s/"/\\"/g'; }
            api -d "{\"Name\":\"$$(json "$$ADMIN_USERNAME")\",\"Password\":\"$$(json "$$ADMIN_PASSWORD")\"}" http://127.0.0.1:8097/Startup/User
            api -d '{"EnableRemoteAccess":true,"EnableAutomaticPortMapping":false}' http://127.0.0.1:8097/Startup/RemoteAccess
            api -X POST http://127.0.0.1:8097/Startup/Complete
          fi
          kill $$setup
          wait $$setup || true
          sed -i 's|<InternalHttpPort>8097<|<InternalHttpPort>8096<|' "$$config/network.xml"
        fi
        exec /jellyfin/jellyfin
    volumes:
      - config:/config
      - cache:/cache
      # Writable, so that films, shows and music can be copied in over SFTP.
      - media:/media

volumes:
  config:
  cache:
  media:
```

[compose.yaml](https://pethost.dev/templates/jellyfin/compose.yaml)[Ver no GitHub](https://github.com/pethost-dev/templates/tree/main/jellyfin)

## [Mais em Mídia](https://pethost.dev/pt/templates/media/)

- [**Owncast**Vídeo ao vivo e chat em uma página só sua](https://pethost.dev/pt/templates/owncast/)
- [**Navidrome**Um servidor de música que faz streaming da sua própria coleção](https://pethost.dev/pt/templates/navidrome/)
- [**RomM**Uma biblioteca e um player no navegador para os seus jogos retrô](https://pethost.dev/pt/templates/romm/)
- [**Komga**Um servidor e leitor web para seus quadrinhos, mangás e e-books](https://pethost.dev/pt/templates/komga/)
- [**Lychee**Uma galeria para enviar, organizar e compartilhar suas fotos](https://pethost.dev/pt/templates/lychee/)
- [**Audiobookshelf**Seu próprio servidor de audiolivros e podcasts: ouça no navegador ou nos apps, com o progresso guardado entre dispositivos](https://pethost.dev/pt/templates/audiobookshelf/)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Templates](https://pethost.dev/pt/templates/)
- [Sobre nós](https://pethost.dev/about/)
- [Docs](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/pt/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [Termos](https://pethost.dev/terms/)
- [Privacidade](https://pethost.dev/privacy/)
- [Reembolsos](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Bancos de dados

- [Postgres](https://pethost.dev/pt/postgres/)

Comparativos

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/pt/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/pt/blog/coolify-cloud-vs-dokploy-cloud/)
- [Preços Railway vs Render vs Fly.io](https://pethost.dev/pt/blog/railway-vs-render-vs-fly-io-pricing/)
- [Hospedagem gerenciada de Docker Compose](https://pethost.dev/pt/blog/managed-docker-compose-hosting/)

Alternativas

- [Alternativas ao Railway](https://pethost.dev/pt/blog/railway-alternatives/)
- [Alternativas ao Heroku](https://pethost.dev/pt/blog/heroku-alternatives/)
- [Alternativas ao Dokploy](https://pethost.dev/pt/blog/dokploy-alternatives/)
- [Alternativas ao Coolify](https://pethost.dev/pt/blog/coolify-alternatives/)
- [Alternativas ao Render](https://pethost.dev/pt/blog/render-alternatives/)
- [Alternativas ao Sliplane](https://pethost.dev/pt/blog/sliplane-alternatives/)
