Get Xiznit Bot running on your own server in 45–60 minutes. Follow each step in order. If you get stuck, email support@xiznit-bot.com.
🔑 Your Xiznit Bot license key
☁️ DigitalOcean account (~$6/month)
🌐 A domain name (~$10–15/year)
📈 Broker account (Tradovate, Alpaca, or Tradier)
📊 TradingView + Pine Script strategy
⏱️ About 45–60 minutes
Recommended VPS host:
STEP 01
Create Your VPS Server
Your bot needs a server that runs 24/7. DigitalOcean offers a $6/month cloud server (called a Droplet) that's perfect for Xiznit Bot.
1.1 — Create a DigitalOcean Account
Go to digitalocean.com and sign up. You can use a credit card or PayPal.
1.2 — Create a Droplet
Click Create in the top right → select Droplets
Choose the region closest to you
Under image, select Ubuntu 24.04 LTS
Under size, choose Basic → $6/month (1GB RAM)
Under authentication, choose Password and set a strong password
Click Create Droplet and wait ~60 seconds
Copy your Droplet's IP address — you'll need it in the next step
1.3 — Connect to Your Server
Click the Console button in DigitalOcean to open a browser terminal. Log in with username root and the password you set.
💡
Tip: Save your IP address and root password somewhere safe. You'll need these every time you manage the bot.
STEP 02
Set Up Your Domain
Xiznit Bot requires a domain name — not just an IP address. This is necessary for secure HTTPS webhooks (required by TradingView) and for Tradovate OAuth to work. A domain costs about $10–15/year.
2.1 — Buy a Domain
Go to namecheap.com and register a domain. Something like mytradingbot.com works great. Once purchased, go to your domain's DNS settings.
2.2 — Point DNS to Your Server
In Namecheap, go to Domain List → Manage → Advanced DNS and add these records:
DNS Records
TypeHostValueTTL
──────────────────────────────────────────────────
A @ YOUR_SERVER_IP Automatic
A www YOUR_SERVER_IP Automatic
Replace YOUR_SERVER_IP with the IP address from Step 1. DNS changes take 5–30 minutes to propagate.
2.3 — Install Nginx and SSL on Your Server
In your server console, run these commands one at a time. Replace yourdomain.com with your actual domain.
Install Nginx:
bash
apt update && apt install -y nginx
Install Certbot for free SSL:
bash
apt install -y certbot python3-certbot-nginx
Create Nginx config for your domain:
bash
nano /etc/nginx/sites-available/xiznit-bot
Paste this into the editor (replace yourdomain.com with your domain):
Certbot will ask for your email and agree to terms. It automatically configures HTTPS and sets up auto-renewal. When done, your domain will be live at https://yourdomain.com.
⚠ DNS must propagate first. If Certbot fails with "could not resolve domain," wait 15–30 minutes for DNS to fully propagate, then try again.
STEP 03
Run the Installer
One command installs everything automatically — Docker, the bot, and all dependencies. Replace YOUR_LICENSE_KEY with the key from your purchase email.
The installer validates your license, installs Docker, downloads the bot image, and starts it — all in about 2 minutes.
✅
When complete, your bot is running 24/7 and will auto-update whenever new versions are released — no action needed on your end.
Verify it's running
bash
docker ps
You should see xiznit-bot listed with status Up.
STEP 04
Connect Your Broker
Choose your broker below. You only need to set up one. The config file is at /opt/xiznit-bot/config.env on your server.
📌
Tradovate supports futures trading including MNQ, MES, MGC, and all major futures contracts. Perfect for prop firm accounts. Connection is handled via OAuth — no API keys required.
⚠ Tradovate Requires a Funded Account + API Subscription: Before OAuth will connect, Tradovate requires (1) a minimum $1,000 deposit into your Tradovate account, and (2) a $25/month API access fee. Both apply even if you only intend to trade demo/sim accounts through a prop firm — almost all prop firms (Topstep, Apex, MFF, Bulenox, and others) route through a Tradovate demo connection, so this funding and fee are required regardless of whether real money ever touches the Tradovate account itself. This is a Tradovate requirement, not Xiznit's, and it applies to any automated trading software using Tradovate's API — not just Xiznit Bot or Xiznit Copier. Budget for this before starting OAuth setup below, or your bot/copier will not be able to connect.
4.1 — Register Your Tradovate OAuth App
Xiznit Bot connects to Tradovate using OAuth. Before you can connect any accounts, you need to register your own Tradovate OAuth application using your domain from Step 2.
Complete Tradovate's API Access Agreement
Log into your Tradovate account at trader.tradovate.com
Go to Application Settings and find the API Access tab
Complete the self-attestation form and sign the API Terms & Conditions — a one-time step required before any API or OAuth access
Confirm your account has the $1,000 minimum deposit and active $25/month API subscription
Register Your OAuth Application
In Application Settings → API Access, choose OAuth Registration
Fill in the application form — App Name can be anything descriptive, e.g. "My Xiznit Bot"
Set the Redirect URI to: https://yourdomain.com/oauth/callback (using your own domain from Step 2)
Submit the form — Tradovate will issue you a Client ID (CID) and Client Secret
Copy both immediately — the secret may only be shown once
💡
This is a standard Tradovate developer process, available to any individual with a funded account. You do not need Xiznit's vendor/partner status to complete this — it's your own personal OAuth app.
4.2 — Set Broker in Config
bash
nano /opt/xiznit-bot/config.env
Set these values:
config.env
BROKER=tradovate# demo = prop firm sim accounts, live = real moneyTRADING_MODE=demoTRADOVATE_CLIENT_ID=your_cid_hereTRADOVATE_CLIENT_SECRET=your_secret_hereTRADOVATE_REDIRECT_URI=https://yourdomain.com/oauth/callback
Select your trading mode (Demo for prop firm sim, Live for real money)
You'll be redirected to Tradovate to log in and authorize
After authorizing, you'll be redirected back and your accounts will appear automatically
✅
All your Tradovate accounts (including prop firm accounts) will be discovered automatically. Tokens refresh every 90 minutes in the background — no manual reconnection needed.
📌
Alpaca supports stocks and crypto. Paper trading is completely free with no deposit required — perfect for testing your strategy before going live.
Go to alpaca.markets and create a free account
Click Paper Trading in the left sidebar
Click Your API Keys on the right side
Click Generate New Key
Copy your API Key ID and Secret Key — the secret is only shown once
For live trading, switch to Live Trading and repeat
Add Keys to Config
bash
nano /opt/xiznit-bot/config.env
config.env
BROKER=alpaca# paper = free testing, live = real moneyTRADING_MODE=paperALPACA_API_KEY=YOUR_ALPACA_API_KEYALPACA_SECRET_KEY=YOUR_ALPACA_SECRET_KEY
Configure TradingView to send your strategy signals directly to your bot. Each strategy you create in the bot dashboard gets its own unique webhook URL.
5.1 — Your Webhook URL Format
Every strategy has a unique webhook URL in this format:
url
https://yourdomain.com/webhook/your-strategy-name
Find your exact webhook URL on the Strategies page of your bot dashboard at https://yourdomain.com.
5.2 — Create a TradingView Alert
Open TradingView and load your strategy on a chart
Click the Alert button (clock icon) in the top toolbar
Set the Condition to your strategy signal
Under Actions, check Webhook URL
Paste your webhook URL from the dashboard
Under Message, paste the JSON payload (see examples below)
Click Create
💡
TradingView requires HTTPS for webhook URLs. This is why the domain + SSL setup in Step 2 is required — a raw IP address will not work.
5.3 — Entry Alert Payload
Use {{strategy.order.alert_message}} as the message body and select Order fills only:
Only "ticker" and "action" are required. All other fields are optional depending on your strategy.
Field
Type
Required
Description
"ticker"
string
YES
Trading symbol (e.g. MNQ1!, AAPL, BTCUSDT)
"action"
string
YES
Trade action: buy, sell, exit, update_sl
"price"
number
optional
Current price. Use {{close}} in TradingView.
"qty"
number
optional
Number of shares/contracts.
"sl"
number
optional
Stop loss price. Also used with update_sl action.
"tp1"
number
optional
Take profit 1 price level.
"tp1_qty"
number
optional
Contracts to close at TP1.
"tp2"
number
optional
Take profit 2 price level.
"tp2_qty"
number
optional
Contracts to close at TP2.
"tp3"
number
optional
Take profit 3 price level.
"tp3_qty"
number
optional
Contracts to close at TP3.
"tp"
string
optional
Exit TP level: "TP1", "TP2", or "TP3". Used with exit action.
"reason"
string
optional
Close reason: eod_flatten, sl, max_duration, weekend_gap, blackout
"strategy"
string
optional
Strategy name for logging.
"comment"
string
optional
Label logged but not acted on.
"interval"
string
optional
Timeframe label (e.g. "15m", "1h"). Logged only.
REF
Commands Reference
docker ps
Check if bot is running
docker logs xiznit-bot
View bot activity log
docker logs xiznit-bot -f
Watch live bot activity
docker compose restart
Restart the bot
docker compose down
Stop the bot
docker compose up -d
Start the bot
docker compose pull
Check for updates
docker compose up -d --force-recreate
Force restart with latest image
REF
Troubleshooting
Bot won't start
Check your license key is correct in config.env. Run docker logs xiznit-bot to see the error message.
SSL certificate failed
Your DNS likely hasn't propagated yet. Wait 15–30 minutes after updating your Namecheap DNS records, then run the Certbot command again.
Tradovate OAuth not connecting
Make sure your domain is live and HTTPS is working before attempting OAuth. Tradovate requires a valid HTTPS callback URL. Check that https://yourdomain.com/health loads successfully first. Also confirm your Tradovate account has the $1,000 minimum deposit and an active $25/month API subscription — without both, Tradovate will not authorize API/OAuth access even for demo accounts.
Orders not executing
Check your broker settings in config.env. Make sure TRADING_MODE matches your account type (demo for prop firm sim, live for real money). For Tradovate, verify your OAuth connection is active on the Accounts page.
TradingView alerts not firing
Confirm your webhook URL uses https:// — TradingView requires HTTPS. Check that the strategy name in the URL exactly matches the strategy name in your dashboard. Verify your JSON payload is valid using jsonlint.com.
Invalid license key error
Email support@xiznit-bot.com with your license key and order confirmation. We'll verify it within 24 hours.
Bot stopped unexpectedly
Run docker compose up -d to restart. The restart: always setting means this should happen automatically after server reboots.
Download the PDF Guide
Prefer a printable version? Download the complete setup guide as a PDF.
Follow these steps to deploy Xiznit Copier on your own VPS and start copying trades across your funded accounts. Most users complete setup in under 20 minutes.
Recommended VPS host:
1
Requirements
What you need before starting
Before setting up Xiznit Copier, make sure you have the following:
✓Your Xiznit Copier license key — delivered to your email after purchase
✓A VPS (Virtual Private Server) running Ubuntu 22.04 or 24.04 — we recommend DigitalOcean ($6–$12/month)
✓Your broker credentials — Tradovate login for prop firm accounts, or API keys for Alpaca/Tradier
✓A computer with SSH access to your VPS (Terminal on Mac/Linux, PowerShell or PuTTY on Windows)
💡 Tip: If you already run Xiznit Bot on a VPS, you can run the Copier on the same server — no additional VPS needed.
2
Get a VPS
DigitalOcean recommended — $6/month
If you don't already have a VPS, sign up at digitalocean.com and create a Droplet:
1Click Create → Droplets
2Choose Ubuntu 24.04 LTS as your image
3Select the Basic $6/month plan (1 CPU, 1GB RAM is sufficient)
4Choose a datacenter region close to you
5Under Authentication, choose Password and set a strong root password
6Click Create Droplet and wait ~60 seconds
7Copy your Droplet's IP address from the dashboard
⚠️ Save your root password and IP address somewhere safe — you'll need them to SSH in.
3
Install Xiznit Copier
One command installs Docker, config, and starts the copier
Connect to your VPS via SSH:
Connect via SSH
ssh root@YOUR_SERVER_IP
Download and run the installer, replacing the key with your Copier license key from your purchase email:
💡 This single command installs Docker (if not already installed), writes your config file, sets up Docker Compose with automatic updates, pulls the Xiznit Copier image, and starts the container — all in about 2 minutes.
Verify it's running:
docker logs xiznit-copier --tail 10
✓ You should see: Xiznit Copier started successfully and Uvicorn running on http://0.0.0.0:3000
4
Get a Domain Name (Required)
Needed for Tradovate OAuth and HTTPS access
Xiznit Copier requires a domain name with HTTPS — a raw IP address is not enough. This is required because Tradovate's OAuth login needs to redirect back to a real, secure web address, not just your server's IP.
Buy a domain (~$10-15/year)
https://www.namecheap.com
Point your domain (or a subdomain like copier.yourdomain.com) at your server's IP address, then install Nginx with free SSL (Certbot) for that domain.
⚠️ This step is mandatory, not optional — Tradovate OAuth will not work without it. Contact support if you'd like help setting up Nginx + SSL.
5
Register Your Tradovate OAuth App
One-time setup, required before connecting accounts
Xiznit Copier connects to Tradovate using OAuth — the same secure login method used by Xiznit Bot. Before you can connect any accounts, you need to register your own Tradovate OAuth application using your domain from Step 4.
⚠️ Tradovate Requires a Funded Account + API Subscription: Before OAuth will connect, Tradovate requires (1) a minimum $1,000 deposit into your Tradovate account, and (2) a $25/month API access fee. Both apply even if you only intend to trade demo/sim accounts through a prop firm — almost all prop firms (Lucid, MFF, Apex, Topstep, and others) route through a Tradovate demo connection, so this funding and fee are required regardless of whether real money ever touches the Tradovate account itself. This is a Tradovate requirement, not Xiznit's.
5.1 — Complete Tradovate's API Access Agreement
1Log into your Tradovate account at trader.tradovate.com
2Go to Application Settings and find the API Access c-tab
3Complete the self-attestation form and sign the API Terms & Conditions — this is a one-time step required before any API or OAuth access
4Confirm your account has the $1,000 minimum deposit and active $25/month API subscription
5.2 — Register Your OAuth Application
1In Application Settings → API Access, choose OAuth Registration
2Fill in the application form — App Name can be anything descriptive, e.g. "My Xiznit Copier"
3Set the Redirect URI to: https://yourdomain.com/oauth/callback (using your own domain from Step 4)
4Submit the form — Tradovate will issue you a Client ID (CID) and Client Secret
5Copy both immediately — the secret may only be shown once
💡 This is a standard Tradovate developer process, available to any individual with a funded account. You do not need Xiznit's vendor/partner status to complete this — it's your own personal OAuth app, just like the one Xiznit Bot uses.
5.3 — Add Your Credentials to Copier's Config
SSH into your server and edit the Copier config file:
nano /opt/xiznit-copier/config.env
Set these three values using the CID, secret, and redirect URI from Step 6.2:
Save the file, then restart Copier so it picks up the new values:
cd /opt/xiznit-copier && docker compose restart
✓ Once restarted, Copier is ready to connect to Tradovate via OAuth.
6
Connect Your Accounts
One-click OAuth login imports all your accounts
In the Xiznit Copier dashboard, click Accounts → + Add Account:
1Select Tradovate (Futures/Prop Firms) as the broker
2Set Trading Mode to Demo/Sim for prop firm accounts
3Click Connect via Tradovate OAuth →
4Log into Tradovate when redirected — you'll be brought back to your dashboard automatically
5All your linked accounts (across Lucid, MFF, Apex, Topstep, TPT, and other supported prop firms) are imported automatically
6For each imported account, set its Role — Leader (master) or Follower (copy to)
✓ A successful connection shows your account names and equity. You only need to do the OAuth login once — it covers every account under that Tradovate login.
💡 If you have multiple accounts under the same prop firm login (e.g. 4 MFF accounts), one OAuth login imports all of them. No need to repeat the connection process per account.
7
Create a Copy Group
Link your leader to your followers
In the dashboard, go to Copy Groups → + New Group:
1Give your group a name (e.g. "MFF Master Group")
2Click Create Group
3Click Add Rule inside the group
4Select your Leader account from the dropdown
5Select your Follower account from the dropdown
6Set your Sizing Mode (Fixed, Ratio, or Percent)
7Click Save Rule
8Repeat steps 3–7 for each follower account
8
Configure Copy Rules
Sizing, filters, and time settings
Each copy rule has optional advanced settings:
SIZING MODES
Fixed — always copy X contracts regardless of leader size
Ratio — copy at a % of leader size (e.g. 0.5 = half)
Percent — size based on follower account equity
FILTERS
Symbols — whitelist or blacklist specific tickers
Direction — copy only buys, only sells, or both
Time — only copy during specific trading hours
9
Start the Group & Go Live
Begin copying trades in real time
Once your accounts and rules are configured:
1Make sure all accounts are assigned to the group (group_id set)
2Click Start Group on your copy group
3The status changes to ● Live
4Place a trade on your leader account
5Within 2 seconds, the same trade executes on all followers
🎉 You're live! Your copier is now running 24/7 on your server, automatically mirroring every trade from your leader to all follower accounts.
🛡️
Risk Management
Protect your funded accounts automatically
Go to any account → click the Risk settings icon to configure:
$Max Daily Loss — automatically stop copying if the account loses more than X dollars in a day
#Max Open Positions — cap the number of simultaneous open trades per account
%Max Position Size — never copy more than X contracts regardless of sizing rules
⚡Auto-Stop on Loss — automatically halts the account when daily loss limit is hit
⚠️ Always configure daily loss limits to protect your prop firm evaluations. A single runaway trade can fail an entire funded account.
📊
Trade Journal
Review, annotate, and learn from every trade
Every trade that goes through the copier is automatically logged. In the Journal view you can:
✍️Add notes to any trade explaining your reasoning or what happened
🏷️Add tags to categorize trades (e.g. "breakout", "reversal", "news trade")
⭐Rate each trade 1–5 stars based on execution quality
📅View the P&L calendar to see your performance by day
📈View the Analytics c-tab for win rate, profit factor, and performance breakdowns
🔔
Discord & Email Alerts
Stay informed from anywhere
Go to Settings in the dashboard to configure alerts:
1For Discord: Create a webhook in your Discord server (Server Settings → Integrations → Webhooks) and paste the URL into Settings
2For Email: Enter your email address in Settings and enable email alerts
The lockout button on the dashboard immediately stops all copy groups for a set period:
⏱Choose 15 minutes, 30 minutes, 1 hour, 2 hours, or rest of day
🛑All active copy groups are paused immediately — no more trades will copy during the lockout
▶️The lockout expires automatically, or you can end it manually
💡 Use lockout before major news events (NFP, FOMC, CPI) to avoid copying trades through high-volatility windows that could violate prop firm rules.
Need Help?
Having trouble with setup? We offer Setup Assistance for $100 — we'll connect to your server and configure everything from scratch so you can start copying trades today.