Deployment

Who hosts your Node?

You do. PayPort Labs does not host Builder Nodes inside the Labs app.

District Zero PRACTICE and Town #1 commercial seats are inventory positions. Claiming either does not mean Labs spins up your software.

Builder's Node code
        ↓
Builder deploys their own instance
        ↓
Railway / Builder VM / other public host
        ↓
Host provides public HTTPS URL
        ↓
Builder registers that URL with Labs
        ↓
Labs verifies /health + agent.json + wallet ownership

You do not need to own a VPS. You do need a reachable public deployment (Railway, Render, your VM, or another compatible host).

Hosting is infrastructure. PayPort is the Node / protocol layer. Railway is not part of Protocol 0.1.

Labs Reference Demo — not your deployment: :8141 (HVAC), :8142 (Echo), monorepo district examples. Do not paste those URLs at claim time.

Journey map: Your First PayPort Node. Local setup explained: Building Your First Node.


Local machine vs public host

Do not blur these:

StageWhereURL shapeLabs registration?
Local testYour computer (or private VM)http://127.0.0.1:8124No — localhost is not public
Public deployRailway / your VPS / other hosthttps://….up.railway.app (example)Yes — this base URL

If you use your own VPS later

Your computer
     ↓
SSH into your VM
     ↓
On the VM: clone / install / configure / run (same ideas as the hands-on lesson)
     ↓
Public HTTPS (reverse proxy / host networking)
     ↓
Register that HTTPS base URL with Labs

SSH means: your laptop is only a remote keyboard; commands run on the VM.


Builders — beginner path (Railway)

Complete local checks first (Building Your First Node).

  1. Confirm .env has DEVELOPER_WALLET_ADDRESS = your Builder Wallet.
  2. Push your work to your GitHub repository (from Use this template).
  3. In Railway’s UI, create a project from that repository (not the official PayPort template forever).
  4. Railway builds and runs your app and gives you a public HTTPS base URL.
  5. Set MERCHANT_BASE_URL (and the same wallet / PAYMENT_MODE=mock for Part One) in the host’s environment.
  6. Open https://YOUR-HOST/health in a normal browser — not only on your laptop.
  7. Paste only that HTTPS base URL into Labs at

/town/claim?lane=practice.

Example URL shape: https://my-practice-echo.up.railway.app (Replace with your real host URL.)


Platform (port 8121) — Labs operators only

Assume the ppd-labs project and its existing venv are already present. Do not create another venv inside this monorepo.

cd /srv/projects/ppd-labs
source venv/bin/activate
pip install -r requirements.txt   # only if deps changed
cp .env.example .env
sudo cp deploy/payport-labs.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now payport-labs

Point nginx (or your reverse proxy) at 127.0.0.1:8121.