HarshvardhanJ/linux-101

★ 0Forks 0JavaScriptGitHub ↗Compare

README

Linux 101: Terminal Quest (competition site)

12 beginner-friendly levels (easy ramp, one command each, pipeline only at the end). Players register, solve tasks in a real terminal, paste the output. Hints unlock after 2 wrong tries and cost +60s. Ranking: levels cleared, then time.

Run locally

npm install && npm start      # http://localhost:3000

Deploy on Render

  1. Push this repo to GitHub.
  2. Render → New → Blueprint → pick the repo (uses render.yaml), or New Web Service with build npm install, start npm start.
  3. Set ADMIN_KEY (Blueprint generates one). Share the URL; leaderboard is at /leaderboard.html.

Note: free-tier storage is ephemeral, so data resets on redeploy/restart. Fine for a one-off event; the first request after idle sleep takes ~30s, so open the site a few minutes before starting.

Admin

Reset all players: curl -X POST https://YOUR-APP.onrender.com/api/admin/reset -H "x-admin-key: YOUR_KEY"

Editing levels

Answers are stored only as SHA-256 hashes in levels.json. Edit private/gen.js (git-ignored; keeps the plaintext answer key in private/ANSWERS.txt), then run node private/gen.js. Answers are matched case-insensitively with whitespace collapsed; a paste with several lines passes if any single line matches.

Lab files

public/Linux_101_Quest.zip is served from the home page. Before the contest run facilitator/reset_permissions.sh from the zip, so backup.sh files are non-executable.

Contributors

HarshvardhanJ

Issues