# Nextcloudin asentaminen Kubernetesiin

Nextcloudin asentamiseksi Kubernetes-ympäristöön suosittelemme käyttämään S3:a tallennusjärjestelmänä ja MariaDB:tä tietokantana. Suorituskykyä voi parantaa tekemällä muutamia muutoksia asetuksiin.

## Nextcloud ja Kubernetes ovat erinomainen yhdistelmä

[Nextcloudin](https://www.ionos.com/fi-fi/digitalguide/palvelin/tyoekalut/was-ist-nextcloud/) ja Kubernetesin yhdistelmä, jossa tallennustilana käytetään S3:a, on lupaava ratkaisu sekä yksityis- että yrityssektorilla. Tämä **ei-kaupallinen pilvipohjainen ohjelmisto** sopii käytettäväksi sekä paikallisten palvelimien että ulkoisten isäntäkoneiden kanssa, ja sen tietoturva-arkkitehtuuri on erinomainen verrattuna lukuisiin Nextcloud-vaihtoehtoihin. Kubernetes on avoimen lähdekoodin hallintajärjestelmä konttisovelluksille, ja sitä voidaan käyttää paikallisen käytön lisäksi myös pilvipalveluissa. Järjestelmää pidetään **joustavana, erittäin skaalautuvana ja vikasietoisena**. Lue lisää siitä, miten Nextcloud asennetaan Kubernetes-alustalle.

Vinkki Jos haluat käyttää Nextcloudia Dockerissa, tutustu kattaviin ohjeisiimme digitaalisessa oppaassamme. Olemme käsitelleet myös vastaavat vaiheet [Nextcloudin asentamiseksi Ubuntu 22.04:ään](https://www.ionos.com/fi-fi/digitalguide/palvelin/asetukset/nextcloud-ubuntu-2204/).

## Mitkä ehdot on täytettävä?

Ennen kuin voit aloittaa Nextcloudin asennuksen Kubernetes-ympäristöön, muutaman edellytyksen on täytyttävä. Tarvitset riittävästi tallennustilaa, ja sinun tulisi olla jo luonut Kubernetes-klusteri. Voit luoda sen paikalliselle koneellesi tai käyttää pilvitallennustilaa käytettävissä olevan kapasiteetin mukaan. Varmista lisäksi, että **Helm-pakettienhallintaohjelma** on asennettu Kubernetes-ympäristöön. Kun kaikki on valmista, voit jatkaa ohjeiden mukaisesti.

## Nextcloudin asennus Kubernetes-ympäristöön vaihe vaiheelta

Kun perusta on kunnossa, voit aloittaa Nextcloudin asennuksen Kubernetes-ympäristöön. Tärkeimmät vaiheet on tiivistetty seuraavissa osioissa.

### Määritä DNS

Ensimmäinen vaihe on luoda aliverkkotunnukselle A-tietue, joka osoittaa haluamaasi IP-osoitteeseen. Jos käytät paikallista ratkaisua, oikea kohde on oma julkinen IP-osoitteesi; muussa tapauksessa syötä pilvipalvelun antama IP-osoite. Tarvittavat vaiheet voivat vaihdella hieman DNS-palveluntarjoajasta riippuen.

### Helm-paketin lisääminen ja päivittäminen

Kubernetes otetaan käyttöön Helm-paketinhallintaohjelmalla, joka on asennettava käyttäjän laitteelle. Varmista lisäksi, että sinulla on yhteys Kubernetes-klusteriin. Jos näin on, lisää Helm-pakettivarasto ja päivitä se seuraavilla komennoilla:

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

### Luo tiedosto values.yaml

Luo nyt uusi Helm-kaavio seuraavalla komennolla:

```shell
nano values.yaml
```

Lisää sitten seuraavat tiedot tähän tiedostoon.

### Määritä cron-tehtävät

Määritä ensin **cron-tehtävien aikaraja**. Unix-tyyppisissä käyttöjärjestelmissä cron-tehtävät ovat tehtäviä, jotka suoritetaan automaattisesti taustalla ennalta määritellyin väliajoin. Kubernetes-ympäristössä toimivassa Nextcloudissa nämä ovat pääasiassa ylläpitotehtäviä. Tässä esimerkissä asetamme cron-tehtävän suorittumaan viiden minuutin välein. Suuremmilla tietomäärillä tiheämpi ylläpito voi olla suositeltavaa. Käytä seuraavaa koodia:

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

### Ota HPA käyttöön

Poista nyt käytöstä Horizontal Pod Autoscaler (HPA), joka skaalaa podien määrää automaattisesti. Jos käytät Nextcloudissa ReadWriteOnce-sovellusta ja haluat hallita skaalausta manuaalisesti, sinun tulisi poistaa HPA käytöstä ja keskittyä yhteen podiin. Tämä menetelmä on kätevämpi, jos vain muutama käyttäjä tarvitsee pääsyn. Sopiva koodi on:

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

### Korvaa kuvatunniste

Varmistaaksesi, että Helm-ohjelmiston nykyinen versio otetaan huomioon, korvaa kuvatunniste. Tee tämä seuraavalla koodilla:

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

Nyt on valittuna versio 28.0.2 tai uudempi versio.

### Valitse tietokanta

Tietokantaa valitessasi sinulla on kolme vaihtoehtoa: MariaDB, PostgreSQL tai SQLite. Tässä esimerkissä valitsemme MariaDB:n. Määritä tämä tietokanta seuraavasti ja poista kaksi muuta järjestelmää käytöstä:

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

### Seuraa mittareita

Jos haluat toteuttaa seurannan Prometheuksen tai Grafanan avulla, lisää seuraava koodi. Tämä on vapaaehtoista.

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

### Salli omat asetustiedostosi

Oletusarvoisesti Nextcloud käyttää Kubernetes-ympäristössä myös config.php-nimistä tiedostoa asetusten määrittämiseen. Voit yksinkertaistaa tai joustavoittaa tätä lisäämällä omia asetustiedostoja seuraavan koodin avulla:

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

Korvaa paikkamerkki ”example.com” omalla verkkotunnuksellasi.

### Määritä Redis

Voit parantaa Redis-välimuistin toimintaa ja yleistä suorituskykyä lisäämällä mukautetun määritystiedoston. Oletusarvoisesti Helm Redis asennetaan ilman salasanasuojausta, mutta on suositeltavaa lisätä ylimääräinen turvataso. Määritä Redis salasanasuojauksella ja integroi se Nextcloudiin seuraavan koodin avulla:

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

### Tallennusjärjestelmän määrittäminen

Viimeinen määritystiedosto lisätään S3-tallennusjärjestelmää varten. Se on tallennettu koodiin seuraavasti:

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

### Poista Redis-määritykset käytöstä

Koska olet yllä korvannut Redisin oletusasetukset, ne on nyt poistettava käytöstä virheiden välttämiseksi seuraavalla koodilla:

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

### Määritä isäntä, järjestelmänvalvoja ja salasana

Syötä nyt isäntäkoneen nimi, järjestelmänvalvojan käyttäjätunnus ja vastaava salasana Nextcloudin käyttöä varten Kubernetes-ympäristössä. Käytä tähän seuraavaa koodia:

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

Korvaa paikkamerkit omilla tiedoillasi.

### Määritä sähköpostimuistutukset

Voit halutessasi määrittää SMTP-palvelun (Simple Mail Transfer Protocol) vastaanottamaan ilmoituksia Nextcloudista:

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

### Määritä tallennusasema

Seuraava tallennusasetus koskee tietoja, jotka Nextcloud tallentaa kyseiselle tallennusvälineelle. Tämä ei vaikuta käyttäjätietoihisi, jotka tallennetaan S3-palveluun aikataulun mukaisesti:

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

### Suojaa Redis salasanalla

On suositeltavaa suojata Redis salasanalla. Tämä estää virheitä tunnistautumisen yhteydessä. Tee tämä seuraavan koodin avulla ja korvaa salasanasi tarvittaessa:

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

### Rajoita kopiointia

Koska olet jo poistanut HPA:n käytöstä, sinun tulisi rajoittaa mahdollisten replikaatioiden määrä arvoon 1:

```shell
replicaCount: 1
```

### Asenna Nextcloud Kubernetesiin

Lopuksi asenna Nexcloud Kubernetesiin ja lisää myös MariaDB ja 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/fi-fi/digitalguide/palvelin/asetukset/nextcloud-kubernetes/](https://www.ionos.com/fi-fi/digitalguide/palvelin/asetukset/nextcloud-kubernetes/) for AI/LLM consumption.