commit 470fd5a60c7f612a9b8630ba00a5216e44650760 Author: TheThomaas Date: Mon Oct 19 10:31:32 2026 +0200 Initial commit diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..0ed4e62 --- /dev/null +++ b/.env.example @@ -0,0 +1,20 @@ +# ============================================ +# Variables communes à tous les serveurs +# Copier en .env et remplir les valeurs +# ============================================ + +# --- Identité et localisation --- +LOCAL_DOMAIN= +TZ=Europe/Zurich + +# --- Chemins de stockage --- +APPDATA= +MEDIADIR= + +# --- Permissions --- +PUID= +PGID= + +# --- Réseau Docker --- +# Nom du réseau externe partagé (créé une fois avec : docker network create proxy) +PROXY_NETWORK=proxy diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3dd02e6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,58 @@ +# ============================================ +# Secrets et variables d'environnement +# ============================================ +.env +.env.* +*.env +# On garde les fichiers d'exemple comme documentation +!.env.example +!*.env.example + +# ============================================ +# Overrides Docker Compose locaux +# ============================================ +# Fichiers d'override spécifiques à une machine +compose.override.yml +compose.override.yaml +# Variantes d'environnement (prod, test, etc.) si elles contiennent des secrets +compose.*.yml +compose.*.yaml +# On garde les fichiers principaux +!compose.yml +!compose.yaml + +# ============================================ +# Fichiers système et éditeurs +# ============================================ +.DS_Store +Thumbs.db +*~ +*.swp +*.swo +.vscode/ +.idea/ +*.iml + +# ============================================ +# Logs et fichiers temporaires +# ============================================ +*.log +logs/ +tmp/ +temp/ +*.tmp + +# ============================================ +# Données locales +# ============================================ +# data/ +# volumes/ +# backups/ + +# ============================================ +# Fichiers d'état OpenTofu +# ============================================ +*.tfstate +*.tfstate.* +.terraform/ +.terraform.lock.hcl \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..2740dd1 --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# homeserver/infrastructure + +Configuration du homelab, organisée par serveur. + +## Mise en place sur un nouveau serveur +```bash +# 1. Cloner le dépôt +git clone https://git.thethomaas.net/homeserver/infrastructure.git ~/infrastructure && cd ~/infrastructure + +# 2. Copier les fichiers d'environnement et remplir les valeurs +cp .env.example .env +cp servers//.env.example servers//.env + +# 3. Créer le réseau partagé +docker network create proxy +``` \ No newline at end of file diff --git a/servers/sunstreaker/.env.example b/servers/sunstreaker/.env.example new file mode 100644 index 0000000..db6709e --- /dev/null +++ b/servers/sunstreaker/.env.example @@ -0,0 +1,19 @@ +# ============================================ +# Variables spécifiques au serveur principal +# Copier en servers/principal/.env +# ============================================ + +# --- Jellyfin --- +JELLYFIN_PORT=8096 + +# --- Sonarr / Radarr / etc. --- +SONARR_PORT=8989 +RADARR_PORT=7878 + +# --- Forgejo --- +FORGEJO_PORT=3000 +FORGEJO_DB_PASSWORD= + +# --- Pocket-ID (si hébergé sur ce serveur) --- +POCKET_ID_DB_PASSWORD= +POCKET_ID_ENCRYPTION_KEY= \ No newline at end of file diff --git a/servers/sunstreaker/radarr/compose.yaml b/servers/sunstreaker/radarr/compose.yaml new file mode 100644 index 0000000..b7e6b58 --- /dev/null +++ b/servers/sunstreaker/radarr/compose.yaml @@ -0,0 +1,28 @@ +services: + radarr: + image: linuxserver/radarr:6.4.4 + container_name: radarr + volumes: + # Config + - ${APPDATA}/radarr:/config + # Media + - ${MEDIADIR}/movies:/movies + environment: + PUID: ${PUID} + PGID: ${PGID} + TZ: ${TZ} + labels: + - "traefik.enable=true" + - "traefik.http.routers.radarr.rule=Host(`radarr.${LOCAL_DOMAIN}`)" + - "traefik.http.routers.radarr.entrypoints=https" + - "traefik.http.routers.radarr.tls=true" + - "traefik.http.services.radarr.loadbalancer.server.port=7878" + - "traefik.http.routers.radarr.middlewares=redirect-to-https@file" + networks: + - proxy + restart: unless-stopped + +networks: + proxy: + external: true + name: ${PROXY_NETWORK:-proxy} \ No newline at end of file diff --git a/servers/sunstreaker/sonarr/compose.yaml b/servers/sunstreaker/sonarr/compose.yaml new file mode 100644 index 0000000..130b1da --- /dev/null +++ b/servers/sunstreaker/sonarr/compose.yaml @@ -0,0 +1,28 @@ +services: + sonarr: + image: linuxserver/sonarr:4.0.20 + container_name: sonarr + volumes: + # Config + - ${APPDATA}/sonarr:/config + # Media + - ${MEDIADIR}/shows:/tv + environment: + PUID: ${PUID} + PGID: ${PGID} + TZ: ${TZ} + labels: + - "traefik.enable=true" + - "traefik.http.routers.sonarr.rule=Host(`sonarr.${LOCAL_DOMAIN}`)" + - "traefik.http.routers.sonarr.entrypoints=https" + - "traefik.http.routers.sonarr.tls=true" + - "traefik.http.services.sonarr.loadbalancer.server.port=8989" + - "traefik.http.routers.sonarr.middlewares=redirect-to-https@file" + networks: + - proxy + restart: unless-stopped + +networks: + proxy: + external: true + name: ${PROXY_NETWORK:-proxy} \ No newline at end of file