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:
| Stage | Where | URL shape | Labs registration? |
|---|---|---|---|
| Local test | Your computer (or private VM) | http://127.0.0.1:8124 | No — localhost is not public |
| Public deploy | Railway / your VPS / other host | https://….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).
- Confirm
.envhasDEVELOPER_WALLET_ADDRESS= your Builder Wallet. - Push your work to your GitHub repository (from Use this template).
- In Railway’s UI, create a project from that repository (not the official PayPort template forever).
- Railway builds and runs your app and gives you a public HTTPS base URL.
- Set
MERCHANT_BASE_URL(and the same wallet /PAYMENT_MODE=mockfor Part One) in the host’s environment. - Open
https://YOUR-HOST/healthin a normal browser — not only on your laptop. - Paste only that HTTPS base URL into Labs at
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.