7.9 KiB
docker
One compose file per image, all collected in the compose/ folder, freely combined via start.sh/stop.sh keyword arguments. No more db/mq/scenario layered files. The root folder only keeps the readme docs, launcher scripts and .env config.
Quick Start
# clone project
git clone https://github.com/Bytedesk/bytedesk.git
cd bytedesk/deploy/docker
# configure environment variables (adjust passwords/keys as needed)
cp .env.example .env
# start the default full stack (mysql + artemis + redis + elasticsearch + bytedesk app)
./start.sh
# visit http://127.0.0.1:9003, default account admin@email.com / admin
Common Commands
# default full stack (equals ./start.sh all)
./start.sh
./stop.sh # stop
./stop.sh down # remove containers (volumes kept)
# middleware only (for local source development)
./start.sh middleware
./stop.sh middleware down
# switch database / message queue (choose 1 db, 1 mq)
./start.sh postgresql rabbitmq middleware
./start.sh oracle middleware
./start.sh kingbase all
# call center (call = freeswitch + mrcp; mysql/postgresql only)
./start.sh call all
./start.sh call middleware
./stop.sh call middleware down
# WebRTC audio/video (webrtc = coturn + janus)
./start.sh webrtc all
./start.sh call webrtc middleware obs minio mrcp searxng # free combination
./stop.sh call webrtc middleware obs minio mrcp searxng down
# optional components (any combination)
./start.sh all minio searxng
./start.sh middleware obs # obs = prometheus + grafana + zipkin + otelcol
./stop.sh middleware obs
./start.sh middleware logstash kibana
./stop.sh middleware logstash kibana down
Keyword Reference
| Category | Keywords (alias) | Notes |
|---|---|---|
| Database (pick 1, default mysql) | mysql postgresql(pg) oracle kingbase(kingbase9) |
auto-created |
| Message queue (pick 1, default artemis) | artemis rabbitmq |
|
| Core middleware | redis elasticsearch(es) |
always included |
| Call center | freeswitch mrcp, combo call |
call supports mysql/postgresql only |
| WebRTC | coturn janus, combo webrtc |
|
| Search/storage | searxng(search) minio neo4j |
enterprise feature |
| File preview | gotenberg |
Office→PDF conversion sidecar, enterprise feature; enable via BYTEDESK_PREVIEW_CONVERT_ENABLED=true + BYTEDESK_PREVIEW_CONVERT_MODE=remote |
| Logging | logstash kibana |
depends on elasticsearch |
| Observability | prometheus grafana zipkin otelcol(opentelemetry), combo obs |
tracing backend: zipkin (Brave) or otelcol (OTLP), see observability readme |
| Target | middleware / all(bytedesk), default all |
expansion see below |
all / middleware expansion
| Target keyword | Included images (compose files) | Notes |
|---|---|---|
all (default) |
everything in middleware + bytedesk app (compose-redis + compose-elasticsearch + compose- + compose- + compose-bytedesk) |
full stack: middleware + app image |
middleware |
compose-redis + compose-elasticsearch + compose- + compose- | middleware only, without the bytedesk app; for local source development |
Note: redis and elasticsearch are core middleware always included; <db> defaults to mysql (postgresql/oracle/kingbase optional), <mq> defaults to artemis (rabbitmq optional); extra components (freeswitch, obs, minio, ...) stack on top via keywords.
Stop: ./stop.sh [stop|down] [keywords...] — the action keyword may appear anywhere; pass the same keywords used at start; down removes containers but keeps volumes.
File List
All compose files and their per-component configs (searxng/, grafana/, logstash/, prometheus.yml, ik-plugin-cache/) live in the compose/ folder:
| Compose file (in compose/) | Image | Default ports | Details |
|---|---|---|---|
| compose/compose-redis.yaml | redis | 16379 | — |
| compose/compose-elasticsearch.yaml | elasticsearch:9.4.2 | 19200/19300 | — |
| compose/compose-mysql.yaml | mysql | 13306 | Database |
| compose/compose-postgresql.yaml | postgres:17 | 15432 | Database |
| compose/compose-oracle.yaml | gvenzl/oracle-free:23-slim | 11521 | Database |
| compose/compose-kingbase.yaml | kingbase V9 | 54321 | Database |
| compose/compose-artemis.yaml | activemq-artemis:2.40.0 | 16161/18161 | Message queue |
| compose/compose-rabbitmq.yaml | rabbitmq:4.2.3 | 5673/15673 | Message queue |
| compose/compose-bytedesk.yaml | bytedesk app | 9003/9885 | — |
| compose/compose-freeswitch.yaml | bytedesk/freeswitch | 15060/18021 | FreeSWITCH |
| compose/compose-mrcp.yaml | bytedesk/mrcp | 11544 | Call center |
| compose/compose-coturn.yaml | coturn:4.6.3 | 13478 | WebRTC |
| compose/compose-janus.yaml | bytedesk/janus | 18089/18188 | WebRTC |
| compose/compose-searxng.yaml | searxng | 18888 | SearXNG |
| compose/compose-neo4j.yaml | neo4j:5.26.30 | 17474/17687 | Neo4j |
| compose/compose-logstash.yaml | logstash:9.4.2 | 19600 | Logstash |
| compose/compose-kibana.yaml | kibana:9.4.2 | 15601 | Kibana |
| compose/compose-minio.yaml | minio | 19000/19001 | MinIO |
| compose/compose-prometheus.yaml | prometheus | 19090 | Observability |
| compose/compose-grafana.yaml | grafana | 13000 | Observability |
| compose/compose-zipkin.yaml | zipkin | 19411 | Observability |
| compose/compose-otelcol.yaml | otel/opentelemetry-collector-contrib | 14317/14318 | Observability — OTLP receiver, forwards traces to Zipkin |
| compose/compose-gotenberg.yaml | gotenberg/gotenberg:8 | internal only (no host port) | File preview conversion sidecar; see File Preview docs |
Other files: start.sh/stop.sh (compose launcher), watchdog.sh (app watchdog, see watchdog guide), .env (secrets), one/ (all-in-one deployment).
Manual docker compose
To bypass the scripts, run from the deploy/docker directory (--env-file .env loads the secrets):
docker compose --env-file .env -p bytedesk \
-f compose/compose-redis.yaml -f compose/compose-elasticsearch.yaml \
-f compose/compose-mysql.yaml -f compose/compose-artemis.yaml \
-f compose/compose-bytedesk.yaml up -d
Note: relative paths inside the compose files (./searxng, ../../freeswitch, ...) resolve against the compose/ directory; relative values in .env (such as KINGBASE_LICENSE_FILE, MRCP_*_DIR) do as well. Container names, volume names and network names are unchanged, so existing data carries over seamlessly.
More
Detailed docs live in readme/: quickstart · database · message queue · call center · FreeSWITCH · WebRTC · SearXNG · Neo4j · Logstash · Kibana · MinIO · observability · watchdog · env vars · migration guide