Español

Blog · Guías de despliegue

Cómo desplegar una app Gin en 2026: un comando, HTTPS y un Dockerfile que se queda contigo

Por el equipo de Pethost · · Actualizado · 9 min de lectura

Tienes una app Gin que funciona en tu equipo, y quieres ponerla en línea en una dirección con HTTPS. En Pethost es un comando, pethost deploy, ejecutado en la carpeta que tiene go.mod. Él escribe el Dockerfile por ti, construye el programa e imprime su dirección. El quickstart de Gin se construyó e inició en 58 s la primera vez, y en 2 s la segunda.

En resumen
  • Un comando: pethost deploy en la carpeta que tiene go.mod. No hay archivo de configuración que escribir ni ajustes de build que rellenar.
  • Qué hace: lee la versión de Go de go.mod, escribe un Dockerfile que ejecuta go build e inicia el programa.
  • El puerto: Gin escucha en el 8080 salvo que PORT diga otro. Pethost encuentra el puerto en el que escucha el programa, así que no configuras nada.
  • La dirección: https://my-api.yourname.pethost.app, con HTTPS desde el primer momento. Tu propio dominio es un registro DNS.
  • El precio: 9,99 € al mes por 2 vCPU, 3 GB y 30 GB, para esta API y cada uno de tus otros proyectos. No hay plan gratuito.

Qué necesitas para desplegar una app Gin en 2026

Tres cosas: la app, el comando pethost y una cuenta de Pethost.

La app aquí es la que deja el quickstart de Gin: go mod init my-api, go get github.com/gin-gonic/gin y este main.go:

package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

func main() {
	router := gin.Default()
	router.GET("/ping", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"message": "pong",
		})
	})
	router.Run() // listens on 0.0.0.0:8080 by default
}

El comando es un solo programa, que se instala con una línea. Todos sus comandos están en la referencia de la CLI.

curl -fsSL https://pethost.dev/install.sh | sh      # macOS, Linux
irm https://pethost.dev/install.ps1 | iex           # Windows, in PowerShell

La cuenta necesita un plan. Si no has iniciado sesión, pethost deploy abre tu navegador e inicia sesión por ti. Si aún no tienes plan, te muestra dónde elegir uno, y espera.

Despliega la app Gin con un comando

Ve a la carpeta que tiene go.mod y ejecuta pethost deploy. Esta es la pantalla entera, para el quickstart:

$ cd my-api
$ pethost deploy
Name it [my-api]:    it will live at https://my-api.sam.pethost.app
✓ Packed 3 files, 9 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, 10 KB
✓ Uploaded straight to your machine
✓ Built and started in 58 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env
✓ app listens on 8080 → https://my-api.sam.pethost.app
  It answers 404.

https://my-api.sam.pethost.app

Wrote .pethost (commit it). Next:   pethost logs -f   ·   pethost open
  1. Pregunta una sola cosa El nombre del proyecto, que es la primera palabra de su dirección. Con Enter se queda el nombre de la carpeta.
  2. La máquina no encuentra nada que ejecutar La línea con la cruz es su respuesta: un proyecto se ejecuta desde un Dockerfile o un archivo de Compose, y la carpeta aún no tiene ninguno de los dos.
  3. pethost escribe el Dockerfile Vio go.mod y un package main a su lado, y vuelve a subir la carpeta.
  4. La máquina lo construye y lo inicia Ve que el programa escucha en el 8080 y envía la dirección ahí. Después pethost visita la dirección él mismo e imprime lo que respondió.

La respuesta es 404 porque el quickstart no tiene ruta en /, solo /ping. Una API tuya a menudo dirá lo mismo, y significa que el programa está levantado y responde. Pide la ruta que existe:

$ curl https://my-api.sam.pethost.app/ping
{"message":"pong"}

El archivo .pethost dice qué proyecto es esta carpeta. Haz commit de él junto con el Dockerfile, y el siguiente despliegue no pregunta nada.

El Dockerfile que pethost escribe para un programa Go

Este es el archivo tal como se escribió en la carpeta del quickstart, entero:

# 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"]

Su primera línea dice lo que pethost leyó en tu carpeta. Tres cosas salen de ahí:

Los dos montajes de caché conservan los módulos de Go y su caché de build en tu máquina entre despliegues. Por eso el segundo despliegue tardó 2 segundos. Si la máquina no puede construir o iniciar el Dockerfile que escribió pethost, pethost vuelve a sacar el archivo de tu carpeta y dice qué falló.

Configura GIN_MODE y otras variables de entorno

Gin se inicia en modo debug: sus líneas de log empiezan por [GIN-debug]. El log también dice qué puerto tomó:

$ pethost logs
2026-10-10T11:15:22Z	app	[GIN-debug] GET    /ping                     --> main.main.func1 (3 handlers)
2026-10-10T11:15:22Z	app	[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default
2026-10-10T11:15:22Z	app	[GIN-debug] Listening and serving HTTP on :8080

Una variable es un comando. Va al archivo .env del proyecto en la máquina, que todos los despliegues siguientes conservan, y la app se reinicia con ella:

$ pethost env set GIN_MODE=release
my-api (.pethost)
✓ /.env has GIN_MODE now. Deployed in 4 s.

Un nombre solo pide el valor sin mostrarlo, que es la forma de pasar un secreto: pethost env set DATABASE_URL. No tienes que configurar PORT: con router.Run() Gin toma el 8080, y con router.Run(":3000") la máquina encuentra el 3000 de la misma forma.

Cambia el código y vuelve a desplegar

Edita un handler y ejecuta el mismo comando. La máquina conserva las capas del build y las cachés de Go:

$ pethost deploy
my-api (.pethost)
✓ Packed 5 files · uploaded · built and started in 2 s
  · kept the project's .env
  · wrote compose.yaml for the Dockerfile: the service app, reading .env
  · kept the project's x-pethost
  It answers 404.
https://my-api.sam.pethost.app

Para desplegar con cada push, conecta el repositorio una vez:

pethost github sam/my-api          # from now on, every push deploys itself

Pethost lee solo los repositorios que le diste a su GitHub App. Si un despliegue sale mal, pethost rollback vuelve a poner la versión anterior, y tu máquina conserva las tres versiones anteriores a la actual. Un agente de IA puede hacer todo esto por ti a través del servidor MCP de Pethost: cómo un agente despliega y cuida un proyecto. El mismo comando despliega una app Fiber.

Usa tu propio dominio para la API

Cualquier nombre bajo el dominio de tu cuenta es una dirección desde el primer momento, con HTTPS. Un dominio tuyo lleva un comando y un registro DNS:

pethost domain add api.example.com

El comando imprime el registro que hay que crear: un CNAME de tu nombre al nombre de tu máquina. El certificado llega solo en cuanto el nombre resuelve, y se renueva solo.

Qué obtienes por el precio

Pethost cuesta 9,99 € al mes por todo lo que alojas, con 2 vCPU, 3 GB de memoria y 30 GB de disco. Un programa Gin es un binario pequeño, así que en la máquina queda sitio para su base de datos, un worker y tus otros proyectos. No pagas por proyecto y nada se mide por uso: una segunda API no cuesta nada más, y un Postgres a su lado entra en el mismo precio.

Lo que ya está hecho por ti: HTTPS con certificados que se renuevan solos, despliegues desde GitHub, backups cada noche conservados 14 días, SSH a cualquier contenedor y cada petición contada. El panel muestra los paths más visitados y la tasa de errores de los últimos 30 días, que para una API es la lista de rutas que la gente llama de verdad. La máquina está siempre encendida, así que una petición nunca espera a un arranque en frío. Los planes están en la parte de precios de la página principal.

Qué rutas se llaman. Los diez paths más visitados de un proyecto con su cuota y sus tiempos de respuesta, y el log de peticiones una a una.
El panel de Pethost: los diez paths más visitados de un proyecto con su cuota, su número y sus tiempos de respuesta, y el log de peticiones una a una.

Pethost es la mejor opción para

  • Desarrolladores Go con una API pequeña: el programa, su base de datos y su worker en una sola máquina, en una sola factura
  • Desarrolladores en solitario con varios proyectos personales, cada uno en su propia dirección
  • Quien deja que su agente despliegue por él: Claude Code o Codex pone la API en línea y lee sus logs
  • Startups en sus inicios que quieren un gasto mensual fijo mientras el producto es pequeño

Busca otra opción si

  • Tu aplicación necesita varias regiones o autoescalado

Preguntas

¿Una app Gin necesita un Dockerfile para desplegarse?

En Pethost un proyecto se ejecuta desde un Dockerfile o un archivo de Compose, y no tienes que escribirlo tú: en una carpeta que no tiene ninguno de los dos, pethost deploy escribe el Dockerfile para un programa Go y lo despliega. El archivo se queda en tu carpeta, y puedes cambiarlo.

¿En qué puerto debe escuchar una app Gin?

En cualquiera. Con router.Run() Gin escucha en el 8080, o en el puerto que indique la variable PORT. Pethost encuentra el puerto en el que escucha el programa y envía la dirección ahí, por HTTPS.

¿Cómo configuro GIN_MODE=release en producción?

Ejecuta pethost env set GIN_MODE=release en la carpeta del proyecto. La variable va al archivo .env del proyecto en la máquina, la app se reinicia con ella y los despliegues siguientes la conservan.

¿Por qué pethost deploy dice “It answers 404” para mi API Gin?

Después de un despliegue, pethost visita la dirección / e imprime la respuesta. Una API sin ruta en / responde 404 ahí, lo que igualmente muestra que el programa está levantado. Pide una de tus rutas para verla funcionar.

¿Puedo desplegar una app Gin desde GitHub con cada push?

Sí. Despliega la carpeta una vez con pethost deploy y luego ejecuta pethost github owner/repository. Desde entonces cada push al repositorio se despliega solo, y pethost rollback vuelve a un commit anterior.

¿Cuánto cuesta alojar una API Gin en Pethost?

9,99 € al mes por Starter, con 2 vCPU, 3 GB y 30 GB y sin pagar por proyecto: tus otras API, sitios y bases de datos también se ejecutan ahí. No hay plan gratuito. Los precios son sin IVA.

Las pantallas son despliegues de la app que escribe el quickstart de Gin, con Gin 1.12.0, Go 1.25 y pethost 0.2.1, en una máquina de pruebas nuestra que no había construido nada antes. La cuenta que aparece es la de ejemplo, sam.

  1. Gin: quickstart
  2. Gin: despliegue
  3. pethost, la línea de comandos de Pethost

Pon tus proyectos en línea hoy

Despliega apps, bots y bases de datos desde tu agente, GitHub o el navegador, tantos como quepan, a un precio fijo. Nada medido, nada cobrado aparte.

Alojar todos tus proyectos por 9,99 €/mes