Znalostní Báze

Informace o sdružení vpsFree.cz, návody a nejčastější dotazy.

Uživatelské nástroje

Nástroje pro tento web


navody:server:nextcloud_docker_centos

Nextcloud v Dockeru na CentOS 7

Tento návod se týká zprovoznění dockeru přímo v naší VPS, tedy pod OpenVZ, což jde jen s určitými omezeními, viz níže.

Docker lze bez omezení provozovat s využitím KVM.

Tento návod je vyzkoušen pro CentOS 7.3.1611.

Docker

1) vpsAdmin / VPS → Features → je třeba zapnout Bridge, iptables a TUN/TAP (VPS se restartuje)

2) Spusťte následující příkaz a znovu restartujeme VPS:

# echo "JoinControllers=cpu,cpuacct,cpuset freezer,devices" >> /etc/systemd/system.conf

3) Docker u nás funguje jen do verze 1.10. Novější verzi se zatím nikomu nepovedlo zprovoznit, neboť to pravděpodobně vyžaduje úpravu jádra.

V oficiálních repozitářích CentOS (repo extras) je již verze 1.13, ktera s OpenVZ nefunguje. Proto je třeba nainstalovat verzi 1.10.3, která je také v repozitáři.

# yum install docker-1.10.3

4) Je vhodné zakázat aktualizace dockeru, což provedeme příkazem:

# echo "exclude=docker*" >> /etc/yum.conf

5) Aby měly kontejnery správný přístup k filesystému, je třeba upravit výchozí systemd unit.

# mkdir -p /usr/lib/systemd/system/docker.service.d/
# cat <<EOF > /etc/systemd/system/docker.service.d/shared_mounts.conf
  [Service]
  MountFlags=shared
  EOF

6) Dáme vědět systemd o změnách a spustíme Docker:

# systemctl daemon-reload
# systemctl start docker.service
# systemctl enable docker.service

Zkontrolujeme, zda je Docker úspěšně spuštěný. Můžeme vyzkoušet hello-world image:

# docker run hello-world

Na CentOS je potřeba Docker ovládat s administrátorskými právy. Přidání lokálního uživatele do skupiny docker zde nefunguje jako na jiných systémech (Debian).

Nextcloud

Použijeme neoficiální, ale populárnější image https://hub.docker.com/r/wonderfall/nextcloud/. Databáze MariaDB bude v druhém kontejneru.

1) Vytvoříme systémového uživatele, který bude vlastnit soubory Nextcloudu:

# useradd -r -s /sbin/nologin nextcloud

Zjistíme UID a GID nového uživatele:

# id nextcloud

2) Připravíme složky pro uchovávání dat z Docker kontejnerů. Všechny soubory budou uloženy pod /mnt/nas/nextcloud, kde /mnt/nas je připojený dataset z NASu.

/mnt/nas/nextcloud/db
/mnt/nas/nextcloud/data
/mnt/nas/nextcloud/config
/mnt/nas/nextcloud/apps

Změníme vlastníka těchto složek příkazem:

# chown -R nextcloud:nextcloud /mnt/nas/nextcloud

3) Stáhneme si Docker compose:

# curl -L "https://github.com/docker/compose/releases/download/1.10.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose

4) Vytvoříme docker-compose.yml s následujícím obsahem:

version: '2'
services:
  nextcloud-db:
    image: mariadb:10.1
    volumes:
      - /mnt/nas/nextcloud/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=<password1>
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=<password2>
    restart: always
  nextcloud:
    image: wonderfall/nextcloud:11.0
    environment:
      - UID=991  # nextcloud user
      - GID=988  # nextcloud group
      - UPLOAD_MAX_SIZE=10G
      - APC_SHM_SIZE=128M
      - OPCACHE_MEM_SIZE=128
      - REDIS_MAX_MEMORY=64mb
      - CRON_PERIOD=15m
      - TZ=Europe/Prague
      - ADMIN_USER=admin
      - ADMIN_PASSWORD=<password3>
      - DB_TYPE=mysql
      - DB_NAME=nextcloud
      - DB_USER=nextcloud
      - DB_PASSWORD=<password2>
      - DB_HOST=nextcloud-db
    depends_on:
      - nextcloud-db
    volumes:
      - /mnt/nas/nextcloud/data:/data
      - /mnt/nas/nextcloud/config:/config
      - /mnt/nas/nextcloud/apps:/apps2
    ports:
      - "127.0.0.1:8888:8888/tcp"
    restart: always

Správně vyplníme některé hodnoty, hlavně hesla a UID a GID vytvořeného uživatele nextcloud.

5) Spustíme kontejnery příkazem:

# /usr/local/bin/docker-compose up -d

6) Nextcloud je nyní připraven na příjem po protokolu http na localhost adrese 127.0.0.1:8888, na kterou je třeba nastavit reverse proxy server (např. Apache nebo Nginx). Ten se může zároveň postarat i o příjem po https a převedení vnějšího IPv6 spojení na interní IPv4.

navody/server/nextcloud_docker_centos.txt · Poslední úprava: 2017/02/23 09:08 autor: stefan