Run FrogTalk Node

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: