# Kā instalēt Nextcloud uz Kubernetes

Lai uzstādītu Nextcloud uz Kubernetes, iesakām kā datu uzglabāšanas sistēmu izmantot S3 un kā datu bāzi — MariaDB. Veicot dažas izmaiņas konfigurācijā, varat uzlabot sistēmas veiktspēju.

## Nextcloud un Kubernetes ir lieliska kombinācija

[Nextcloud](https://www.ionos.com/lv-lv/digitalguide/serveris/riki/kas-ir-nextcloud/) un Kubernetes apvienojums ar S3 datu uzglabāšanai ir daudzsološs risinājums privātajā un biznesa sektorā. Šī **nekomerciālā mākoņprogrammatūra** ir piemērota darbam gan ar vietējiem serveriem, gan ārējiem resursiem, un, salīdzinot ar daudzajām Nextcloud alternatīvām, tā var lepoties ar izcilu drošības arhitektūru. Kubernetes ir atvērtā koda pārvaldības sistēma konteineru lietojumprogrammām, ko var izmantot gan vietējai lietošanai, gan mākoņdatošanai. Šī sistēma tiek uzskatīta par **elastīgu, ļoti skalējamu un drošu pret kļūmēm**. Lasiet tālāk, lai uzzinātu, kā uzstādīt Nextcloud uz Kubernetes.

Tip Lai izmantotu Nextcloud kopā ar Docker, iepazīstieties ar mūsu izsmeļošajām instrukcijām digitālajā ceļvedī. Mēs esam aprakstījuši arī attiecīgos soļus [Nextcloud instalēšanai Ubuntu 22.04](https://www.ionos.com/lv-lv/digitalguide/serveris/konfiguracija/nextcloud-ubuntu-2204/).

## Kādi nosacījumi ir jāizpilda?

Pirms sākt Nextcloud konfigurēšanu Kubernetes vidē, ir jāizpilda daži nosacījumi. Jums ir nepieciešama pietiekama uzglabāšanas vieta, un jau ir jābūt izveidotam Kubernetes klasterim. Atkarībā no pieejamās kapacitātes varat izvēlēties to izveidot savā lokālajā datorā vai izmantot mākoņuzglabāšanu. Turklāt pārliecinieties, ka Kubernetes vidē ir konfigurēts **Helm pakotņu pārvaldnieks**. Kad viss ir sagatavots, varat turpināt ar turpmākajiem soļiem.

## Kā soli pa solim uzstādīt Nextcloud uz Kubernetes

Kad būsiet izveidojuši atbilstošu pamatu, varat sākt Nextcloud konfigurēšanu Kubernetes vidē. Galvenie soļi ir apkopoti turpmākajās sadaļās.

### Konfigurēt DNS

Pirmais solis ir izveidot A ierakstu apakšdomēnam, kas norāda uz vēlamo IP adresi. Ja izmantojat lokālo risinājumu, par galamērķi jānorāda jūsu publiskā IP adrese; citā gadījumā ievadiet IP adresi, ko sniedzis jūsu mākoņpakalpojuma sniedzējs. Atkarībā no DNS pakalpojuma sniedzēja šim nolūkam nepieciešamie soļi var nedaudz atšķirties.

### Pievienot un atjaunināt Helm

Kubernetes tiek izvietots, izmantojot Helm pakotņu pārvaldnieku, kas jābūt instalētam jūsu klientā. Turklāt pārliecinieties, ka jums ir savienojums ar Kubernetes klasteri. Ja tas tā ir, pievienojiet Helm repozitoriju un atjauniniet to, izmantojot šādas komandas:

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

### Izveidojiet failu values.yaml

Tagad izveidojiet jaunu Helm diagrammu, izmantojot šādu komandu:

```shell
nano values.yaml
```

Tad pievienojiet šim failam šādas specifikācijas.

### Iestatīt cron uzdevumus

Vispirms noteikt **cronjobu izpildes intervālu**. Unix tipa operētājsistēmās cronjobi ir uzdevumi, kas automātiski tiek izpildīti fonā pēc iepriekš noteiktiem intervāliem. Nextcloud vidē uz Kubernetes platformas tie galvenokārt ir uzturēšanas uzdevumi. Šajā piemērā mēs iestatām, lai cronjobs tiktu izpildīts ik pēc piecām minūtēm. Ja datu apjoms ir lielāks, varētu būt ieteicams veikt biežāku uzturēšanu. Izmantojiet šādu kodu:

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

### Aktivizēt HPA

Tagad atspējojiet Horizontal Pod Autoscaler (HPA), kas automātiski maina podu skaitu. Ja izmantojat ReadWriteOnce Nextcloud vajadzībām un vēlaties mērogu regulēt manuāli, jums vajadzētu atspējot HPA un koncentrēties uz vienu podu. Šī pieeja ir ērtāka, ja piekļuve ir nepieciešama tikai nedaudziem lietotājiem. Atbilstošais kods ir:

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

### Pārrakstīt attēla tagu

Lai nodrošinātu, ka tiek ņemta vērā pašreizējā Helm versija, pārrakstiet attēla tagu. Lai to izdarītu, izmantojiet šo kodu:

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

Tagad ir izvēlēta versija 28.0.2 vai jaunāka versija.

### Izvēlieties datu bāzi

Izvēloties datubāzi, jums ir trīs iespējas: MariaDB, PostgreSQL vai SQLite. Šajā piemērā izvēlamies MariaDB. Konfigurējiet šo datubāzi šādi un atspējojiet pārējās divas sistēmas:

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

### Rādītāju rīks Rī rīks Rī rī rī rī rī rī rī rī rī r

Lai veiktu uzraudzību, izmantojot Prometheus vai Grafana, ievietojiet šādu kodu. Tas ir fakultatīvs solis.

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

### Atļaujiet izmantot savus konfigurācijas failus

Pēc noklusējuma Nextcloud konfigurācijai Kubernetes vidē izmanto arī failu ar nosaukumu config.php. Lai vienkāršotu šo procesu vai padarītu to elastīgāku, varat ievietot savus konfigurācijas failus, izmantojot šādu kodu:

```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'
                     ]
            );
```

Aizstājiet vietas turētāju „example.com“ ar savu domēnu.

### Redis konfigurēšana

Lai uzlabotu kešēšanu ar Redis un palielinātu kopējo veiktspēju, varat iekļaut pielāgotu konfigurācijas failu. Pēc noklusējuma Helm Redis tiek instalēts bez paroles aizsardzības, taču ir ieteicams pievienot papildu drošības slāni. Izmantojiet šo kodu, lai konfigurētu Redis ar paroles aizsardzību un integrētu to ar 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')
      )
    );
```

### Uzglabāšanas sistēmas konfigurēšana

Pēdējais konfigurācijas fails ir pievienots datu uzglabāšanas backendam S3. Tas kodā ir saglabāts šādi:

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

### Atvienot Redis konfigurāciju

Tā kā iepriekš esat pārrakstījis Redis noklusējuma konfigurāciju, tagad tā ir jāatspējo, lai izvairītos no kļūdām, izmantojot šādu kodu:

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

### Iestatiet serveri, administratora vārdu un paroli

Tagad ievadiet servera nosaukumu, administratora vārdu un atbilstošo paroli, lai izmantotu Nextcloud Kubernetes vidē. Šim nolūkam izmantojiet šo kodu:

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

Aizstājiet vietu aizvietotājus ar saviem datiem.

### Iestatīt e-pasta paziņojumus

Pēc izvēles varat konfigurēt SMTP pakalpojumu (Simple Mail Transfer Protocol), lai saņemtu paziņojumus no 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
```

### Konfigurējiet pastāvīgās uzglabāšanas disku

Šī datu saglabāšanas konfigurācija ir paredzēta datiem, kurus Nextcloud glabā attiecīgajā datu nesējā. Tas neietekmē jūsu lietotāju datus, kuri tiek regulāri saglabāti S3:

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

### Aizsargāt Redis ar paroli

Ieteicams aizsargāt Redis ar paroli. Tas novērš kļūdas autentifikācijas laikā. Lai to izdarītu, izmantojiet šādu kodu, attiecīgajās vietās aizstājot savu paroli:

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

### Ierobežot atkārtojumus

Tā kā jūs jau esat atspējojis HPA, jums vajadzētu ierobežot iespējamo replikāciju skaitu līdz 1:

```shell
replicaCount: 1
```

### Nextcloud instalēšana Kubernetes vidē

Visbeidzot, instalējiet Nexcloud uz Kubernetes un pievienojiet arī MariaDB un 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/lv-lv/digitalguide/serveris/konfiguracija/nextcloud-kubernetes/](https://www.ionos.com/lv-lv/digitalguide/serveris/konfiguracija/nextcloud-kubernetes/) for AI/LLM consumption.