Cara Install Nextcloud dengan Docker di VPS Ubuntu

Males bayar langganan Google Drive atau Dropbox tiap bulan? Nextcloud Docker jadi jawabannya, kamu bisa punya cloud storage pribadi sendiri di VPS, lengkap dengan sync file, sharing, sampai kolaborasi dokumen, tanpa batasan kuota yang dipaksa provider lain.

Di artikel ini kita bahas cara install Nextcloud dengan Docker Compose di VPS Ubuntu, lengkap dengan MariaDB sebagai database dan Redis buat caching biar performanya lebih responsif.

Kenapa Pakai Nextcloud Docker

Nextcloud itu platform open-source yang fiturnya mirip gabungan Google Drive, Google Docs, dan aplikasi kolaborasi tim, tapi semuanya kamu host sendiri, jadi data kamu sepenuhnya di bawah kontrol kamu, gak nebeng di server perusahaan lain. Install lewat Docker bikin setup-nya jauh lebih rapi, karena Nextcloud butuh beberapa komponen (web app, database, caching) yang kalau diinstall manual satu-satu bisa ribet banget ngurusin dependency-nya.

Buat referensi lengkap image resminya, kamu bisa cek halaman resmi Nextcloud di Docker Hub. Image ini rutin diupdate dan udah dipakai jutaan kali, jadi cukup teruji buat pemakaian jangka panjang.

Yang kamu butuhin cuma VPS dengan Docker dan Docker Compose udah terinstal, port 8095 yang masih kosong (bisa disesuaikan), dan storage yang cukup sesuai estimasi ukuran file yang bakal kamu simpen. Satu hal yang sering kelewat pas setup awal: karena setup ini punya database (MariaDB) di baliknya, jangan lupa strategi backup buat volume db_data-nya juga, bukan cuma file dokumen di nextcloud_data. Data yang paling gampang bikin masalah kalau ilang itu justru bukan file kamu, tapi metadata di database yang nentuin struktur folder dan permission sharing.

1. Bikin File Docker Compose

Bikin folder kerja, terus bikin file docker-compose.yml:

mkdir -p ~/nextcloud
cd ~/nextcloud
nano docker-compose.yml

Isi dengan konfigurasi berikut. Setup ini terdiri dari 3 service: db (MariaDB buat database), redis (buat caching biar Nextcloud lebih responsif), dan app (Nextcloud sendiri):

services:
  db:
    image: mariadb:10.11
    container_name: nextcloud_db
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - db_data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=ganti_password_root_kuat
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=ganti_password_db_kuat

  redis:
    image: redis:alpine
    container_name: nextcloud_redis
    restart: unless-stopped

  app:
    image: nextcloud:latest
    container_name: nextcloud_app
    restart: unless-stopped
    ports:
      - "8095:80"
    volumes:
      - nextcloud_data:/var/www/html
    environment:
      - MYSQL_HOST=db
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=ganti_password_db_kuat
      - REDIS_HOST=redis
    depends_on:
      - db
      - redis

volumes:
  db_data:
  nextcloud_data:

Penting: ganti ganti_password_root_kuat dan ganti_password_db_kuat dengan password asli yang kuat, dan pastiin password MYSQL_PASSWORD di service db dan app sama persis. Kalau kamu butuh nyimpen file dari lokasi lain di server (misal hasil sync dari tempat lain), kamu bisa tambahin volume mount tambahan di service app, contohnya - /path/di/server:/mnt/nama-folder.

2. Jalankan Nextcloud Docker

Simpan file-nya, terus jalankan:

docker compose up -d

Proses ini bakal narik 3 image sekaligus (MariaDB, Redis, Nextcloud), jadi wajar kalau butuh waktu beberapa menit di percobaan pertama tergantung kecepatan internet server kamu.

3. Buka Port di Firewall

Kalau kamu pakai UFW (baca juga panduan setup UFW firewall kalau belum pernah setting), buka port yang dipakai:

sudo ufw allow 8095/tcp

4. Setup Admin Nextcloud Docker Pertama Kali

Buka browser, akses:

http://IP-VPS:8095

Di percobaan pertama, Nextcloud bakal minta kamu bikin akun admin. Isi username dan password yang kuat, karena akun ini bakal punya akses penuh ke semua data dan setting Nextcloud kamu.

5. Aktifin Redis Buat Caching

Redis udah kekonek otomatis lewat environment variable REDIS_HOST, tapi buat mastiin performa optimal, tambahin config ini lewat occ command (dijalanin dari dalam container):

docker exec -it nextcloud_app php occ config:system:set memcache.local --value="\OC\Memcache\APCu"
docker exec -it nextcloud_app php occ config:system:set memcache.distributed --value="\OC\Memcache\Redis"
docker exec -it nextcloud_app php occ config:system:set redis host --value="redis"

Ini bikin Nextcloud pakai Redis buat distributed caching, ngurangin beban ke database dan bikin loading halaman jauh lebih cepat, apalagi kalau kamu banyak upload/akses file bareng-bareng.

Beberapa Hal yang Bisa Bikin Bingung di Awal

Kalau Nextcloud gak bisa connect ke database, cek lagi apakah container db udah beneran Up lewat docker ps, dan pastiin password MYSQL_PASSWORD sama persis di kedua service, ini penyebab paling sering. Kalau muncul warning soal trusted domain, itu proteksi bawaan Nextcloud dari akses domain yang gak dikenal, tambahin domain/IP kamu ke config.php lewat docker exec -it nextcloud_app php occ config:system:set trusted_domains 1 --value=IP-atau-domain-kamu.

Kalau upload file besar gagal/timeout, default PHP di container ini punya limit upload yang kecil, perlu custom php.ini buat naikin upload_max_filesize dan post_max_size lewat volume mount tambahan. Dan soal data ilang setelah container di-recreate, ini yang paling penting: pastiin volume nextcloud_data dan db_data udah bener kedefinisiin di bagian volumes: paling bawah file compose, dan hindari flag -v pas docker compose down kalau gak yakin, karena flag itu yang beneran ngehapus volume-nya, bukan cuma container-nya.

Penutup

Nah, segitu aja cara install Nextcloud dengan Docker di VPS Ubuntu. Dengan setup ini kamu punya cloud storage pribadi yang sepenuhnya di bawah kontrol kamu sendiri, gak perlu khawatir data kamu dipakai buat training AI atau dianalisis pihak ketiga kayak layanan cloud gratisan. Kalau ada yang error atau nyangkut, drop komentar aja bro.

Jundi Husni Mubaraq

Jundi Husni Mubaraq

Saya seorang software engineer yang sejak awal 2026 megang penuh (sendirian) tanggung jawab infrastruktur server di tempat saya kerja: deploy dan maintain server Linux Ubuntu on-premises, bangun keamanan berlapis pakai CrowdSec dan Cloudflare, kelola job scheduling dan monitoring pakai Cronicle, deploy aplikasi containerized pakai Docker, sampai ngurusin mail server korporat dari nol. Sebelumnya saya 3+ tahun jadi Software Engineer/Fullstack Developer di beberapa perusahaan, termasuk proyek skala internasional (EUDR compliance system buat Lindt & Sprungli) dan sistem rumah sakit (SIMRS, rekam medis elektronik, integrasi BPJS Kesehatan) di RS PKU Muhammadiyah Surakarta. jundi.hm ini tempat saya dokumentasiin apa yang beneran saya kerjain dan pelajarin di lapangan, bukan sekadar riset teori, S.Kom dari Universitas Duta Bangsa Surakarta jadi bekal awal, tapi yang nulis di sini adalah pengalaman langsung ngelola server production sehari-hari. Selengkapnya: https://iam.jundi.hm

Lihat Juga Nih

Selanjutnya Nih

Kasih Komentar

Email kamu gak bakal ditampilin ke publik. Kalau ada tanda ini artinya wajib diisi ya *

Rekomendasi.

Lagi Viral.