Siirry pääsisältöön

Pubsub Provider

Pubsub Provider is an operator service for running a Bitsocial-compatible pubsub fallback relay with a bundled Kubo node. Modern Bitsocial clients such as 5chan and Seedit use pure peer-to-peer networking in the browser by default, but this service remains useful as an optional fallback path for users who disable browser P2P or for operators who want public compatibility endpoints.

What It Runs

  • a public HTTP proxy for pubsub, gateway, name-provider, and delegated routing routes
  • a bundled Kubo node with pubsub enabled
  • a delegated HTTP routing provider at /routing/v1/providers
  • Prometheus metrics at /metrics
  • optional basic-auth access to the full Kubo RPC API

Ports

The defaults are chosen so Pubsub Provider can run next to Bitsocial Seeder on the same VPS without a swarm-port conflict.

PurposeDefaultNotes
Public HTTP proxy8000 app, 80 Docker hostSet PUBSUB_PROVIDER_HTTP_PORT to change host port.
Kubo swarm4002 TCP/UDPAvoids the seeder's default Kubo swarm port 4001.
Kubo API5001 local onlyUsed internally by the proxy.
Kubo gateway8080 local onlyUsed internally by the proxy.

Docker Setup

git clone https://github.com/bitsocialnet/pubsub-provider.git
cd pubsub-provider
docker compose pull
docker compose up -d

Check logs:

docker logs --follow pubsub-provider

Test the proxy:

curl http://127.0.0.1/commit-hash

Upgrading

If you previously ran the old latest image, force Compose to recreate the container from the pinned published image:

git pull
docker compose down
docker compose pull
docker compose up -d --force-recreate

Verify the fixed image is running:

docker inspect pubsub-provider --format 'image={{.Image}} restarts={{.RestartCount}}'
docker exec pubsub-provider /app/bin/ipfs version
curl http://127.0.0.1/commit-hash

The logs should include using Kubo binary at /app/bin/ipfs and should not include downloading ipfs.

Running With Bitsocial Seeder

If the same host also runs bitsocial-seeder, keep Pubsub Provider on swarm port 4002 or another non-4001 port:

PUBSUB_PROVIDER_SWARM_PORT=4002 docker compose up -d

This avoids the port conflict that happens when two Kubo nodes both try to bind TCP/UDP 4001.

Configuration

Common environment overrides:

PUBSUB_PROVIDER_HTTP_PORT=80
PUBSUB_PROVIDER_SWARM_PORT=4002
PUBSUB_PROVIDER_PORTS=8000
KUBO_RPC_URL=http://127.0.0.1:5001/api/v0
IPFS_GATEWAY_URL=http://127.0.0.1:8080
HTTP_ROUTER_URLS=https://example-router.invalid
PUBSUB_PROVIDER_ROUTING_STORE_PATH=
BASIC_AUTH_USERNAME=
BASIC_AUTH_PASSWORD=
IPFS_GATEWAY_USE_SUBDOMAINS=false
SHUTDOWN_KEY=
ETH_PROVIDER_URL=
ETH_PROVIDER_URL_WS=
SOL_PROVIDER_URL=

Use the provider as a fallback relay, not as a replacement for browser P2P. Keep running the tracker infrastructure separately when the network needs dedicated peer discovery capacity.