Se desideri con­fi­gu­ra­re Nextcloud su Ku­ber­ne­tes, ti con­si­glia­mo di uti­liz­za­re S3 come back end di ar­chi­via­zio­ne e MariaDB come database. Per ot­ti­miz­za­re le pre­sta­zio­ni dovrai apportare alcune modifiche alla con­fi­gu­ra­zio­ne.

Nextcloud e Ku­ber­ne­tes: una com­bi­na­zio­ne van­tag­gio­sa

La com­bi­na­zio­ne tra Nextcloud e Ku­ber­ne­tes con S3 come back end di ar­chi­via­zio­ne è una soluzione pro­met­ten­te in molti casi di utilizzo in ambito privato e pro­fes­sio­na­le. Il software cloud non com­mer­cia­le è indicato per lavorare sia con server locali sia con host esterni e si distingue anche nel confronto con numerose al­ter­na­ti­ve a Nextcloud per la sua ec­cel­len­te ar­chi­tet­tu­ra di sicurezza. Ku­ber­ne­tes è un sistema di gestione open source per ap­pli­ca­zio­ni con­tai­ne­riz­za­te e può essere uti­liz­za­to sia per uso locale sia per il cloud computing. Il sistema è con­si­de­ra­to estre­ma­men­te fles­si­bi­le, molto scalabile e sicuro in caso di anomalie. Nei prossimi paragrafi ti spie­ghia­mo come con­fi­gu­ra­re Nextcloud su Ku­ber­ne­tes.

Consiglio

Vuoi uti­liz­za­re Nextcloud con Docker? Nella nostra Digital Guide trovi istru­zio­ni det­ta­glia­te su come farlo. Per te abbiamo compilato anche istru­zio­ni per l’in­stal­la­zio­ne di Nextcloud su Ubuntu 22.04 e la relativa procedura per l’in­stal­la­zio­ne di Nextcloud su Debian 12.

Quali sono i requisiti da sod­di­sfa­re?

Prima di iniziare a con­fi­gu­ra­re Nextcloud su Ku­ber­ne­tes devi sod­di­sfa­re alcuni requisiti. È ne­ces­sa­rio uno spazio di ar­chi­via­zio­ne suf­fi­cien­te e aver già creato un cluster Ku­ber­ne­tes. Puoi scegliere di crearlo sulla tua macchina locale oppure di uti­liz­za­re uno spazio di ar­chi­via­zio­ne cloud: la scelta dipende dalle risorse che ti servono o di cui disponi. Inoltre, è ne­ces­sa­rio aver con­fi­gu­ra­to anche il manager di pacchetti Helm per Ku­ber­ne­tes. Se tutti i requisiti sono sod­di­sfat­ti, puoi dare inizio alla procedura.

Con­fi­gu­ra­zio­ne di Nextcloud su Ku­ber­ne­tes: i passaggi prin­ci­pa­li

Una volta creata la base adatta, puoi iniziare a con­fi­gu­ra­re la com­bi­na­zio­ne di Nextcloud e Ku­ber­ne­tes. Abbiamo riassunto i passaggi prin­ci­pa­li nei paragrafi seguenti.

Con­fi­gu­ra­zio­ne del DNS

Come primo passaggio, crea un record A per un sot­to­do­mi­nio che rimandi all’indirizzo IP da te de­si­de­ra­to. Se utilizzi la soluzione in locale, la de­sti­na­zio­ne 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 leg­ger­men­te.

Aggiunta e ag­gior­na­men­to di Helm

Ku­ber­ne­tes è di­stri­bui­to per mezzo del manager di pacchetti Helm sopra men­zio­na­to, che deve essere in­stal­la­to sul tuo client. Inoltre, avrai bisogno di un col­le­ga­men­to con il tuo cluster Ku­ber­ne­tes. Se è già presente, aggiungi il re­po­si­to­ry di Helm e ag­gior­na­lo. 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 spe­ci­fi­che 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 au­to­ma­ti­ca­men­te in back­ground. Nel caso di Nextcloud su Ku­ber­ne­tes sono so­prat­tut­to ope­ra­zio­ni di ma­nu­ten­zio­ne. Nel nostro esempio scegliamo di eseguirli ogni cinque minuti. Nel caso di volumi di dati par­ti­co­lar­men­te grandi può essere invece ne­ces­sa­ria una ma­nu­ten­zio­ne più frequente. Il codice da uti­liz­za­re è il seguente:

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

Di­sat­ti­va­zio­ne dell’HPA

Ora devi di­sat­ti­va­re l’HPA (Ho­ri­zon­tal Pod Au­to­sca­ler). La sua funzione è scalare au­to­ma­ti­ca­men­te il numero di pod. Se utilizzi Read­W­ri­teOn­ce per Nextcloud e non vuoi con­trol­la­re da solo la sca­la­bi­li­tà, ti con­si­glia­mo di di­sat­ti­va­re l’HPA e di con­cen­trar­ti quindi su un singolo pod. Questa è di gran lunga la soluzione più comoda se il numero di utenti che de­si­de­ra­no accedere ai dati è ridotto. Il codice per farlo si presenta così:

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

So­vra­scrit­tu­ra del tag immagine

Per as­si­cu­rar­ti di uti­liz­za­re la versione di Helm più recente, so­vra­scri­vi il tag immagine. Utilizza il codice seguente:

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

Verrà quindi se­le­zio­na­ta la versione 28.0.2 o una versione più recente.

Selezione del database

Per il database puoi scegliere fra tre opzioni: MariaDB, Post­gre­SQL o Sqlite. Per il nostro esempio scegliamo di uti­liz­za­re MariaDB. Utilizza la procedura seguente per con­fi­gu­ra­re questo database e tra­la­scia­re 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

Mo­ni­to­rag­gio delle metriche

Se desideri ef­fet­tua­re un mo­ni­to­rag­gio con Pro­me­theus o Grafana, inserisci il codice seguente. Questo passaggio è fa­col­ta­ti­vo.

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 Ku­ber­ne­tes
Or­che­stra­zio­ne sicura dei carichi di lavoro dei container
  • Con­fi­gu­ra­zio­ne au­to­ma­ti­ca dei cluster Ku­ber­ne­tes
  • Ar­chi­via­zio­ne per­si­sten­te com­ple­ta­men­te integrata
  • As­si­sten­za clienti 24/7

Permesso per file di con­fi­gu­ra­zio­ne personali

Come im­po­sta­zio­ne pre­de­fi­ni­ta, Nextcloud utilizza anche su Ku­ber­ne­tes un file di nome config.php per la con­fi­gu­ra­zio­ne. Se vuoi sem­pli­fi­ca­re o rendere più fles­si­bi­le la con­fi­gu­ra­zio­ne, puoi inserire un file di con­fi­gu­ra­zio­ne per­so­na­liz­za­to. 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

So­sti­tui­sci il se­gna­po­sto “esempio.com” con il tuo dominio per­so­na­liz­za­to.

Con­fi­gu­ra­zio­ne di Redis

Il prossimo file di con­fi­gu­ra­zio­ne viene im­ple­men­ta­to per mi­glio­ra­re il caching con Redis e quindi le pre­sta­zio­ni com­ples­si­ve. Come im­po­sta­zio­ne pre­de­fi­ni­ta, Helm installa Redis senza pro­te­zio­ne tramite password. Tuttavia, è con­si­glia­bi­le ag­giun­ge­re un’ulteriore pro­te­zio­ne, 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

Con­fi­gu­ra­zio­ne del back end di ar­chi­via­zio­ne

L’ultimo file di con­fi­gu­ra­zio­ne da ag­giun­ge­re serve per il back end di ar­chi­via­zio­ne 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 Cloud Object Storage
Ar­chi­via­zio­ne sicura e a prezzi van­tag­gio­si

Archivia i tuoi dati in tutta sicurezza sui nostri server, e pro­teg­gi­li dagli accessi non au­to­riz­za­ti.

Di­sat­ti­va­zio­ne della con­fi­gu­ra­zio­ne di Redis

Poiché nei passaggi pre­ce­den­ti hai so­vra­scrit­to la con­fi­gu­ra­zio­ne pre­de­fi­ni­ta per Redis, ora devi di­sat­ti­var­la per evitare che si ve­ri­fi­chi­no 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

De­fi­ni­zio­ne di host, admin e password

A questo punto devi definire l’host, l’am­mi­ni­stra­to­re e la relativa password per l’utilizzo di Nextcloud su Ku­ber­ne­tes. Utilizza il codice seguente:

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

So­sti­tui­sci quindi i se­gna­po­sti con i tuoi dati per­so­na­liz­za­ti.

Con­fi­gu­ra­zio­ne 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

Im­po­sta­zio­ne per l’unità per­si­sten­te

La seguente con­fi­gu­ra­zio­ne per­si­sten­te è pensata per i dati che Nextcloud archivia sull’apposito supporto di me­mo­riz­za­zio­ne. Non riguarda i tuoi dati utente, che sono me­mo­riz­za­ti su S3 in modo pia­ni­fi­ca­to.

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

Pro­te­zio­ne tramite password per Redis

È con­si­glia­bi­le pro­teg­ge­re Redis con una password, che permette inoltre di prevenire errori in fase di au­ten­ti­ca­zio­ne. 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

Li­mi­ta­zio­ne delle repliche

Poiché nei passaggi pre­ce­den­ti hai già di­sat­ti­va­to l’HPA, ora devi limitare il numero di repliche possibili a 1. L’istru­zio­ne è la seguente:

replicaCount: 1
shell

In­stal­la­zio­ne di Nextcloud su Ku­ber­ne­tes

Per finire, installa Nextcloud su Ku­ber­ne­tes 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 col­la­bo­ra­zio­ne per lavorare in team
  • Ag­gior­na­men­ti au­to­ma­ti­ci
Vai al menu prin­ci­pa­le