137 lines
4.1 KiB
Markdown
137 lines
4.1 KiB
Markdown
|
|
# Matrix/Conduit Deployment Guide
|
||
|
|
|
||
|
|
Executable scaffold for standing up a sovereign Matrix homeserver as the human-to-fleet command surface.
|
||
|
|
|
||
|
|
## Architecture Summary
|
||
|
|
|
||
|
|
```
|
||
|
|
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
|
||
|
|
│ Alexander │────▶│ Nginx Proxy │────▶│ Conduit │
|
||
|
|
│ (Element/Web) │ │ 443 / 8448 │ │ Homeserver │
|
||
|
|
└─────────────────┘ └──────────────────┘ └─────────────────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
┌─────────────────┐
|
||
|
|
│ SQLite/Postgres│
|
||
|
|
│ (state/media) │
|
||
|
|
└─────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
## Prerequisites
|
||
|
|
|
||
|
|
| Requirement | How to Verify | Status |
|
||
|
|
|-------------|---------------|--------|
|
||
|
|
| VPS with 2GB+ RAM | `free -h` | ⬜ |
|
||
|
|
| Static IP address | `curl ifconfig.me` | ⬜ |
|
||
|
|
| Domain with A record | `dig matrix.fleet.tld` | ⬜ |
|
||
|
|
| Ports 443/8448 open | `sudo ss -tlnp | grep -E "443|8448"` | ⬜ |
|
||
|
|
| TLS certificate (Let's Encrypt) | `sudo certbot certificates` | ⬜ |
|
||
|
|
| Docker + docker-compose | `docker --version` | ⬜ |
|
||
|
|
|
||
|
|
## Quickstart
|
||
|
|
|
||
|
|
### 1. Host Preparation
|
||
|
|
```bash
|
||
|
|
# Ubuntu/Debian
|
||
|
|
sudo apt update && sudo apt install -y docker.io docker-compose-plugin nginx certbot
|
||
|
|
|
||
|
|
# Open ports
|
||
|
|
sudo ufw allow 443/tcp
|
||
|
|
sudo ufw allow 8448/tcp
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2. DNS Configuration
|
||
|
|
```
|
||
|
|
# A record
|
||
|
|
matrix.fleet.tld. A <YOUR_SERVER_IP>
|
||
|
|
|
||
|
|
# SRV for federation (optional but recommended)
|
||
|
|
_matrix._tcp.fleet.tld. SRV 10 0 8448 matrix.fleet.tld.
|
||
|
|
```
|
||
|
|
|
||
|
|
### 3. TLS Certificate
|
||
|
|
```bash
|
||
|
|
sudo certbot certonly --standalone -d matrix.fleet.tld
|
||
|
|
```
|
||
|
|
|
||
|
|
### 4. Deploy Conduit
|
||
|
|
```bash
|
||
|
|
# Edit conduit.toml: set server_name to your domain
|
||
|
|
nano conduit.toml
|
||
|
|
|
||
|
|
# Start stack
|
||
|
|
docker compose up -d
|
||
|
|
|
||
|
|
# Verify
|
||
|
|
docker logs -f conduit-homeserver
|
||
|
|
```
|
||
|
|
|
||
|
|
### 5. Nginx Configuration
|
||
|
|
```bash
|
||
|
|
sudo cp nginx-matrix.conf /etc/nginx/sites-available/matrix
|
||
|
|
sudo ln -s /etc/nginx/sites-available/matrix /etc/nginx/sites-enabled/
|
||
|
|
sudo nginx -t && sudo systemctl reload nginx
|
||
|
|
```
|
||
|
|
|
||
|
|
### 6. Bootstrap Accounts
|
||
|
|
1. Open Element at `https://matrix.fleet.tld`
|
||
|
|
2. Register admin account first (while `allow_registration = true`)
|
||
|
|
3. Set admin in `conduit.toml`, restart
|
||
|
|
4. Disable registration after setup
|
||
|
|
|
||
|
|
### 7. Fleet Rooms
|
||
|
|
```bash
|
||
|
|
# Fill ACCESS_TOKEN in bootstrap.sh
|
||
|
|
curl -X POST "https://matrix.fleet.tld/_matrix/client/r0/login" \
|
||
|
|
-d '{"type":"m.login.password","user":"alexander","password":"YOUR_PASS"}'
|
||
|
|
|
||
|
|
# Run bootstrap
|
||
|
|
chmod +x bootstrap.sh
|
||
|
|
./bootstrap.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
## Federation Verification
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Check server discovery
|
||
|
|
curl https://matrix.fleet.tld/.well-known/matrix/server
|
||
|
|
curl https://matrix.fleet.tld/.well-known/matrix/client
|
||
|
|
|
||
|
|
# Check federation
|
||
|
|
curl https://matrix.fleet.tld:8448/_matrix/key/v2/server
|
||
|
|
```
|
||
|
|
|
||
|
|
## Telegram Bridge (Future)
|
||
|
|
|
||
|
|
To bridge Telegram groups to Matrix:
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
# Add to docker-compose.yml
|
||
|
|
telegram-bridge:
|
||
|
|
image: dock.mau.dev/mautrix/telegram:latest
|
||
|
|
volumes:
|
||
|
|
- ./bridge-config.yaml:/data/config.yaml
|
||
|
|
- telegram_bridge:/data
|
||
|
|
```
|
||
|
|
|
||
|
|
See: https://docs.mau.fi/bridges/python/telegram/setup-docker.html
|
||
|
|
|
||
|
|
## Security Checklist
|
||
|
|
|
||
|
|
- [ ] Registration disabled after initial setup
|
||
|
|
- [ ] Admin list restricted
|
||
|
|
- [ ] Strong admin passwords
|
||
|
|
- [ ] Automatic security updates enabled
|
||
|
|
- [ ] Backups configured (conduit_data volume)
|
||
|
|
|
||
|
|
## Troubleshooting
|
||
|
|
|
||
|
|
| Issue | Cause | Fix |
|
||
|
|
|-------|-------|-----|
|
||
|
|
| Federation failures | DNS/SRV records | Verify `dig _matrix._tcp.fleet.tld SRV` |
|
||
|
|
| SSL errors | Certificate mismatches | Verify cert covers matrix.fleet.tld |
|
||
|
|
| 502 Bad Gateway | Conduit not listening | Check `docker ps`, verify port 6167 |
|
||
|
|
|
||
|
|
---
|
||
|
|
Generated by Ezra | Burn Mode | 2026-04-05
|