# Πώς να εγκαταστήσετε το Nextcloud στο Kubernetes

Για να εγκαταστήσετε το Nextcloud στο Kubernetes, συνιστούμε να χρησιμοποιήσετε το S3 ως υποδομή αποθήκευσης και το MariaDB ως βάση δεδομένων. Μπορείτε να βελτιώσετε την απόδοση με μερικές αλλαγές στη διαμόρφωση.

## Το Nextcloud και το Kubernetes αποτελούν έναν εξαιρετικό συνδυασμό

Ο συνδυασμός του [Nextcloud](https://www.ionos.com/el-gr/digitalguide/diakomistis/ergaleia/ti-einai-to-nextcloud/) και του Kubernetes με το S3 για αποθήκευση αποτελεί μια πολλά υποσχόμενη λύση στον ιδιωτικό και επιχειρηματικό τομέα. Το **μη εμπορικό λογισμικό cloud** είναι κατάλληλο τόσο για χρήση με τοπικούς διακομιστές όσο και με εξωτερικούς κεντρικούς υπολογιστές και διαθέτει μια εξαιρετική αρχιτεκτονική ασφάλειας σε σύγκριση με πολλές εναλλακτικές λύσεις του Nextcloud. Το Kubernetes είναι ένα σύστημα διαχείρισης ανοιχτού κώδικα για εφαρμογές κοντέινερ και μπορεί να χρησιμοποιηθεί για υπολογιστικό νέφος, εκτός από την τοπική χρήση. Το σύστημα θεωρείται **ευέλικτο, εξαιρετικά επεκτάσιμο και ανθεκτικό σε σφάλματα**. Διαβάστε παρακάτω για να μάθετε πώς να ρυθμίσετε το Nextcloud στο Kubernetes.

Tip Για να χρησιμοποιήσετε το Nextcloud με το Docker, ανατρέξτε στις αναλυτικές οδηγίες που περιλαμβάνονται στον Ψηφιακό Οδηγό μας. Έχουμε επίσης περιγράψει τα αντίστοιχα βήματα για [την εγκατάσταση του Nextcloud στο Ubuntu 22.04](https://www.ionos.com/el-gr/digitalguide/diakomistis/rythmiseis/nextcloud-ubuntu-2204/).

## Ποιες προϋποθέσεις πρέπει να πληρούνται;

Προτού ξεκινήσετε την εγκατάσταση του Nextcloud στο Kubernetes, πρέπει να πληρούνται ορισμένες προϋποθέσεις. Χρειάζεστε επαρκή χώρο αποθήκευσης και θα πρέπει να έχετε ήδη δημιουργήσει ένα σύμπλεγμα Kubernetes. Μπορείτε να επιλέξετε να το δημιουργήσετε στον τοπικό σας υπολογιστή ή να χρησιμοποιήσετε αποθηκευτικό χώρο στο cloud, ανάλογα με τη διαθέσιμη χωρητικότητα. Επιπλέον, βεβαιωθείτε ότι ο **διαχειριστής πακέτων Helm** έχει ρυθμιστεί για το Kubernetes. Μόλις είστε έτοιμοι, μπορείτε να προχωρήσετε στα βήματα.

## Πώς να εγκαταστήσετε το Nextcloud στο Kubernetes βήμα προς βήμα

Μόλις δημιουργήσετε το κατάλληλο περιβάλλον, μπορείτε να ξεκινήσετε την εγκατάσταση του Nextcloud στο Kubernetes. Τα βασικά βήματα συνοψίζονται στις παρακάτω ενότητες.

### Ρύθμιση παραμέτρων DNS

Το πρώτο βήμα είναι να δημιουργήσετε μια εγγραφή τύπου A για έναν υποτομέα που θα παραπέμπει στη διεύθυνση IP που επιθυμείτε. Εάν χρησιμοποιείτε την τοπική λύση, η δημόσια διεύθυνση IP σας είναι ο σωστός προορισμός· διαφορετικά, εισάγετε τη διεύθυνση IP που παρέχει η υπηρεσία cloud σας. Ανάλογα με τον πάροχο DNS, τα απαιτούμενα βήματα μπορεί να διαφέρουν ελαφρώς.

### Προσθήκη και ενημέρωση του Helm

Το Kubernetes αναπτύσσεται χρησιμοποιώντας τον διαχειριστή πακέτων Helm, ο οποίος θα πρέπει να είναι εγκατεστημένος στον υπολογιστή σας. Επιπλέον, βεβαιωθείτε ότι έχετε σύνδεση με το σύμπλεγμα Kubernetes σας. Εάν ναι, προσθέστε το αποθετήριο Helm και ενημερώστε το με τις ακόλουθες εντολές:

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

### Δημιουργήστε το αρχείο values.yaml

Τώρα δημιουργήστε ένα νέο διάγραμμα Helm με την ακόλουθη εντολή:

```shell
nano values.yaml
```

Στη συνέχεια, προσθέστε τις ακόλουθες προδιαγραφές σε αυτό το αρχείο.

### Ρύθμιση προγραμματισμένων εργασιών

Κατ’ αρχάς, ορίστε ένα **χρονικό όριο για τις εργασίες cron**. Σε λειτουργικά συστήματα τύπου Unix, οι εργασίες cron είναι εργασίες που εκτελούνται αυτόματα στο παρασκήνιο σε προγραμματισμένα χρονικά διαστήματα. Για το Nextcloud στο Kubernetes, πρόκειται κυρίως για εργασίες συντήρησης. Σε αυτό το παράδειγμα, ρυθμίζουμε την εργασία cron ώστε να εκτελείται κάθε πέντε λεπτά. Για μεγαλύτερους όγκους δεδομένων, ενδέχεται να συνιστάται πιο συχνή συντήρηση. Χρησιμοποιήστε τον ακόλουθο κώδικα:

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

### Ενεργοποίηση HPA

Τώρα, απενεργοποιήστε το Horizontal Pod Autoscaler (HPA), το οποίο προσαρμόζει αυτόματα τον αριθμό των pods. Εάν χρησιμοποιείτε το ReadWriteOnce για το Nextcloud και προτιμάτε να ελέγχετε τη κλιμάκωση χειροκίνητα, θα πρέπει να απενεργοποιήσετε το HPA και να επικεντρωθείτε σε ένα pod. Αυτή η προσέγγιση είναι πιο βολική αν μόνο λίγα άτομα χρειάζονται πρόσβαση. Ο κατάλληλος κώδικας είναι:

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

### Αντικατάσταση ετικέτας εικόνας

Για να διασφαλίσετε ότι θα ληφθεί υπόψη η τρέχουσα έκδοση του Helm, αντικαταστήστε την ετικέτα της εικόνας. Χρησιμοποιήστε τον παρακάτω κώδικα για να το κάνετε αυτό:

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

Έχει επιλεγεί η έκδοση 28.0.2 ή μια νεότερη έκδοση.

### Επιλογή βάσης δεδομένων

Έχετε τρεις επιλογές κατά την επιλογή της βάσης δεδομένων σας: MariaDB, PostgreSQL ή SQLite. Για το παράδειγμά μας, επιλέγουμε τη MariaDB. Ρυθμίστε αυτή τη βάση δεδομένων ως εξής και απενεργοποιήστε τα άλλα δύο συστήματα:

```shell
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
```

### Παρακολούθηση δεικτών

Για να πραγματοποιήσετε παρακολούθηση με το Prometheus ή το Grafana, εισάγετε τον παρακάτω κώδικα. Αυτό είναι προαιρετικό.

```shell
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
```

### Επιτρέψτε τη χρήση των δικών σας αρχείων ρυθμίσεων

Από προεπιλογή, το Nextcloud χρησιμοποιεί επίσης ένα αρχείο με το όνομα config.php για τη διαμόρφωση στο Kubernetes. Για να απλοποιήσετε ή να κάνετε αυτή τη διαδικασία πιο ευέλικτη, μπορείτε να εισαγάγετε τα δικά σας αρχεία διαμόρφωσης χρησιμοποιώντας τον παρακάτω κώδικα:

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

Αντικαταστήστε τον προσωρινό τίτλο «example.com» με το δικό σας domain.

### Ρύθμιση παραμέτρων του Redis

Για να βελτιώσετε την προσωρινή αποθήκευση με το Redis και να ενισχύσετε τη συνολική απόδοση, μπορείτε να συμπεριλάβετε ένα προσαρμοσμένο αρχείο ρυθμίσεων. Από προεπιλογή, το Helm Redis εγκαθίσταται χωρίς προστασία με κωδικό πρόσβασης, αλλά συνιστάται να προσθέσετε ένα επιπλέον επίπεδο ασφάλειας. Χρησιμοποιήστε τον παρακάτω κώδικα για να ρυθμίσετε το Redis με προστασία κωδικού πρόσβασης και να το ενσωματώσετε στο Nextcloud:

```shell
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('your-password-for-redis')
      )
    );
```

### Ρύθμιση παραμέτρων του backend αποθήκευσης

Το τελευταίο αρχείο ρυθμίσεων έχει προστεθεί για το σύστημα αποθήκευσης S3. Αποθηκεύεται στον κώδικα ως εξής:

```shell
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
        )
      )
    );
```

### Απενεργοποίηση της διαμόρφωσης του Redis

Δεδομένου ότι παραπάνω έχετε αντικαταστήσει την προεπιλεγμένη ρύθμιση για το Redis, πρέπει τώρα να την απενεργοποιήσετε για να αποφύγετε σφάλματα, χρησιμοποιώντας τον παρακάτω κώδικα:

```shell
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
```

### Ορισμός ονόματος διακομιστή, διαχειριστή και κωδικού πρόσβασης

Τώρα εισάγετε τον κεντρικό υπολογιστή, τον διαχειριστή και τον αντίστοιχο κωδικό πρόσβασης για τη χρήση του Nextcloud στο Kubernetes. Χρησιμοποιήστε τον παρακάτω κώδικα:

```shell
host: drive.example.com
password: your-password
username: name-of-admin
```

Αντικαταστήστε τα σύμβολα κράτησης θέσης με τα δικά σας στοιχεία.

### Ρύθμιση ειδοποιήσεων μέσω email

Προαιρετικά, μπορείτε να ρυθμίσετε μια υπηρεσία SMTP (Simple Mail Transfer Protocol) για να λαμβάνετε ειδοποιήσεις από το Nextcloud:

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

### Ρύθμιση της μονάδας αποθήκευσης

Η παρακάτω ρύθμιση αποθήκευσης αφορά τα δεδομένα που αποθηκεύει το Nextcloud στον αντίστοιχο φορέα δεδομένων. Αυτό δεν επηρεάζει τα δεδομένα των χρηστών σας, τα οποία αποθηκεύονται στο S3 σύμφωνα με ένα προγραμματισμένο χρονοδιάγραμμα:

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

### Προστασία του Redis με κωδικό πρόσβασης

Συνιστάται να προστατεύσετε το Redis με κωδικό πρόσβασης. Αυτό αποτρέπει την εμφάνιση σφαλμάτων κατά την πιστοποίηση. Χρησιμοποιήστε τον παρακάτω κώδικα για να το κάνετε αυτό, αντικαθιστώντας τον κωδικό πρόσβασής σας όπου απαιτείται:

```shell
redis:
    enabled: true
    password: 'your-password-for-redis'
    usePassword: true
```

### Περιορισμός των αντιγράφων

Εφόσον έχετε ήδη απενεργοποιήσει το HPA, θα πρέπει να περιορίσετε τον πιθανό αριθμό αντιγράφων σε 1:

```shell
replicaCount: 1
```

### Εγκατάσταση του Nextcloud στο Kubernetes

Τέλος, εγκαταστήστε το Nexcloud στο Kubernetes και προσθέστε επίσης το MariaDB και το Redis:

```shell
kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloud
```


This is a markdown version of: [https://www.ionos.com/el-gr/digitalguide/diakomistis/rythmiseis/nextcloud-kubernetes/](https://www.ionos.com/el-gr/digitalguide/diakomistis/rythmiseis/nextcloud-kubernetes/) for AI/LLM consumption.