← back to Dw Photo Capture
docs: expose photocapture publicly via Cloudflare Tunnel at photo.designerwallcoverings.com (Mac-bound; CF edge TLS for camera)
7bb65214bbd9f7a06f517e89a27233828880c8b6 · 2026-07-06 14:28:07 -0700 · Steve Abrams
Files touched
Diff
commit 7bb65214bbd9f7a06f517e89a27233828880c8b6
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Mon Jul 6 14:28:07 2026 -0700
docs: expose photocapture publicly via Cloudflare Tunnel at photo.designerwallcoverings.com (Mac-bound; CF edge TLS for camera)
---
.gitignore | 2 ++
ACCESS.md | 26 ++++++++++++++++++++++++++
2 files changed, 28 insertions(+)
diff --git a/.gitignore b/.gitignore
index abc9d57..9aa1968 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,5 @@ data/progress.json
.DS_Store
certs/
data/mfr_index.json
+tunnel.out.log
+tunnel.err.log
diff --git a/ACCESS.md b/ACCESS.md
new file mode 100644
index 0000000..dc62e7c
--- /dev/null
+++ b/ACCESS.md
@@ -0,0 +1,26 @@
+# Access — dw-photo-capture
+
+This app is **Mac-bound by design** (macOS Vision OCR binary `bin/ocr` + local Ollama VLM +
+Homebrew psql), so it runs on this Mac (macstudio3), NOT on Kamatera. It is exposed publicly
+via a **Cloudflare Tunnel** — the Mac stays the compute; Cloudflare's edge provides the real
+TLS the live camera (`getUserMedia`) needs.
+
+## URLs
+- **Public:** https://photo.designerwallcoverings.com (Cloudflare edge TLS; basic-auth gated)
+- **LAN:** https://192.168.1.151:9891 (self-signed)
+- **Tailscale:** https://100.82.17.107:9891
+- **Local:** http://localhost:9890
+
+## Serving stack
+- **App:** launchd `com.steve.dwphoto` (PID varies) — `server.js`, HTTP :9890 + self-signed HTTPS :9891.
+- **Tunnel:** launchd `com.steve.dwphoto-tunnel` → cloudflared, config `~/.cloudflared/dwphoto-config.yml`,
+ tunnel id `ba44dc91-81cf-4c89-ae3e-fa5fc347eb1b`, ingress `photo.designerwallcoverings.com → http://localhost:9890`.
+ (Origin is plain HTTP :9890 on purpose — CF terminates TLS at the edge, avoiding the app's self-signed cert.)
+- **Auth:** HTTP Basic (admin / DW2024! by default; override via AUTH_USER/AUTH_PASS env).
+
+## Ops
+- Tunnel logs: `tunnel.out.log` / `tunnel.err.log` (repo root, gitignored).
+- Restart tunnel: `launchctl kickstart -k gui/$(id -u)/com.steve.dwphoto-tunnel`
+- Remove tunnel: `launchctl bootout gui/$(id -u)/com.steve.dwphoto-tunnel` + `cloudflared tunnel delete dwphoto`
+- **A true Kamatera (Linux) deploy is NOT possible without re-architecting** OCR → cloud API
+ (Google Vision/Gemini, metered) and Ollama → a remote host.
← ea390e5 chore: macstudio3 migration — reconcile from mac2 + repoint
·
back to Dw Photo Capture
·
feat: pluggable vision engines (macvision|gemini|gcv), runti 75c75e3 →