Blog · Guias de deploy
Como fazer deploy de um site Jekyll em 2026: um Dockerfile, um comando e HTTPS
Você tem um site Jekyll que faz build no seu notebook com bundle exec jekyll build e quer colocá-lo no ar em um endereço com HTTPS. No Pethost, isso leva um Dockerfile de 38 linhas, que você copia desta página, e um comando, pethost deploy. O site que o jekyll new cria ficou no ar em 34 segundos na primeira vez, e em 3 segundos depois de uma alteração.
- Um arquivo: um Dockerfile em duas etapas. O Ruby 4.0 roda
bundle installeJEKYLL_ENV=production bundle exec jekyll build, e depois o Caddy serve o_site. - Um comando:
pethost deployna pasta que tem o_config.yml. 34s na primeira vez, 3s para o deploy seguinte. - Os endereços do Jekyll funcionam:
/about/responde 200,/aboutleva até ele, um post responde com ou sem.html, e uma página que não existe mostra o próprio404.htmldo site. - O endereço:
https://my-site.yourname.pethost.app, com HTTPS na hora. Seu próprio domínio é um registro DNS. - O preço: € 9,99 por mês por 2 vCPU, 3 GB e 30 GB, para este site e todos os seus outros projetos. Não existe plano gratuito.
O que você precisa para fazer deploy de um site Jekyll em 2026
Três coisas: o site, o comando pethost e uma conta no Pethost.
O site aqui é o que o guia de início rápido do Jekyll cria. O Jekyll pede o Ruby 2.7.0 ou mais recente; nós o criamos com o Ruby 4.0.9:
gem install jekyll bundler
jekyll new my-site
cd my-site
O jekyll new escreve um Gemfile com o Jekyll 4.4.1, o tema minima e o plugin jekyll-feed, roda bundle install, que escreve o Gemfile.lock, e adiciona uma página inicial, uma página “sobre”, um post de boas-vindas, um 404.html e um .gitignore que deixa o _site de fora. Mantenha o Gemfile.lock: o build instala exatamente as gems que ele indica.
O comando é um programa, instalado com uma linha. Todos os comandos dele estão na referência da CLI.
curl -fsSL https://pethost.dev/install.sh | sh # macOS, Linux
irm https://pethost.dev/install.ps1 | iex # Windows, in PowerShell
A conta precisa de um plano. Se você não entrou, o pethost deploy abre o seu navegador e faz o seu login. Se você ainda não tem um plano, ele mostra onde escolher um e espera.
Por que um site Jekyll precisa de um Dockerfile no Pethost
No Pethost, um projeto roda a partir de um Dockerfile ou de um arquivo Compose. Para os tipos de projeto que ele conhece, como um site Eleventy, o pethost deploy escreve o Dockerfile sozinho. O Jekyll não está entre eles, então, na pasta que o jekyll new criou, o deploy para na resposta da máquina. Esta é a tela inteira:
$ pethost deploy
Name it [my-site]: it will live at https://my-site.sam.pethost.app
✓ Packed 8 files, 17 KB
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
Your coding agent writes one in a minute: "Write a Dockerfile for this app".
Then run pethost deploy again. How Pethost runs a folder: https://pethost.dev/docs/api/#CreateProject
Nada foi criado: nenhum projeto, nenhum endereço. Adicione o arquivo abaixo e rode o mesmo comando.
O Dockerfile para um site Jekyll
Salve isto como Dockerfile na pasta que tem o _config.yml. Este é o arquivo inteiro:
# Jekyll builds the site into _site, and Caddy serves it.
FROM ruby:4.0 AS build
WORKDIR /site
# The gems first: a change to a page does not install them again.
COPY Gemfile Gemfile.lock ./
RUN bundle install
COPY . .
RUN JEKYLL_ENV=production bundle exec jekyll build
# The site is files: Caddy serves them on port 80.
FROM caddy:2
COPY --from=build /site/_site /srv
COPY <<'EOF' /etc/caddy/Caddyfile
:80 {
root * /srv
# A browser that takes its answers compressed gets them so.
encode
# Names that begin with a dot are no pages;
# .well-known is the one such folder that is there for visitors.
@own {
path */.*
not path /.well-known/*
}
error @own 404
# A page's address works without its ".html", and a folder's leads to its index.html.
try_files {path} {path}.html {path}/
file_server
# An address that is no page: the site's own 404.html, if it has one.
handle_errors 404 {
rewrite * /404.html
file_server
}
}
EOF
EXPOSE 80
A primeira etapa faz o build do site como você faz no seu notebook:
ruby:4.0é a imagem completa do Ruby, com um compilador C. Algumas gems do Jekyll, como eventmachine e bigdecimal, compilam ao serem instaladas: naruby:4.0-slim, que não tem compilador, obundle installfalhou. Se o seu site fixa um Ruby no.ruby-version, coloque o mesmo aqui.- As gems vêm primeiro. O
Gemfilee oGemfile.locksão copiados sozinhos, então uma alteração em uma página ou em um post reaproveita as gems que a máquina já instalou. Um lock escrito em um Mac também funciona: fizemos o build do site com um lock que indicava só o macOS, e obundle installescolheu sozinho as gems para Linux. JEKYLL_ENV=productioné o build que a própria etapa de deploy do Jekyll indica. O que os seus layouts mostram só em produção, como analytics, entra nas páginas.
A segunda etapa é o pequeno servidor web que o pethost escreve para todo site feito de arquivos. Ele serve o _site, a pasta de saída do Jekyll, e nada da imagem do Ruby vai junto: o site rodou com 15 MB de memória.
Faça o deploy do site Jekyll com um comando
Rode pethost deploy de novo, agora com o Dockerfile na pasta. Esta é a tela inteira:
$ pethost deploy
Name it [my-site]: it will live at https://my-site.sam.pethost.app
✓ Packed 9 files, 18 KB
✓ Uploaded straight to your machine
✓ Built and started in 34 s
· wrote compose.yaml for the Dockerfile: the service app, reading .env, port 80
✓ app listens on 80 → https://my-site.sam.pethost.app
It answers 200.
https://my-site.sam.pethost.app
Wrote .pethost (commit it). Next: pethost logs -f · pethost open
- Ele pergunta uma coisa O nome do projeto, que é a primeira palavra do endereço. Enter usa o nome da pasta.
- A pasta vai direto para a sua máquina Nove arquivos: o que o
jekyll newescreveu, e o Dockerfile. A linha que começa com·é a máquina dizendo o que fez sozinha: ela encontrou um Dockerfile e nenhum arquivo Compose, então escreveu um. - A máquina faz o build e o inicia Os 34 segundos incluem baixar as imagens do Ruby e do Caddy, que a máquina ainda não tinha. Depois o
pethostacessa o próprio endereço e mostra o que ele respondeu: 200.
O arquivo .pethost diz qual projeto é esta pasta. Faça o commit dele junto com o Dockerfile, e o próximo deploy não pergunta nada.
Os endereços do Jekyll funcionam?
O Jekyll escreve o about.markdown em _site/about/index.html, e um post no endereço que o permalink padrão dele dá, /:categories/:year/:month/:day/:title:output_ext. Perguntamos ao site no ar o que um visitante pergunta:
| Endereço | Resposta |
|---|---|
/ | 200, a página inicial com a lista de posts |
/about/ | 200, a página |
/about | 308, um redirecionamento para /about/ |
/jekyll/update/2026/10/25/welcome-to-jekyll.html | 200, o post de boas-vindas |
/jekyll/update/2026/10/25/welcome-to-jekyll | 200, o mesmo post |
/feed.xml | 200, o feed Atom |
/nothing | 404, a própria página do site: “Page not found :(” |
As páginas, o feed e a folha de estilos chegaram comprimidos a um navegador que pediu isso.
Defina a url do site, altere uma página e faça o deploy de novo
O jekyll new deixa a url vazia no _config.yml, então os links do feed ficaram sem host: /jekyll/update/2026/10/25/welcome-to-jekyll.html. Um leitor de feeds precisa do endereço inteiro. Defina-o, e o título do site junto:
title: My site
url: "https://my-site.sam.pethost.app"
Depois rode o mesmo comando. O segundo deploy levou 3 segundos, porque a máquina guarda as camadas do build: as gems não foram instaladas de novo.
$ pethost deploy
my-site (.pethost)
✓ Packed 10 files · uploaded · built and started in 3 s
· wrote compose.yaml for the Dockerfile: the service app, reading .env, port 80
· kept the project's x-pethost
It answers 200.
https://my-site.sam.pethost.app
Os links do feed agora começam com https://my-site.sam.pethost.app/, e os títulos das páginas dizem “My site”.
Faça o deploy do site Jekyll a partir do GitHub a cada push
Coloque a pasta em um repositório, com o Dockerfile e o .pethost; o _site fica de fora, como diz o .gitignore do Jekyll. Depois conecte o repositório uma vez:
pethost github sam/my-site # from now on, every push deploys itself
A máquina baixa cada commit e faz o build dele com o mesmo Dockerfile. O Pethost lê só os repositórios que você deu ao GitHub App dele. Se um deploy der errado, pethost rollback coloca de volta a versão anterior, e a sua máquina guarda as três versões antes da atual. Um agente de IA pode fazer tudo isso por você pelo servidor MCP do Pethost: como um agente faz o deploy de um projeto e cuida dele.
Use seu próprio domínio no site Jekyll
Qualquer nome sob o domínio da sua conta já é um endereço na hora, com HTTPS. Um domínio seu leva um comando e um registro DNS:
pethost domain add www.example.com
O comando mostra o registro a criar: um CNAME do seu nome para o nome da sua máquina. Um certificado do Let's Encrypt chega sozinho assim que o nome resolve, e se renova sozinho. Depois defina a url no _config.yml com o novo endereço e faça o deploy de novo, para que o feed e os links das páginas usem esse endereço. pethost password coloca uma página de senha na frente do site inteiro, para um site que ainda não é público.
O que você recebe pelo preço
O Pethost custa € 9,99 por mês por tudo o que você hospeda, com 2 vCPU, 3 GB de memória e 30 GB de disco. O site Jekyll depois do build são arquivos atrás do Caddy, em 15 MB dessa memória, então o plano tem espaço para o backend de um formulário de comentários, um banco de dados e os seus outros projetos. Não há taxa por projeto e nada é medido: um segundo blog não custa nada a mais, e o mês em que um post chega à primeira página de um fórum também não.
- € 9,99 por mês por todos os seus projetos, nada medido
- 34s para fazer o build e iniciar o site, incluindo baixar as imagens
- 3s para o deploy depois de uma alteração
O que já vem feito para você: HTTPS com certificados que se renovam sozinhos, deploys a partir do GitHub, backups noturnos guardados por 14 dias, SSH em qualquer container, e cada requisição contada, sem nenhum script nas suas páginas. O painel mostra os caminhos mais acessados dos últimos 30 dias, que, para um blog, é a lista dos posts que as pessoas leem de verdade. Nada hiberna, então um leitor nunca espera um cold start. Os planos estão na parte de preços da página inicial.
O Pethost é a melhor escolha para
- Quem tem um blog e faz mais do que um blog: o site Jekyll, um app e o banco de dados dele em um só plano, em uma só fatura
- Desenvolvedores com vários sites, um site de documentação e uma página de projeto para cada um, por um preço fixo
- Quem deixa o agente fazer o deploy: o Claude Code ou o Codex faz o deploy do site e lê os logs dele
- Equipes pequenas que mantêm um site atrás de uma página de senha até o lançamento
Procure outra opção se
- Sua aplicação precisa de várias regiões ou de autoscaling
Perguntas
Um site Jekyll precisa de Dockerfile para fazer deploy no Pethost?
Sim. No Pethost, um projeto roda a partir de um Dockerfile ou de um arquivo Compose, e o pethost deploy não escreve um para o Jekyll. As 38 linhas desta página são o arquivo inteiro: o Ruby faz o build do site, e o Caddy serve o _site.
Qual versão do Ruby o Dockerfile do Jekyll usa?
A que a primeira linha dele indica: ruby:4.0, que era o Ruby 4.0.9 quando fizemos o build. O Jekyll pede o Ruby 2.7.0 ou mais recente, e um site que fixa uma versão no .ruby-version deve indicar a mesma lá.
Por que os links do feed do meu Jekyll são relativos?
Porque a url está vazia no _config.yml, como o jekyll new a deixa. Defina-a com o endereço do site, por exemplo url: "https://my-site.sam.pethost.app", e faça o deploy de novo: os links do feed passam a ter o endereço inteiro.
Dá para fazer deploy de um site Jekyll do GitHub a cada push?
Sim. Faça o deploy da pasta uma vez com pethost deploy e depois rode pethost github owner/repository. A partir daí, cada push faz o build do site com o mesmo Dockerfile e o deploy dele, e pethost rollback volta para um commit anterior.
Como usar um domínio próprio com HTTPS em um site Jekyll?
Rode pethost domain add www.example.com e crie o único registro DNS que ele mostra, um CNAME para o nome da sua máquina. Um certificado do Let's Encrypt chega sozinho assim que o nome resolve, e se renova sozinho.
Quanto custa hospedar um site Jekyll no Pethost?
€ 9,99 por mês no Starter, com 2 vCPU, 3 GB e 30 GB e sem taxa por projeto: seus outros sites, apps e bancos de dados também rodam lá. Não existe plano gratuito. Os preços são sem IVA.
As telas são deploys do site que o jekyll new criou, com o Jekyll 4.4.1 e o minima 2.5.2, o Ruby 4.0.9 e o Bundler 4.0.23, e o pethost 0.2.4, em uma máquina de teste nossa que não tinha nem a imagem do Ruby nem a do Caddy antes do primeiro deploy. A conta nelas é a de exemplo, sam.
- Jekyll: início rápido
- Jekyll: instalação e requisitos
- Jekyll: passo a passo, deploy
- Jekyll: permalinks
- pethost, a linha de comando do Pethost
Coloque seus projetos no ar hoje
Publique apps, bots e bancos de dados pelo seu agente, pelo GitHub ou pelo navegador, quantos couberem, a um preço fixo. Nada medido, nada cobrado à parte.