Get started

Run Antimatter on your own server

One file, three commands, about ten minutes: Antimatter with its database, its file storage and its GIF service, on any Linux server with Docker.

Up and running in ten minutes

You need a Linux server with Docker and its Compose plugin, 2 CPU cores and 4 GB of memory or more.

1. Download the compose file

$ mkdir antimatter && cd antimatter
$ curl -fsSLO https://antimatter.chat/compose.yaml

2. Create its settings, with random passwords

$ cat > .env <<EOF
SITE_URL=http://localhost:8065
POSTGRES_PASSWORD=$(openssl rand -hex 24)
S3_SECRET_KEY=$(openssl rand -hex 24)
GIFS_API_KEY=$(openssl rand -hex 24)
EOF

Set SITE_URL to the address people will use, such as http://192.168.1.20:8065 on a local network.

3. Start it

$ docker compose up -d

The first start takes a minute or two while the database is created. Then open SITE_URL in your browser and create your account: the first account becomes the system administrator, and the setup guides you through creating your first community.

With your own domain and HTTPS

Point a DNS record of your domain at the server, open ports 80 and 443, and add the domain to .env:

$ cat >> .env <<EOF
DOMAIN=chat.example.com
EOF
$ sed -i 's|^SITE_URL=.*|SITE_URL=https://chat.example.com|' .env
$ docker compose --profile https up -d

Caddy gets a certificate from Let's Encrypt and renews it by itself.

What runs

  • antimatter: the server, with its apps (notes, whiteboards, voice channels, calls, polls and the others). It keeps nothing on disk: its settings are in the database and its files in the storage service, so the container can be replaced at any time.
  • postgres: the database.
  • files: RustFS, S3-compatible storage for uploaded files.
  • gifs: Antimatter's GIF and sticker service, with a starter sticker pack.
  • https: Caddy, only with the https profile.

The database, the storage and the GIF service sit on a private network that only Antimatter reaches.

If the GIF picker stays empty, open System Console › Plugins › GIFs and set the service URL to http://gifs:8080/v2 and the API key to the GIFS_API_KEY of your .env.

Upgrades and backups

# upgrade to the latest images
$ docker compose pull && docker compose up -d
# back up the database
$ docker compose exec postgres pg_dump -U antimatter antimatter > antimatter.sql

Back up the files volume as well, or replicate the storage with any S3 tool. For a setup with nginx and your own certificates, see the production files in antimatter-docker.

With a release archive

  1. Set up a PostgreSQL database and user.
  2. Unpack the archive (antimatter-<os>-<arch>.tar.gz), for example into /opt/antimatter, and point SqlSettings.DataSource in config/config.json (or the AM_SQLSETTINGS_DATASOURCE environment variable) at the database.
  3. Start the server with bin/antimatter, as an unprivileged user, and open http://localhost:8065. The first account created becomes the system administrator.

bin/amctl manages a running server from the command line (bin/amctl --local on the server itself, with ServiceSettings.EnableLocalMode).

Next steps

  • Calls: open the calls port (UDP and TCP 8443 by default) so voice and video reach the server.
  • Email: configure SMTP for invitations and notifications.
  • AI: add a model in the Agents settings; any OpenAI-compatible API works, including a server you run yourself.
  • Speech and translation: point call transcription, read-aloud and automatic translation at speech-to-text, text-to-speech and translation models you run yourself.