[{"data":1,"prerenderedAt":117},["ShallowReactive",2],{"seo-verification":3,"blog-deployer-golang-vps-fr":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"title":9,"excerpt":10,"readTime":11,"views":12,"isPinned":13,"publishedAt":14,"category":15,"categories":21,"featuredImage":23,"bgImage":24,"posterImage":25,"relatedSolution":26,"intro":28,"sections":29,"ctaTitle":72,"ctaBody":73,"ctaButton":74,"ctaUrl":75,"relatedPosts":76},51,"deployer-golang-vps","Déployer une application Go (Gin) sur un VPS","Déployez une API Go (Gin) sur un VPS Cloud : binaire statique, Docker scratch, reverse proxy et SSL. Tutoriel pour développeurs Go.",7,287,false,"2026-04-30T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},4,"Développement","developpement","bg-warning\u002F10 text-warning","dev",[22],{"id":16,"name":17,"slug":18,"color":19,"icon":20},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-golang-vps-poster.svg",{"categorySlug":18,"appSlug":27},"golang","Go compile en un seul binaire statique sans dépendances : c'est le langage idéal pour le self-hosting. Une API Gin tient dans quelques mégaoctets de RAM et démarre instantanément. Voici comment la mettre en production sur un VPS, du binaire au certificat SSL.",[30,34,44,47,69],{"type":31,"title":32,"body":33},"h2","Pourquoi self-héberger une API Go sur un VPS","Contrairement à Java ou Node, une application Go (avec le framework Gin) se compile en un binaire statique unique qui n'a besoin ni d'interpréteur, ni de runtime, ni de bibliothèque partagée. Vous pouvez littéralement déposer le binaire sur un VPS et l'exécuter. Cette légèreté change tout pour le self-hosting : une API Gin tourne dans 15 à 30 Mo de RAM, encaisse des milliers de requêtes par seconde sur un seul cœur, et démarre en quelques millisecondes. Sur un VPS, vous exploitez à fond cette efficacité : un serveur d'entrée de gamme suffit à servir une charge que les langages interprétés exigeraient sur une machine bien plus grosse. Vous évitez aussi la complexité des images Docker volumineuses : une image `scratch` de 10 Mo suffit.",{"type":35,"title":36,"items":37},"ul","Bénéfices concrets",[38,39,40,41,42,43],"Binaire statique unique : aucun runtime à installer, déploiement par simple copie de fichier","Empreinte mémoire minuscule (15-30 Mo) permettant de saturer un petit VPS de requêtes","Image Docker `scratch` ou `distroless` de 10-15 Mo : builds et pulls quasi instantanés","Démarrage en millisecondes : redéploiements et redémarrages sans interruption perceptible","Concurrence native via les goroutines : un seul vCPU gère des milliers de connexions simultanées","Surface d'attaque réduite : pas d'interpréteur ni de packages système à patcher",{"type":31,"title":45,"body":46},"Prérequis matériels et logiciels","C'est là que Go brille : une API Gin sans base de données tient sur un VPS de 1 vCPU et 1 Go de RAM, et reste à l'aise. Avec PostgreSQL co-localisé, visez 2 Go pour être confortable. Vous n'avez même pas besoin de Go sur le serveur si vous compilez en CI ou en cross-compilation locale (`GOOS=linux GOARCH=amd64 go build`). Installez Docker si vous conteneurisez, ou rien du tout si vous lancez le binaire directement sous systemd. Pointez un domaine `api.mondomaine.ma` vers l'IP du VPS via un enregistrement A. 5 Go de disque suffisent largement.",{"type":48,"title":49,"steps":50},"steps","Déploiement pas à pas",[51,54,57,60,63,66],{"title":52,"body":53},"Cross-compiler le binaire pour Linux","Depuis votre poste, lancez `CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app .`. Le flag `CGO_ENABLED=0` garantit un binaire 100 % statique, indispensable pour une image `scratch`. Vous obtenez un exécutable `app` prêt à tourner sur n'importe quel Linux.",{"title":55,"body":56},"Construire une image Docker minimale","Rédigez un Dockerfile multi-stage : un stage `golang:1.22-alpine` pour compiler, puis `FROM scratch` qui copie uniquement le binaire et les certificats CA (`COPY --from=builder \u002Fetc\u002Fssl\u002Fcerts ...`). L'image finale pèse une dizaine de Mo. Exposez le port 8080.",{"title":58,"body":59},"Configurer Gin pour la production","Passez Gin en mode release avec `gin.SetMode(gin.ReleaseMode)` ou la variable `GIN_MODE=release` pour désactiver les logs verbeux de debug. Lisez le port et les secrets depuis l'environnement (`os.Getenv`), jamais en dur dans le code.",{"title":61,"body":62},"Lancer le conteneur","Démarrez avec `docker run -d --restart unless-stopped -p 127.0.0.1:8080:8080 -e GIN_MODE=release monapp:latest`. En liant sur `127.0.0.1`, vous n'exposez Gin qu'au reverse proxy local, pas à l'Internet directement.",{"title":64,"body":65},"Placer Nginx ou Caddy en frontal","Configurez un reverse proxy vers `http:\u002F\u002F127.0.0.1:8080`. Caddy est particulièrement adapté ici : avec une simple directive `reverse_proxy localhost:8080`, il provisionne automatiquement le certificat HTTPS sans Certbot.",{"title":67,"body":68},"Sécuriser avec TLS","Avec Caddy, le HTTPS est automatique dès que le domaine pointe vers le VPS. Avec Nginx, exécutez `certbot --nginx -d api.mondomaine.ma`. Vérifiez ensuite la chaîne TLS avec `curl -I https:\u002F\u002Fapi.mondomaine.ma`.",{"type":70,"body":71},"tip","Activez le profiling `pprof` de Go derrière un endpoint protégé : `import _ \"net\u002Fhttp\u002Fpprof\"` exposé sur un port interne uniquement accessible en SSH tunnel. Vous obtenez des flame graphs CPU et mémoire en production réelle sans surcharge notable. Pensez aussi à compiler avec `-ldflags=\"-s -w\"` pour réduire la taille du binaire de 30 % en supprimant les tables de debug.","Faites tourner votre API Go sur un VPS efficace","Le VPS Cloud ServOrbit offre des cœurs dédiés et un réseau performant : exactement ce qu'il faut pour exploiter la légèreté d'un binaire Go et servir un trafic intense sur des ressources modestes.","Découvrir le VPS Cloud","\u002Fvps-cloud",[77,90,104],{"id":78,"slug":79,"title":80,"excerpt":81,"readTime":11,"views":82,"isPinned":13,"publishedAt":83,"category":84,"categories":85,"featuredImage":23,"bgImage":24,"posterImage":87,"relatedSolution":88},5,"deployer-laravel-vps","Déployer Laravel sur un VPS : guide production","Passez Laravel en production sur VPS : PHP, workers, cache, base de données, reverse proxy et HTTPS proprement configurés.",2840,"2026-02-09T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[86],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fdeployer-laravel-vps-poster.svg",{"categorySlug":20,"appSlug":89},"laravel-stack",{"id":91,"slug":92,"title":93,"excerpt":94,"readTime":95,"views":96,"isPinned":13,"publishedAt":97,"category":98,"categories":99,"featuredImage":23,"bgImage":24,"posterImage":101,"relatedSolution":102},43,"deployer-nodejs-vps","Déployer une application Node.js sur un VPS","Déployez une application Node.js en production sur un VPS : PM2, reverse proxy Nginx, SSL Let's Encrypt et démarrage automatique au boot.",8,591,"2026-05-08T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[100],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fdeployer-nodejs-vps-poster.svg",{"categorySlug":18,"appSlug":103},"nodejs",{"id":105,"slug":106,"title":107,"excerpt":108,"readTime":95,"views":109,"isPinned":13,"publishedAt":110,"category":111,"categories":112,"featuredImage":23,"bgImage":24,"posterImage":114,"relatedSolution":115},44,"deployer-django-vps","Déployer une application Django sur un VPS","Déployez Django sur un VPS : Gunicorn, Nginx, PostgreSQL, Docker et SSL. Guide complet pour développeurs Python qui veulent self-héberger.",628,"2026-05-07T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[113],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fdeployer-django-vps-poster.svg",{"categorySlug":18,"appSlug":116},"django",1784126232821]