Skip to content

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.

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

The simplest approach — no additional software needed. Open a terminal in your Net Worth Navigator directory and run:

Terminal window
cd output
python -m http.server 8010

Then 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 ipconfig and look for the IPv4 Address under your active network adapter
  • Linux: Run ip addr and look for inet under your network interface (usually eth0 or wlan0)
  • macOS: Run ifconfig and look for inet under en0 or en1

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:

Terminal window
.venv\Scripts\python.exe admin_app.py

Serves the projection at http://localhost:8010/projection.html

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;
}
}

If you’re comfortable with Docker, the repo includes a sample docker-compose.yml that runs the Web UI editor and nginx in containers:

Terminal window
docker compose up -d

Then 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.

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.

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:

Terminal window
python -m http.server 8010 --bind 0.0.0.0

Important: Only do this on a trusted local network. There is no authentication. See the Security Notes for more details.