# Kako namestiti Nextcloud na Kubernetes

Za namestitev Nextclouda v okolju Kubernetes priporočamo uporabo S3 kot shranjevalnega strežnika in MariaDB kot podatkovne zbirke. Z nekaj spremembami v nastavitvah lahko izboljšate zmogljivost.

## Nextcloud in Kubernetes sta odlična kombinacija

Kombinacija [Nextclouda](https://www.ionos.com/sl-si/digitalguide/streznik/orodja/kaj-je-nextcloud/) in Kubernetesa s storitvijo S3 za shranjevanje je obetavna rešitev v zasebnem in poslovnem sektorju. Ta **nekomercialna programska oprema za oblak** je primerna tako za delo z lokalnimi strežniki kot z zunanjimi gostitelji ter se v primerjavi s številnimi alternativami Nextcloudu ponaša z odlično varnostno arhitekturo. Kubernetes je odprtokodni sistem za upravljanje kontejnerskih aplikacij, ki se poleg lokalne rabe lahko uporablja tudi za računalništvo v oblaku. Sistem velja za **prilagodljivega, visoko prilagodljivega in odpornega proti okvaram**. Preberite naprej in izvedite, kako nastaviti Nextcloud na Kubernetesu.

Tip Če želite uporabljati Nextcloud z Dockerjem, si oglejte naša podrobna navodila v našem digitalnem vodniku. Opisali smo tudi ustrezne korake za [namestitev Nextclouda na Ubuntu 22.04](https://www.ionos.com/sl-si/digitalguide/streznik/nastavitve/nextcloud-ubuntu-2204/).

## Kateri pogoji morajo biti izpolnjeni?

Preden začnete z namestitvijo Nextclouda na Kubernetesu, morajo biti izpolnjeni nekateri pogoji. Potrebujete dovolj prostora za shranjevanje in morate imeti že ustvarjen Kubernetesov klaster. Odvisno od razpoložljive zmogljivosti se lahko odločite, da ga ustvarite na svojem lokalnem računalniku ali uporabite shranjevanje v oblaku. Poleg tega poskrbite, da je za Kubernetes nastavljen **upravitelj paketov Helm**. Ko ste pripravljeni, lahko nadaljujete s postopkom.

## Kako korak za korakom namestiti Nextcloud na Kubernetes

Ko imate ustrezno podlago, lahko začnete z namestitvijo Nextclouda na Kubernetes. Ključni koraki so povzeti v naslednjih poglavjih.

### Nastavi DNS

Prvi korak je ustvariti A-zapis za poddomensko ime, ki bo usmerjen na želeni IP-naslov. Če uporabljate lokalno rešitev, je pravi cilj vaš javni IP-naslov; v nasprotnem primeru vnesite IP-naslov, ki ga je zagotovila vaša storitev v oblaku. Glede na ponudnika storitev DNS se lahko potrebni koraki nekoliko razlikujejo.

### Dodajanje in posodabljanje Helm

Kubernetes se namesti s pomočjo upravitelja paketov Helm, ki mora biti nameščen na vašem računalniku. Poleg tega se prepričajte, da imate vzpostavljeno povezavo s svojim Kubernetes-ovim grozdom. Če je tako, dodajte repozitorij Helm in ga posodobite z naslednjimi ukazi:

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

### Ustvari datoteko values.yaml

Sedaj ustvarite nov Helmov diagram z naslednjim ukazom:

```shell
nano values.yaml
```

Nato v to datoteko vnesite naslednje specifikacije.

### Nastavi cron naloge

Najprej določite **časovno omejitev za cron naloge**. V operacijskih sistemih tipa Unix so cron naloge opravila, ki se samodejno izvajajo v ozadju v vnaprej določenih časovnih intervalih. Pri Nextcloud na Kubernetesu gre predvsem za vzdrževalna opravila. V tem primeru bomo nastavili, da se cron naloga izvaja vsakih pet minut. Pri večjih količinah podatkov je morda priporočljivo pogostejše vzdrževanje. Uporabite naslednjo kodo:

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

### Vklopite HPA

Sedaj onemogočite Horizontal Pod Autoscaler (HPA), ki samodejno prilagaja število podov. Če za Nextcloud uporabljate ReadWriteOnce in želite prilagajanje števila podov nadzorovati ročno, morate onemogočiti HPA in se osredotočiti na en pod. Ta pristop je primernejši, če dostop potrebuje le nekaj uporabnikov. Ustrezna koda je:

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

### Prepisati oznako slike

Da se upošteva trenutna različica Helma, prepišite oznako slike. Za to uporabite naslednjo kodo:

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

Zdaj je izbrana različica 28.0.2 ali novejša različica.

### Izberi bazo podatkov

Pri izbiri podatkovne zbirke imate na voljo tri možnosti: MariaDB, PostgreSQL ali SQLite. V našem primeru se odločimo za MariaDB. To podatkovno zbirko nastavite na naslednji način in onemogočite ostali dve:

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

### Spremljanje kazalnikov

Če želite izvajati spremljanje s Prometheusom ali Grafano, vstavite naslednjo kodo. To je neobvezno.

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

### Omogoči uporabo lastnih konfiguracijskih datotek

Nextcloud privzeto uporablja tudi datoteko config.php za konfiguracijo v Kubernetesu. Da bi to poenostavili ali omogočili večjo prilagodljivost, lahko vstavite svoje konfiguracijske datoteke z naslednjo kodo:

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

Nadomestite nadomestni znak »example.com« s svojo domeno.

### Nastavitev Redisa

Za izboljšanje predpomnjenja z Redisom in povečanje splošne zmogljivosti lahko vključite lastno konfiguracijsko datoteko. Helm Redis je privzeto nameščen brez zaščite z geslom, vendar je priporočljivo dodati dodatno raven varnosti. Uporabite naslednjo kodo, da nastavite Redis z zaščito z geslom in ga integrirate v 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')
      )
    );
```

### Nastavitev ozadja za shranjevanje

Vstavljena je zadnja konfiguracijska datoteka za shranjevalni backend S3. V kodi je shranjena na naslednji način:

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

### Izklopite konfiguracijo Redis

Ker ste zgoraj prepisali privzeto konfiguracijo za Redis, jo je treba zdaj onemogočiti, da se izognete napakam. To storite z naslednjim kodom:

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

### Nastavi gostitelja, skrbnika in geslo

Sedaj vnesite ime strežnika, uporabniško ime skrbnika in ustrezno geslo za uporabo Nextclouda v Kubernetesu. Za to uporabite naslednjo kodo:

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

Zamenjajte nadomestne znake s svojimi podatki.

### Nastavi obvestila po e-pošti

Po želji lahko nastavite storitev SMTP (Simple Mail Transfer Protocol) za prejemanje obvestil iz Nextclouda:

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

### Nastavite pogon za trajno shranjevanje

Naslednja konfiguracija trajnega shranjevanja je namenjena podatkom, ki jih Nextcloud shranjuje na ustreznem nosilcu podatkov. To ne vpliva na vaše uporabniške podatke, ki se redno shranjujejo v S3:

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

### Zaščitite Redis z geslom

Priporočljivo je, da Redis zavarujete z geslom. S tem preprečite napake pri avtentifikaciji. Za to uporabite naslednjo kodo in na ustreznih mestih vnesite svoje geslo:

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

### Omejitev ponovitev

Ker ste HPA že onemogočili, morate število možnih replikacij omejiti na 1:

```shell
replicaCount: 1
```

### Namestitev Nextclouda na Kubernetes

Na koncu namestite Nexcloud na Kubernetes ter dodajte tudi MariaDB in 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/sl-si/digitalguide/streznik/nastavitve/nextcloud-kubernetes/](https://www.ionos.com/sl-si/digitalguide/streznik/nastavitve/nextcloud-kubernetes/) for AI/LLM consumption.