Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Selfhosted board game statistics tracker.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗BoardGameTracker is a self-hosted application designed for board game enthusiasts who want to:
BoardGameGeek (BGG) integration works with a personal BGG API key: request one at boardgamegeek.com/applications and paste it under Settings → Integrations (or set BGG_API_KEY). It unlocks single-game import, collection import and expansion lookup.
⚠️ Note: This project is under active development. Breaking changes may occur between releases.
Note: the documentation follows the
betaimage. Until the next stable release after v0.2.181,latestlacks some of the features described here; useuping/boardgametracker:betato get them.
docker-compose.yml (older versions, such as some NAS container managers, reject its optional .env block; use the compose file on the Docker docs page instead)vector extension (the compose file runs pgvector/pgvector:pg16; plain postgres:16 does not work)wget https://raw.githubusercontent.com/mregni/BoardGameTracker/refs/heads/master/docker-compose.yml
wget -O .env https://raw.githubusercontent.com/mregni/BoardGameTracker/refs/heads/master/.env.example
Fill in .env:
DB_PASSWORD: a password for the databaseJWT_SECRET and DATA_PROTECTION_KEY: each its own random value of at least 32 characters, from openssl rand -base64 48. The application does not start while JWT_SECRET is empty or still starts with CHANGEME. Keep DATA_PROTECTION_KEY safe: losing or changing it means entering the stored secrets (OIDC client secret, API keys) againTZ: your timezoneStart the containers:
docker compose up -d
To also run the rules assistant, set RAG_ENABLED=true in .env and start the stack with the rag profile: docker compose --profile rag up -d.
http://localhost:5444 and sign in as admin, with the ADMIN_PASSWORD you set or admin when it is empty. Change the password after the first login.The documentation covers the full compose file, docker run, upgrading and reverse proxies.
With an existing PostgreSQL server that has the vector extension installed. Fill in JWT_SECRET and DATA_PROTECTION_KEY with the output of openssl rand -base64 48, each its own value:
docker run -d \
--name boardgametracker \
--restart unless-stopped \
-e DB_HOST=<your-postgres-host> \
-e DB_USER=dbuser \
-e DB_PASSWORD=CHANGEME \
-e DB_NAME=boardgametracker \
-e DB_PORT=5432 \
-e JWT_SECRET= \
-e DATA_PROTECTION_KEY= \
-e TZ=UTC \
-p 5444:5444 \
-v ./images:/app/images \
-v ./logs:/app/logs \
-v ./manuals:/app/manuals \
uping/boardgametracker:latest
| Variable | Default | Required | Description |
|---|---|---|---|
DB_HOST | - | ✅ | PostgreSQL hostname |
DB_PORT | 5432 | ❌ | PostgreSQL port |
DB_USER | - | ✅ | PostgreSQL username |
DB_PASSWORD | - | ✅ | PostgreSQL password |
DB_NAME | boardgametracker | ❌ | PostgreSQL database name |
JWT_SECRET | - | ✅ | Signing key for login tokens, at least 32 characters; values starting with CHANGEME are refused. Not needed when AUTH_ENABLED=false |
DATA_PROTECTION_KEY | - | ❌ | Strongly recommended, at least 32 characters. Encrypts the stored data protection keys; a warning is logged while it is missing |
AUTH_ENABLED | true | ❌ | Set to false to run without login (anyone on the network gets full access) |
ADMIN_PASSWORD | - | ❌ | Password (at least 8 characters) of the admin account when no account exists yet; admin when empty |
TZ | UTC | ❌ | Timezone (e.g., America/New_York, Asia/Tokyo) |
STATISTICS_ENABLED | false | ❌ | Send error reports, a sample of performance traces and scrubbed browser session replays to Sentry |
PUID / PGID | 1654 | ❌ | User and group that own the mounted images, logs and manuals folders |
Date format, time format, currency and language are set in the application under Settings. The full list, including email, reverse-proxy and rules-assistant settings, is in the documentation.
git clone https://github.com/mregni/BoardGameTracker.git
cd BoardGameTracker
docker compose -f docker-compose.build.yml up --build
Backend:
dotnet test
The integration tests start a PostgreSQL container, so Docker must be running.
Frontend:
cd boardgametracker.client
pnpm test:run
Contributions are welcome! CONTRIBUTING.md explains the local setup, the checks that run on every pull request and the conventions used in the code base. Security issues go through SECURITY.md.
git checkout -b feature/AmazingFeature)git commit -m 'feat: add some AmazingFeature')git push origin feature/AmazingFeature)If you encounter any issues or have questions: