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
- 2. Konfigurasi
docker-compose.yml - 3. Jalankan Container
- 4. Konfigurasi Reverse Proxy
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 filedocker-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.ymlSalin 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: bridgeCatatan 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 -dSetelah 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.

