Dev · sans KYC
Hébergez Gitea sur un VPS offshore
Déployez votre propre forge Git légère sur un VPS sans KYC payable en crypto, et gardez chaque dépôt, ticket et pipeline CI à l'écart des clouds tiers.
Ce que c'est
Gitea est un service Git auto-hébergé écrit en Go — une alternative légère à GitHub/GitLab offrant dépôts, pull requests, tickets, wikis, releases et Actions (CI/CD). Il se distribue sous forme d'un binaire unique ou d'une image Docker à faible empreinte mémoire, ce qui en fait un choix idéal pour les équipes qui veulent garder le contrôle total de leur code source.
Pourquoi l'héberger en offshore
Le code source figure parmi les données les plus sensibles que détient une équipe ; l'héberger sur un VPS offshore et sans identité le maintient hors de portée des grandes plateformes d'hébergement de code et de leurs régimes de rétention de données et de retraits forcés. Payer en crypto sans KYC signifie que l'infrastructure de votre projet n'est rattachée à aucune identité d'entreprise, et la bande passante illimitée permet aux clones, exécutions CI et téléchargements de releases de circuler sans mauvaise surprise de facturation.
Le déploiement
Une configuration de référence fonctionnelle
Copiez ceci sur une nouvelle instance ChainVPS. Remplacez les paramètres, puis lancez-la.
# docker-compose.yml — Gitea + PostgreSQL on Ubuntu 24.04
# 1) apt install docker.io docker-compose-v2
# 2) put this file in /opt/gitea and run: docker compose up -d
# 3) open http://SERVER_IP:3000 to finish the web installer
services:
server:
image: gitea/gitea:1.22
container_name: gitea
restart: always
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=CHANGE_ME_STRONG_DB_PW
# correct clone URLs — set to your domain once DNS is ready:
- GITEA__server__DOMAIN=git.example.com
- GITEA__server__ROOT_URL=https://git.example.com/
- GITEA__server__SSH_PORT=222
- GITEA__service__DISABLE_REGISTRATION=true
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000" # web UI — front with a TLS reverse proxy in production
- "222:22" # git-over-SSH (host 222 -> container 22)
depends_on:
- db
networks:
- gitea
db:
image: postgres:16
container_name: gitea-db
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=CHANGE_ME_STRONG_DB_PW
- POSTGRES_DB=gitea
volumes:
- ./postgres:/var/lib/postgresql/data
networks:
- gitea
networks:
gitea:
external: false
Pare-feu
Ports à ouvrir
| Port | Protocole | Objectif |
|---|---|---|
| 3000 | TCP | Interface web Gitea et git en HTTP — à garder derrière un reverse proxy TLS (Caddy/Nginx) en production |
| 222 | TCP | Git par SSH (port hôte mappé vers le port 22 du conteneur) pour cloner/pousser via des clés SSH |
| 443 | TCP | HTTPS via votre reverse proxy une fois le domaine et le certificat en place |
| 22 | TCP | SSH de l'hôte pour l'administration — à garder sur un port distinct du 222 de Gitea, en authentification par clé uniquement |
Dimensionnement optimal
De quel forfait vous avez besoin
VPS Nano/Small (1-2 vCPU, 2 GB RAM)
Développeur solo ou une poignée d'utilisateurs, quelques dizaines de dépôts, pas de CI. Gitea tourne au repos autour de 150-200 MB RAM.
VPS Pro (2-4 vCPU, 4-8 GB RAM)
Petite équipe, pull requests actifs, plus un ou deux runners Gitea Actions pour la CI. Ajoutez un volume de stockage pour les gros artefacts de release.
Dédié (ou VPS Storage pour les dépôts)
De nombreux utilisateurs simultanés, de gros monorepos, une forte concurrence de CI, ou des médias volumineux via LFS. Un CPU dédié garde les opérations de clone/pack réactives ; associez-le à un plan Storage pour les données de dépôts/LFS.
Meilleurs emplacements : Choisissez un emplacement à forte protection de la vie privée — la Suisse (CH) et l'Islande (IS) offrent la posture de protection des données la plus solide pour le code source, avec les Pays-Bas (NL), la Roumanie (RO), la Moldavie (MD) et le Luxembourg (LU) comme alternatives offshore solides. Choisissez la région la plus proche de vos contributeurs pour réduire la latence des clones/push, les allers-retours git étant sensibles à la latence.
Verrouillez-le
Liste de vérification du durcissement
- N'exposez jamais le port 3000 brut sur Internet — placez Gitea derrière un reverse proxy TLS (Caddy en auto-HTTPS ou Nginx + certbot) et définissez GITEA__server__ROOT_URL sur le domaine https afin que les URL de clonage soient correctes.
- Définissez DISABLE_REGISTRATION=true (déjà présent dans le compose) juste après avoir créé votre compte admin, afin que personne ne puisse s'auto-inscrire ; invitez les utilisateurs manuellement ou via le panneau d'administration.
- Gardez le git par SSH sur le port 222 et le sshd propre à l'hôte sur un port différent, tous deux en authentification par clé uniquement (PasswordAuthentication no) ; Gitea gère son fichier authorized_keys en interne, ne l'éditez donc pas manuellement.
- Activez la 2FA pour chaque compte et rendez-la obligatoire pour l'admin ; sortez le mot de passe de la base de données des variables d'environnement pour le placer dans un secret Docker ou un fichier .env avec des permissions 600.
- Sauvegardez ./gitea (dépôts, configuration, LFS) ainsi qu'un pg_dump de la base de données gitea selon un planning régulier, et figez l'image sur un tag de version (gitea/gitea:1.22) plutôt que latest afin que les mises à jour soient volontaires — lisez les notes de version avant de monter en version majeure.
Questions
Hébergement Gitea — FAQ
Puis-je exécuter du CI/CD sans service séparé ?
Oui. Gitea intègre Actions (compatible GitHub Actions). Activez-la, puis enregistrez un conteneur runner (gitea/act_runner) auprès de votre instance. Pour une charge CI réelle, utilisez un plan de taille Moyenne ou supérieure afin que les builds n'étouffent pas le service web.
SQLite, MySQL ou PostgreSQL ?
SQLite convient à un utilisateur unique avec un usage léger et ne nécessite aucun conteneur de base de données. Pour toute équipe ou perspective de croissance, utilisez PostgreSQL comme indiqué dans le compose — il gère bien mieux la concurrence et se sauvegarde très simplement avec pg_dump.
Comment migrer mes dépôts depuis GitHub/GitLab ?
L'outil de migration intégré à Gitea importe un dépôt à partir de son URL, y compris les tickets, PR, releases et wiki. Ajoutez un token pour la plateforme source dans le formulaire de migration afin de récupérer les dépôts privés et leurs métadonnées.
Cela gère-t-il les fichiers volumineux (Git LFS) ?
Oui, LFS est pris en charge nativement et stocké sous /data. Si vous hébergez des binaires ou médias volumineux, placez ./gitea sur un volume Storage VPS et prévoyez l'espace disque en conséquence — les objets LFS s'accumulent vite.
Mon code reste-t-il privé sur un hébergeur sans KYC ?
Vos dépôts vivent entièrement sur le disque de votre VPS, dans la juridiction offshore de votre choix ; rien n'est répliqué vers un tiers. Gardez l'inscription désactivée, utilisez HTTPS + clés SSH, activez la 2FA, et effectuez des sauvegardes chiffrées hors serveur pour un contrôle total.
Plus à auto-héberger
Autres stacks en un clic
Déployer Gitea
dans les 60 prochaines secondes.
Bande passante illimitée · DDoS inclus · 21 cryptomonnaies · sans KYC.