Files
crmdesk/deploy/docker/readme.md
T
2026-09-19 16:35:35 +08:00

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