StreamDeal Media Node

Self-hosted live and VOD streaming with USDT TRC-20 payment verification. Deploy the Media Node on your Linux server and connect it to the StreamDeal Payment Gateway.

What StreamDeal does

StreamDeal helps publishers run a private paid streaming site without building the streaming and payment workflow from scratch.

StreamDeal is designed for publishers who already have an audience in a private community or through their own communication channels.

Release 0.5.21

Choose videos, attach multiple SRT subtitle files to each video, then upload individually. Subtitle tracks use their filenames and can be added or removed later without retranscoding. Publisher base URLs now open the dashboard directly.

Publisher deployment requirements

The publisher operates the Media Node host and domain. StreamDeal provides the packaged software and payment verification service; the publisher should keep deployment secrets, wallet information, and persistent data protected.

Revenue sharing and platform balance

The viewer's payment goes to the publisher's payout address. Publisher prepayments settle StreamDeal platform fees and are separate from viewer payments. The publisher may need TRX or sufficient Energy/Bandwidth resources when sending USDT on TRON, including platform balance deposits. Some wallets or services may sponsor eligible fees, but this depends on their current policy and limits.

Installation and deployment

All Live and VOD media segments are AES-128 encrypted, including free channels, and can be served through a CDN. HLS playlists use short cache lifetimes; playback keys remain access-controlled and are never cached.

Run the installer with sudo: it downloads the Linux amd64 release package, verifies its SHA256 checksum, loads the packaged Docker images, and installs the Media Node. Publishers do not need to download the package manually.

  1. Prepare a Linux amd64 host with Docker Engine, the Docker Compose plugin, curl, sha256sum, zstd, openssl, and sufficient disk space.
  2. Run the release installer with sudo. It downloads the versioned archive, verifies SHA256, loads the packaged Docker images, and installs the Media Node files.
  3. On first install, the installer creates private node credentials in /etc/streamdeal-media-node/.env and stops for configuration. Set one public URL in PLATFORM_BASE_URL (including /streamdeal when using a path prefix); the start script derives the host automatically. Register a receiving address in Publisher Settings before offering paid channels.
  4. Start the node with the provided start script. It creates private database credentials and stores the Publisher login token in the protected .env file, where it can be retrieved later.
  5. Configure DNS/Cloudflare Tunnel or a reverse proxy to send HTTPS traffic to the host's Nginx entrypoint. Open RTMP port 1935 only if publishers will push streams directly.

Install the latest release

curl -fsSL https://streamdeal.top/media-node/install.sh | sudo sh

The installer downloads a ~366 MB package. On a network where the direct route to this site is slow, configure an HTTP proxy in ~/.curlrc (for example proxy = "http://172.16.50.4:7897"); sudo reads /root/.curlrc, so set the proxy there as well. If your machine can reach an internal mirror directly, install from that origin instead for the fastest download.

Configure the public URL

After the installer finishes, use sudo to edit the private file /etc/streamdeal-media-node/.env and set the single public Media Node URL. The start script derives the hostname for Nginx and backend use. Check for updates with sudo /opt/streamdeal-media-node/scripts/update.sh; explicitly apply a verified release with sudo /opt/streamdeal-media-node/scripts/update.sh upgrade. The Payment Gateway address is fixed by StreamDeal and is not a publisher setting.

PLATFORM_BASE_URL=https://your-media-domain.example/streamdeal
MEDIA_NODE_COOKIE_SECURE=true

After starting your Media Node, register a dedicated USDT TRC-20 receiving address in Publisher Settings to enable paid channels. Free channels do not need a registered address.

Upgrading an existing node

Releases 0.5.9 and 0.5.10 change the database schema. Existing installations must apply the matching migrations before starting the new version. The updater deliberately does not run migrations itself, because rolling a schema back automatically is not safe. Back up the database first, then run the migrations that ship inside the installed release:

sudo docker exec -i streamdeal-media-node-mysql-1 \
  mysql -ustreamdeal -p"$(sudo grep '^MYSQL_PASSWORD=' /etc/streamdeal-media-node/.runtime.env | cut -d= -f2-)" streamdeal \
  < /opt/streamdeal-media-node/deploy/mysql/migrations/008_viewer_messages.sql

sudo docker exec -i streamdeal-media-node-mysql-1 \
  mysql -ustreamdeal -p"$(sudo grep '^MYSQL_PASSWORD=' /etc/streamdeal-media-node/.runtime.env | cut -d= -f2-)" streamdeal \
  < /opt/streamdeal-media-node/deploy/mysql/migrations/009_vod_archive_status.sql

sudo docker exec -i streamdeal-media-node-mysql-1 \
  mysql -ustreamdeal -p"$(sudo grep '^MYSQL_PASSWORD=' /etc/streamdeal-media-node/.runtime.env | cut -d= -f2-)" streamdeal \
  < /opt/streamdeal-media-node/deploy/mysql/migrations/010_vod_archived_at.sql

Which migrations to run: run 008 when upgrading from 0.5.8 or earlier, and 009 and 010 when upgrading from 0.5.9. A node already on 0.5.10 has all three applied. The 009 migration rewrites the vod_item table to add the archived state, so keep the backup. Then apply the release with sudo /opt/streamdeal-media-node/scripts/update.sh upgrade. The updater takes a rollback backup of the configuration, the data directory and the running images under /var/backups/streamdeal-media-node/. A fresh installation needs no migration step, because the schema is created at first start.

Start the Media Node

sudo sh /opt/streamdeal-media-node/scripts/start.sh up -d

On first start, the publisher login token is saved in the private /etc/streamdeal-media-node/.env. Retrieve it with sudo grep '^PUBLISHER_LOGIN_TOKEN=' /etc/streamdeal-media-node/.env. Change that value and restart to rotate the token and revoke existing sessions:

sudo sh /opt/streamdeal-media-node/scripts/rotate-login-token.sh
sudo sh /opt/streamdeal-media-node/scripts/start.sh up -d

Publisher console and viewer site

The publisher console and the public viewing pages can share one address or have one each. By default they share the public URL and the node behaves as before. Give the console its own hostname and the public domain serves viewers only: the dashboard and the management API answer on the console hostname, and reaching the console through the public hostname redirects to the right place.

# In /etc/streamdeal-media-node/.env — optional, defaults to PLATFORM_BASE_URL
PUBLISHER_BASE_URL=https://console.your-media-domain.example/streamdeal

The hostname must resolve to this node and be routed to it the same way as the public one. Change the setting and restart the node; the backend applies the same rule, so a routing mistake in the reverse proxy cannot leave the management API open under the public hostname.

Useful checks

sudo sh /opt/streamdeal-media-node/scripts/start.sh ps
curl -fsS https://your-media-domain.example/streamdeal/health

Viewer pages are served under https://your-media-domain.example/streamdeal/. Configure your reverse proxy to preserve that path prefix and forward requests to the Media Node HTTP entrypoint.

Release: 0.5.21 · Linux amd64 · USDT TRC-20 · Docker Compose