Skip to content

Quick Start

Everything you need to get your own Chatto instance started is bundled into a single chatto binary. Depending on where and how you want to host it, there’s also a Docker image available; we also have example configuration files for Docker Compose, Kubernetes and more in the Deployment section.

The fastest way to try Chatto:

Terminal window
docker run -p 4000:4000 ghcr.io/hmans/chatto:latest

Open http://localhost:4000 in your browser.

To keep your configuration and data across container restarts, use a bind mount:

  1. Create a directory for Chatto data:

    Terminal window
    mkdir -p chatto-data
  2. Generate a configuration file:

    Terminal window
    docker run --rm \
    -v ./chatto-data:/data \
    ghcr.io/hmans/chatto:latest \
    init -c /data/chatto.toml

    This writes chatto.toml with generated secrets into your chatto-data/ directory on the host.

  3. Start the server:

    Terminal window
    docker run -p 4000:4000 \
    -v ./chatto-data:/data \
    ghcr.io/hmans/chatto:latest \
    run -c /data/chatto.toml
  4. Open your browser to http://localhost:4000.

  1. Download the latest release from GitHub Releases.

  2. Generate a configuration file:

    Terminal window
    chatto init

    This creates a chatto.toml with random secrets for cookie signing, asset signing, and NATS authentication.

  3. Start the server:

    Terminal window
    chatto run
  4. Open your browser to http://localhost:4000.

The chatto init command generates a configuration like this:

# chatto.toml (generated by chatto init)
[general]
log_level = "debug"
[webserver]
port = 4000
url = "http://localhost:4000"
cookie_signing_secret = "<generated>"
[core.assets]
signing_secret = "<generated>"
max_upload_size = "25 MB"
[nats.embedded]
enabled = true
port = 4222
bind_address = "127.0.0.1"
http_port = 8222
data_dir = "./data"
auth_token = "<generated>"
[nats.client]
url = "nats://localhost:4222"
auth_method = "token"
token = "<generated>"