Set-OPS-Public/roles/serveur_nextcloud/tasks/main.yml
Daniel Allaire 79d0529686 serveur_nextcloud : rôle codifié depuis le spike (13 gotchas encodés)
Maison numérique souveraine (offres maison-obnl + cabinet). Tâches découpées :
paquets → php (512M + TLS PG) → install (occ, PG verify-full) → exposition
(vhost .mjs) → configure (overwrite/redis/anti-SSRF/import CA) → OIDC user_oidc
→ Collabora richdocuments (WOPI split URL) → thème Alliance (ciel étoilé).

Chaque réglage encode un piège prouvé sur collab-01 : imagick Debian 13,
PGSSLMODE dans php-fpm, MIME .mjs, allow_local_remote_servers (SSRF), import
root step-ca, memory_limit 512M, public_wopi_url après activate-config…

Version épinglée (robustesse). ansible-lint profil production : 0 échec.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 15:00:39 -04:00

47 lines
1.7 KiB
YAML

---
- name: Exiger les secrets Nextcloud (Vault)
ansible.builtin.assert:
that:
- serveur_nextcloud_admin_password | length > 0
- (not (serveur_nextcloud_oidc_actif | bool)) or (serveur_nextcloud_oidc_client_secret | length > 0)
fail_msg: "vault_nextcloud_admin (et vault_nextcloud_oidc si OIDC actif) sont requis (Ansible Vault)."
- name: Resoudre la base de donnees depuis le registre (role partage)
ansible.builtin.include_role:
name: resoudre_base
vars:
resoudre_base_groupe: "{{ serveur_nextcloud_groupe }}"
- name: Adopter les facts de base pour Nextcloud
ansible.builtin.set_fact:
serveur_nextcloud_db_password: "{{ resoudre_base_db_password }}"
serveur_nextcloud_db_host: "{{ resoudre_base_db_host }}"
serveur_nextcloud_db_port: "{{ resoudre_base_db_port }}"
no_log: true
- name: Paquets (PHP-FPM + extensions, nginx, redis)
ansible.builtin.import_tasks: paquets.yml
- name: PHP (tuning 512M + TLS PG pour php-fpm)
ansible.builtin.import_tasks: php.yml
- name: Installation Nextcloud (tarball + occ maintenance:install)
ansible.builtin.import_tasks: installer.yml
- name: Exposition (vhost nginx local, MIME .mjs)
ansible.builtin.import_tasks: exposition.yml
- name: Configuration (trusted_proxies, overwrite, redis, CA, anti-SSRF)
ansible.builtin.import_tasks: configurer.yml
- name: SSO OIDC (Keycloak, app user_oidc)
ansible.builtin.import_tasks: oidc.yml
when: serveur_nextcloud_oidc_actif | bool
- name: Collabora / Office (app richdocuments, WOPI)
ansible.builtin.import_tasks: collabora.yml
when: serveur_nextcloud_office_actif | bool
- name: Identite visuelle Alliance Boreale (theme + ciel etoile)
ansible.builtin.import_tasks: theme.yml
when: serveur_nextcloud_branding | bool