Quick Start
Introduction
Section titled “Introduction”Everything you need to get your own Chatto server 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. For production-style examples, see the deployment guides for Docker Compose, the standalone binary, and high-availability setups.
Using Docker (Recommended)
Section titled “Using Docker (Recommended)”The fastest way to try Chatto:
docker run -p 4000:4000 ghcr.io/chattocorp/chatto:latestOpen http://localhost:4000 in your browser.
Persistent Docker Setup
Section titled “Persistent Docker Setup”To keep your configuration and data across container restarts, use a bind mount:
-
Create a directory for Chatto data:
Terminal window mkdir -p chatto-data -
Generate a configuration file:
Terminal window docker run --rm \-v ./chatto-data:/data \ghcr.io/chattocorp/chatto:latest \init -c /data/chatto.tomlThis writes
chatto.tomlwith generated secrets into yourchatto-data/directory on the host. -
Start the server:
Terminal window docker run -p 4000:4000 \-v ./chatto-data:/data \ghcr.io/chattocorp/chatto:latest \run -c /data/chatto.toml -
Open your browser to http://localhost:4000.
From Binary
Section titled “From Binary”-
Download the latest release from GitHub Releases.
-
Generate a configuration file:
Terminal window chatto initThis creates a
chatto.tomlwith random secrets for cookie signing, cookie encryption, runtime-token verifiers, asset signing, and NATS authentication. -
Start the server:
Terminal window chatto run -
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 = "info"# log_format = "auto"
[owners]emails = []
[webserver]url = "http://localhost:4000"port = 4000allowed_origins = ["*"]oauth_redirect_origins = []cookie_signing_secret = "<generated>"cookie_encryption_secret = "<generated>"
[core]secret_key = "<generated>"
[core.assets]signing_secret = "<generated>"max_upload_size = "25 MB"storage_backend = "nats"
[auth]direct_registration = true# token_ttl = "90d"
[smtp]enabled = false
[nats]replicas = 1
# [nats.client]# url = "nats://nats.example.com:4222"# auth_method = "token"# token = "replace-me"
[nats.embedded]enabled = true# port = 4222# bind_address = "127.0.0.1"# http_port = 8222data_dir = "./data"auth_token = "<generated>"The embedded NATS TCP listener is commented out by default. Leave it that way for the simplest single-process setup; uncomment nats.embedded.port when you need CLI tools such as chatto backup or chatto keys export to connect to the running embedded NATS server.