@@ -75,9 +97,7 @@ async function loginBunker(): Promise {
- no extension? install
- alby,
- or use a remote signer.
+ tap open signer app, approve the connection, then approve the sign-in event.
diff --git a/apps/web/src/views/NostrCallbackView.vue b/apps/web/src/views/NostrCallbackView.vue
new file mode 100644
index 0000000..b910d2d
--- /dev/null
+++ b/apps/web/src/views/NostrCallbackView.vue
@@ -0,0 +1,23 @@
+
+
+
// signer_return
+
Return to the gashboard tab to finish sign-in.
+
+
+
+
diff --git a/docker-compose.yml b/docker-compose.yml
index 70c9ff4..f7001b3 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,9 +1,11 @@
version: "3.9"
# gashboard — deploy as a Portainer Stack on the same Umbrel host that runs Datum.
-# IMPORTANT: set DATUM_NETWORK to the actual Docker network used by datum_datum_1.
-# Find it with:
-# docker inspect -f '{{range $name, $_ := .NetworkSettings.Networks}}{{$name}}{{"\n"}}{{end}}' datum_datum_1
+#
+# Umbrel's Portainer app runs user stacks inside Docker-in-Docker. A Portainer
+# stack network named "umbrel_main_network" is not the real Umbrel host network,
+# so Docker DNS names such as datum_datum_1 do not resolve from this container.
+# Host networking is used here so gashboard can reach Datum's real container IP.
services:
gashboard:
@@ -23,28 +25,21 @@ services:
PORT: "1337"
LOG_LEVEL: "${LOG_LEVEL:-info}"
CORS_ORIGIN: "${CORS_ORIGIN:-}"
- # Reach the Datum gateway container directly on its Docker network.
- # Do not use the Umbrel host proxy here; it serves the Umbrel web shell.
- DATUM_URL: "${DATUM_URL:-http://datum:21000}"
+ # Reach the Datum gateway container directly. Do not use Umbrel's
+ # published port 21000 here; it is the Umbrel auth proxy.
+ # Find the current IP with:
+ # docker inspect -f '{{.NetworkSettings.Networks.umbrel_main_network.IPAddress}}' datum_datum_1
+ DATUM_URL: "${DATUM_URL?must be set, e.g. http://10.21.0.11:21000}"
DATUM_ADMIN_USER: "${DATUM_ADMIN_USER:-admin}"
DATUM_ADMIN_PASSWORD: "${DATUM_ADMIN_PASSWORD?must be set}"
DATUM_POLL_INTERVAL_MS: "${DATUM_POLL_INTERVAL_MS:-5000}"
NOSTR_ALLOWED_NPUBS: "${NOSTR_ALLOWED_NPUBS?must be set}"
JWT_SECRET: "${JWT_SECRET?must be set}"
JWT_TTL_SECONDS: "${JWT_TTL_SECONDS:-86400}"
- ports:
- - "1337:1337"
+ network_mode: host
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:1337/healthz"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
- networks:
- - datum_network
- - default
-
-networks:
- datum_network:
- external: true
- name: "${DATUM_NETWORK:-umbrel_main_network}"