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.
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
shellCreazione di values.yaml
Ora crea un nuovo grafico Helm con il seguente comando:
nano values.yaml
shellQuindi 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
shellDisattivazione 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
shellSovrascrittura 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
shellVerrà 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
shellMonitoraggio 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- 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'
]
);
shellSostituisci 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')
)
);
shellConfigurazione 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
)
)
);
shellArchivia 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
shellDefinizione 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
shellSostituisci 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
shellImpostazione 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
shellProtezione 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
shellLimitazione 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
shellInstallazione 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- Massima sicurezza dei tuoi dati
- Strumenti di collaborazione per lavorare in team
- Aggiornamenti automatici