From 570502997232aeb5becc1121482aa33423c9f800 Mon Sep 17 00:00:00 2001 From: Kristian Ollikainen <14197772+DatCaptainHorse@users.noreply.github.com> Date: Wed, 24 Sep 2025 20:08:20 +0300 Subject: [PATCH] feat(play-standalone): Add PEER_URL env variable (#302) ## Description Adds PEER_URL env variable for setting peer URL (query param still takes priority if set). - Useful for self-hosters - Was a pain to figure out ## Summary by CodeRabbit - New Features - Support configuring the peer server URL via an environment variable, with automatic fallback to the URL parameter or a default. - Server-provided configuration is securely passed to the client to simplify deployment setup. - Chores - Excluded common build artifacts and IDE directories from container contexts to reduce image size and speed up builds. Co-authored-by: DatCaptainHorse --- packages/play-standalone/.containerignore | 4 ++++ packages/play-standalone/astro.config.mjs | 7 +++++- .../play-standalone/src/pages/[room].astro | 24 ++++++++++++++++++- 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 packages/play-standalone/.containerignore diff --git a/packages/play-standalone/.containerignore b/packages/play-standalone/.containerignore new file mode 100644 index 00000000..50a91496 --- /dev/null +++ b/packages/play-standalone/.containerignore @@ -0,0 +1,4 @@ +.astro/ +.idea/ +dist/ +node_modules/ diff --git a/packages/play-standalone/astro.config.mjs b/packages/play-standalone/astro.config.mjs index 42f85a26..3ff210cd 100644 --- a/packages/play-standalone/astro.config.mjs +++ b/packages/play-standalone/astro.config.mjs @@ -1,5 +1,5 @@ // @ts-check -import { defineConfig } from "astro/config"; +import { defineConfig, envField } from "astro/config"; import node from "@astrojs/node"; // https://astro.build/config @@ -12,4 +12,9 @@ export default defineConfig({ "host": "0.0.0.0", "port": 3000, }, + env: { + schema: { + PEER_URL: envField.string({ context: "server", access: "secret", optional: true }), + } + } }); \ No newline at end of file diff --git a/packages/play-standalone/src/pages/[room].astro b/packages/play-standalone/src/pages/[room].astro index d59e55f0..a0b6f8ff 100644 --- a/packages/play-standalone/src/pages/[room].astro +++ b/packages/play-standalone/src/pages/[room].astro @@ -1,16 +1,36 @@ --- import DefaultLayout from "../layouts/DefaultLayout.astro"; const { room } = Astro.params; + +// Passing of environment variables to the client side +// gotta love node and it's ecosystem.. +const envs_map: Map = new Map(); +import { PEER_URL, getSecret } from "astro:env/server"; +if (PEER_URL) { + envs_map.set("PEER_URL", getSecret("PEER_URL")); +} + +let envs: string = ""; +if (envs_map.size > 0) { + envs = JSON.stringify(Array.from(envs_map.entries())); +} ---

Offline

Warming up the GPU...

+