{"id":16712897,"url":"https://github.com/hugsy/ctfhub","last_synced_at":"2025-08-01T01:05:40.696Z","repository":{"id":40512083,"uuid":"313123322","full_name":"hugsy/ctfhub","owner":"hugsy","description":"Where CTFs happen","archived":false,"fork":false,"pushed_at":"2024-05-30T00:24:43.000Z","size":3768,"stargazers_count":81,"open_issues_count":5,"forks_count":13,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-28T15:54:01.541Z","etag":null,"topics":["collaboration","ctf","ctf-tools","ctfs","ctftime","django","hedgedoc","managing-ctfs","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hugsy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-15T21:07:01.000Z","updated_at":"2025-02-04T12:43:19.000Z","dependencies_parsed_at":"2024-10-27T11:50:58.072Z","dependency_job_id":"3b931bea-b2f6-410d-80ce-02ef8bfe9287","html_url":"https://github.com/hugsy/ctfhub","commit_stats":null,"previous_names":["hugsy/ctfhub"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugsy%2Fctfhub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugsy%2Fctfhub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugsy%2Fctfhub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugsy%2Fctfhub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hugsy","download_url":"https://codeload.github.com/hugsy/ctfhub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251342718,"owners_count":21574243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["collaboration","ctf","ctf-tools","ctfs","ctftime","django","hedgedoc","managing-ctfs","python3"],"created_at":"2024-10-12T20:44:31.310Z","updated_at":"2025-04-28T15:54:09.316Z","avatar_url":"https://github.com/hugsy.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Logo\" src=\"static/images/new_logo_circle.png\" width=20%\u003e\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003e\u003cb\u003eCTFHub\u003c/b\u003e\u003c/h2\u003e\n\u003ch3 align=\"center\"\u003eWhere CTFs happen\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/psf/black\"\u003e\u003cimg alt=\"Code style: black\" src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/hugsy/ctfhub/blob/master/LICENSE\"\u003e\u003cimg alt=\"Licence MIT\" src=\"https://img.shields.io/packagist/l/doctrine/orm.svg?maxAge=2592000?style=plastic\"\u003e\u003c/a\u003e\n  \u003cimg alt=\"Python-Version 3.10\" src=\"https://img.shields.io/badge/Python-3.10-brightgreen\"\u003e\n  \u003ca href=\"https://discord.gg/fYsAjvsdQT\"\u003e\u003cimg alt=\"CTFHub on Discord\" src=\"https://img.shields.io/badge/Discord-CTFHub-purple\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## What is it?\n\nA collaborative environment for teams playing [CTFs](https://en.wikipedia.org/wiki/Wargame_(hacking)). It provides out-of-the-box everything to manage and collaborate on the CTFs and challenges you and your team are working on.\n\n_Note_: If you're looking for a platform for hosting CTFs use [CTFd](https://github.com/ctfd/ctfd).\n\n\n## Features\n\nA non-exhaustive list of features:\n\n - Django 4 running on Python 3.10, with a clean Bootstrap 5 interface\n - Key-in-hands setup via [`docker-compose`](https://docs.docker.com/compose)\n - Fully integrated around [HedgeDoc](https://github.com/hedgedoc/hedgedoc): smart markdown note mechanism, with [tons of features](https://demo.hedgedoc.org/features)\n - Possibility to create and play private CTFs for one player only, making it easy to track your progress on learning platforms like [Root-Me](https://www.root-me.org/), [PicoCTF](https://picoctf.com/), [PentesterLab](https://pentesterlab.com/) and others.\n - Add \"guests\" to specific CTFs, allowing non team members to have a limited view of the context\n - View CTF stats, and track members' involment through a cool podium ranking\n - CTFTime API integration:  CTF information from CTFTime in one click\n - CTFd/rCTF challenge(s) can optionally be pre-populated locally\n - Basic search engine\n - Easily export your challenge notes to create a blog post on Github Pages\n - [Jitsi](https://meet.jit.si) integration: instantly jump on video chat with your team mate\n - Public \u0026 Self-hosted [Excalidraw](https://github.com/excalidraw/excalidraw) integration: draw \u0026 share ideas with your team mates\n - [Discord](https://discord.gg) notifications on events (CTF registration, challenge scoring, etc.)\n  - and of course, a Dark mode to save your eyes during those painful sleepless nights\n\n\n## Build\n\nFor most people, this will suffice:\n\n```bash\n$ git clone https://github.com/hugsy/ctfhub \u0026\u0026 cd ctfhub\n$ cp .env.example .env\n### CHANGE THE CREDENTIALS IN .env ###\n$ nano .env\n### BUILD EXCALIDRAW USING .env VARIABLES ###\n$ docker compose up -d --build\n```\n\nFor more advanced building cases, refer to the [Build page](docs/build.md) in the documentation.\n\n\n## Gallery\n\nCheck out the [docs](docs/gallery.md)\n\n## Contribution\n\n`CTFHub` was created and maintained by [`@_hugsy_`](https://twitter.com/_hugsy_), but kept fresh thanks to [all the contributors](https://github.com/hugsy/ctfhub/graphs/contributors).\n\n[ ![contributors-img](https://contrib.rocks/image?repo=hugsy/ctfhub) ](https://github.com/hugsy/ctfhub/graphs/contributors)\n\n\nIf you just like the tool, consider dropping on Discord (or Twitter or other) a simple *\"thanks\"*, it is always very appreciated.\n\nAnd if you can, consider [sponsoring me](https://github.com/hugsy/sponsors) - it really helps dedicating time and resources to the projects!\n\n\n## Credits and Links\n\n- The world flag images are downloaded from https://flagpedia.net/\n- [CTFPad](https://github.com/StratumAuhuur/CTFPad): NodeJS project that is based on [`etherpad-lite`](https://yopad.eu) (no MarkDown support).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhugsy%2Fctfhub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhugsy%2Fctfhub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhugsy%2Fctfhub/lists"}