Running on a Home Web Server
Net Worth Navigator generates static HTML files — no backend server needed after rendering. You can serve these files from any web server on your local network, making them accessible from tablets, phones, and other computers in your home.
Why Run a Web Server?
Section titled “Why Run a Web Server?”The generated projection pages work when opened as local files (file://), but serving them from a web server gives you:
- Network access — view projections from any device on your LAN (phone, tablet, TV)
- Scenario switching — the shell page loads the scenario manifest from the server, giving you access to all scenarios without re-rendering
- Compare page — the comparison feature reads sidecar data files, which require HTTP serving to work correctly
Quick Start: Python’s Built-in Server
Section titled “Quick Start: Python’s Built-in Server”The simplest approach — no additional software needed. Open a terminal in your Net Worth Navigator directory and run:
cd outputpython -m http.server 8010cd outputpython3 -m http.server 8010Then visit http://localhost:8010/projection.html from the same machine, or http://YOUR_IP:8010/projection.html from another device on your network.
Find your local IP:
- Windows: Run
ipconfigand look for the IPv4 Address under your active network adapter - Linux: Run
ip addrand look forinetunder your network interface (usuallyeth0orwlan0) - macOS: Run
ifconfigand look forinetunderen0oren1
Option: Run Alongside the Web UI Editor
Section titled “Option: Run Alongside the Web UI Editor”When you run admin_app.py, it starts a FastAPI server on port 8010 that serves both the configuration editor and the static output files. So if you’re already using the Setup Panel, your projections are already being served:
.venv\Scripts\python.exe admin_app.pyServes the projection at http://localhost:8010/projection.html
.venv/bin/python admin_app.pyServes the projection at http://localhost:8010/projection.html
Option: Dedicated Web Server (nginx)
Section titled “Option: Dedicated Web Server (nginx)”For a more permanent setup, you can serve the output directory with a dedicated web server like nginx. A minimal configuration:
server { listen 80; server_name networth.local; root /path/to/Net-Worth-Navigator/output;
location / { try_files $uri $uri/ =404; }}Option: Docker (All-in-One)
Section titled “Option: Docker (All-in-One)”If you’re comfortable with Docker, the repo includes a sample docker-compose.yml that runs the Web UI editor and nginx in containers:
docker compose up -dThen visit http://localhost/setup.
This gives you the Setup Panel, projection shell, compare page, and nginx static file serving — all in one command, no Python environment needed on your host.
Monarch Money in Docker
Section titled “Monarch Money in Docker”If you use Monarch Money for live balance sync, the config-editor container needs access to your Monarch MCP server. The sample docker-compose.yml includes commented-out mount points with instructions. In short:
On Linux — uncomment the /opt/monarch-mcp-server bind mount in docker-compose.yml. If your MCP server uses uv (Python under ~/.local/share/uv), also mount that directory.
On Windows — set the MONARCH_MCP_PATH environment variable in docker-compose.yml and bind-mount your MCP installation directory.
Without Monarch, Manual Entry and CSV Import modes work fine with no extra configuration.
Security Note
Section titled “Security Note”The built-in Python server and the web UI editor listen on localhost by default — only accessible from the machine running them. To access from other devices on your network, you need to bind to 0.0.0.0:
python -m http.server 8010 --bind 0.0.0.0python3 -m http.server 8010 --bind 0.0.0.0Important: Only do this on a trusted local network. There is no authentication. See the Security Notes for more details.