Update README.md
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
> **Target OS:** Linux (Ubuntu/Debian recommended)
|
> **Target OS:** Linux (Ubuntu/Debian recommended)
|
||||||
> **License:** AGPL-3.0
|
> **License:** AGPL-3.0
|
||||||
> **Maintainer:** Cortex@Fossgate
|
> **Maintainer:** Cortex@Fossgate
|
||||||
> **Source:** [https://git.fossgate.uk/ammids](https://git.fossgate.uk/ammids)
|
> **Source:** [https://git.fossgate.uk/main/ammids](https://git.fossgate.uk/main/ammids)
|
||||||
|
|
||||||
AMMIDS is a modular, automated deployment suite designed to spin up a production-ready, upstreamable **Matrix** infrastructure on a fresh VPS. It orchestrates **Synapse**, **Matrix Authentication Service (MAS)**, **PostgreSQL**, and optional components like **LiveKit** and various web clients, all behind a reverse proxy.
|
AMMIDS is a modular, automated deployment suite designed to spin up a production-ready, upstreamable **Matrix** infrastructure on a fresh VPS. It orchestrates **Synapse**, **Matrix Authentication Service (MAS)**, **PostgreSQL**, and optional components like **LiveKit** and various web clients, all behind a reverse proxy.
|
||||||
|
|
||||||
@@ -45,20 +45,33 @@ AMMIDS generates a modular Docker Compose stack with the following components:
|
|||||||
|
|
||||||
## 🚀 Quick Start
|
## 🚀 Quick Start
|
||||||
|
|
||||||
### 1. Clone the Repository
|
### 1. DNS Configuration
|
||||||
```
|
Before running the installer, ensure your DNS records point to your VPS IP address. You will need the following records:
|
||||||
git clone https://git.fossgate.uk/ammids.git
|
|
||||||
|
| Record Type | Host/Subdomain | Purpose |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| `A` | `matrix` | Matrix Homeserver (Synapse) |
|
||||||
|
| `A` | `auth` | Authentication Service (MAS) |
|
||||||
|
| `A` | `app` | Web Client (Element/Cinny/FluffyChat) |
|
||||||
|
| `A` | `rtc` | LiveKit (if enabled) |
|
||||||
|
| `A` | `jwt` | LiveKit JWT Bridge (if enabled) |
|
||||||
|
|
||||||
|
*These subdomains can be adjusted in the generated .env file.*
|
||||||
|
|
||||||
|
### 2. Clone and Execute
|
||||||
|
Clone the repository and navigate to the project root:
|
||||||
|
|
||||||
|
<!--
|
||||||
|
git clone https://git.fossgate.uk/main/ammids.git
|
||||||
cd ammids
|
cd ammids
|
||||||
```
|
-->
|
||||||
### 2. Install Dependencies
|
|
||||||
Ensure `docker`, `docker-compose`, and `yq` are installed (see **Prerequisites** above).
|
|
||||||
|
|
||||||
### 3. Run the Orchestrator
|
Run the main orchestrator script:
|
||||||
Execute the main setup script. This will guide you through configuration and generate all necessary files.
|
|
||||||
|
|
||||||
|
<!--
|
||||||
chmod +x setup.sh
|
chmod +x setup.sh
|
||||||
./setup.sh
|
./setup.sh
|
||||||
|
-->
|
||||||
|
|
||||||
**What happens during setup:**
|
**What happens during setup:**
|
||||||
1. **Environment Generation:** Prompts for your domain, database credentials, and installation path. Creates `.env`.
|
1. **Environment Generation:** Prompts for your domain, database credentials, and installation path. Creates `.env`.
|
||||||
@@ -70,21 +83,22 @@ chmod +x setup.sh
|
|||||||
* Links Synapse and MAS via Native OIDC.
|
* Links Synapse and MAS via Native OIDC.
|
||||||
4. **Compose Generation:** Creates the final `compose.yaml` with your selected modules.
|
4. **Compose Generation:** Creates the final `compose.yaml` with your selected modules.
|
||||||
|
|
||||||
### 4. Launch the Stack
|
### 3. Launch the Stack
|
||||||
Once the script completes, start the services:
|
Once the script completes, start the services:
|
||||||
|
|
||||||
```
|
<!--
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
-->
|
||||||
|
|
||||||
Verify the status:
|
Verify the status:
|
||||||
```
|
|
||||||
|
<!--
|
||||||
docker compose ps
|
docker compose ps
|
||||||
```
|
-->
|
||||||
|
|
||||||
## 📂 Project Structure
|
## 📂 Project Structure
|
||||||
|
|
||||||
```
|
<!--
|
||||||
/
|
/
|
||||||
├── setup.sh # Main orchestrator
|
├── setup.sh # Main orchestrator
|
||||||
├── .env # Generated environment variables (DO NOT COMMIT)
|
├── .env # Generated environment variables (DO NOT COMMIT)
|
||||||
@@ -105,7 +119,7 @@ docker compose ps
|
|||||||
├── synapse/
|
├── synapse/
|
||||||
├── mas/
|
├── mas/
|
||||||
└── postgres/
|
└── postgres/
|
||||||
```
|
-->
|
||||||
|
|
||||||
## ⚙️ Configuration & Customization
|
## ⚙️ Configuration & Customization
|
||||||
|
|
||||||
@@ -119,13 +133,15 @@ The `set_env.sh` script generates a secure `.env` file. Key variables include:
|
|||||||
|
|
||||||
### Adding Workers
|
### Adding Workers
|
||||||
To scale your Synapse instance, use the worker generator:
|
To scale your Synapse instance, use the worker generator:
|
||||||
```
|
|
||||||
|
<!--
|
||||||
./init/scripts/worker_gen.sh -c 2
|
./init/scripts/worker_gen.sh -c 2
|
||||||
```
|
-->
|
||||||
|
|
||||||
This adds 2 generic workers and updates `compose.yaml`.
|
This adds 2 generic workers and updates `compose.yaml`.
|
||||||
|
|
||||||
### Changing Web Clients
|
### Changing Web Clients
|
||||||
Re-run `./init/scripts/set_compose.sh` to toggle between Element, Cinny, FluffyChat, or disable web clients entirely.
|
Re-run `./init/scripts/compose_gen.sh` to toggle between Element, Cinny, FluffyChat, or disable web clients entirely.
|
||||||
|
|
||||||
### OIDC Integration
|
### OIDC Integration
|
||||||
The `config_link.sh` script automatically configures **Native OIDC** between Synapse and MAS. It:
|
The `config_link.sh` script automatically configures **Native OIDC** between Synapse and MAS. It:
|
||||||
@@ -133,22 +149,30 @@ The `config_link.sh` script automatically configures **Native OIDC** between Syn
|
|||||||
2. Injects the OIDC provider configuration into Synapse.
|
2. Injects the OIDC provider configuration into Synapse.
|
||||||
3. Optionally configures **LiveKit** if enabled in `.env`.
|
3. Optionally configures **LiveKit** if enabled in `.env`.
|
||||||
|
|
||||||
## 🛡️ Security Notes
|
## 🛡️ Proxy & TLS Selection
|
||||||
|
|
||||||
* **Secrets Management:** The `.env` file contains database passwords and API keys. It is set to `chmod 600` automatically. **Do not commit this file to Git.**
|
During setup, you will be asked to choose a reverse proxy. This choice dictates how TLS/SSL is handled:
|
||||||
* **Firewall:** Ensure ports `80` and `443` are open for the proxy, and `8448` for Matrix federation.
|
|
||||||
* **Backups:** Regularly back up the `matrix/` directory and your `.env` file. Losing `.env` means losing access to your database credentials.
|
* **Traefik (Default)**:
|
||||||
* **Permissions:** The scripts attempt to fix directory ownership automatically. If you encounter permission errors, ensure your user has `sudo` privileges.
|
* **Use this if**: You want the stack to manage SSL certificates automatically via Let's Encrypt.
|
||||||
|
* **Behavior**: Traefik listens on ports 80/443, handles ACME challenges, and serves HTTPS traffic directly.
|
||||||
|
* **Requirement**: Ports 80 and 443 must be open to the public internet.
|
||||||
|
|
||||||
|
* **Nginx**:
|
||||||
|
* **Use this if**: You already have a reverse proxy (e.g., Cloudflare, Caddy, or an existing Nginx instance) handling TLS termination.
|
||||||
|
* **Behavior**: Nginx in this stack acts purely as an internal router. It does **not** request certificates.
|
||||||
|
* **Requirement**: Your external proxy must forward traffic to the Nginx container (or the internal services) over HTTP.
|
||||||
|
|
||||||
## 🐛 Troubleshooting
|
## 🐛 Troubleshooting
|
||||||
|
|
||||||
### "Command not found: yq"
|
### "Command not found: yq"
|
||||||
The script relies on `yq` for YAML manipulation. Install it manually:
|
The script relies on `yq` for YAML manipulation. Install it manually:
|
||||||
```
|
|
||||||
|
<!--
|
||||||
# Linux AMD64
|
# Linux AMD64
|
||||||
wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
|
wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
|
||||||
chmod +x /usr/local/bin/yq
|
chmod +x /usr/local/bin/yq
|
||||||
```
|
-->
|
||||||
|
|
||||||
### "compose.yaml not found"
|
### "compose.yaml not found"
|
||||||
If the script reports success but `compose.yaml` is missing:
|
If the script reports success but `compose.yaml` is missing:
|
||||||
@@ -158,13 +182,15 @@ If the script reports success but `compose.yaml` is missing:
|
|||||||
|
|
||||||
### Database Not Ready
|
### Database Not Ready
|
||||||
If the stack fails to start with a database timeout:
|
If the stack fails to start with a database timeout:
|
||||||
```
|
|
||||||
|
<!--
|
||||||
docker compose logs matrix-db
|
docker compose logs matrix-db
|
||||||
```
|
-->
|
||||||
|
|
||||||
Ensure your VPS has sufficient RAM (minimum 2GB recommended for Synapse + Postgres).
|
Ensure your VPS has sufficient RAM (minimum 2GB recommended for Synapse + Postgres).
|
||||||
|
|
||||||
### OIDC Linking Failed
|
### OIDC Linking Failed
|
||||||
If `link_synapse.sh` fails:
|
If `config_link.sh` fails:
|
||||||
1. Verify `yq` is installed and functional.
|
1. Verify `yq` is installed and functional.
|
||||||
2. Check that `mas/config.yaml` and `synapse/homeserver.yaml` were generated successfully.
|
2. Check that `mas/config.yaml` and `synapse/homeserver.yaml` were generated successfully.
|
||||||
3. Ensure `MAS_FQDN` is correctly set in `.env`.
|
3. Ensure `MAS_FQDN` is correctly set in `.env`.
|
||||||
@@ -173,8 +199,8 @@ If `link_synapse.sh` fails:
|
|||||||
|
|
||||||
Contributions are welcome! Please open an issue on the Gitea repository before submitting large changes.
|
Contributions are welcome! Please open an issue on the Gitea repository before submitting large changes.
|
||||||
|
|
||||||
* **Report Bugs:** [Issues Page](https://git.fossgate.uk/ammids/issues)
|
* **Report Bugs:** [Issues Page](https://git.fossgate.uk/main/ammids/issues)
|
||||||
* **Feature Requests:** [Discussions](https://git.fossgate.uk/ammids/discussions)
|
* **Feature Requests:** [Discussions](https://git.fossgate.uk/main/ammids/discussions)
|
||||||
|
|
||||||
## 📜 License
|
## 📜 License
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user