From 5d8adcff398dd3426c9185137cfc9c8bc2d7e4e7 Mon Sep 17 00:00:00 2001 From: "malgouyres.t@gmail.com" Date: Tue, 7 Jul 2026 09:32:57 +0200 Subject: [PATCH] Initialisation du Homelab --- .gitignore | 32 ++++++++++++++++++++ README.md | 28 ++++++++++++++++++ docs/bootstrap.md | 32 ++++++++++++++++++++ services/gitea/docker-compose.yml | 49 +++++++++++++++++++++++++++++++ 4 files changed, 141 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 docs/bootstrap.md create mode 100644 services/gitea/docker-compose.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..30538fd --- /dev/null +++ b/.gitignore @@ -0,0 +1,32 @@ +# Secrets +.env +.env.* +secrets/ +*.key +*.pem +*.crt +*.token +.vault_pass + +# Runtime / data +data/ +postgres/ +backup/ +backups/ +logs/ + +# Dumps / exports +*.sql +*.dump +*.zip +*.tar.gz +*.gz + +# Gitea runtime config +app.ini + +# OS / editors +Thumbs.db +.DS_Store +.vscode/ +.idea/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7628978 --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +\# Homelab + + + +Dépôt d'infrastructure du homelab. + + + +Objectifs : + +\- centraliser les stacks Docker Compose + +\- éviter les secrets en clair dans Git + +\- préparer le déploiement via Ansible + +\- préparer le CI/CD via Gitea Actions + + + +Règles : + +\- aucun mot de passe dans les docker-compose.yml + +\- aucun fichier .env de production dans Git + +\- aucun dossier data, postgres, backup ou secrets dans Git + diff --git a/docs/bootstrap.md b/docs/bootstrap.md new file mode 100644 index 0000000..a46619a --- /dev/null +++ b/docs/bootstrap.md @@ -0,0 +1,32 @@ +\# Bootstrap initial + + + +Ce dépôt est initialisé manuellement car Gitea et Ansible ne sont pas encore automatisés. + + + +Ordre de mise en place : + + + +1\. Création du LXC Docker pour Gitea + +2\. Installation manuelle de Docker + +3\. Déploiement de Gitea avec Docker Compose + +4\. Création du dépôt homelab + +5\. Création future d'un LXC ansible-runner + +6\. Mise en place d'Ansible Vault + +7\. Ajout futur de Gitea Actions + +8\. Migration progressive des services vers Docker Compose + Ansible + + + +Les secrets ne doivent jamais être versionnés. + diff --git a/services/gitea/docker-compose.yml b/services/gitea/docker-compose.yml new file mode 100644 index 0000000..f7269f3 --- /dev/null +++ b/services/gitea/docker-compose.yml @@ -0,0 +1,49 @@ +services: + db: + image: postgres:16-alpine + container_name: gitea-db + restart: unless-stopped + environment: + POSTGRES_DB: gitea + POSTGRES_USER: gitea + POSTGRES_PASSWORD_FILE: /run/secrets/postgres_password + volumes: + - ./postgres:/var/lib/postgresql/data + secrets: + - postgres_password + networks: + - gitea_internal + + gitea: + image: docker.gitea.com/gitea:1.24.7 + container_name: gitea + restart: unless-stopped + depends_on: + - db + environment: + USER_UID: 1000 + USER_GID: 1000 + GITEA__server__DOMAIN: git.thomasmlg.fr + GITEA__server__ROOT_URL: https://git.thomasmlg.fr/ + GITEA__server__SSH_DOMAIN: git.thomasmlg.fr + GITEA__server__SSH_PORT: 2222 + GITEA__server__START_SSH_SERVER: "false" + GITEA__service__DISABLE_REGISTRATION: "true" + volumes: + - ./data:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + ports: + - "3000:3000" + - "2222:22" + secrets: + - postgres_password + networks: + - gitea_internal + +secrets: + postgres_password: + file: ./secrets/postgres_password + +networks: + gitea_internal: \ No newline at end of file