Self-hosted scheduler — write scripts in many languages, scheduled or triggered with live run view
153
Write scripts, schedule them, watch them run. ApiMeld replaces Windows Task Scheduler and scattered cron jobs with a clean web interface your whole team can use.
No subscriptions. No cloud lock-in. Runs on your server.
- Write scripts in PowerShell, JavaScript, TypeScript, Python, Bash, or C# using a browser-based Monaco editor - Schedule anything with a cron picker — or trigger tasks via webhook or MQTT - Connect data sources — REST APIs and databases with encrypted credential injection - Send notifications to Slack, Microsoft Teams, Mattermost, or email - Watch it run — live log streaming and full execution history - Control access — user roles, task sharing, OIDC/SSO support
Requires a PostgreSQL 14+ instance. See below for a Docker Compose example that includes one.
docker run -d \
--name apimeld \
-p 8080:8080 \
-e SETUP_DB_HOST=your-postgres-host \
-e SETUP_DB_NAME=apimeld \
-e SETUP_DB_USERNAME=postgres \
-e SETUP_DB_PASSWORD=your-password \
-e [email protected] \
-e SETUP_ADMIN_PASSWORD=YourSecurePassword1 \
-e App__BaseUrl=http://localhost:8080 \
-v apimeld_config:/app/config \
apimeld/apimeld-scheduler:latest
Open http://localhost:8080 — the app configures itself on first boot.
▎ Always mount /app/config — this is where ApiMeld stores its generated configuration (encryption keys, connection strings). Without it, config is lost on container restart.
---
Docker Compose (with PostgreSQL)
services:
app:
image: apimeld/apimeld-scheduler:latest
ports:
- "8080:8080"
environment:
- SETUP_DB_HOST=db
- SETUP_DB_NAME=apimeld
- SETUP_DB_USERNAME=postgres
- SETUP_DB_PASSWORD=yourpassword
- [email protected]
- SETUP_ADMIN_PASSWORD=YourSecurePassword1
- App__BaseUrl=http://localhost:8080
volumes:
- apimeld_config:/app/config
depends_on:
- db
restart: unless-stopped
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: apimeld
POSTGRES_USER: postgres
POSTGRES_PASSWORD: yourpassword
volumes:
- pg_data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
apimeld_config:
pg_data:
docker compose up -d
---
## Key Environment Variables
**Required:**
- `SETUP_DB_HOST` — PostgreSQL hostname or IP
- `SETUP_DB_NAME` — Database name
- `SETUP_DB_USERNAME` — Database user
- `SETUP_DB_PASSWORD` — Database password
- `SETUP_ADMIN_EMAIL` — Initial admin account email
- `SETUP_ADMIN_PASSWORD` — Initial admin password (8+ chars, uppercase, digit)
- `App__BaseUrl` — Public-facing URL, used in email links and CORS
**Optional:**
- `PROXY_ENABLED=true` — Set when running behind a reverse proxy
- `TLS_ENABLED=true` — Enable direct HTTPS via Kestrel
Full reference: [apimeld.com/guide/environment-variables](https://apimeld.com/guide/environment-variables)
---
Replace the Ports section with:
## Ports
- `8080` — HTTP, always active
- `8443` — HTTPS, only when `TLS_ENABLED=true`
Map to any external port with `-p`. If using a reverse proxy on a shared Docker network, no ports need to be exposed to the host.
---
Documentation
Full documentation at https://apimeld.com/guide
- Quick Start (https://apimeld.com/guide/quick-start)
- Reverse Proxy setup (https://apimeld.com/guide/reverse-proxy)
- Writing Scripts (https://apimeld.com/guide/scripts-overview)
- Environment Variables (https://apimeld.com/guide/environment-variables)
---
Licensing
ApiMeld is a commercial self-hosted application. A license key is required to run the application.
- Free 30-day trial — no credit card required → https://apimeld.com/trial
- Perpetual licenses from $49 → https://apimeld.com/pricing
Questions? [email protected]
Content type
Image
Digest
sha256:643737690…
Size
410.8 MB
Last updated
4 months ago
docker pull apimeld/apimeld-scheduler