The interactive website was used as an information hub for the 2024 RE:SPH SiIvaGunner ARG.
For all website features to work properly, several env variables may need to be set and provided in an .env file in the root directory of the project
Variable | Required | Value | Description |
---|---|---|---|
NODE_ENV | ❌ | production or development |
The current environment, only affects whether GET /debug/add-conditional is accessible |
SESSION_SECRET | ✅ | string |
Session secret to use for session cookies |
GROUP_CHALLENGE_CODE | ✅ | number |
The solution to the group challenge used in X:/Noaka/The Prize/LockN'Key.exe |
ORIGIN | ✅ (production) | string |
URL the website is being served from. read more |
PORT | ❌ | number |
The port the production server should run from |
FILESYSTEM_PATH | ❌ | string |
Filesystem definition file to use, defaults to ./filesystem.json if none are provided |
CANARY_WEBHOOK_URL | ❌ | string |
Discord Webhook to post to when a file with the canary attribute is loaded or accessed for the first time (globally) |
CANARY_MESSAGE | ❌ | string |
Message to post to the webhook |
PRERELEASE | ❌ | 0 or 1 |
Shows a 404 screen unless the user has set a preview cookie to the value of PRERELEASE_CODE |
PRERELEASE_CODE | ❌ | 0 or 1 |
The passcode to be used in conjunction with PRERELEASE |
WINTER_BREAK | ❌ | 0 or 1 |
Prevents users from successfully submitting to the original oracle.exe and the password challenge, instead it tells them to touch grass |
ARG_PEANUT_GALLERY_WEBHOOK_URL | ❌ | string |
Discord Webhook where failed attempts to puzzles are posted (Applies to PasswordPrompt.svelte, oracle.exe, oracle2.exe, Problem_One.exe and Problem_Two.exe) |
For deployment behind a reverse proxy etc additional configuration options can be provided, these parameters can be found in the sveltekit documentation.
The file is omitted from the repository as it is too large for github, it's excluded from source control but if you want to re-enable the sequence you may put it in /static/lfs/noaka.mp4
Optional file, contains global flags that affect all clients of the website, it takes the form of a basic json file where each key corresponds to a presistentConditionalId.
By setting a given id to true
you are also enabling all file attributes which come with a presistentConditionalId
property
{
"<global conditional id>": true
}
Once you've installed dependencies with npm install
(or pnpm install
or yarn
), start a development server:
npm run dev
# or start the server and open the app in a new browser tab
npm run dev -- --open
To create a production version of the app:
npm run build
You can preview the production build with npm run preview
.
In production the website was managed using pm2, an ecosystem file is provided in the form of ecosystem.config.cjs
Once built, you can start the app with
pm2 start ecosystem.config.cjs
To pull updates and restart the website run the command:
npm run deploy
As the website (currently) does not have a database to reduce the load on the relatively weak deployment server, sessions are stored in memory.
This means when the server is restarted (eg. via npm run deploy
), all user sessions are lost. This was acceptable as they were not used in many places (prior to Arc 2 only rebirth.exe used them).
However, to avoid this happening when filesystem.json is updated, you can go to /filesystem/reload
to reload the cached version of the filesystem file used by the server.