Skip to main content
Deploy Excalidash via Docker
  1. doc/

Deploy Excalidash via Docker

·3 mins·

Panduan ini menjelaskan cara deploy Excalidash, sebuah dashboard dan pengelola self-hosted untuk Excalidraw dengan fitur kolaborasi langsung, menggunakan Docker. Excalidash menyediakan penyimpanan persisten untuk semua gambar Anda, kolaborasi real-time, riwayat versi dan kemampuan untuk mengembalikan ke versi sebelumnya, serta dukungan otentikasi multi-pengguna opsional (termasuk OIDC).

Deployment ini akan memisahkan lokasi file konfigurasi (docker-compose.yml) dengan lokasi penyimpanan data (volume mount). Dengan begitu, data gambar, akun, dan pengaturan lainnya akan tetap aman meskipun container Docker dihapus atau dibangun ulang.

Catatan: Dalam panduan ini, path ~ merujuk pada direktori home user Anda (contoh: /home/namauser). Sesuaikan dengan struktur direktori di server Anda. Semua kata sandi akan ditulis sebagai [ISI PASSWORD DISINI].

Daftar Isi
#

1. Buat Struktur Direktori
#

Pertama, buat direktori terpisah untuk menyimpan file docker-compose.yml dan volume data Excalidash.

mkdir -p ~/program/3_excalidash
mkdir -p ~/volume-docker-mount/mount-excalidash
  • ~/program/3_excalidash: Lokasi untuk menyimpan file docker-compose.yml.
  • ~/volume-docker-mount/mount-excalidash: Lokasi untuk menyimpan database SQLite dan data Excalidash.

2. Konfigurasi docker-compose.yml
#

Buat docker-compose.yml menggunakan editor teks seperti nano:

nano ~/program/3_excalidash/docker-compose.yml

Salin dan tempel konfigurasi berikut. Konfigurasi ini dirancang agar:

  • Port hanya terekspos di localhost (127.0.0.1:8200) untuk keamanan.
  • Data tersimpan di direktori ~/volume-docker-mount/mount-excalidash.
services:
  backend:
    image: zimengxiong/excalidash-backend:latest
    container_name: excalidash-backend
    environment:
      - DATABASE_PROVIDER=sqlite
      - DATABASE_URL=file:/app/prisma/dev.db
      - PORT=8000
      - NODE_ENV=production
      - AUTH_MODE=local
      - TRUST_PROXY=true
      - FRONTEND_URL=https://domain-kamu.com #ganti ini dengan domain yang kamu gunakan untuk mengakses web ini
    volumes:
      # Mount direktori lokal ke dalam container
      - ~/volume-docker-mount/mount-excalidash:/app/prisma
    networks:
      - excalidash-network
    restart: always
    healthcheck:
      test:
        [
          "CMD",
          "node",
          "-e",
          "require('http').get('http://127.0.0.1:8000/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1))",
        ]
      interval: 30s
      timeout: 10s
      retries: 3

  frontend:
    image: zimengxiong/excalidash-frontend:latest
    container_name: excalidash-frontend
    ports:
      # Bind ke localhost VPS saja sebelum dihubungkan ke Reverse Proxy
      - "127.0.0.1:8200:80"
    depends_on:
      - backend
    networks:
      - excalidash-network
    restart: always
    healthcheck:
      test:
        [
          "CMD",
          "wget",
          "--quiet",
          "--tries=1",
          "--spider",
          "http://127.0.0.1:80",
        ]
      interval: 30s
      timeout: 10s
      retries: 3

networks:
  excalidash-network:
    driver: bridge

Catatan Konfigurasi:

  • TRUST_PROXY=true: Opsi ini wajib diaktifkan jika Anda akan menjalankan Excalidash di belakang reverse proxy (seperti Nginx) agar IP asli klien dapat dikenali.
  • Database & Secrets: ExcaliDash menyimpan semua data (gambar, akun, secrets) di dalam volume yang telah kita siapkan di ~/volume-docker-mount/mount-excalidash.

3. Jalankan Container
#

Pindah ke direktori proyek dan jalankan Docker Compose dalam mode detached (-d).

cd ~/program/3_excalidash
docker compose up -d

Setelah perintah ini dijalankan, container Excalidash akan berjalan di background.


4. Konfigurasi Reverse Proxy
#

Saat ini, Excalidash hanya dapat diakses dari dalam server melalui http://127.0.0.1:8200.

Untuk membuatnya dapat diakses dari luar, Anda perlu mengatur reverse proxy (misalnya menggunakan Nginx atau Nginx Proxy Manager) untuk meneruskan trafik dari domain Anda ke alamat tersebut.

Setelah reverse proxy diatur, Anda dapat mengakses Excalidash melalui domain Anda dan membuat akun lokal untuk mulai menyimpan gambar.

Askarhabibulloh
Author
Askarhabibulloh