Dreamio turn document
+Configure Stremio Server
+Installed the official Stremio server Docker image, exposed it through Nginx Proxy Manager at stremio.dpdrm.com, and validated HTTPS access from the public hostname.
Summary
+Stremio Server now runs as a dedicated Docker Compose project at /home/delta/stremio-server. Nginx Proxy Manager serves https://stremio.dpdrm.com with a new Let's Encrypt certificate and proxies traffic to stremio-server:11470 on the shared Docker network.
Changes Made
+-
+
- Created
/home/delta/stremio-server/docker-compose.ymlusing the officialstremio/server:v4.20.18image from Stremio's Docker server repo.
+ - Attached the container only to the existing
npm-sharedDocker network and persisted app/cache data under/home/delta/stremio-server/data.
+ - Set
NO_CORS=1so browser clients such as Stremio Web can call the proxied server URL.
+ - Created Nginx Proxy Manager certificate
#21forstremio.dpdrm.comand proxy host#12forwarding tohttp://stremio-server:11470.
+ - Added a root redirect so opening
https://stremio.dpdrm.comlaunches Stremio Web withstreamingServer=https://stremio.dpdrm.com.
+ - Repaired the local Beads project prefix by setting
issue-prefix: "dreamio"so task tracking commands can create and update issues.
+
Context
+The server already had Nginx Proxy Manager running on ports 80, 443, and localhost-bound admin port 81. Existing proxied services share the external Docker network named npm-shared, so Stremio was added to that same network rather than publishing its own public host port.
Official source references checked during setup: Stremio server-docker and Docker Hub tags for stremio/server.
+Important Implementation Details
+-
+
- The running container is
stremio-server, imagestremio/server:v4.20.18, restart policyunless-stopped.
+ - The public endpoint to use in Stremio clients is
https://stremio.dpdrm.com.
+ - NPM terminates TLS and proxies to the Stremio HTTP endpoint on port
11470; the container's internal HTTPS port12470is exposed only to Docker because the official server uses its own local certificate flow there.
+ - The NPM host has WebSocket upgrades enabled, HTTP/2 enabled, forced SSL enabled, buffering disabled, and long proxy send/read timeouts for streaming. +
- The official server's
/settingsresponse still reports an internal DockerbaseUrl. The NPM root redirect mitigates the most visible symptom by passing the public HTTPS server URL to Stremio Web.
+
Relevant Diff Snippets
+/home/delta/stremio-server/docker-compose.yml - new compose service
+123456789101112131415161718services: stremio-server: image: stremio/server:v4.20.18 container_name: stremio-server restart: unless-stopped environment: APP_PATH: /var/lib/stremio-server NO_CORS: "1" volumes: - ./data:/var/lib/stremio-server expose: - "11470" - "12470" networks: - npm-shared
+networks: npm-shared:
+ diff --git a/home/delta/stremio-server/docker-compose.yml b/home/delta/stremio-server/docker-compose.yml
+new file mode 100600
+index 0000000..1111111
+--- /dev/null
++++ b/home/delta/stremio-server/docker-compose.yml
+@@ -0,0 +1,18 @@
++services:
++ stremio-server:
++ image: stremio/server:v4.20.18
++ container_name: stremio-server
++ restart: unless-stopped
++ environment:
++ APP_PATH: /var/lib/stremio-server
++ NO_CORS: "1"
++ volumes:
++ - ./data:/var/lib/stremio-server
++ expose:
++ - "11470"
++ - "12470"
++ networks:
++ - npm-shared
++
++networks:
++ npm-shared:
++ external: true
+
+ /home/delta/nginx-proxy-manager/data/nginx/proxy_host/12.conf - generated proxy host excerpt
+123456789101112131415161718192021222324server { set $forward_scheme http; set $server "stremio-server"; set $port 11470;
+ listen 80; listen [::]:80; listen 443 ssl; listen [::]:443 ssl;
+ server_name stremio.dpdrm.com; http2 on;
+ ssl_certificate /etc/letsencrypt/live/npm-21/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/npm-21/privkey.pem;
+ location = / { return 307 https://app.strem.io/shell-v4.4/?streamingServer=https%3A%2F%2Fstremio.dpdrm.com; } proxy_read_timeout 3600s; proxy_send_timeout 3600s; proxy_buffering off; location / { include conf.d/include/proxy.conf; }}
+ diff --git a/home/delta/nginx-proxy-manager/data/nginx/proxy_host/12.conf b/home/delta/nginx-proxy-manager/data/nginx/proxy_host/12.conf
+new file mode 100644
+index 0000000..2222222
+--- /dev/null
++++ b/home/delta/nginx-proxy-manager/data/nginx/proxy_host/12.conf
+@@ -0,0 +1,24 @@
++server {
++ set $forward_scheme http;
++ set $server "stremio-server";
++ set $port 11470;
++
++ listen 80;
++ listen [::]:80;
++ listen 443 ssl;
++ listen [::]:443 ssl;
++
++ server_name stremio.dpdrm.com;
++ http2 on;
++
++ ssl_certificate /etc/letsencrypt/live/npm-21/fullchain.pem;
++ ssl_certificate_key /etc/letsencrypt/live/npm-21/privkey.pem;
++
++ location = / {
++ return 307 https://app.strem.io/shell-v4.4/?streamingServer=https%3A%2F%2Fstremio.dpdrm.com;
++ }
++ proxy_read_timeout 3600s;
++ proxy_send_timeout 3600s;
++ proxy_buffering off;
++ location / { include conf.d/include/proxy.conf; }
++}
+
+ /home/delta/dreamio/.beads/config.yaml - issue prefix repair
++5 unmodified lines67891011125 unmodified lines# Issue prefix for this repository (used by bd init)# If not set, bd init will auto-detect from directory name# Example: issue-prefix: "myproject" creates issues like "myproject-1", "myproject-2", etc.# issue-prefix: ""+# Use no-db mode: JSONL-only, no Dolt database# When true, bd will use .beads/issues.jsonl as the source of truth5 unmodified lines67891011125 unmodified lines# Issue prefix for this repository (used by bd init)# If not set, bd init will auto-detect from directory name# Example: issue-prefix: "myproject" creates issues like "myproject-1", "myproject-2", etc.issue-prefix: "dreamio"+# Use no-db mode: JSONL-only, no Dolt database# When true, bd will use .beads/issues.jsonl as the source of truth
diff --git a/.beads/config.yaml b/.beads/config.yaml
+index 07342c6..f719449 100644
+--- a/.beads/config.yaml
++++ b/.beads/config.yaml
+@@ -6,7 +6,7 @@
+ # Issue prefix for this repository (used by bd init)
+ # If not set, bd init will auto-detect from directory name
+ # Example: issue-prefix: "myproject" creates issues like "myproject-1", "myproject-2", etc.
+-# issue-prefix: ""
++issue-prefix: "dreamio"
+
+ # Use no-db mode: JSONL-only, no Dolt database
+ # When true, bd will use .beads/issues.jsonl as the source of truth
+
+ Diffs were rendered with @pierre/diffs/ssr after installing the repo's declared dev dependency from bun.lock. Each shell contains one focused file diff.
Expected Impact for End-Users
+Users can point Stremio Web or compatible Stremio clients at https://stremio.dpdrm.com as the streaming server. Opening the hostname directly redirects to Stremio Web with that server already encoded in the URL.
Validation
+-
+
- Ran
docker compose configin/home/delta/stremio-server; Compose rendered successfully.
+ - Pulled and started
stremio/server:v4.20.18;docker psshowsstremio-serverrunning onnpm-shared.
+ - Confirmed NPM can reach the upstream with
http://stremio-server:11470/settings.
+ - Used NPM's API to test the HTTP challenge for
stremio.dpdrm.com; the result wasok.
+ - Issued Let's Encrypt certificate
#21, expiring2026-08-26 16:48:19.
+ - Verified
https://stremio.dpdrm.com/settingsreturns HTTP200through Cloudflare and reports server version4.20.18.
+ - Verified CORS headers include
access-control-allow-origin: *for browser origins.
+ - Verified
https://stremio.dpdrm.com/redirects to Stremio Web withstreamingServer=https%3A%2F%2Fstremio.dpdrm.com.
+
Issues, Limitations, and Mitigations
+-
+
- The official Stremio server reports its Docker-side
baseUrlin/settings. The public URL remains the correct client setting, and the NPM root redirect avoids sending users into Stremio Web with an HTTP server URL.
+ - Hardware transcoding auto-detection did not find a viable acceleration profile in this container. The server remains usable with CPU transcoding and direct streaming. +
- Public services receive background internet scan traffic. Stremio logs may show harmless parse errors for unrelated probe paths such as
/.envor/graphql.
+ - Beads required local repair because the issue prefix was missing. The historical JSONL export was restored from git before continuing so old tracked issues were not replaced by the new task. +
Follow-up Work
+-
+
- Consider a Cloudflare rule or NPM custom deny rules for obvious scanner paths if the Stremio logs get noisy. +
- Consider adding a small admin note outside the app repo if this server accumulates more standalone Compose services. +
- Monitor the first Let's Encrypt renewal for certificate
#21before2026-08-26.
+