All apps · 0 apps
pinebridge-bridge
Docker app from Pinebridge's Repository
Overview
Readme
View on GitHub![]()
Pinebridge
TradingView alerts to MetaTrader 5, self-hosted.
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)
cp .env.example .envand fill in the values (see comments in the file).- Set up a Cloudflare Tunnel per
docs/cloudflare-tunnel-setup.md and
put the token in
.env. docker compose up -d- Watch
pinebridge-mt5provision itself athttp://<host>:8006(noVNC) — see docs/mt5-ea-setup.md for what's automated and how to verify it worked. - Point a TradingView alert at your tunnel's
/webhookURL 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 asecret=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 Pinealert()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 thepinebridge-bridgeimage (Flask + ZeroMQ webhook receiver)mt5-windows/— source of thepinebridge-mt5image, built on dockur/windows;oem/holds the provisioning scripts + EA source baked into itunraid-templates/— Unraid container templates (the ones listed in Community Applications)extras/— the optionalpinebridge-tunneltemplate (.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.
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.
Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/jakeshake/pinebridge-bridge:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8081]/- Network
bridge- Shell
sh- Privileged
- false
Template configuration
Host port for the webhook. Point your Cloudflare tunnel at http://[your Unraid IP]:[this port].
- Target
- 5000
- Default
- 5080
- Value
- 5080
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
The EA sends execution reports here (its ReportAddress input, default tcp://172.17.0.1:5556). LAN only.
- Target
- 5556
- Default
- 5556
- Value
- 5556
Optional: password for the dashboard (any username). Recommended if others use your LAN.
Days of dashboard history to keep (0 = forever)
- Default
- 90
- Value
- 90
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
ZeroMQ PULL port the EA listens on
- Default
- 5555
- Value
- 5555
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.
Optional: your tunnel's https address (e.g. https://tv-webhook.example.com), so the log prints the exact TradingView webhook URL.
Leave true for anything reachable from the internet. Only set false for local-only testing.
- Default
- true
- Value
- true
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
Webhook log storage
- Target
- /logs
- Default
- /mnt/user/appdata/pinebridge-bridge/logs
- Value
- /mnt/user/appdata/pinebridge-bridge/logs