Windmill is an open-source workflow-automation / internal-apps platform
that turns scripts (Python, JS/TS, Go, Bash, SQL, Rust, ...) into HTTP
endpoints, scheduled jobs, and visual flows. It is PostgreSQL-only —
it uses Postgres LISTEN/NOTIFY for job queuing, so no Redis is required,
making it a clean Cloudron fit.
- Wraps the official ghcr.io/windmill-labs/windmill:1.514.1 image in
single-container server mode (embedded default worker)
- start.sh composes DATABASE_URL from the Cloudron postgresql addon and
waits for the DB (bash /dev/tcp, no pg_isready dependency)
- HTTP port 8000, health check on /api/version, 2GB memory limit
- OIDC/SAML supported via the in-app Admin Settings UI (post-install)
- Validated end-to-end: throwaway postgres + windmill ran migrations and
returned /api/version => "CE v1.514.1", HTTP 200
Gardening: STATUS/README/JOURNAL updated (9/~57 packaged; Automation
1/4). Windmill logged as a new OIDC-preferred completed package.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
26 lines
976 B
Bash
Executable File
26 lines
976 B
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# Build the PostgreSQL connection URL from the Cloudron postgresql addon.
|
|
export DATABASE_URL="postgres://${CLOUDRON_POSTGRESQL_USERNAME}:${CLOUDRON_POSTGRESQL_PASSWORD}@${CLOUDRON_POSTGRESQL_HOST}:${CLOUDRON_POSTGRESQL_PORT}/${CLOUDRON_POSTGRESQL_DATABASE}?sslmode=disable"
|
|
|
|
# Single-container server mode (server embeds a default worker).
|
|
export MODE="${MODE:-server}"
|
|
|
|
# Wait for PostgreSQL to accept connections before starting. Windmill runs SQL
|
|
# migrations on startup, so the DB must be reachable. Uses bash /dev/tcp (no
|
|
# pg_isready dependency).
|
|
echo "Waiting for PostgreSQL at ${CLOUDRON_POSTGRESQL_HOST}:${CLOUDRON_POSTGRESQL_PORT} ..."
|
|
for i in $(seq 1 60); do
|
|
if (exec 3<>"/dev/tcp/${CLOUDRON_POSTGRESQL_HOST}/${CLOUDRON_POSTGRESQL_PORT}") 2>/dev/null; then
|
|
exec 3>&- 3<&- || true
|
|
echo "PostgreSQL is reachable."
|
|
break
|
|
fi
|
|
echo " not ready yet, retrying in 2s ($i/60)"
|
|
sleep 2
|
|
done
|
|
|
|
cd /usr/src/app
|
|
exec windmill
|