photo 2023 01 15 11 40 45

Cara Install Nextcloud dengan Docker di Linux

Komputer lamamu bisa digunakan sebagai cloud storage menggunakan Nextcloud. Hari ini kita praktik cara install Nextcloud dengan Docker di Linux

Apa itu Nextcloud?

Nextcloud adalah program yang memungkinkan kamu membuat cloud storage di server kamu.

Nextcloud semacam Google Drive dan Dropbox, tetapi Open Source. Yup, Nextcloud dapat diunduh gratis yang didistribusikan di bawah lisensi AGPLv3.

photo 2023 01 15 11 01 31
Tampilan Nextcloud milik saya.

Saya memasang Nextcloud di Intel NUC bertenaga Intel Atom dan RAM 4 GB. Selain Nextcloud, ada juga WordPress, Syncthing, dan Pihole yang berjalan. Nextcloud masih bisa digunakan, meskipun agak lambat.

Install Nextcloud dengan Docker

Docker memudahkan kita untuk memasang sesuatu. Saya akui saya telat menggunakannya. Begitu juga dengan instalasi Nextcloud yang lebih mudah dengan Docker.

Jika kamu pengguna Alpine Linux dan belum memasang Docker, kamu bisa membaca artikel “Cara Install Docker di Alpine Linux“.

Pertama buat berkas “.env” dengan aplikasi text editor favoritmu.

$ vim .env
TZ=Asia/Jakarta
PUID=1000
PGID=1000

MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud
MYSQL_PASSWORD=nextcloud

Lalu buat berkas “msmtpd.env

$ vim msmtpd.env
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_TLS=on
SMTP_STARTTLS=on
SMTP_TLS_CHECKCERT=on
SMTP_AUTH=on
SMTP_USER=foo
SMTP_PASSWORD=bar
[email protected]

Buat berkas baru bernama “nextcloud.env

$ vim nextcloud.env
MEMORY_LIMIT=512M
UPLOAD_MAX_SIZE=512M
OPCACHE_MEM_SIZE=128
APC_SHM_SIZE=128M
REAL_IP_FROM=0.0.0.0/32
REAL_IP_HEADER=X-Forwarded-For
LOG_IP_VAR=remote_addr

HSTS_HEADER=max-age=15768000; includeSubDomains
RP_HEADER=strict-origin
SUBDIR=

Terakhir, buat berkas docker-compose.yml yang berisi konfigurasi Docker Nextcloud. Pastikan kamu sudah memasang Docker Compose.

$ vim docker-compose.yml
version: "3.2"

services:
  db:
    image: mariadb:10.5
    container_name: nextcloud_db
    volumes:
      - "db:/var/lib/mysql"
    environment:
      - "MYSQL_ALLOW_EMPTY_PASSWORD=yes"
      - "MYSQL_DATABASE"
      - "MYSQL_USER"
      - "MYSQL_PASSWORD"
    restart: always

  redis:
    image: redis:6-alpine
    container_name: nextcloud_redis
    environment:
      - "TZ"
    restart: always

  msmtpd:
    image: crazymax/msmtpd:latest
    container_name: nextcloud_msmtpd
    env_file:
      - "./msmtpd.env"
    environment:
      - "TZ"
    restart: always

  nextcloud:
    image: crazymax/nextcloud:latest
    container_name: nextcloud
    depends_on:
      - db
      - redis
      - msmtpd
    ports:
      - target: 8000
        published: 8000
        protocol: tcp
    volumes:
      - "nextcloud:/data"
    env_file:
      - "./nextcloud.env"
    environment:
      - "TZ"
      - "PUID"
      - "PGID"
      - "DB_TYPE=mysql"
      - "DB_HOST=db"
      - "DB_NAME=${MYSQL_DATABASE}"
      - "DB_USER=${MYSQL_USER}"
      - "DB_PASSWORD=${MYSQL_PASSWORD}"
    restart: always

  cron:
    image: crazymax/nextcloud:latest
    container_name: nextcloud_cron
    depends_on:
      - nextcloud
    volumes:
      - "nextcloud:/data"
    env_file:
      - "./nextcloud.env"
    environment:
      - "TZ"
      - "PUID"
      - "PGID"
      - "DB_TYPE=mysql"
      - "DB_HOST=db"
      - "DB_NAME=${MYSQL_DATABASE}"
      - "DB_USER=${MYSQL_USER}"
      - "DB_PASSWORD=${MYSQL_PASSWORD}"
      - "SIDECAR_CRON=1"
      - "CRON_PERIOD=*/5 * * * *"
    restart: always

  previewgen:
    image: crazymax/nextcloud:latest
    container_name: nextcloud_previewgen
    depends_on:
      - nextcloud
    volumes:
      - "nextcloud:/data"
    env_file:
      - "./nextcloud.env"
    environment:
      - "TZ"
      - "PUID"
      - "PGID"
      - "DB_TYPE=mysql"
      - "DB_HOST=db"
      - "DB_NAME=${MYSQL_DATABASE}"
      - "DB_USER=${MYSQL_USER}"
      - "DB_PASSWORD=${MYSQL_PASSWORD}"
      - "SIDECAR_PREVIEWGEN=1"
      - "PREVIEWGEN_PERIOD=0 * * * *"
    restart: always

  news_updater:
    image: crazymax/nextcloud:latest
    container_name: nextcloud_news_updater
    depends_on:
      - nextcloud
    volumes:
      - "nextcloud:/data"
    env_file:
      - "./nextcloud.env"
    environment:
      - "TZ"
      - "PUID"
      - "PGID"
      - "DB_TYPE=mysql"
      - "DB_HOST=db"
      - "DB_NAME=${MYSQL_DATABASE}"
      - "DB_USER=${MYSQL_USER}"
      - "DB_PASSWORD=${MYSQL_PASSWORD}"
      - "SIDECAR_NEWSUPDATER=1"
      - "NC_NEWSUPDATER_THREADS=10"
      - "NC_NEWSUPDATER_TIMEOUT=300"
      - "NC_NEWSUPDATER_INTERVAL=900"
      - "NC_NEWSUPDATER_LOGLEVEL=error"
    restart: always

volumes:
  db:
  nextcloud:
Code language: JavaScript (javascript)

Setelah itu jalankan docker-compose. Nextcloud akan berjalan di port 8000.

$ docker-compose up -d

Selamat, kamu berhasil install Nextcloud dengan Docker di Linux.

Artikel Terkait

Leave a Reply

Your email address will not be published. Required fields are marked *