- PostgreSQL (
5432) - Synapse client/federation API (
8080, bound on0.0.0.0)
Quick Start
new waits for Postgres (5432) and Synapse (8080) before returning.
Create
- Box tag:
service=matrix - Single data volume mounted at
/var/lib/matrix - PostgreSQL data:
/var/lib/matrix/postgres - Synapse config/state:
/var/lib/matrix/synapse - Public registration disabled by default (
enable_registration: false)
chat.example.com and initializes Synapse with:
server_name: chat.example.compublic_baseurl: https://chat.example.com/
Connect (Postgres)
psql args after --:
- User:
postgres - Database:
postgres - Password:
postgres
Create User (Admin Path)
With public registration disabled, create users via the service command:Get Access Token
/_matrix/client/v3/login and prints only the access token.
By default it uses the first published domain for the matrix box, falling back to Box API URL metadata.
Use an explicit hostname or URL:
Matrix API Smoke Check
Public URL Smoke Check
/.well-known/matrix/client) is configured to advertise this public URL.
Initial value comes from Box API url metadata (box/domain aware).
Publish (Custom Public Name)
- runs
4kr publish - resolves the real published hostname from Box API metadata
- updates Synapse
public_baseurlso/.well-known/matrix/clientpoints at the published URL.
Snapshot + Box
Stop
- Synapse process
- PostgreSQL (
CHECKPOINT+ smart shutdown)
E2E Verification (Bot + Room + Second Instance)
Run:- Creates
matrix-Aand confirms Matrix API is live. - Creates bot and human users via
forkr-matrix new-user. - Bot creates a room and sends a message.
- Human user reads the event from the room.
- Boxes to
matrix-B. - Bot logs into the second instance and sends another message.
- Human user on the second instance reads both the pre-box and post-box messages.
forkr-matrix list tag filtering and forkr-matrix delete cleanup.