Comments (1)
Notes
- If we decide to go for the hosted versions (as a service, e.g. MySQL and Redis as a service in Azure), we should define Bicep templates to facilitate for automated deployments.
Resources
- CTFd docs
- CTFd Github
- Guide on CTFd deployment in K8S (Google Cloud)
- Equinor CTFd deployment YAML
- CTFd docker-compose.yml
Tasks (WIP):
- Determine approach:
- Helm chart:
- Use bman46/CTFd-Helm
- Override
values.yml
- Identify values to override (e.g. passwords, etc.)
- Create
ctfd.yml
containing the values to override - Define secret values to override using
--set
, such as--set redis.auth.password=$REDIS_PASS
- Manual in kubernetes:
- Configure a database: Set up a SQLAlchemy compatible database (MySQL preferred)
-
CTFd makes use of SQLAlchemy and as such supports a number of SQL databases. The recommended database type is MySQL. CTFd is tested with and has been installed against SQLite, Postgres, and MariaDB.
- Can be deployed as a service (Azure), or as a pod in the K8s cluster (if we configure persistent storage).
-
- Configure a cache: Set up a Redis server
-
CTFd makes heavy use of caching servers to store configuration values, user sessions, and page content. It is important to deploy CTFd with a caching server. The preferred caching server option is Redis.
- Can be deployed as a service (Azure), or as a pod in the K8S cluster.
-
- Configure CTFd k8s deployment:
- Either use an existing Helm chart for CTFd, or
- Define the required components as YAML, e.g. based on
- Configure a database: Set up a SQLAlchemy compatible database (MySQL preferred)
- Manual in e.g. Azure Container Instances
- Helm chart:
- Implement spin-up/tear-down functionality in the deployment script:
- Deploy & Destroy:
- Spin-up:
deploy_ctfd()
(see here for an example) - Tear-down:
destroy_ctfd()
(see here for an example)
- Spin-up:
- Configure INGRESS & TLS:
- TLS: Add a host (see here for an example)
- Ingress: Add a rule (see here for an example)
- DNS:
- Add record (see here for an example)
- Remove record (see here for an example)
- Deploy & Destroy:
Requirements
- NGINX Ingress => CTFd => DB & Cache
- DNS name & TLS
from nord-juice-shop.
Related Issues (20)
- Develop script to manage multi-juicer
- Create Pitch for 31.05 (with PowerPoint)
- feat(ctfd): Define CTFd-Helm variables
- feat(ctfd): Manage CTFd-Helm deployment in manage-multijuicer.sh
- feat(ctfd,multi-juicer): Connect JuiceShop and CTFd
- Plan the first event
- Feature: Prepare for open source release
- Create documentation/user guides in english
- Configure `release-please`
- Include generated config, pages, and users when generating CTFd challenges ZIP HOT 3
- Handle AuthorizationFailed in `manage-azure-deployment.sh`
- Docs: Define prerequisites for running the `deploy-ctf` workflow
- Identify minimal set of Azure permissions required to deploy HOT 1
- Extend `generate-challenges.sh` to support full automation
- Actions: Add step for configuration of the CTFd instance
- Actions: Create workflow for running `./manage-azure-deployment.sh wipe`
- Actions: Workflow `configure-ctfd` fails
- Actions: Run deploy and destroy on merge to main
- Broken TLS when TLS_CERT_EMAIL uses an invalid domain name
- Having trouble with DNS HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nord-juice-shop.