Configurazione di Nextcloud su Kubernetes: la procedura

Se desideri configurare Nextcloud su Kubernetes, ti consigliamo di utilizzare S3 come back end di archiviazione e MariaDB come database. Per ottimizzare le prestazioni dovrai apportare alcune modifiche alla configurazione.

Nextcloud e Kubernetes: una combinazione vantaggiosa

La combinazione tra Nextcloud e Kubernetes con S3 come back end di archiviazione è una soluzione promettente in molti casi di utilizzo in ambito privato e professionale. Il software cloud non commerciale è indicato per lavorare sia con server locali sia con host esterni e si distingue anche nel confronto con numerose alternative a Nextcloud per la sua eccellente architettura di sicurezza. Kubernetes è un sistema di gestione open source per applicazioni containerizzate e può essere utilizzato sia per uso locale sia per il cloud computing. Il sistema è considerato estremamente flessibile, molto scalabile e sicuro in caso di anomalie. Nei prossimi paragrafi ti spieghiamo come configurare Nextcloud su Kubernetes.

Consiglio

Vuoi utilizzare Nextcloud con Docker? Nella nostra Digital Guide trovi istruzioni dettagliate su come farlo. Per te abbiamo compilato anche istruzioni per l’installazione di Nextcloud su Ubuntu 22.04 e la relativa procedura per l’installazione di Nextcloud su Debian 12.

Quali sono i requisiti da soddisfare?

Prima di iniziare a configurare Nextcloud su Kubernetes devi soddisfare alcuni requisiti. È necessario uno spazio di archiviazione sufficiente e aver già creato un cluster Kubernetes. Puoi scegliere di crearlo sulla tua macchina locale oppure di utilizzare uno spazio di archiviazione cloud: la scelta dipende dalle risorse che ti servono o di cui disponi. Inoltre, è necessario aver configurato anche il manager di pacchetti Helm per Kubernetes. Se tutti i requisiti sono soddisfatti, puoi dare inizio alla procedura.

Configurazione di Nextcloud su Kubernetes: i passaggi principali

Una volta creata la base adatta, puoi iniziare a configurare la combinazione di Nextcloud e Kubernetes. Abbiamo riassunto i passaggi principali nei paragrafi seguenti.

Configurazione del DNS

Come primo passaggio, crea un record A per un sottodominio che rimandi all’indirizzo IP da te desiderato. Se utilizzi la soluzione in locale, la destinazione corretta è il tuo indirizzo IP pubblico; in caso contrario, inserisci l’IP che ti viene fornito dal tuo servizio cloud. A seconda del provider DNS, i passaggi qui descritti possono cambiare leggermente.

Aggiunta e aggiornamento di Helm

Kubernetes è distribuito per mezzo del manager di pacchetti Helm sopra menzionato, che deve essere installato sul tuo client. Inoltre, avrai bisogno di un collegamento con il tuo cluster Kubernetes. Se è già presente, aggiungi il repository di Helm e aggiornalo. A tal fine utilizza i due comandi seguenti:

helm repo add nextcloud https://nextcloud.github.io/helm/
helm repo update
shell

Creazione di values.yaml

Ora crea un nuovo grafico Helm con il seguente comando:

nano values.yaml
shell

Quindi inserisci le seguenti specifiche in questo file.

Creazione di cronjob

Per prima cosa, definisci un limite di tempo per i cronjob. Si tratta di attività su sistemi operativi di tipo Unix che vengono eseguite e ripetute automaticamente in background. Nel caso di Nextcloud su Kubernetes sono soprattutto operazioni di manutenzione. Nel nostro esempio scegliamo di eseguirli ogni cinque minuti. Nel caso di volumi di dati particolarmente grandi può essere invece necessaria una manutenzione più frequente. Il codice da utilizzare è il seguente:

cronjob:
    annotations: {}
    curlInsecure: false
    enabled: true
    failedJobsHistoryLimit: 5
    image: {}
    schedule: '*/5*     *** '
    successfulJobsHistoryLimit: 2
shell

Disattivazione dell’HPA

Ora devi disattivare l’HPA (Horizontal Pod Autoscaler). La sua funzione è scalare automaticamente il numero di pod. Se utilizzi ReadWriteOnce per Nextcloud e non vuoi controllare da solo la scalabilità, ti consigliamo di disattivare l’HPA e di concentrarti quindi su un singolo pod. Questa è di gran lunga la soluzione più comoda se il numero di utenti che desiderano accedere ai dati è ridotto. Il codice per farlo si presenta così:

hpa:
    cputhreshold: 60
    enabled: false
    maxPods: 10
    minPods: 1
shell

Sovrascrittura del tag immagine

Per assicurarti di utilizzare la versione di Helm più recente, sovrascrivi il tag immagine. Utilizza il codice seguente:

image:
    repositor: nextcloud
    tag: 28.0.2-apache
    pullPolicy: IfNotPresent
shell

Verrà quindi selezionata la versione 28.0.2 o una versione più recente.

Selezione del database

Per il database puoi scegliere fra tre opzioni: MariaDB, PostgreSQL o Sqlite. Per il nostro esempio scegliamo di utilizzare MariaDB. Utilizza la procedura seguente per configurare questo database e tralasciare gli altri due sistemi.

internalDatabase:
    enabled: false
mariadb:
    db:
        name: nextcloud
        password: db-password
        user: nextcloud
    enabled: true
    master:
        persistence:
            accessMode: ReadWriteOnce
            enabled: true
            size: 8Gi
    replication:
        enabled: false
    rootUser:
        password: root-db-password
        forcePassword: true
postgresql:
    enabled: false
shell

Monitoraggio delle metriche

Se desideri effettuare un monitoraggio con Prometheus o Grafana, inserisci il codice seguente. Questo passaggio è facoltativo.

metrics:
    enabled: true
    https: false
    image:
        pullPolicy: IfNotPresent
        repository: xperimental/nextcloud-exporter
        tag: v0.3.0
    replicaCount: 1
    service:
        annotations:
            prometheus.io/port: '9205'
            prometheus.io/scrape: 'true'
        labels: {}
        type: ClusterIP
    timeout: 5s
shell
Managed Kubernetes
Orchestrazione sicura dei carichi di lavoro dei container
  • Configurazione automatica dei cluster Kubernetes
  • Archiviazione persistente completamente integrata
  • Assistenza clienti 24/7

Permesso per file di configurazione personali

Come impostazione predefinita, Nextcloud utilizza anche su Kubernetes un file di nome config.php per la configurazione. Se vuoi semplificare o rendere più flessibile la configurazione, puoi inserire un file di configurazione personalizzato. Per farlo, utilizza il seguente codice:

nextcloud:
    configs:
        custom.config.php: |-
            <?php
            $CONFIG = array (
                'overwriteprotocol' => 'https',
                'overwrite.cli.url' => 'https://drive.esempio.com',
                'filelocking.enabled' => 'true',
                'loglevel' => '2',
                'enable_previews' => true,
                'trusted_domains' =>
                     [
                        'nextcloud',
                        'drive.esempio.com'
                     ]
            );
shell

Sostituisci il segnaposto “esempio.com” con il tuo dominio personalizzato.

Configurazione di Redis

Il prossimo file di configurazione viene implementato per migliorare il caching con Redis e quindi le prestazioni complessive. Come impostazione predefinita, Helm installa Redis senza protezione tramite password. Tuttavia, è consigliabile aggiungere un’ulteriore protezione, anche perché permette di evitare futuri problemi in fase di login. Inserisci quindi questo codice:

redis.config.php: |-
    <?php
    $CONFIG = array (
      'memcache.local' => '\\OC\\Memcache\\Redis',
      'memcache.distributed' => '\OC\Memcache\Redis',
      'memcache.locking' => '\OC\Memcache\Redis',
      'redis' => array(
        'host' => getenv('REDIS_HOST'),
        'port' => getenv('REDIS_HOST_PORT') ?: 6379,
        'password' => getenv('la-tua-password-per-redis')
      )
    );
shell

Configurazione del back end di archiviazione

L’ultimo file di configurazione da aggiungere serve per il back end di archiviazione S3. Queste sono le righe da inserire nel codice:

s3.config.php: |-
    <?php
    $CONFIG = array (
      'objectstore' => array(
        'class' => '\\OC\\Files\\ObjectStore\\S3',
        'arguments' => array(
        'bucket'     => 'bucket-name',
        'autocreate' => true,
        'key'      => 's3-access-key',
        'secret'     => 's3-secret-key',
        'region'     => 's3-region',
        'hostname'   => 's3-endpoint',
        'use_ssl'    => true,
        'use_path_style' => true
        )
      )
    );
shell
IONOS Object Storage
Archiviazione sicura e a prezzi vantaggiosi

Archivia i tuoi dati in tutta sicurezza sui nostri server, e proteggili dagli accessi non autorizzati.

Disattivazione della configurazione di Redis

Poiché nei passaggi precedenti hai sovrascritto la configurazione predefinita per Redis, ora devi disattivarla per evitare che si verifichino errori. Il codice per farlo è questo:

defaultConfigs:
    .htaccess: true
    apache-pretty-urls.config.php: true
    apcu.config.php: true
    apps.config.php: true
    autoconfig.php: false
    redis.config.php: false
    smtp.config.php: true
shell

Definizione di host, admin e password

A questo punto devi definire l’host, l’amministratore e la relativa password per l’utilizzo di Nextcloud su Kubernetes. Utilizza il codice seguente:

host: drive.esempio.com
password: tua-password
username: nome-amministratore
shell

Sostituisci quindi i segnaposti con i tuoi dati personalizzati.

Configurazione di notifiche per e-mail

È possibile impostare un servizio SMTP (Simple Mail Transfer Protocol) per ricevere notifiche da Nextcloud. A tal fine utilizza il codice seguente:

mail:
    domain: esempio.com
    enabled: false
    fromAddress: user
    smtp:
      authtype: LOGIN
      host: esempio.com
      name: username
      password: tua-password
      port: 465
      secure: ssl
shell

Impostazione per l’unità persistente

La seguente configurazione persistente è pensata per i dati che Nextcloud archivia sull’apposito supporto di memorizzazione. Non riguarda i tuoi dati utente, che sono memorizzati su S3 in modo pianificato.

persistence:
    accessMode: ReadWriteOnce
    annotations: {}
    enabled: true
    size: 8Gi
shell

Protezione tramite password per Redis

È consigliabile proteggere Redis con una password, che permette inoltre di prevenire errori in fase di autenticazione. Il codice per farlo è il seguente e devi inserire la tua password personale nella relativa posizione:

redis:
    enabled: true
    password: 'la-tua-password-per-redis'
    usePassword: true
shell

Limitazione delle repliche

Poiché nei passaggi precedenti hai già disattivato l’HPA, ora devi limitare il numero di repliche possibili a 1. L’istruzione è la seguente:

replicaCount: 1
shell

Installazione di Nextcloud su Kubernetes

Per finire, installa Nextcloud su Kubernetes e aggiungi anche MariaDB e Redis. Il comando è il seguente:

kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloud
shell
Managed Nextcloud di IONOS Cloud
Lavora con il tuo team sul cloud
  • Massima sicurezza dei tuoi dati
  • Strumenti di collaborazione per lavorare in team
  • Aggiornamenti automatici
Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top