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

3.7 KiB
Raw Permalink Blame History

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.

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):

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:

cloudron exec --app ente.due.ren -- cat /app/data/.admin_password

Testing

  • Follow logs for both supervisor-managed processes:
    cloudron logs --app ente.due.ren -f
    
  • Verify the health endpoint exposed by nginx:
    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:
    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):
    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.