ab 33e01a4a8f
Docker image / build-and-push (push) Successful in 3m3s
Fixed reconnect
2026-07-22 17:35:23 +03:00
2026-07-13 15:32:53 +03:00
2026-07-22 17:35:23 +03:00
2026-07-13 15:32:53 +03:00
2026-07-13 15:32:53 +03:00
2026-07-13 15:32:53 +03:00
2026-07-13 15:32:53 +03:00
2026-07-22 17:35:23 +03:00
2026-07-13 15:32:53 +03:00
2026-07-22 17:35:23 +03:00
2026-07-13 15:32:53 +03:00

doka-lobby

Web UI for Dota 2 joinable custom lobbies from the game coordinator.

The app keeps the latest lobby snapshot in memory, refreshes it every 3 minutes, and streams updates to the browser. There is no database. Steam account credentials and the refresh token can be persisted on a PVC.

Local run

npm install
$env:AUTH_ADMIN_PASSWORD = "admin-password"
npm start

Open:

http://localhost:3000

Use /admin to enter the admin password, save Steam credentials, and submit a Steam Guard code when Steam asks for it.

Kubernetes configuration

Mount a PVC to /data and set:

env:
  - name: AUTH_ADMIN_PASSWORD
    valueFrom:
      secretKeyRef:
        name: doka-lobby-admin
        key: password
  - name: STEAM_AUTH_FILE
    value: /data/.steam-auth.json
  - name: STEAM_CREDENTIALS_FILE
    value: /data/.steam-credentials.json
  - name: PORT
    value: "3000"
volumeMounts:
  - name: data
    mountPath: /data

Run one replica only. A single Steam account should not be used by multiple pods at once.

Auth files

  • .steam-credentials.json stores the Steam account name and password saved from /admin.
  • .steam-auth.json stores the Steam refresh token emitted by steam-user.
  • Both files are ignored by git and Docker build context.

If the refresh token is still valid, restarts use it. If it is missing or expired, the app falls back to the saved Steam account/password and may ask for Steam Guard again.

Docker image CI

GitHub Actions builds and pushes:

ultradesu/doka2-lobby-list

Configure repository secrets:

  • DOCKERHUB_USERNAME
  • DOCKERHUB_TOKEN

The workflow publishes latest on the default branch, branch/tag refs, and sha-* tags.

Options

node index.js --port 3001
node index.js --region 3
node index.js --game-id 123456789
node index.js --refresh-ms 180000

One-shot console mode:

node index.js --once --map "ffa"
S
Description
No description provided
Readme
137 KiB
Languages
JavaScript 87.1%
HTML 7.3%
CSS 5.3%
Dockerfile 0.3%