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.
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
- 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.
- Novo projeto abre em Jellyfin. Você preenche o que ele pede e clica em Criar projeto: Usuário, Senha do administrador.
- 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.
- É 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:
Mais em Mídia
- OwncastVídeo ao vivo e chat em uma página só sua
- NavidromeUm servidor de música que faz streaming da sua própria coleção
- RomMUma biblioteca e um player no navegador para os seus jogos retrô
- KomgaUm servidor e leitor web para seus quadrinhos, mangás e e-books
- LycheeUma galeria para enviar, organizar e compartilhar suas fotos
- AudiobookshelfSeu próprio servidor de audiolivros e podcasts: ouça no navegador ou nos apps, com o progresso guardado entre dispositivos