pinebridge-bridge

pinebridge-bridge

Docker app from Pinebridge's Repository

Overview

Pinebridge: TradingView alerts to MetaTrader 5. Send TradingView alerts straight to MetaTrader 5 on your own Unraid server. No paid signal-relay service, no VPS. This container receives the TradingView webhook alerts and passes them over ZeroMQ to the Expert Advisor in pinebridge-mt5. Needs pinebridge-mt5 running alongside it; the webhook secret is generated for you. Places real trades automatically: read the risk notice (https://github.com/jakeshake/pinebridge/blob/main/DISCLAIMER.md) and test on a demo account first.

Pinebridge

Pinebridge

TradingView alerts to MetaTrader 5, self-hosted.

Buy me a coffee

Tired of paying a monthly fee just to get your TradingView alerts into MetaTrader 5? Or renting a VPS only so MT5 stays online around the clock? If you have an Unraid server, you already own the hardware for both. Pinebridge receives your TradingView strategy alerts and places the trades in MT5, which runs in a Windows container on your own server. No signal-relay subscription, no VPS bill, and your broker login stays on your own server instead of with a third-party service.

This executes real trades on a real or demo account with no human in the loop. Read the risk notice before using this with a live account, and test on a demo account first.

How it works

TradingView alert -> Cloudflare Tunnel -> pinebridge-bridge (Flask) -> ZeroMQ -> MT5 EA -> your broker

Three containers:

Container What it does
pinebridge-tunnel Optional: exposes the webhook to the internet via a Cloudflare Tunnel — no port-forwarding. Skip it if you already run a tunnel.
pinebridge-bridge Flask app: authenticates, parses, and translates TradingView alerts, then pushes them to MT5 over ZeroMQ
pinebridge-mt5 A Windows 11 VM (dockur/windows) running MetaTrader 5 + the TradingViewZeroMQExecutor Expert Advisor

The Pinebridge Dashboard (port 8081, LAN only) shows every signal and fill, slippage against TradingView's price, latency, win rate, PnL and equity. See docs/dashboard.md.

See docs/architecture.md for the full data-flow diagram and the reasoning behind each piece.

Quick start (Docker Compose)

  1. cp .env.example .env and fill in the values (see comments in the file).
  2. Set up a Cloudflare Tunnel per docs/cloudflare-tunnel-setup.md and put the token in .env.
  3. docker compose up -d
  4. Watch pinebridge-mt5 provision itself at http://<host>:8006 (noVNC) — see docs/mt5-ea-setup.md for what's automated and how to verify it worked.
  5. Point a TradingView alert at your tunnel's /webhook URL using the format in docs/tradingview-alert-format.md.

Quick start (Unraid)

See docs/unraid-install.md: add the templates with one terminal command, then install the containers from Docker > Add Container. Coming from the old tv-mt5-bridge names? See Moving from tv-mt5-bridge.

Support

Questions and help: the Unraid forum support thread. Bugs and feature requests: GitHub issues.

Security

  • The webhook requires a shared secret (WEBHOOK_SECRET), sent either in the webhook URL (/webhook?secret=...) or as a secret= field in the alert body — TradingView can't send custom headers, so this is the auth mechanism. Use the URL form for strategies that send messages from Pine alert() calls. Don't disable this for anything reachable from the internet.
  • Public exposure goes through a Cloudflare Tunnel, not a forwarded port.
  • No broker or Windows credentials are ever baked into the images — they're supplied via .env / Unraid template fields at runtime.

Repo layout

  • signal-bridge/ — source of the pinebridge-bridge image (Flask + ZeroMQ webhook receiver)
  • mt5-windows/ — source of the pinebridge-mt5 image, built on dockur/windows; oem/ holds the provisioning scripts + EA source baked into it
  • unraid-templates/ — Unraid container templates (the ones listed in Community Applications)
  • extras/ — the optional pinebridge-tunnel template (.template, not .xml, so the CA scanner does not list it: CA already lists cloudflared)
  • docs/ — setup guides for each piece

Status

Tested on real Unraid hardware with a Forex.com demo account:

  • Install: a fresh first boot installs MT5, compiles the EA and attaches it.
  • Live alerts end to end: market entries and exits, resting limit orders (arm/cancel), double-down adds and SL/TP moves, all from live TradingView alerts through a Cloudflare Tunnel.
  • Failure handling: close retries after a broker disconnect, and FIFO-compliant closing on a US account.

See docs/mt5-ea-setup.md for what was found along the way. Issues and PRs welcome.

Support the project

If Pinebridge saves you a VPS or a signal subscription, consider buying me a coffee.

Buy me a coffee

License

MIT. Please also read the automated trading risk notice.

Media gallery

Install pinebridge-bridge on Unraid in a few clicks.

Find pinebridge-bridge in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for pinebridge-bridge Review the template variables and paths Click Install

Requirements

Install pinebridge-mt5 too. The defaults work as-is on Unraid's default bridge network. Leave WEBHOOK_SECRET blank to have one generated; your TradingView webhook URL is printed in this container's log on first start.

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/jakeshake/pinebridge-bridge:latest
Last Updated2026-09-30
First Seen2026-09-30

Runtime arguments

Web UI
http://[IP]:[PORT:8081]/
Network
bridge
Shell
sh
Privileged
false

Template configuration

WebUI PortPorttcp

Host port for the webhook. Point your Cloudflare tunnel at http://[your Unraid IP]:[this port].

Target
5000
Default
5080
Value
5080
Dashboard PortPorttcp

Pinebridge Dashboard (opens from WebUI). Shows account data: keep it on your LAN and never add it to your Cloudflare tunnel.

Target
8081
Default
8081
Value
8081
EA Report PortPorttcp

The EA sends execution reports here (its ReportAddress input, default tcp://172.17.0.1:5556). LAN only.

Target
5556
Default
5556
Value
5556
DASHBOARD_PASSWORDVariable

Optional: password for the dashboard (any username). Recommended if others use your LAN.

RETENTION_DAYSVariable

Days of dashboard history to keep (0 = forever)

Default
90
Value
90
ZMQ_HOSTVariable

Where the EA's ZeroMQ port is reachable. 172.17.0.1 (the Docker host on the default bridge network) works when pinebridge-mt5 runs on this server; otherwise use that server's LAN IP.

Default
172.17.0.1
Value
172.17.0.1
ZMQ_PORTVariable

ZeroMQ PULL port the EA listens on

Default
5555
Value
5555
WEBHOOK_SECRETVariable

Leave blank to generate one on first start (saved in the Config path as webhook_secret, and the full webhook URL is printed in the log). Or set your own long random string.

PUBLIC_URLVariable

Optional: your tunnel's https address (e.g. https://tv-webhook.example.com), so the log prints the exact TradingView webhook URL.

REQUIRE_WEBHOOK_SECRETVariable

Leave true for anything reachable from the internet. Only set false for local-only testing.

Default
true
Value
true
ConfigPathrw

Keeps the generated webhook secret and the dashboard database (pinebridge.db) across restarts and updates

Target
/config
Default
/mnt/user/appdata/pinebridge-bridge/config
Value
/mnt/user/appdata/pinebridge-bridge/config
LogsPathrw

Webhook log storage

Target
/logs
Default
/mnt/user/appdata/pinebridge-bridge/logs
Value
/mnt/user/appdata/pinebridge-bridge/logs