Challenge Mode leaderboard for Portal 2 speedrunners.
- Wait for containers to start
- Update
"is_using_proxy": true
in.config.json
- Go to the ports tab and open the forwarded address of port 443 in the browser
- Read the system requirements
- Make sure the extension is installed
- Add the host entry
127.0.0.1 board.portal2.local
to/etc/hosts
orC:\Windows\System32\drivers\etc\hosts
- Open container with VS Code
- Wait for containers to start
- Forward port 443 from ports tab in VS Code
- Access site with the forwarded port:
https://board.portal2.local:
- Docker Engine | Reference
- mkcert
- Steam Web API Key
- just (recommended)
- Run setup script
./setup dev
- Start the containers with
docker compose up
- Add the host entry
127.0.0.1 board.portal2.local
to/etc/hosts
The server should now be available at: https://board.portal2.local
This is used by Dockerfile and docker-compose.yml.
Variable | Description |
---|---|
PROJECT_NAME | This name is used as a prefix for the containers. |
SERVER_NAME | The domain name which should be set before building the image. Docker will use it to mount the correct apache config file which links to the SSL certificates. |
HTTP_PORT | The unsafe HTTP port of the local host. Change it if a different port is needed e.g. reverse proxy |
HTTPS_PORT | The safe HTTPS port of the local host. Change it if a different port is needed e.g. reverse proxy |
DATABASE_PORT | The MariaDB database port of the local host. NOTE: Make sure that the docker compose file does not expose the server to an unwanted address. By default it's mapped to 127.0.0.1 . |
MARIADB_ROOT_PASSWORD | The root's password of the MariaDB database. |
APT_PACKAGES | Optional apt-packages to build the server image. The image should be kept as small as possible but sometimes it is useful to install some packages (e.g. vim , htop etc.) in order to debug problems more quickly. |
This is used by the server.
Key | Description |
---|---|
is_using_proxy | Enable proxy support. This is disabled by default. |
database_host | Address of the database. Docker creates a link to the container under the database alias. |
database_port | Port of the database. |
database_user | User login name for database. |
database_pass | User password for database access. |
database_name | The database name. |
discord_webhook_wr | Discord webhook URL for sending world record updates to a Discord channel. |
discord_webhook_mdp | Discord webhook URL for sending mdp data to a Discord channel. |
steam_api_key | The Steam Web API Key for fetching profile data. |
Command shortcuts with just. Example: just cache
Command | Description |
---|---|
up | Start all containers. Accepts arguments like -d to start in background. |
down | Stop all containers. |
build | Build the server image. |
reload | Start and recreate containers. |
cache | Refresh leaderboard cache. |
update | Update scores by fetching new scores from Steam. |
update-profiles | Update profile data from Steam. |
debug | Open shell in server container. |
root | Open shell in server container as root user. |
server-debug | Open shell in server container. |
server-restart | Restart server container. |
server-stop | Stop server container. |
db | Connect to database. |
db-debug | Open shell in database container. |
db-restart | Restart database container. |
db-stop | Stop database container. |
db-dump | Dump and compress a backup of the database. |
db-dump-raw | Only dump a backup of the database. |
The script for score updates is not running automatically in a development environment. However, this is still required to cache all chambers correctly. Make sure to fill out all empty fields in .config.json.
just update
Updating profile data can be done with:
just update-profiles
Regression tests are written in TypeScript and require the Deno runtime.
- Create env file:
cp tests/.env.example tests/.env
- Set env vars:
STEAM_ID
- logged in Steam IDAUTH_HASH
- generated auth hash in settingsPHPSESSID
- session cookie from broser
# all tests
just test
# or specific test
just test auth_test.ts
Usage with LSP:
{
"deno.enable": true,
"deno.enablePaths": ["./tests"],
"deno.testing.args": [
"--allow-env",
"--env-file=./tests/.env",
"--allow-read=./tests/data",
"--allow-net=board.portal2.local",
"--unsafely-ignore-certificate-errors=board.portal2.local"
],
"deno.codeLens.testArgs": [
"--allow-env",
"--env-file=./tests/.env",
"--allow-read=./tests/data",
"--allow-net=board.portal2.local",
"--unsafely-ignore-certificate-errors=board.portal2.local"
]
}