Deploy and manage containerized apps with Flask, Docker, and Traefik — from a simple web UI.
- Upload to deploy: ZIP an app (with
Dockerfileordocker-compose.yml) and deploy from the dashboard. - Volume management: Create Docker volumes, upload files, mount to containers.
- Traefik routing: Automatic
PathPrefixrouting and prefix stripping. - HTTPS support: Automatic Let's Encrypt SSL certificates for production deployments.
- Status & control: Real-time status, start/stop, and delete.
Prereqs: Python 3.12+, Docker, Docker Compose, uv
uv run milkcrate setup
uv run milkcrate runAccess at http://localhost:5001 (development) or http://localhost/admin (Docker Compose)
Run with Docker Compose:
uv run milkcrate upAccess at http://localhost/admin or http://your-ip/admin (accepts any hostname by default)
Default credentials:
- Password:
admin(change in production)
Note: Password-only authentication (no username required).
- Prepare a ZIP containing your app with a
Dockerfileordocker-compose.yml. - Log in → Upload → choose name and public route (e.g.,
/sample). - Submit; access at
http://localhost/<route>(dev) or your domain.
Sample app:
uv run milkcrate package-sample
# Upload the generated sample-app.zip via the UISECRET_KEY— Flask secret key.MILKCRATE_ENV—development(default) orproduction.ENABLE_HTTPS— Enable HTTPS/Let's Encrypt mode (true/false, default:false).LETSENCRYPT_EMAIL— Email for Let's Encrypt certificate notifications.DATABASE— path to SQLite DB (defaults underinstance/).UPLOAD_FOLDER,EXTRACTED_FOLDER— storage paths.TRAEFIK_NETWORK— Docker network for routing.MILKCRATE_ADMIN_PASSWORD— overrides stored admin password.DEFAULT_HOME_ROUTE— optional/pathto redirect/.
For production HTTPS setup, see docs/production/https-setup.md.
Want to run other websites alongside milkcrate? Add nginx:
sudo ./install_nginx.shSee docs/production/multi-website-setup.md for details.
uv run milkcrate docs-serveMIT — see LICENSE file.
