Docker Compose
Docker Compose
File docker-compose.yml di root repositori menjalankan seluruh
stack: infrastruktur (Postgres, Mongo, Redis, Redpanda, MinIO, Mailpit),
microservice Rust, dan frontend SvelteKit. Ini adalah cara paling cepat
menjalankan OmniStream end-to-end di VPS atau mesin lokal anda.
Prasyarat singkat
- Docker Engine 24.x atau lebih baru
- Docker Compose v2 (plugin
docker compose, bukandocker-compose) - RAM minimal 4 GB (8 GB lebih nyaman — Redpanda + Rust build terhitung berat)
- Disk minimal 10 GB kosong
Layanan yang dideklarasikan
docker-compose.yml mendefinisikan 15 service plus 5 named volume.
Semua service hidup di satu network default Compose.
Infrastruktur
| Service | Image | Port host | Volume |
|---|---|---|---|
postgres | postgres:15-alpine | 5432 | postgres_data |
mongodb | mongo:7 | 27017 | mongo_data |
redis | redis:7-alpine | 6379 | redis_data |
redpanda | redpandadata/redpanda:latest | 19092, 18082 | redpanda_data |
minio | minio/minio:latest | 9000, 9001 | minio_data |
minio-init | minio/mc:latest | — | — |
mailpit | axllent/mailpit:latest | 1025, 8025 | — |
adminer | adminer:latest | 8080 | — |
redpanda-console | redpanda-console:latest | 8081 | — |
Alasan pakai Redpanda, bukan Apache Kafka: API-compatible dengan rdkafka tapi bootstrap jauh lebih ringan (1 process, tanpa ZooKeeper).
Microservice Rust
Seluruh crate Rust dibangun dari satu Dockerfile shared di root:
| Service | Bin name | Port host |
|---|---|---|
api-gateway | api-gateway | 3000 |
webhook-ingestor | webhook-ingestor-* | 3001, 3003, 3004 |
chat-engine | chat-engine-* | — |
message-sender | message-sender-* | — |
ws-server | ws-server | 3002 |
webhook-ingestor, chat-engine, dan message-sender masing-masing
punya tiga binary terpisah (whatsapp/instagram/email) — topologinya
dijelaskan di developer/pendahuluan/arsitektur.
Frontend
| Service | Image | Port host | Catatan |
|---|---|---|---|
frontend | build dari frontend/Dockerfile | 4000 | SvelteKit + Svelte 5 runes |
Volume
Code
Backup: minimal backup postgres_data dan mongo_data secara
berkala — keduanya menyimpan data bisnis. redpanda_data dan
redis_data adalah state transient dan dapat dibangun ulang.
Perintah dasar
Code
docker compose down -v menghapus volume postgres_data dan
mongo_data — data contact, conversation, dan pesan anda akan hilang.
Gunakan hanya saat reset total.
Migrasi otomatis
Saat api-gateway start, ia menjalankan
sqlx::migrate!("./migrations") yang memproses semua file di folder
migrations/ secara berurutan. Anda tidak perlu menjalankan migrasi
manual. Detail ada di developer/self-hosting/migrations.
Integrasi hot-reload
Semua service yang memanggil Meta Graph API (message-sender-*,
api-gateway) polling tabel integrations setiap 30 detik. Jadi anda
dapat mengubah META_ACCESS_TOKEN atau token Instagram via UI
Settings → Integrations tanpa me-restart container.