← Back to all docs

Mini PC Web App — Tailscale Network

A Node.js web app served over a Tailscale network, exposed to the public internet via Tailscale Funnel, with nginx as a local reverse proxy.

Live URLs

Access URL
Public internet https://nbg3pc.taileeca1e.ts.net
Tailscale network http://100.126.33.100
Local only http://127.0.0.1:3000

Architecture

Internet
   │  HTTPS (Tailscale Funnel)
   ▼
Tailscale → Node.js :3000
               ▲
               │
Tailscale network → nginx :80 → Node.js :3000

Tailscale Funnel handles TLS termination and routes directly to Node.js on port 3000. nginx sits in front for Tailscale-network access on port 80.

Stack

Component Version Role
Node.js v24.15.0 Web application server
nginx 1.30.0 Reverse proxy (port 80)
Tailscale Funnel Public HTTPS exposure
Python 3.13.3 Earlier prototype (app.py, unused)

Files

tswebclaude1/
├── server.js          # Node.js web app (port 3000)
├── app.py             # Python/Flask prototype (unused)
├── nginx-1.30.0/
│   └── conf/
│       └── nginx.conf # nginx reverse proxy config
├── README.md          # This file
├── INFRASTRUCTURE.md  # What was set up and why
└── HOWTO.md           # Step-by-step replication guide

Quick Start (after a reboot)

# 1. Start Node app
cd C:\Users\An.G3\Documents\GitHub\tswebclaude1
node server.js

# 2. Start nginx
cd nginx-1.30.0
nginx.exe

# Tailscale Funnel persists automatically — no action needed

Stop Everything

# Stop nginx
cd nginx-1.30.0 && nginx.exe -s stop

# Stop Node (find PID and kill)
netstat -ano | findstr :3000
taskkill /PID <pid> /F