Português

Blog · Guias de deploy

Como fazer deploy de um site Jekyll em 2026: um Dockerfile, um comando e HTTPS

Pela equipe da Pethost · · 11 min de leitura

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.

Em resumo
  • Um arquivo: um Dockerfile em duas etapas. O Ruby 4.0 roda bundle install e JEKYLL_ENV=production bundle exec jekyll build, e depois o Caddy serve o _site.
  • Um comando: pethost deploy na pasta que tem o _config.yml. 34s na primeira vez, 3s para o deploy seguinte.
  • Os endereços do Jekyll funcionam: /about/ responde 200, /about leva até ele, um post responde com ou sem .html, e uma página que não existe mostra o próprio 404.html do 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:

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
  1. Ele pergunta uma coisa O nome do projeto, que é a primeira palavra do endereço. Enter usa o nome da pasta.
  2. A pasta vai direto para a sua máquina Nove arquivos: o que o jekyll new escreveu, 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.
  3. 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 pethost acessa 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:

O que o site Jekyll no ar respondeu
EndereçoResposta
/200, a página inicial com a lista de posts
/about/200, a página
/about308, um redirecionamento para /about/
/jekyll/update/2026/10/25/welcome-to-jekyll.html200, o post de boas-vindas
/jekyll/update/2026/10/25/welcome-to-jekyll200, o mesmo post
/feed.xml200, o feed Atom
/nothing404, 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.

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.

Quais posts as pessoas leem. Os dez caminhos mais acessados de um projeto, com sua fatia e tempos de resposta, e o log de requisições individuais.
O painel do Pethost: os dez caminhos mais acessados de um projeto, com fatia, contagem e tempos de resposta, e o log de requisições individuais.

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.

  1. Jekyll: início rápido
  2. Jekyll: instalação e requisitos
  3. Jekyll: passo a passo, deploy
  4. Jekyll: permalinks
  5. 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.

Hospede tudo por € 9,99/mês