Self-Host A Federation Node
Production setup with update feed, legitimacy checks, onion-first routing, and federation-safe update flow.
1) Deploy FrogTalk Service
Clone project, create virtualenv, install requirements, run as systemd service.
git clone https://github.com/your-org/frogtalk-standalone.git /opt/frogtalk
cd /opt/frogtalk
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
2) Configure Federation + Update Channel
# /opt/frogtalk/.env
FROGTALK_FEDERATION_ENABLED=1
FROGTALK_FEDERATION_TOKEN=CHANGE_THIS_SHARED_SECRET
FROGTALK_OFFICIAL_DIRECTORY_URL=https://frogtalk.xyz/api/network/servers
# Centralized release feed from main site
FROGTALK_UPDATE_FEED_URL=https://frogtalk.xyz/api/network/updates/latest
FROGTALK_UPDATE_CHECK_INTERVAL_SEC=300
FROGTALK_AUTO_UPDATE_ENABLED=1
# Optional service install dir / service name overrides
FROGTALK_INSTALL_DIR=/opt/frogtalk
FROGTALK_SERVICE_NAME=frogtalk
Use same federation token only for trusted nodes under your control.
2.5) Run Behind Tor / Onion
If you want the node to be reachable over Tor, point clients and federation peers at the onion app URL, not the marketing home page.
# /opt/frogtalk/.env
FROGTALK_TOR_ENABLED=1
FROGTALK_ONION_URL=http://yourhiddenserviceaddress.onion
# Optional: keep empty for onion-only nodes so the public IP never appears in directory output
FROGTALK_BASE_URL=
# Tor Browser and other clients should open:
# http://yourhiddenserviceaddress.onion/app
Use
/app for client handoff links and network-tab switches. The Node Control and network UI now prefer onion app links so users land inside the chat client, not the marketing site.3) Start Service
sudo systemctl daemon-reload
sudo systemctl enable frogtalk
sudo systemctl restart frogtalk
sudo systemctl status frogtalk --no-pager
4) Verify Node Health + Hash
curl -s https://your-node.example/api/network/status
curl -s https://your-node.example/api/network/build/local
curl -s https://your-node.example/api/network/update/status
`build_hash` should match the approved release from main-site feed for federation stability.
For onion-only nodes, verify the same endpoints through your Tor endpoint and test the user-facing app at http://yourhiddenserviceaddress.onion/app.
5) Publish Releases From Main Site
On frogtalk.xyz, publish metadata once per release so nodes can pull updates safely.
curl -X POST https://frogtalk.xyz/api/network/updates/publish \
-H "X-Session-Token: ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"version": "1.4.0",
"package_url": "https://frogtalk.xyz/releases/frogtalk-1.4.0.tar.gz",
"package_sha256": "PUT_REAL_SHA256",
"build_hash": "PUT_REAL_WEB_BUILD_HASH",
"notes": "Federation-safe rollout"
}'
6) Use Network Settings In App
Open app Settings -> Network to:
- Probe nodes and view latency
- Verify legitimacy badges (`SAME HASH`, `LEGIT COPY`, mismatch alerts)
- Switch to Tor-enabled nodes using onion
/applinks with automatic handoff when possible - Check/apply updates from the official feed