---
title: "Cómo desplegar una app Gin en 2026"
description: "Despliega una app Go Gin con un comando: pethost deploy escribe el Dockerfile, construye el programa y lo sirve por HTTPS, por 9,99 € al mes."
---

[Blog](https://pethost.dev/es/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 · 10 de octubre de 2026 · Actualizado 25 de octubre de 2026 · 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](https://pethost.dev/docs/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í:

- **La versión de Go** es la de la línea `go` de `go.mod`.
- **El programa** es el `package main` de la raíz del módulo, o la única carpeta de `cmd/` que tiene uno. Si `cmd/` tiene varias, pethost no escribe nada y dice por qué: qué programa reciben los visitantes lo decides tú.
- **El nombre** es la última parte del path del módulo, como lo llamaría `go install`. Un `Procfile` con una línea `web` inicia el programa como dice esa línea.

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](https://pethost.dev/es/blog/hosting-for-ai-coding-agents/). El mismo comando despliega una [app Fiber](https://pethost.dev/es/blog/deploy-fiber-app/).

## 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](https://pethost.dev/es/blog/unlimited-projects-flat-monthly-fee/) 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](https://pethost.dev/es/blog/european-hosting-postgres-flat-price/).

- **9,99 €** al mes por todos tus proyectos, nada se mide por uso
- **58 s** para construir e iniciar el quickstart, la primera vez
- **2 s** para el despliegue siguiente

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](https://pethost.dev/es/blog/always-on-hosting-no-cold-starts/). Los planes están en la parte de [precios](https://pethost.dev/es/#pricing) 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.](https://pethost.dev/shots/traffic.webp)

### 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](https://gin-gonic.com/en/docs/quickstart/)
2. [Gin: despliegue](https://gin-gonic.com/en/docs/deployment/)
3. [pethost, la línea de comandos de Pethost](https://pethost.dev/docs/cli/)

## 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](https://console.pethost.dev/)

## Sigue leyendo

- 10 de octubre de 2026 [Cómo desplegar una app Go Fiber en 2026: un comando, HTTPS y un Dockerfile que se queda contigo](https://pethost.dev/es/blog/deploy-fiber-app/) Despliega una app Go Fiber con un comando: pethost deploy escribe el Dockerfile, la construye en 45 s y la sirve por HTTPS, por 9,99 € al mes.
- 10 de octubre de 2026 [Cómo desplegar una app Nuxt en 2026: un comando, un servidor Node y HTTPS](https://pethost.dev/es/blog/deploy-nuxt-app/) Despliega una app Nuxt 4 con un comando: pethost deploy escribe el Dockerfile, ejecuta nuxt build e inicia el servidor Node por HTTPS, por 9,99 € al mes.
- 10 de octubre de 2026 [Cómo desplegar una app React Router en 2026: el Dockerfile de la plantilla, un comando y HTTPS](https://pethost.dev/es/blog/deploy-react-router-app/) Despliega una app React Router con renderizado en el servidor: pethost deploy construye su propio Dockerfile y la sirve por HTTPS en 11 s, por 9,99 € al mes.
- 10 de octubre de 2026 [Cómo desplegar una app TanStack Start en 2026: Nitro, un script start y un solo comando](https://pethost.dev/es/blog/deploy-tanstack-start-app/) Despliega TanStack Start en un servidor Node: agrega Nitro y un script start, ejecuta pethost deploy y en 29 s está en línea con HTTPS, por 9,99 € al mes.

[Todos los artículos](https://pethost.dev/es/blog/) · [Sobre Pethost](https://pethost.dev/about/) · [Precios](https://pethost.dev/es/#pricing)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Plantillas](https://pethost.dev/es/templates/)
- [Sobre nosotros](https://pethost.dev/about/)
- [Docs](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/es/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [Términos](https://pethost.dev/terms/)
- [Privacidad](https://pethost.dev/privacy/)
- [Reembolsos](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Bases de datos

- [Postgres](https://pethost.dev/es/postgres/)

Comparativas

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/es/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/es/blog/coolify-cloud-vs-dokploy-cloud/)
- [Precios de Railway vs Render vs Fly.io](https://pethost.dev/es/blog/railway-vs-render-vs-fly-io-pricing/)
- [Hosting gestionado para Docker Compose](https://pethost.dev/es/blog/managed-docker-compose-hosting/)

Alternativas

- [Alternativas a Railway](https://pethost.dev/es/blog/railway-alternatives/)
- [Alternativas a Heroku](https://pethost.dev/es/blog/heroku-alternatives/)
- [Alternativas a Dokploy](https://pethost.dev/es/blog/dokploy-alternatives/)
- [Alternativas a Coolify](https://pethost.dev/es/blog/coolify-alternatives/)
- [Alternativas a Render](https://pethost.dev/es/blog/render-alternatives/)
- [Alternativas a Sliplane](https://pethost.dev/es/blog/sliplane-alternatives/)
