Blog · Guides de déploiement
Comment déployer une application Gin en 2026 : une commande, HTTPS et un Dockerfile qui reste à vous
Vous avez une application Gin qui tourne sur votre ordinateur, et vous voulez la mettre en ligne à une adresse en HTTPS. Sur Pethost, c’est une seule commande, pethost deploy, lancée dans le dossier qui contient go.mod. Elle écrit le Dockerfile à votre place, construit le programme et affiche son adresse. L’application du quickstart de Gin a été construite et démarrée en 58 secondes la première fois, et en 2 secondes la deuxième.
- Une commande :
pethost deploydans le dossier qui contientgo.mod. Il n’y a ni fichier de configuration à écrire, ni réglages de build à renseigner. - Ce qu’elle fait : elle lit la version de Go dans
go.mod, écrit un Dockerfile qui lancego build, et démarre le programme. - Le port : Gin écoute sur 8080, sauf si
PORTen indique un autre. Pethost trouve le port sur lequel le programme écoute, vous n’avez donc rien à régler. - L’adresse :
https://my-api.yourname.pethost.app, en HTTPS d’emblée. Votre propre domaine, c’est un enregistrement DNS. - Le prix : 9,99 € par mois pour 2 vCPU, 3 GB et 30 GB, pour cette API et tous vos autres projets. Il n’y a pas d’offre gratuite.
Ce qu’il faut pour déployer une application Gin en 2026
Trois choses : l’application, la commande pethost et un compte Pethost.
L’application est ici celle que laisse le quickstart de Gin : go mod init my-api, go get github.com/gin-gonic/gin, et ce 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
}
La commande est un seul programme, qui s’installe en une ligne. Toutes ses commandes sont dans la référence de la CLI.
curl -fsSL https://pethost.dev/install.sh | sh # macOS, Linux
irm https://pethost.dev/install.ps1 | iex # Windows, in PowerShell
Le compte a besoin d’une offre. Si vous n’êtes pas connecté, pethost deploy ouvre votre navigateur et vous connecte. Si vous n’avez pas encore d’offre, la commande vous montre où en choisir une, et attend.
Déployer l’application Gin en une commande
Allez dans le dossier qui contient go.mod et lancez pethost deploy. Voici l’écran entier, pour le 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
- Elle pose une seule question Le nom du projet, qui est le premier mot de son adresse. La touche Entrée prend le nom du dossier.
- La machine ne trouve rien à lancer La ligne avec la croix est sa réponse : un projet tourne à partir d’un Dockerfile ou d’un fichier Compose, et le dossier n’a encore ni l’un ni l’autre.
- pethost écrit le Dockerfile Il a vu
go.modet unpackage mainà côté, et il envoie de nouveau le dossier. - La machine le construit et le démarre Elle voit que le programme écoute sur le port 8080 et y dirige l’adresse. Puis pethost interroge lui-même l’adresse, et affiche ce qu’elle a répondu.
La réponse est 404 parce que le quickstart n’a pas de route sur /, seulement /ping. Votre propre API répondra souvent la même chose, et cela veut dire que le programme tourne et répond. Interrogez la route qui existe :
$ curl https://my-api.sam.pethost.app/ping
{"message":"pong"}
Le fichier .pethost indique à quel projet correspond ce dossier. Commitez-le avec le Dockerfile, et le prochain déploiement ne demandera rien.
Le Dockerfile que pethost écrit pour un programme Go
Voici le fichier tel qu’il a été écrit dans le dossier du quickstart, en entier :
# 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"]
Sa première ligne dit ce que pethost a lu dans votre dossier. Trois choses en viennent :
- La version de Go est celle de la ligne
godego.mod. - Le programme est le
package mainà la racine du module, ou l’unique dossier decmd/qui en a un. Quandcmd/en a plusieurs, pethost n’écrit rien et dit pourquoi : c’est à vous de dire quel programme reçoivent les visiteurs. - Le nom est la dernière partie du chemin du module, celui que lui donnerait
go install. UnProcfileavec une lignewebdémarre le programme comme cette ligne l’indique.
Les deux montages de cache gardent les modules et le cache de build de Go sur votre machine d’un déploiement à l’autre. C’est pour cela que le deuxième déploiement a pris 2 secondes. Si la machine ne peut pas construire ou démarrer le Dockerfile écrit par pethost, pethost retire le fichier de votre dossier et dit ce qui a échoué.
Définir GIN_MODE et d’autres variables d’environnement
Gin démarre en mode debug : ses lignes de log commencent par [GIN-debug]. Les logs disent aussi quel port il a pris :
$ 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
Une variable, c’est une commande. Elle va dans le fichier .env du projet sur la machine, que chaque déploiement suivant garde, et l’application redémarre avec elle :
$ pethost env set GIN_MODE=release
my-api (.pethost)
✓ /.env has GIN_MODE now. Deployed in 4 s.
Un nom seul demande la valeur sans l’afficher, ce qui convient à un secret : pethost env set DATABASE_URL. Vous n’avez pas à définir PORT : avec router.Run(), Gin prend 8080, et avec router.Run(":3000"), la machine trouve 3000 de la même façon.
Modifier le code et redéployer
Modifiez un handler et lancez la même commande. La machine garde les couches du build et les caches 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
Pour déployer plutôt à chaque push, connectez le dépôt une fois :
pethost github sam/my-api # from now on, every push deploys itself
Pethost ne lit que les dépôts que vous avez donnés à son application GitHub. Si un déploiement tourne mal, pethost rollback remet la version d’avant, et votre machine garde les trois versions qui précèdent l’actuelle. Un agent IA peut faire tout cela pour vous via le serveur MCP de Pethost : comment un agent déploie un projet et s’en occupe. La même commande déploie une application Fiber.
Utiliser votre propre domaine pour l’API
Tout nom sous le domaine de votre compte est aussitôt une adresse, en HTTPS. Un domaine à vous demande une commande et un enregistrement DNS :
pethost domain add api.example.com
La commande affiche l’enregistrement à créer : un CNAME de votre nom vers le nom de votre machine. Le certificat arrive tout seul dès que le nom se résout, et se renouvelle tout seul.
Ce que vous obtenez pour ce prix
Pethost coûte 9,99 € par mois pour tout ce que vous hébergez, sur 2 vCPU, 3 GB de mémoire et 30 GB de disque. Un programme Gin est un petit binaire : la machine a donc de la place pour sa base de données, un worker et vos autres projets. Il n’y a pas de frais par projet et rien n’est facturé à l’usage : une deuxième API ne coûte rien de plus, et une base Postgres à côté est comprise dans le même prix.
- 9,99 € par mois pour tous vos projets, rien à l’usage
- 58 s pour construire et démarrer le quickstart, la première fois
- 2 s pour le déploiement suivant
Ce qui est déjà fait pour vous : HTTPS avec des certificats qui se renouvellent tout seuls, déploiements depuis GitHub, sauvegardes chaque nuit conservées 14 jours, SSH dans n’importe quel conteneur, et chaque requête comptée. La console montre les chemins les plus sollicités et le taux d’erreurs des 30 derniers jours, ce qui, pour une API, est la liste des routes que les gens appellent vraiment. La machine est toujours allumée, donc une requête n’attend jamais un démarrage à froid. Les offres sont dans la partie tarifs de la page d’accueil.
Pethost est le meilleur choix pour
- Les développeurs Go avec une petite API : le programme, sa base de données et son worker sur une machine, sur une seule facture
- Les développeurs solo qui ont plusieurs projets perso, chacun à sa propre adresse
- Ceux dont l’agent déploie à leur place : Claude Code ou Codex met l’API en ligne et lit ses logs
- Les jeunes startups qui veulent un coût mensuel fixe tant que le produit est petit
Cherchez ailleurs si
- Votre application a besoin de plusieurs régions ou d’autoscaling
Questions
Faut-il un Dockerfile pour déployer une application Gin ?
Sur Pethost, un projet tourne à partir d’un Dockerfile ou d’un fichier Compose, et vous n’avez pas à l’écrire : dans un dossier qui n’a ni l’un ni l’autre, pethost deploy écrit le Dockerfile d’un programme Go et le déploie. Le fichier reste dans votre dossier, et vous pouvez le modifier.
Sur quel port doit écouter une application Gin ?
N’importe lequel. Avec router.Run(), Gin écoute sur 8080, ou sur le port que nomme la variable PORT. Pethost trouve le port sur lequel le programme écoute et y dirige l’adresse, en HTTPS.
Comment passer GIN_MODE=release en production ?
Lancez pethost env set GIN_MODE=release dans le dossier du projet. La variable va dans le fichier .env du projet sur la machine, l’application redémarre avec elle, et les déploiements suivants la gardent.
Pourquoi pethost deploy affiche « It answers 404 » pour mon API Gin ?
Après un déploiement, pethost interroge l’adresse / et affiche la réponse. Une API sans route sur / y répond 404, ce qui montre tout de même que le programme tourne. Interrogez l’une de vos routes pour la voir fonctionner.
Peut-on déployer une application Gin depuis GitHub à chaque push ?
Oui. Déployez le dossier une fois avec pethost deploy, puis lancez pethost github owner/repository. Dès lors, chaque push sur le dépôt se déploie tout seul, et pethost rollback revient à un commit précédent.
Combien coûte l’hébergement d’une API Gin sur Pethost ?
9,99 € par mois pour Starter, avec 2 vCPU, 3 GB et 30 GB, sans frais par projet : vos autres API, sites et bases de données y tournent aussi. Il n’y a pas d’offre gratuite. Les prix sont hors TVA.
Les écrans sont des déploiements de l’application qu’écrit le quickstart de Gin, avec Gin 1.12.0, Go 1.25 et pethost 0.2.1, sur une de nos machines de test qui n’avait encore rien construit. Le compte qu’on y voit est celui de l’exemple, sam.
Mettez vos projets en ligne dès aujourd’hui
Déployez applications, bots et bases de données depuis votre agent, GitHub ou le navigateur, autant qu’il en tient, à un prix fixe. Rien au compteur, rien facturé en plus.