# Slik installerer du Nextcloud på Kubernetes

For å konfigurere Nextcloud på Kubernetes anbefaler vi å bruke S3 som lagringsbackend og MariaDB som database. Du kan øke ytelsen ved å gjøre noen få endringer i konfigurasjonen.

## Nextcloud og Kubernetes er en god kombinasjon

Kombinasjonen av [Nextcloud](https://www.ionos.com/nb-no/digitalguide/server/verktoey/hva-er-nextcloud/) og Kubernetes med S3 som lagringsløsning er en lovende løsning både i privat og bedriftssektoren. Den **ikke-kommersielle skyprogramvaren** egner seg både for bruk med lokale servere og eksterne verter, og har en utmerket sikkerhetsarkitektur sammenlignet med mange Nextcloud-alternativer. Kubernetes er et åpen kildekode-styringssystem for containerapplikasjoner og kan brukes til skyberegning i tillegg til lokal bruk. Systemet regnes som **fleksibelt, svært skalerbart og feilsikkert**. Les videre for å finne ut hvordan du konfigurerer Nextcloud på Kubernetes.

Tip Hvis du vil bruke Nextcloud med Docker, kan du lese den utfyllende veiledningen i vår digitale guide. Vi har også beskrevet de nødvendige trinnene for [å installere Nextcloud på Ubuntu 22.04](https://www.ionos.com/nb-no/digitalguide/server/konfigurasjon/nextcloud-ubuntu-2204/).

## Hvilke vilkår må oppfylles?

Før du kan begynne å konfigurere Nextcloud på Kubernetes, må noen forutsetninger være oppfylt. Du trenger tilstrekkelig lagringsplass og bør allerede ha opprettet en Kubernetes-klynge. Du kan velge å opprette denne på din lokale maskin eller bruke skylagring, avhengig av hvilken kapasitet du har tilgjengelig. Sørg dessuten for at **pakkehåndtereren Helm** er konfigurert for Kubernetes. Når alt er klart, kan du fortsette med trinnene.

## Slik konfigurerer du Nextcloud på Kubernetes trinn for trinn

Når du har lagt det riktige grunnlaget, kan du begynne å konfigurere Nextcloud på Kubernetes. De viktigste trinnene er oppsummert i de følgende avsnittene.

### Konfigurer DNS

Det første trinnet er å opprette en A-post for et underdomene som kan peke til den ønskede IP-adressen. Hvis du bruker den lokale løsningen, er din offentlige IP-adresse riktig destinasjon; ellers må du oppgi IP-adressen du har fått fra skytjenesten din. Avhengig av DNS-leverandøren kan fremgangsmåten variere noe.

### Legg til og oppdater Helm

Kubernetes distribueres ved hjelp av pakkehåndtereren Helm, som bør være installert på klienten din. Sørg dessuten for at du har tilkobling til Kubernetes-klyngen din. Hvis dette er tilfelle, legger du til Helm-repositoriet og oppdaterer det med følgende kommandoer:

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

### Opprett values.yaml

Opprett nå et nytt Helm-diagram med følgende kommando:

```shell
nano values.yaml
```

Legg deretter til følgende spesifikasjoner i denne filen.

### Opprett cron-jobber

Først må du angi en **tidsintervall for cron-jobber**. På Unix-lignende operativsystemer er cron-jobber oppgaver som kjører automatisk i bakgrunnen med jevne mellomrom. For Nextcloud på Kubernetes dreier dette seg hovedsakelig om vedlikeholdsoppgaver. I dette eksemplet angir vi at cron-jobben skal kjøre hvert femte minutt. Ved større datamengder kan det være lurt å utføre vedlikehold oftere. Bruk følgende kode:

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

### Aktiver HPA

Deaktiver nå Horizontal Pod Autoscaler (HPA), som automatisk skalerer antall pods. Hvis du bruker ReadWriteOnce for Nextcloud og foretrekker å styre skaleringen manuelt, bør du deaktivere HPA og fokusere på én pod. Denne fremgangsmåten er mer praktisk hvis bare noen få brukere trenger tilgang. Koden for dette er:

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

### Overskriv bildetaggen

For å sikre at den gjeldende versjonen av Helm blir tatt i betraktning, må du overskrive bildetikket. Bruk denne koden for å gjøre dette:

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

Versjon 28.0.2 eller en nyere versjon er nå valgt.

### Velg database

Du har tre alternativer når du skal velge database: MariaDB, PostgreSQL eller SQLite. I dette eksemplet velger vi MariaDB. Konfigurer denne databasen som følger, og deaktiver de to andre systemene:

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

### Overvåke nøkkeltall

For å gjennomføre overvåking med Prometheus eller Grafana, sett inn følgende kode. Dette er valgfritt.

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

### Tillat egne konfigurasjonsfiler

Som standard bruker Nextcloud også en fil kalt config.php til konfigurasjon på Kubernetes. For å forenkle dette eller gjøre det mer fleksibelt, kan du legge inn dine egne konfigurasjonsfiler ved hjelp av følgende kode:

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

Erstatt plassholderen «example.com» med ditt eget domene.

### Konfigurer Redis

For å forbedre hurtigbuffering med Redis og øke den generelle ytelsen, kan du inkludere en tilpasset konfigurasjonsfil. Som standard installeres Helm Redis uten passordbeskyttelse, men det anbefales å legge til et ekstra sikkerhetslag. Bruk følgende kode for å konfigurere Redis med passordbeskyttelse og integrere det med 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')
      )
    );
```

### Konfigurere lagringsbackenden

Den siste konfigurasjonsfilen legges inn for lagringsbackenden S3. Den er lagret i koden på følgende måte:

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

### Deaktiver Redis-konfigurasjonen

Siden du har overskrevet standardkonfigurasjonen for Redis ovenfor, må denne nå deaktiveres for å unngå feil ved å bruke følgende kode:

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

### Angi vertsnavn, administrator og passord

Skriv nå inn vertsnavnet, administratoren og det tilhørende passordet for bruk av Nextcloud på Kubernetes. Bruk denne koden til dette:

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

Erstatt plassholderne med dine egne opplysninger.

### Konfigurer e-postvarsler

Du kan eventuelt konfigurere en SMTP-tjeneste (Simple Mail Transfer Protocol) for å motta varsler fra 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
```

### Konfigurer lagringsdisken

Følgende lagringskonfigurasjon gjelder data som Nextcloud lagrer på det aktuelle lagringsmediet. Dette påvirker ikke brukerdataene dine, som lagres på S3 etter en fast tidsplan:

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

### Passordbeskytt Redis

Det anbefales å sikre Redis med et passord. Dette forhindrer feil under påloggingen. Bruk følgende kode for å gjøre dette, og erstatt passordet ditt der det er aktuelt:

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

### Begrens antall kopieringer

Siden du allerede har deaktivert HPA, bør du begrense antall mulige replikasjoner til 1:

```shell
replicaCount: 1
```

### Installer Nextcloud på Kubernetes

Til slutt installerer du Nexcloud på Kubernetes og legger også til MariaDB og 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/nb-no/digitalguide/server/konfigurasjon/nextcloud-kubernetes/](https://www.ionos.com/nb-no/digitalguide/server/konfigurasjon/nextcloud-kubernetes/) for AI/LLM consumption.