nixos-config/hm/apps/gitea.nix
2025-09-04 10:21:17 +02:00

93 lines
2.5 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

_: let
domain = "git.lomig.me"; # <-- mets ton domaine
giteaHttpPort = 3000; # port local de Gitea
in {
########################################
# Base système
########################################
networking.firewall.allowedTCPPorts = [80 443 22]; # HTTP(S) + SSH (22)
services = {
openssh.enable = true; # si tu veux aussi OpenSSH pour le reste
########################################
# Base de données Postgres
########################################
postgresql = {
enable = true;
ensureDatabases = ["gitea"];
ensureUsers = [
{
name = "gitea";
ensureDBOwnership = true;
}
];
};
########################################
# Gitea
########################################
gitea = {
enable = true;
appName = "Gitea";
user = "gitea"; # user système service
database = {
type = "postgres";
user = "gitea";
name = "gitea";
host = "127.0.0.1";
};
};
# Répertoire de données (par défaut: /var/lib/gitea)
stateDir = "/var/lib/gitea";
# Réglages gitea.ini
settings = {
server = {
PROTOCOL = "http";
HTTP_ADDR = "127.0.0.1";
HTTP_PORT = giteaHttpPort;
DOMAIN = domain;
ROOT_URL = "https://${domain}/";
SSH_DOMAIN = domain;
# SSH intégré par Gitea (pratique : pas besoin de configurer un port séparé)
START_SSH_SERVER = true;
SSH_LISTEN_PORT = 2222; # port interne Gitea
SSH_PORT = 22; # port public affiché dans les URLs clone
};
service = {
DISABLE_REGISTRATION = true; # tu créeras les comptes toimême
REQUIRE_SIGNIN_VIEW = false;
REGISTER_EMAIL_CONFIRM = true;
};
# SMTP (remplace par ton vrai relais)
log = {
MODE = "console";
LEVEL = "Info";
};
};
# Création d'un admin au premier démarrage (facultatif mais pratique)
# Remplace le mot de passe et lemail :
# L'utilisateur est créé si inexistant.
};
########################################
# Caddy reverse proxy + TLS
########################################
services.caddy = {
enable = true;
virtualHosts."${domain}".extraConfig = ''
encode zstd gzip
reverse_proxy 127.0.0.1:${toString giteaHttpPort}
'';
# Par défaut, Caddy va récupérer un certificat Let's Encrypt pour le domaine public
# Si domaine local sans DNS public, ajoute `tls internal` dans extraConfig.
};
}
# vim: set ts=2 sw=2 sts=2 et :