Files
maubot-cloudron/maubot-src/CLOUDRON.md
2025-11-13 21:00:23 -06:00

75 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Maubot on Cloudron
This package turns the upstream maubot repository into a Cloudron-ready app that ships with PostgreSQL, Cloudron SSO protection, and persistent storage under `/app/data`.
## Prerequisites
- Cloudron CLI `>=7.5`
- Access to the Cloudron build service at `builder.docker.due.ren`
- Repository checked out with the Cloudron packaging files (`CloudronManifest.json`, `Dockerfile`, `start.sh`, etc.)
- Builder token `e3265de06b1d0e7bb38400539012a8433a74c2c96a17955e`
## Build
Run all commands from the repository root so the Cloudron CLI picks up the Cloudron-specific `Dockerfile`.
```bash
cloudron build \
--set-build-service builder.docker.due.ren \
--build-service-token e3265de06b1d0e7bb38400539012a8433a74c2c96a17955e \
--set-repository andreasdueren/ente-cloudron \
--tag 0.1.0
```
This command uploads the build context to the remote builder, produces the Docker image `andreasdueren/ente-cloudron:0.1.0`, and keeps the build logs in your terminal. Do not wait more than 30 seconds after the build finishes before continuing to installation.
## Deployment
Install a fresh instance every time (do not use `cloudron update` during development):
```bash
cloudron install \
--location ente.due.ren \
--image andreasdueren/ente-cloudron:0.1.0
```
Once the dashboard reports the app as running, open `https://ente.due.ren` in your browser. Authentication is enforced via Cloudrons OIDC flow (SSO). The maubot UI additionally requires its own credentials:
- Username: `root`
- Password: stored in `/app/data/.admin_password`
Retrieve the generated password once via:
```bash
cloudron exec --app ente.due.ren -- cat /app/data/.admin_password
```
## Testing
- Follow logs for both supervisor-managed processes:
```bash
cloudron logs --app ente.due.ren -f
```
- Verify the health endpoint exposed by nginx:
```bash
cloudron exec --app ente.due.ren -- curl -f http://127.0.0.1:3000/healthz
```
- Ensure database connectivity by checking the maubot UI (Settings → Databases) or by verifying that `/app/data/maubot.db` stays empty when PostgreSQL is active.
## Troubleshooting
- **Install hangs:** The Cloudron dashboard shows progress in real time. If it stalls for more than 30 seconds, check `cloudron logs --app ente.due.ren` for supervisor or nginx errors.
- **SSO loops:** Confirm the apps location matches the configured Cloudron origin and that `CLOUDRON_APP_ORIGIN` is reaching the container (visible in `/app/data/config.yaml` under `server.public_url`).
- **Admin password lost:** Re-run the `cloudron exec ... cat /app/data/.admin_password` command. The file is persistent and backed up with the apps data volume.
- **Custom configuration:** Edit `/app/data/config.yaml`, then restart the app: `cloudron restart --app ente.due.ren`. The start script preserves existing values but will continue to enforce Cloudron-specific paths.
## Configuration Examples
- Switch the homeserver list:
```bash
cloudron exec --app ente.due.ren -- \
yq -i '.homeservers."matrix.example".url = "https://matrix.example.org"' /app/data/config.yaml
```
- Override the crypto database (e.g., to stick with SQLite):
```bash
cloudron exec --app ente.due.ren -- \
yq -i '.crypto_database = "sqlite:/app/data/crypto.db"' /app/data/config.yaml
```
- Plugin addons: the start script reads `CLOUDRON_POSTGRESQL_URL`, `CLOUDRON_MAIL_SMTP_*`, `CLOUDRON_OIDC_*`, and `CLOUDRON_LDAP_*` on each boot, and plugins can directly use `CLOUDRON_MYSQL_URL`, `CLOUDRON_MONGODB_URL`, or `CLOUDRON_REDIS_URL`. Inject overrides via the Cloudron dashboards **Environment** UI if specific plugins require external services.
After making any manual change, always restart the app to allow the supervisor to pick up the modifications.