DMJBot Installation Guide

Wiki

Install DMJBot

DMJBot is installed from Docker Hub and runs as a single container.

Supported image:

  • dmjbot/dmjbot:latest

Prerequisites

  1. Docker installed and running.
  2. Network access from the container to your LLM provider endpoint.
  3. A persistent Docker volume or host bind mount for /data.

Quick start

docker run -d \
	--name dmjbot \
	-p 8080:80 \
	-v dmjbot-data:/data \
	dmjbot/dmjbot:latest

Then open:

  • http://localhost:8080

Initial configuration

Recommended minimum setup:

  1. Set your bot name and timezone.
  2. Configure your model provider and API key.

Install bridge on your device

Install DMJBot Bridge on the machine that has access to your files/drives.

macOS

curl -fsSL https://dmjbot.com/bridge/install.sh | bash

Linux

curl -fsSL https://dmjbot.com/bridge/install.sh | bash

Windows (PowerShell)

iwr -useb https://dmjbot.com/bridge/install.ps1 | iex

Verify:

dmjbot-bridge --version

Connect a drive (quickest example)

This is the simplest path to expose one folder/drive to DMJBot.

  1. In DMJBot UI, go to Settings -> Devices, add a device, and copy the connect_url.
  2. On the target machine, connect bridge:
dmjbot-bridge connect <connect_url>
  1. Install the local file server:
dmjbot-bridge install mcp-filestorage
  1. Configure it to one folder or drive root (for example /Volumes/Work, /mnt/work, or D:\\Work).
dmjbot-bridge configure mcp-filestorage
  1. Start bridge (or install as a service):
dmjbot-bridge start
# optional background service
dmjbot-bridge service install
dmjbot-bridge service start

After this, DMJBot can work with files only in the folder/drive you configured.

HTTPS mode (nginx reverse proxy)

Place certificates first:

  • docker/certs/fullchain.pem
  • docker/certs/privkey.pem

Then start DMJBot with nginx SSL termination:

docker compose -f docker/compose-nginx-ssl.yml up -d

This exposes HTTPS on port 443 and redirects HTTP (port 80) to HTTPS.

For built-in TLS and full SSL options, see SSL/TLS Setup.

Database options

DMJBot supports:

  • SQLite (default, simplest)
  • PostgreSQL
  • MySQL

Set DB type and settings using environment variables.

Example (PostgreSQL):

docker run -d \
	--name dmjbot \
	-p 8080:80 \
	-v dmjbot-data:/data \
	-e DMJBOT_DATABASE__TYPE=postgres \
	-e DMJBOT_DATABASE__SETTINGS__HOST=<postgres-host> \
	-e DMJBOT_DATABASE__SETTINGS__PORT=5432 \
	-e DMJBOT_DATABASE__SETTINGS__USER=<user> \
	-e DMJBOT_DATABASE__SETTINGS__PASSWORD=<password> \
	-e DMJBOT_DATABASE__SETTINGS__DATABASE=<db> \
	dmjbot/dmjbot:latest

More on database options

Required persistence note

Always mount /data.

Without it, chat history, files, and SQLite DB are lost when the container is recreated.

Verify installation

  1. docker ps shows dmjbot as running.
  2. curl http://localhost:8080/api/health returns JSON with status.
  3. Browser can open /config/ (first run) or /login/ (configured system).

Update DMJBot

docker pull dmjbot/dmjbot:latest
docker stop dmjbot
docker rm dmjbot
docker run -d --name dmjbot -p 8080:80 -v dmjbot-data:/data dmjbot/dmjbot:latest

Because data is in /data, your persisted state survives container replacement.

Next steps