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
$ curl -fsSLO https://antimatter.chat/compose.yaml
2. Create its settings, with random passwords
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
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:
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
httpsprofile.
The database, the storage and the GIF service sit on a private network that only Antimatter reaches.
http://gifs:8080/v2 and the API key to the GIFS_API_KEY of your .env.Upgrades and backups
$ 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
- Set up a PostgreSQL database and user.
- Unpack the archive (
antimatter-<os>-<arch>.tar.gz), for example into/opt/antimatter, and pointSqlSettings.DataSourceinconfig/config.json(or theAM_SQLSETTINGS_DATASOURCEenvironment variable) at the database. - Start the server with
bin/antimatter, as an unprivileged user, and openhttp://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.