Blog · Guias de deploy
Como fazer deploy de um app Go Fiber em 2026: um comando, HTTPS e um Dockerfile que fica com você
Você tem um app Fiber que responde em localhost:3000 e quer colocá-lo em um endereço público com HTTPS. No Pethost, isso é um comando, pethost deploy, rodado na pasta que tem o go.mod. Ele escreve o Dockerfile para você, faz o build do programa e mostra o endereço dele. O hello world do Fiber teve o build feito e foi iniciado em 45 segundos na primeira vez, e em 3 segundos na segunda.
- Um comando:
pethost deployna pasta que tem ogo.mod. Não há arquivo de configuração para escrever nem comando de build ou de início para preencher. - O que ele faz: lê a versão do Go no
go.mod, escreve um Dockerfile que rodago builde inicia o programa. - A porta: a que o
app.Listenindicar. O Pethost encontra a porta em que o programa escuta, então nenhuma variávelPORTé necessária. - O endereço:
https://my-api.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 app e todos os seus outros projetos. Não existe plano gratuito.
O que você precisa para fazer deploy de um app Fiber em 2026
Três coisas: o app, o comando pethost e uma conta no Pethost.
O app aqui é o hello world do Fiber: go mod init my-api, go get github.com/gofiber/fiber/v3 e este main.go:
package main
import (
"log"
"github.com/gofiber/fiber/v3"
)
func main() {
// Initialize a new Fiber app
app := fiber.New()
// Define a route for the GET method on the root path '/'
app.Get("/", func(c fiber.Ctx) error {
// Send a string response to the client
return c.SendString("Hello, World 👋!")
})
// Start the server on port 3000
log.Fatal(app.Listen(":3000"))
}
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.
Faça o deploy do app Fiber com um comando
Vá até a pasta que tem o go.mod e rode pethost deploy. Esta é a tela inteira, para o hello world:
$ cd my-api
$ pethost deploy
Name it [my-api]: it will live at https://my-api.sam.pethost.app
✓ Packed 3 files, 5 KB
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
✓ Go program detected, wrote Dockerfile.
✓ Packed 4 files, 5 KB
✓ Uploaded straight to your machine
✓ Built and started in 45 s
· wrote compose.yaml for the Dockerfile: the service app, reading .env
✓ app listens on 3000 → https://my-api.sam.pethost.app
It answers 200.
https://my-api.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 máquina não encontra nada para rodar A linha com o X é a resposta dela: um projeto roda a partir de um Dockerfile ou de um arquivo Compose, e a pasta ainda não tem nenhum dos dois.
- O pethost escreve o Dockerfile Ele viu o
go.mode umpackage mainao lado, e envia a pasta de novo. - A máquina faz o build e o inicia Ela vê que o programa escuta na 3000 e manda o endereço para lá. Depois o pethost acessa o próprio endereço e mostra o que ele respondeu: 200.
O endereço responde o que o handler envia, e um caminho sem rota recebe o 404 do próprio Fiber:
$ curl https://my-api.sam.pethost.app/
Hello, World 👋!
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.
O Dockerfile que o pethost escreve para um app Fiber
Este é o arquivo como foi escrito na pasta do hello world, inteiro:
# Written by pethost deploy for this Go program: Go 1.25 (go.mod), its program is ..
# It is yours now: change it as you like. pethost does not write it again.
FROM golang:1.25
WORKDIR /app
COPY . .
RUN --mount=type=cache,target=/go/pkg/mod \
--mount=type=cache,target=/root/.cache/go-build \
go build -o /usr/local/bin/my-api .
CMD ["my-api"]
Nada nele é específico do Fiber: um app Fiber é um programa Go, e é isso que o pethost procura. Três coisas vêm da sua pasta:
- A versão do Go é a da linha
godogo.mod. - O programa é o
package mainna raiz do módulo, ou a única pasta decmd/que tem um. Quandocmd/tem vários, o pethost não escreve nada e diz por quê. - O nome é a última parte do caminho do módulo, como o
go installo chamaria.
As duas montagens de cache guardam os módulos e o cache de build do Go na sua máquina entre um deploy e outro. Se a máquina não consegue fazer o build ou iniciar o Dockerfile que o pethost escreveu, o pethost tira o arquivo da sua pasta e diz o que falhou.
Em qual porta o Fiber escuta?
Na que você passa para o app.Listen. O hello world diz ":3000", e a tela do deploy diz o mesmo: app listens on 3000. A máquina olha o container rodando, então não há porta para declarar nem variável PORT para ler. A tela de início do próprio Fiber está no log:
$ pethost logs
2026-10-10T11:29:50Z app INFO Server started on: http://127.0.0.1:3000 (bound on host 0.0.0.0 and port 3000)
2026-10-10T11:29:50Z app INFO Total handlers: 2
2026-10-10T11:29:50Z app INFO Prefork: Disabled
2026-10-10T11:29:50Z app INFO PID: 1
Os visitantes chegam por HTTPS na porta de sempre, e o proxy na sua máquina passa cada requisição para o programa. Uma variável que o app lê é um comando, pethost env set DATABASE_URL: ele pede o valor sem mostrá-lo, coloca no arquivo .env do projeto na máquina, e os próximos deploys o mantêm.
Altere o código e faça o deploy de novo
Edite um handler e rode o mesmo comando. A máquina guarda as camadas do build e os caches do Go:
$ pethost deploy
my-api (.pethost)
✓ Packed 5 files · uploaded · built and started in 3 s
· wrote compose.yaml for the Dockerfile: the service app, reading .env
· kept the project's x-pethost
It answers 200.
https://my-api.sam.pethost.app
Para fazer o deploy a cada push, conecte o repositório uma vez:
pethost github sam/my-api # from now on, every push deploys itself
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. O mesmo comando faz o deploy de um app Gin.
Use seu próprio domínio no app
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 api.example.com
O comando mostra o registro a criar: um CNAME do seu nome para o nome da sua máquina. O certificado chega sozinho assim que o nome resolve, e se renova sozinho.
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. Um programa Fiber é um binário pequeno, então a máquina tem espaço para o banco de dados dele, um worker e os seus outros projetos. Não há taxa por projeto e nada é medido: um mês movimentado custa o mesmo que um mês tranquilo.
- € 9,99 por mês por todos os seus projetos, nada medido
- 45s para fazer o build e iniciar o hello world, na primeira vez
- 3s para o deploy seguinte
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, com os caminhos mais acessados e a taxa de erros dos últimos 30 dias. A máquina está sempre ligada, então uma requisição nunca espera um cold start. Os planos estão na parte de preços da página inicial.
O Pethost é a melhor escolha para
- Desenvolvedores Go com um serviço pequeno: o programa, o banco de dados e o worker em uma máquina, em uma só fatura
- Desenvolvedores solo com vários projetos paralelos, cada um no seu próprio endereço
- Quem deixa o agente fazer o deploy: o Claude Code ou o Codex coloca o app no ar e lê os logs dele
- Startups no começo que querem um custo mensal fixo enquanto o produto é pequeno
Procure outra opção se
- Sua aplicação precisa de várias regiões ou de autoscaling
Perguntas
Um app Fiber precisa de Dockerfile para fazer deploy?
No Pethost, um projeto roda a partir de um Dockerfile ou de um arquivo Compose, e você não precisa escrevê-lo: em uma pasta que não tem nenhum dos dois, o pethost deploy escreve o Dockerfile de um programa Go e faz o deploy. O arquivo fica na sua pasta, e você pode alterá-lo.
Preciso ler a variável PORT em um app Fiber?
Não. Mantenha a porta que você passa para o app.Listen, por exemplo ":3000". O Pethost encontra a porta em que o programa rodando escuta e manda o endereço para lá, com HTTPS.
Dá para fazer deploy de um app Fiber 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 no repositório faz o deploy sozinho, e pethost rollback volta para um commit anterior.
Como usar um domínio próprio com HTTPS em um app Fiber?
Rode pethost domain add api.example.com e crie o único registro DNS que ele mostra, um CNAME para o nome da sua máquina. O certificado chega sozinho assim que o nome resolve, e se renova sozinho.
Quanto custa hospedar um app Fiber no Pethost?
€ 9,99 por mês no Starter, com 2 vCPU, 3 GB e 30 GB e sem taxa por projeto: seus outros apps, sites 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 hello world do Fiber, com o Fiber 3.5.0, o Go 1.25 e o pethost 0.2.1, em uma máquina de teste nossa que nunca tinha feito build de nada. A conta nelas é a de exemplo, sam.
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.