# Kaip įdiegti „Nextcloud“ „Kubernetes“ aplinkoje

Norėdami įdiegti „Nextcloud“ „Kubernetes“ aplinkoje, rekomenduojame naudoti S3 kaip saugyklos platformą ir „MariaDB“ kaip duomenų bazę. Atlikę keletą konfigūracijos pakeitimų, galite padidinti sistemos našumą.

## „Nextcloud“ ir „Kubernetes“ – tai puikus derinys

[„Nextcloud“](https://www.ionos.com/lt-lt/digitalguide/serveris/irankiai/kas-yra-nextcloud/) ir „Kubernetes“ derinys su „S3“ saugykla yra perspektyvus sprendimas privačiame ir verslo sektoriuose. Ši **nekomercinė debesų programinė įranga** tinka dirbti tiek su vietiniais serveriais, tiek su išoriniais serveriais ir pasižymi puikia saugumo architektūra, palyginti su daugybe „Nextcloud“ alternatyvų. „Kubernetes“ yra atvirojo kodo konteinerių programų valdymo sistema, kuri, be vietinio naudojimo, gali būti naudojama ir debesų kompiuterijai. Ši sistema laikoma **lanksčia, labai mastelio keičiamu ir atspariu gedimams**. Skaitykite toliau, kad sužinotumėte, kaip įdiegti „Nextcloud“ „Kubernetes“ sistemoje.

Tip Jei norite naudoti „Nextcloud“ su „Docker“, peržiūrėkite išsamias instrukcijas mūsų skaitmeniniame vadove. Taip pat pateikėme atitinkamus [„Nextcloud“ diegimo „Ubuntu 22.04“](https://www.ionos.com/lt-lt/digitalguide/serveris/konfiguracija/nextcloud-ubuntu-2204/) žingsnius.

## Kokios sąlygos turi būti įvykdytos?

Prieš pradėdami diegti „Nextcloud“ „Kubernetes“ aplinkoje, turite įvykdyti keletą sąlygų. Reikia turėti pakankamai saugyklos vietos ir jau sukurti „Kubernetes“ klasterį. Priklausomai nuo turimos talpos, galite jį sukurti savo vietiniame kompiuteryje arba naudoti debesų saugyklą. Be to, įsitikinkite, kad „Kubernetes“ aplinkoje yra įdiegtas **„Helm“ paketų tvarkyklė**. Kai viskas bus paruošta, galite pradėti vykdyti tolesnius veiksmus.

## Kaip žingsnis po žingsnio įdiegti „Nextcloud“ „Kubernetes“ aplinkoje

Kai turėsite tinkamą pagrindą, galėsite pradėti diegti „Nextcloud“ „Kubernetes“ aplinkoje. Pagrindiniai žingsniai apibendrinti tolesniuose skyriuose.

### Nustatyti DNS

Pirmasis žingsnis – sukurti subdomeno A įrašą, kuris nukreiptų į norimą IP adresą. Jei naudojate vietinį sprendimą, tinkamas adresas yra jūsų viešasis IP adresas; kitais atvejais įveskite debesų paslaugos teikėjo nurodytą IP adresą. Priklausomai nuo DNS teikėjo, šiam veiksmui atlikti reikalingi žingsniai gali šiek tiek skirtis.

### Pridėti ir atnaujinti „Helm“

„Kubernetes“ diegiamas naudojant „Helm“ paketų tvarkyklę, kuri turėtų būti įdiegta jūsų kompiuteryje. Be to, įsitikinkite, kad turite ryšį su savo „Kubernetes“ klasteriu. Jei taip, pridėkite „Helm“ saugyklą ir atnaujinkite ją naudodami šias komandas:

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

### Sukurti failą „values.yaml“

Dabar sukurkite naują „Helm“ diagramą naudodami šią komandą:

```shell
nano values.yaml
```

Tada į šį failą įtraukite šias specifikacijas.

### Nustatyti cron užduotis

Pirmiausia nustatykite **cron užduočių vykdymo dažnį**. Unix tipo operacinėse sistemose cron užduotys – tai užduotys, kurios automatiškai vykdomos fone pagal nustatytą tvarkaraštį. „Nextcloud“ aplinkoje, veikiančioje „Kubernetes“ platformoje, tai daugiausia priežiūros užduotys. Šiame pavyzdyje cron užduotį nustatome taip, kad ji būtų vykdoma kas penkias minutes. Esant didesniems duomenų kiekiams, gali būti tikslinga vykdyti priežiūrą dažniau. Naudokite šį kodą:

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

### Įjunkite HPA

Dabar išjunkite „Horizontal Pod Autoscaler“ (HPA) funkciją, kuri automatiškai keičia podų skaičių. Jei naudojate „ReadWriteOnce“ su „Nextcloud“ ir norite reguliuoti mastelį rankiniu būdu, turėtumėte išjungti HPA ir sutelkti dėmesį į vieną podą. Šis metodas yra patogesnis, jei prieiga reikalinga tik keliems vartotojams. Atitinkamas kodas yra toks:

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

### Pakeisti vaizdo žymą

Kad būtų atsižvelgta į naujausią „Helm“ versiją, perrašykite atvaizdo žymą. Tam naudokite šį kodą:

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

Dabar pasirinkta versija 28.0.2 arba naujesnė versija.

### Pasirinkite duomenų bazę

Renkantis duomenų bazę, turite tris galimybes: „MariaDB“, „PostgreSQL“ arba „SQLite“. Šiame pavyzdyje pasirinksime „MariaDB“. Nustatykite šią duomenų bazę taip, kaip nurodyta toliau, ir išjunkite kitas dvi sistemas:

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

### Rodiklių stebėjimas

Norėdami vykdyti stebėjimą naudojant „Prometheus“ arba „Grafana“, įterpkite šį kodą. Tai nėra privaloma.

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

### Leisti naudoti savo konfigūracijos failus

Pagal numatytuosius nustatymus „Nextcloud“ konfigūracijai „Kubernetes“ aplinkoje taip pat naudoja failą „config.php“. Norėdami supaprastinti šį procesą arba padaryti jį lankstesnį, galite įterpti savo konfigūracijos failus naudodami šį kodą:

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

Pakeiskite vietą „example.com“ savo domeno vardu.

### Nustatyti „Redis“

Norėdami pagerinti talpyklos veikimą naudojant „Redis“ ir padidinti bendrą našumą, galite įtraukti pasirinktinį konfigūracijos failą. Pagal numatytuosius nustatymus „Helm Redis“ įdiegiama be slaptažodžio apsaugos, tačiau patartina įdiegti papildomą saugumo lygį. Naudokite šį kodą, kad nustatytumėte „Redis“ su slaptažodžio apsauga ir integruotumėte ją su „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')
      )
    );
```

### Duomenų saugyklos užkulisio konfigūravimas

Pateikiamas paskutinis konfigūracijos failas, skirtas saugyklos S3 aplinkai. Jis įtrauktas į kodą taip:

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

### Išjunkite „Redis“ konfigūraciją

Kadangi aukščiau pakeitėte numatytąją „Redis“ konfigūraciją, dabar ją reikia išjungti, kad būtų išvengta klaidų. Tai atlikite naudodami šį kodą:

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

### Nustatyti serverio vardą, administratoriaus vardą ir slaptažodį

Dabar įveskite serverio vardą, administratoriaus vardą ir atitinkamą slaptažodį, kad galėtumėte naudotis „Nextcloud“ „Kubernetes“ aplinkoje. Tam naudokite šį kodą:

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

Pakeiskite vietos laikiklius savo duomenimis.

### Nustatyti pranešimus el. paštu

Jei norite, galite sukonfigūruoti SMTP (Simple Mail Transfer Protocol) paslaugą, kad gautumėte pranešimus iš „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
```

### Nustatykite duomenų išsaugojimo diską

Toliau pateikta duomenų išsaugojimo konfigūracija skirta duomenims, kuriuos „Nextcloud“ saugo atitinkamoje laikmenoje. Tai neturi įtakos jūsų vartotojo duomenims, kurie reguliariai saugomi S3:

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

### Apsaugoti „Redis“ slaptažodžiu

Rekomenduojama apsaugoti „Redis“ slaptažodžiu. Tai padės išvengti klaidų atliekant autentifikavimą. Tam naudokite šį kodą, atitinkamose vietose įrašydami savo slaptažodį:

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

### Apriboti kopijavimą

Kadangi jau išjungėte HPA, turėtumėte apriboti galimą replikacijų skaičių iki 1:

```shell
replicaCount: 1
```

### Įdiekite „Nextcloud“ „Kubernetes“ aplinkoje

Galiausiai įdiekite „Nexcloud“ į „Kubernetes“ ir įdiekite „MariaDB“ bei „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/lt-lt/digitalguide/serveris/konfiguracija/nextcloud-ir-kubernetes/](https://www.ionos.com/lt-lt/digitalguide/serveris/konfiguracija/nextcloud-ir-kubernetes/) for AI/LLM consumption.