Aller au contenu
Cloud
Blog
Cloud12 min

Collabora + Nextcloud sur Kubernetes avec Hikube

Matthieu Robin18 février 2022

Introduction : Une alternative souveraine à Google Workspace et Microsoft 365

Nextcloud s'est établi comme la solution de référence pour l'auto-hébergement collaboratif. Au-delà du simple stockage de fichiers, Nextcloud offre une suite complète de services : calendrier, contacts, gestion de tâches, et communication en temps réel. En y intégrant Collabora Online, vous bénéficiez d'une suite bureautique complète avec édition collaborative de documents.

Pour les organisations soucieuses de souveraineté des données et de conformité RGPD, cette combinaison représente une alternative robuste à Google Workspace ou Microsoft 365. Et lorsque vous la déployez sur Kubernetes via Hikube, vous accédez à la scalabilité, la résilience et la flexibilité que seule l'orchestration de conteneurs peut offrir.

Ce guide vous accompagne dans le déploiement de cette architecture sur Hikube, la plateforme Kubernetes managée de Hidora.

Pourquoi Kubernetes pour Nextcloud + Collabora ?

Trois raisons principales motivent un déploiement Kubernetes plutôt qu'une simple instance de machine virtuelle.

Scalabilité élastique

Avec Kubernetes, vous dimensionnez vos ressources selon la demande. Les pods Nextcloud et Collabora se répliquent horizontalement. Lors d'une augmentation du trafic, de nouveaux pods démarrent automatiquement. Une fois le pic passé, ils se réduisent. Vous payez uniquement pour les ressources consommées.

Résilience et haute disponibilité

Kubernetes s'assure que vos services restent disponibles même en cas de défaillance de nœud. Les pods sont redémarrés automatiquement. Les mises à jour s'effectuent sans interruation de service grâce aux stratégies de rolling update. Vos données critiques de collaboration ne connaissent pas d'interruption.

Gestion simplifiée des mises à jour

Grâce aux Helm charts, les mises à jour de Nextcloud et Collabora deviennent prévisibles et testables. Vous contrôlez précisément les versions déployées et pouvez revenir à une version antérieure en quelques secondes si nécessaire.

Architecture déployée sur Hikube

Voici les composants de notre architecture Kubernetes :

Tier frontal

  • Ingress Controller : Gère l'accès HTTP/HTTPS externe avec certificats TLS automatisés
  • Nextcloud Pods : Replicas multiples pour l'équilibreur de charge
  • Collabora Online Pods : Service d'édition documentaire scalable

Tier applicatif

  • Service Nextcloud : ClusterIP exposant les replicas Nextcloud
  • Service Collabora : ClusterIP pour la communication intra-cluster
  • ConfigMaps : Stockage des configurations Nextcloud
  • Secrets : Données sensibles (identifiants, clés API)

Tier données

  • PostgreSQL StatefulSet : Base de données relationnelle avec persistance
  • Redis Cache : Améliore les performances de sessions et mise en cache
  • Persistent Volumes (PV) : Stockage des fichiers Nextcloud
  • Persistent Volumes Claims (PVC) : Demandes de stockage pour les données

Hidora fournit les Persistent Volumes managés sur son infrastructure de stockage distribuée, garantissant durabilité et résilience.

Déploiement via Helm charts

Helm est le gestionnaire de paquets Kubernetes. Les Helm charts encapsulent toute la configuration nécessaire.

Installation des prérequis

Commencez par initialiser votre contexte Hikube :

kubectl config use-context hikube-cluster
kubectl create namespace nextcloud

Ajout des dépôts Helm

helm repo add nextcloud https://nextcloud.github.io/helm/
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

Configuration des valeurs Helm

Créez un fichier values-nextcloud.yaml :

replicaCount: 3

image:
  repository: nextcloud
  tag: "28.0"

nextcloud:
  host: nextcloud.votre-domaine.ch
  username: admin
  password: changez-moi
  
persistence:
  enabled: true
  storageClass: "hikube-fast"
  size: 100Gi

redis:
  enabled: true
  auth:
    enabled: true
    password: redis-secure-password

postgresql:
  enabled: true
  postgresqlPassword: postgres-secure-password
  primary:
    persistence:
      enabled: true
      size: 50Gi

ingress:
  enabled: true
  className: nginx
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
  hosts:
    - host: nextcloud.votre-domaine.ch
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: nextcloud-tls
      hosts:
        - nextcloud.votre-domaine.ch

Déploiement Nextcloud

helm install nextcloud nextcloud/nextcloud \
  -n nextcloud \
  -f values-nextcloud.yaml

Configuration de Collabora Online

Pour Collabora Online, utilisez le chart officiel :

helm repo add collabora https://collaboraonline.github.io/helm-collabora-online
helm repo update

Fichier values-collabora.yaml :

replicaCount: 2

image:
  tag: "24.04"

persistence:
  enabled: true
  size: 20Gi

resources:
  limits:
    cpu: 2000m
    memory: 2Gi
  requests:
    cpu: 1000m
    memory: 1Gi

ingress:
  enabled: true
  className: nginx
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
  hosts:
    - host: collabora.votre-domaine.ch
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: collabora-tls
      hosts:
        - collabora.votre-domaine.ch

Déploiement :

helm install collabora collabora/collabora-online \
  -n nextcloud \
  -f values-collabora.yaml

Bonnes pratiques de déploiement

Un déploiement réussi va au-delà de la simple installation. Voici les pratiques que nous recommandons systématiquement à nos clients Hikube.

Séparer les secrets de la configuration. Ne stockez jamais les mots de passe directement dans vos fichiers values.yaml. Utilisez un gestionnaire de secrets comme Sealed Secrets ou External Secrets Operator pour injecter les credentials depuis un vault sécurisé. Sur Hikube, vous pouvez connecter directement HashiCorp Vault ou utiliser les Kubernetes Secrets chiffrés au repos.

Définir des PodDisruptionBudgets. Pour garantir la disponibilité pendant les mises à jour ou les maintenances de nœuds, configurez un PDB qui empêche Kubernetes de supprimer trop de pods simultanément :

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: nextcloud-pdb
  namespace: nextcloud
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app.kubernetes.io/name: nextcloud

Configurer les health checks correctement. Nextcloud met plusieurs secondes à démarrer. Ajustez les probes pour éviter les redémarrages intempestifs :

livenessProbe:
  httpGet:
    path: /status.php
    port: 80
  initialDelaySeconds: 30
  periodSeconds: 15
  timeoutSeconds: 5
readinessProbe:
  httpGet:
    path: /status.php
    port: 80
  initialDelaySeconds: 15
  periodSeconds: 10

Activer les Network Policies. Limitez les communications réseau entre les pods. Collabora ne devrait communiquer qu'avec Nextcloud, et Nextcloud ne devrait accéder qu'à PostgreSQL et Redis. Toute autre communication doit être explicitement refusée.

Volumes persistants sur Hikube

Hikube propose plusieurs classes de stockage optimisées pour différents usages.

Pour les fichiers Nextcloud (lecture/écriture fréquente, haute disponibilité)

Utilisez hikube-fast, basée sur SSD répliquée avec protection contre les défaillances de nœud.

Pour PostgreSQL (accès séquentiel intense)

Utilisez hikube-general, offrant un bon équilibre performance/coût avec réplication.

Configuration des PVC

Hikube crée automatiquement les Persistent Volumes lors du lancement des Helm charts. Vous pouvez monitorer leur utilisation :

kubectl get pvc -n nextcloud
kubectl describe pvc nextcloud-nextcloud -n nextcloud

Pour augmenter la taille dynamiquement sans interruption :

kubectl patch pvc nextcloud-nextcloud -n nextcloud \
  -p '{"spec":{"resources":{"requests":{"storage":"200Gi"}}}}'

Configuration d'Ingress avec TLS

Hikube inclut un Ingress Controller Nginx et cert-manager pour les certificats Let's Encrypt automatiques.

Pour activer HTTPS :

kubectl apply -f - <<EOF
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: admin@votre-domaine.ch
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: nginx
EOF

Vérifiez les certificats :

kubectl get certificate -n nextcloud

Scaling et optimisation des performances

Scaling horizontal

Ajustez les replicas Nextcloud selon votre charge :

kubectl scale deployment nextcloud --replicas=5 -n nextcloud

Ou via Helm :

helm upgrade nextcloud nextcloud/nextcloud \
  -n nextcloud \
  --set replicaCount=5 \
  -f values-nextcloud.yaml

Autoscaling avec HPA

Pour une scalabilité automatique basée sur la charge CPU :

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: nextcloud-hpa
  namespace: nextcloud
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nextcloud
  minReplicas: 3
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70

Optimisation des ressources

Pour une collaboration optimal, Hikube vous permet d'ajuster les limites de ressources :

kubectl set resources deployment nextcloud \
  --limits=cpu=2,memory=2Gi \
  --requests=cpu=500m,memory=512Mi \
  -n nextcloud

Collabora Online, gourmand en ressources pour l'édition, bénéficie de 2 CPU et 2 GB RAM minimum par pod.

Monitoring et observabilité

Un déploiement de production sans monitoring, c'est naviguer à l'aveugle. Voici comment mettre en place une observabilité complète pour votre stack Nextcloud + Collabora.

Métriques Prometheus

Nextcloud expose des métriques via l'endpoint /ocs/v2.php/apps/serverinfo/api/v1/info. Configurez un ServiceMonitor pour les collecter automatiquement :

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: nextcloud-monitor
  namespace: nextcloud
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: nextcloud
  endpoints:
  - port: http
    path: /ocs/v2.php/apps/serverinfo/api/v1/info
    interval: 60s

Les métriques essentielles à surveiller incluent le nombre d'utilisateurs actifs, l'espace de stockage utilisé, le nombre de fichiers partagés, et les performances de la base de données.

Alertes critiques

Configurez des alertes pour les situations qui nécessitent une intervention immédiate :

  • Espace disque PVC > 85% : les utilisateurs stockent beaucoup de fichiers, et un PVC plein provoque des erreurs d'écriture silencieuses
  • Pods Collabora en CrashLoopBackOff : l'édition collaborative est en panne, les utilisateurs ne peuvent plus modifier leurs documents
  • Latence PostgreSQL > 500ms : la base de données ralentit, probablement à cause de requêtes non optimisées ou d'un manque de ressources
  • Taux d'erreur HTTP 5xx > 1% : quelque chose ne fonctionne pas correctement côté serveur

Tableaux de bord Grafana

Créez un dashboard Grafana dédié qui affiche en temps réel l'état de santé de votre plateforme collaborative. Les panels les plus utiles incluent le nombre de sessions d'édition Collabora actives, l'utilisation CPU/mémoire par pod, le hit rate du cache Redis, et le lag de réplication PostgreSQL si vous utilisez un setup haute disponibilité.

Cette visibilité opérationnelle permet d'anticiper les problèmes avant qu'ils n'affectent les utilisateurs, et de justifier les décisions de scaling auprès de votre direction.

Conformité et souveraineté des données

RGPD et hébergement en Suisse

Vos données restent hébergées en Suisse sur l'infrastructure Hidora. Aucun tiers n'y accède. Vous contrôlez intégralement l'accès et les droits utilisateurs.

Sauvegardes et récupération

Hikube intègre les snapshots de volumes persistants. Configurez une politique de sauvegarde :

kubectl apply -f - <<EOF
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: nextcloud-backup
  namespace: nextcloud
spec:
  volumeSnapshotClassName: hikube-snapshoter
  source:
    persistentVolumeClaimName: nextcloud-nextcloud
EOF

Audit et logging

Activez les logs d'audit Hikube pour tracer tous les accès et modifications. Intégrez avec votre système SIEM pour une conformité continue.

Prochaines étapes et support

Le déploiement de Nextcloud avec Collabora Online sur Kubernetes demande expertise et attention aux détails. Configuration des certificats, optimisation des performances, gestion des volumes persistants, monitoring et scaling automatique constituent un ensemble technique non trivial.

Hikube simplifie l'infrastructure Kubernetes, mais la configuration applicative reste votre responsabilité. C'est où nos services de consulting et nos services managés apportent une valeur inestimable.

Hidora peut vous aider à :

  • Designer l'architecture optimale pour vos besoins de collaboration
  • Configurer et déployer Nextcloud + Collabora sur Hikube
  • Mettre en place la haute disponibilité et les sauvegardes
  • Optimiser les performances pour votre charge utilisateurs
  • Gérer les mises à jour sécurisées
  • Assurer la conformité RGPD et de souveraineté

Contactez notre équipe pour une consultation gratuite sur votre projet de collaboration souveraine.

Matthieu Robin
Matthieu Robin

CEO & Co-fondateur

Fondateur de Hidora, passionné par le cloud natif et la souveraineté numérique suisse. Plus de 15 ans dans l'écosystème cloud.

Cet article vous parle ?

Hidora peut vous accompagner sur ce sujet.

Besoin d'un accompagnement ?

Parlons de votre projet. 30 minutes, sans engagement.