diff --git a/roles/serveur_nextcloud/README.md b/roles/serveur_nextcloud/README.md new file mode 100644 index 0000000..699fe20 --- /dev/null +++ b/roles/serveur_nextcloud/README.md @@ -0,0 +1,25 @@ +# serveur_nextcloud — SQUELETTE (module Collaboration) + +> ⚠️ **Rôle en cours de construction.** `defaults` + `meta` + architecture sont posés. +> **`tasks/main.yml` attend le SPIKE empirique** — discipline « éprouver l'outil avant le rôle » : +> déployer Nextcloud + Collabora à la main sur un vrai nœud, **prouver** SSO OIDC + WOPI + fichiers, +> **puis** codifier. Écrire les tâches à l'aveugle = les bugs de 1er déploiement qu'on veut éviter. + +## Rôle dans l'offre +Cœur de l'offre **maison-obnl** (OBNL/coops) : fichiers, documents, agendas, contacts — le +remplaçant souverain de Google Workspace / Microsoft 365. + +## Architecture cible (motifs Set-OPS réutilisés) +- **BD** PostgreSQL via `resoudre_base` (base `nextcloud`, FQDN, secret en voûte) ; +- **Cache** Redis (verrous transactionnels, sessions) ; +- **SSO** OIDC via Keycloak (app `user_oidc`, realm de l'instance = `identite_realm`) ; +- **Édition documents** Collabora Online (rôle `serveur_collabora`, protocole WOPI) ; +- **TLS** cert step-ca + cert-sync, exposé `cloud.` derrière l'edge nginx ; +- **Sauvegarde** `client_backup` (données + BD = Tier 1). + +## Spike à mener (avant les tâches) +1. Un nœud `collab` (fonction à ajouter au plan + cloner). +2. Nextcloud (source/apt) + PHP-FPM + PostgreSQL + Redis ; `occ` config. +3. `user_oidc` branché sur Keycloak → prouver « Se connecter avec … ». +4. Collabora CODE + WOPI ↔ Nextcloud → prouver l'édition d'un .odt. +5. Sauvegarde/restauration prouvée. → **alors** on écrit `tasks/main.yml`. diff --git a/roles/serveur_nextcloud/defaults/main.yml b/roles/serveur_nextcloud/defaults/main.yml new file mode 100644 index 0000000..584bb96 --- /dev/null +++ b/roles/serveur_nextcloud/defaults/main.yml @@ -0,0 +1,42 @@ +--- +# ========================================================================= +# serveur_nextcloud — SQUELETTE (surface de config). Les tâches attendent le +# SPIKE empirique (déployer + prouver OIDC/WOPI/fichiers avant de codifier). +# Motifs Set-OPS réutilisés : BD via resoudre_base, SSO via Keycloak, TLS via +# cert-sync + edge, exposition dérivée, secrets en voûte. +# ========================================================================= +serveur_nextcloud_groupe: "serveur_nextcloud" +serveur_nextcloud_utilisateur: "www-data" + +# --- Base de données (dérivée par resoudre_base, comme keycloak/forgejo) --- +# Le plan déclare une base 'nextcloud' avec consommateur serveur_nextcloud. +serveur_nextcloud_db_host: "" # dérivé (FQDN) par resoudre_base +serveur_nextcloud_db_port: 5432 + +# --- Cache Redis (verrous + sessions) --- +serveur_nextcloud_redis_host: "localhost" +serveur_nextcloud_redis_port: 6379 + +# --- SSO OIDC (Keycloak, realm de l'instance) — app 'user_oidc' de Nextcloud --- +serveur_nextcloud_oidc_actif: true +serveur_nextcloud_oidc_client_id: "nextcloud" +serveur_nextcloud_oidc_client_secret: "{{ vault_nextcloud_oidc | default('') }}" +serveur_nextcloud_oidc_realm: "{{ identite_realm | default('chezlepro') }}" +serveur_nextcloud_oidc_base: "https://keycloak.{{ domaine_interne }}/realms/{{ serveur_nextcloud_oidc_realm }}/protocol/openid-connect" + +# --- Exposition (derrière l'edge nginx, TLS terminé à l'edge) --- +serveur_nextcloud_hostname: "cloud.{{ domaine_interne }}" +serveur_nextcloud_http_addr: "127.0.0.1" +serveur_nextcloud_http_port: 8081 + +# --- Collabora Online (édition de documents, protocole WOPI) --- +serveur_nextcloud_collabora_url: "https://bureau.{{ domaine_interne }}" + +# --- Données + admin --- +serveur_nextcloud_data_dir: "/var/lib/nextcloud/data" +serveur_nextcloud_admin_user: "admin" +serveur_nextcloud_admin_password: "{{ vault_nextcloud_admin | default('') }}" # voûte + +# Domaines de confiance (trusted_domains) : le hostname exposé + localhost. +serveur_nextcloud_trusted_domains: + - "{{ serveur_nextcloud_hostname }}" diff --git a/roles/serveur_nextcloud/meta/empreinte.yml b/roles/serveur_nextcloud/meta/empreinte.yml new file mode 100644 index 0000000..58475c0 --- /dev/null +++ b/roles/serveur_nextcloud/meta/empreinte.yml @@ -0,0 +1,6 @@ +--- +# Empreinte de dimensionnement du logiciel (propriété du rôle). Additionnée au socle SE +# par scripts/inventory_rules.py. Nextcloud + PHP-FPM : mémoire modérée, disque data croissant. +coeurs: 2 +memoire_mo: 2048 +disque_go: 20