# Sådan installeres Nextcloud på Kubernetes

For at konfigurere Nextcloud på Kubernetes anbefaler vi at bruge S3 som lagringsbackend og MariaDB som database. Du kan forbedre ydeevnen ved at foretage et par ændringer i konfigurationen.

## Nextcloud og Kubernetes er en god kombination

Kombinationen af [Nextcloud](https://www.ionos.com/da-dk/digitalguide/server/vaerktoejer/hvad-er-nextcloud/) og Kubernetes med S3 som lagringsløsning er en lovende løsning inden for både den private og erhvervsmæssige sektor. Den **ikke-kommercielle cloud-software** er velegnet til brug med både lokale servere og eksterne værter og kan prale af en fremragende sikkerhedsarkitektur sammenlignet med mange Nextcloud-alternativer. Kubernetes er et open source-styringssystem til containerbaserede applikationer og kan ud over lokal brug også anvendes til cloud computing. Systemet anses for at være **fleksibelt, yderst skalerbart og fejlsikkert**. Læs videre for at finde ud af, hvordan du opsætter Nextcloud på Kubernetes.

Tip Hvis du vil bruge Nextcloud med Docker, kan du finde en udførlig vejledning i vores digitale guide. Vi har også beskrevet de relevante trin til [installation af Nextcloud på Ubuntu 22.04](https://www.ionos.com/da-dk/digitalguide/server/konfiguration/nextcloud-ubuntu-2204/).

## Hvilke betingelser skal være opfyldt?

Inden du kan gå i gang med at konfigurere Nextcloud på Kubernetes, skal der være opfyldt nogle forudsætninger. Du skal have tilstrækkelig lagerplads og bør allerede have oprettet en Kubernetes-klynge. Du kan vælge at oprette denne på din lokale maskine eller bruge cloud-lager, afhængigt af din tilgængelige kapacitet. Sørg desuden for, at **Helm-pakkehåndteringen** er konfigureret til Kubernetes. Når du er klar, kan du fortsætte med trinene.

## Sådan opsætter du Nextcloud på Kubernetes trin for trin

Når du har det rette grundlag på plads, kan du gå i gang med at opsætte Nextcloud på Kubernetes. De vigtigste trin er beskrevet i de følgende afsnit.

### Konfigurer DNS

Det første skridt er at oprette en A-post for et underdomæne, der kan pege på den ønskede IP-adresse. Hvis du bruger den lokale løsning, er din offentlige IP-adresse den korrekte destination; ellers skal du indtaste den IP-adresse, du har fået fra din cloud-tjeneste. Afhængigt af DNS-udbyderen kan de nødvendige trin variere en smule.

### Tilføj og opdater Helm

Kubernetes installeres ved hjælp af pakkehåndteringen Helm, som skal være installeret på din klient. Sørg desuden for, at du har forbindelse til din Kubernetes-klynge. Hvis det er tilfældet, skal du tilføje Helm-repositoriet og opdatere det med følgende kommandoer:

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

### Opret filen values.yaml

Opret nu et nyt Helm-diagram med følgende kommando:

```shell
nano values.yaml
```

Tilføj derefter følgende specifikationer til denne fil.

### Opret cron-opgaver

Definer først en **tidsgrænse for cronjobs**. På Unix-lignende operativsystemer er cronjobs opgaver, der kører automatisk i baggrunden med faste intervaller. For Nextcloud på Kubernetes drejer det sig primært om vedligeholdelsesopgaver. I dette eksempel indstiller vi cronjobbet til at køre hvert femte minut. Ved større datamængder kan det være en god idé at udføre vedligeholdelse oftere. Brug følgende kode:

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

### Aktivér HPA

Deaktiver nu Horizontal Pod Autoscaler (HPA), som automatisk skalerer antallet af pods. Hvis du bruger ReadWriteOnce til Nextcloud og foretrækker at styre skaleringen manuelt, bør du deaktivere HPA og nøjes med én pod. Denne fremgangsmåde er mere praktisk, hvis kun få brugere har brug for adgang. Den relevante kode er:

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

### Overskriv billedkode

For at sikre, at den aktuelle version af Helm tages i betragtning, skal du overskrive billedtagget. Brug denne kode til at gøre det:

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

Version 28.0.2 eller en nyere version er nu valgt.

### Vælg database

Du har tre muligheder, når du skal vælge database: MariaDB, PostgreSQL eller SQLite. I dette eksempel vælger vi MariaDB. Konfigurer denne database som beskrevet nedenfor, og deaktiver de to andre systemer:

```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ågning af nøgletal

Indsæt følgende kode for at foretage overvågning med Prometheus eller Grafana. Dette er valgfrit.

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

### Tillad brug af egne konfigurationsfiler

Som standard bruger Nextcloud også en fil ved navn config.php til konfiguration på Kubernetes. For at gøre det nemmere eller mere fleksibelt kan du indsætte dine egne konfigurationsfiler ved hjælp af 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'
                     ]
            );
```

Erstat pladsholderen »example.com« med dit eget domæne.

### Konfigurer Redis

For at forbedre caching med Redis og øge den samlede ydeevne kan du inkludere en brugerdefineret konfigurationsfil. Som standard installeres Helm Redis uden adgangskodebeskyttelse, men det anbefales at tilføje et ekstra sikkerhedslag. Brug følgende kode til at konfigurere Redis med adgangskodebeskyttelse 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')
      )
    );
```

### Konfiguration af lagringsbackend

Den sidste konfigurationsfil er tilføjet til S3-lagringsbackend’et. Den er gemt i koden som følger:

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

Da du ovenfor har overskrevet standardkonfigurationen for Redis, skal denne nu deaktiveres for at undgå fejl ved hjælp af 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
```

### Indstil værtsnavn, administrator og adgangskode

Indtast nu værtsnavnet, administratoren og den tilhørende adgangskode til brug af Nextcloud på Kubernetes. Brug denne kode til dette:

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

Erstat pladsholderne med dine egne oplysninger.

### Opsæt e-mail-beskeder

Du kan eventuelt konfigurere en SMTP-tjeneste (Simple Mail Transfer Protocol) til at modtage meddelelser 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 persistensdrevet

Følgende lagringskonfiguration gælder for data, som Nextcloud gemmer på det pågældende lagringsmedie. Dette har ingen indflydelse på dine brugerdata, som regelmæssigt gemmes på S3:

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

### Beskyt Redis med adgangskode

Det anbefales at beskytte Redis med en adgangskode. Dette forhindrer fejl under godkendelsen. Brug følgende kode til dette, og udskift din adgangskode, hvor det er relevant:

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

### Begræns antallet af gentagelser

Da du allerede har deaktiveret HPA, bør du begrænse det mulige antal replikationer til 1:

```shell
replicaCount: 1
```

### Installer Nextcloud på Kubernetes

Til sidst skal du installere Nexcloud på Kubernetes og også tilføje 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/da-dk/digitalguide/server/konfiguration/nextcloud-kubernetes/](https://www.ionos.com/da-dk/digitalguide/server/konfiguration/nextcloud-kubernetes/) for AI/LLM consumption.