This plugin for CTFd integrates with the Galvanize Instancer to allow competing teams/users to deploy challenge instances. It adds a challenge type "zync" that works with the Galvanize Instancer API for on-demand challenge deployments.
- Deploy challenge instances via Galvanize Instancer
- Time-limited instances with countdown display
- Extend instance duration (when supported by the Instancer)
- Terminate instances
- Admin config for Instancer URL and JWT secret
- Deployment lifecycle fully managed by Galvanize Instancer (admin panel to be designed)
-
Rename or copy the plugin folder to
zyncin your CTFd plugins directory:CTFd/CTFd/plugins/zync/ -
Replace CTFd standard
docker-entrypoint.shwith the one provided (ctfd-docker-entrypoint.sh) or add the following lines (enables plugin dependencies installation) before the app start:for d in CTFd/plugins/*; do \ if [ -f "$d/requirements.txt" ]; then pip install --no-cache-dir -r "$d/requirements.txt"; fi; done; -
Restart CTFd.
-
Navigate to Plugins → Zync Config (
/admin/zync_config). Configure:- Instancer URL: The full URL to your Galvanize Instancer (e.g.,
https://instancer.example.com/) - JWT Secret: The secret used to sign JWT tokens for the Instancer
- Instancer URL: The full URL to your Galvanize Instancer (e.g.,
-
Create challenges with the zync challenge type.
The plugin exposes the following endpoints:
GET /api/v1/deploy/url- Get Instancer URLPOST /api/v1/deploy/token- Get JWT token for a challenge
The frontend communicates directly with the Galvanize Instancer at the configured URL.