From zero to live trading in 10 minutes从零部署到打开软件面板
You don't need Linux or Docker experience — just a VPS and the ability to copy-paste a command.不需要懂 Linux 或 Docker。准备一台云服务器,复制一行命令,按步骤打开端口和设置密码即可。
1 Pick VPS1 选云服务器2 SSH in2 登录服务器3 One-line deploy3 一行命令安装4 Open port 30004 开放 3000 端口5 Set password5 设置密码6 Activate license6 激活授权
STEP 1
Spin up a Linux VPS准备一台 Linux 云服务器
A small cloud server is all you need. Any of these providers works — pick by region and price.可以把 VPS 理解成一台一直在线的远程电脑。软件会部署在这台电脑上运行。
Recommended providers
🇩🇪 Hetzner Cloud
€4.59 / month (CX22)
Best price/performance. Datacenters in Germany, Finland, US (Ashburn, Hillsboro), Singapore. Recommended for EU users.
🌍 DigitalOcean
$6 / month (Basic Droplet)
Most popular among developers. Great UX, 13 datacenters worldwide. NYC/SF for North America, Singapore/Tokyo for Asia.
🌍 Vultr
$6 / month (Cloud Compute)
32+ locations including Tokyo, Sydney, Frankfurt, Mumbai. Pick Tokyo for the lowest latency to Binance Futures.
🇺🇸 Linode (Akamai)
$5 / month (Nanode)
Reliable, dev-friendly. 11 regions including London, Frankfurt, Tokyo, Singapore. Now part of Akamai.
🌍 Contabo
€4.50 / month (CSS 10)
EU-based, generous specs at low price (4 vCPU / 6 GB RAM at this tier). Slightly slower support response.
☁ AWS Lightsail
$5 / month (1 GB)
If you're already in the AWS ecosystem. Predictable monthly billing, easy to scale up to EC2 later.
What to pick when ordering
OS image: Ubuntu 22.04 LTS or Ubuntu 24.04 LTS (plain image, not "Docker pre-installed" — our script installs the latest Docker for you, and pre-installed images sometimes ship outdated versions)
Specs: 1 vCPU / 2 GB RAM / 25 GB disk is the minimum. 2 vCPU / 4 GB is comfortable.
Region — pick by your primary exchange:
Binance / Binance Futures → Tokyo, Singapore, or AWS ap-northeast-1 (lowest latency to Binance's APIs)
OKX → Singapore or Hong Kong
Coinbase / Kraken → us-east-1 (Virginia / Ashburn) or Frankfurt
Bybit → Singapore or Tokyo
Spot grids tolerate <100ms latency easily — region matters more for futures or scalping. If unsure, pick the region closest to where YOU live for easier troubleshooting.
💡 About "Docker pre-installed" images: most providers offer them, but they may ship an older Docker version or use vendor-customized configs that conflict with ours. Plain Ubuntu + our installer is 5 minutes longer but rock-solid.
💡 After provisioning, the provider gives you two things: a public IP (like 1.2.3.4) and a root password (or SSH key). Save both — you'll need them in the next step.
STEP 2
SSH into your VPS登录云服务器
Two ways: terminal SSH (recommended) or the provider's web console.可以用电脑终端登录,也可以用云服务商网页控制台登录。
Option A — SSH from your terminal (recommended)
macOS / Linux: open Terminal and run:
ssh root@YOUR_VPS_IP
(Replace YOUR_VPS_IP with the IP from Step 1.) Enter your root password when prompted, or use the SSH key you uploaded.
Windows 10/11: PowerShell has SSH built in — same command works. Or use a dedicated client like Tabby, Termius, or PuTTY.
Option B — Provider web console (no client install)
Hetzner: Server detail → top-right "Console" button → opens a browser terminal
AWS Lightsail: Instance detail → "Connect using SSH" (browser-based)
Either way, you'll see a prompt like this:
root@vm-1:~# _
You're in. This shell is where every command in the next steps goes.
💡 If SSH refuses your password and you uploaded an SSH key during VPS creation, use ssh -i ~/.ssh/your_key root@IP instead. Most providers default to key-only auth for security.
STEP 3
One-line deploy一行命令安装
In the SSH session from Step 2, paste this single command and press Enter.在刚才登录的服务器窗口里粘贴下面这行命令,然后按回车。
⚠️ Screenshot the URL and Token now.
If you lose them, run cat ~/cts-web/SETUP-INFO.txt to recover (valid for 1 hour).
STEP 4
Open port 3000 in your cloud firewall在云服务器控制台开放 3000 端口
The install script opens the OS-level firewall (ufw / iptables), but your provider's cloud firewall is separate — you have to open it manually.安装脚本会处理服务器内部防火墙,但云服务商的安全组需要你手动开放。3000 端口就是浏览器访问软件面板的入口。
Hetzner: Cloud Console → Firewalls → New rule (or attach an existing firewall)
Protocol: TCP
Port: 3000
Source: 0.0.0.0/0 ← any IP (easiest)
or your-IP/32 ← only your home IP (most secure, recommended)
Save. Wait 5–10 seconds for the rule to propagate.
💡 Restricting source to your own IP is much safer — even if someone discovers your URL, they can't connect. Find your IP: ifconfig.me or search "what is my IP" in your browser. Note: a residential IP changes — re-update if you can't connect after a router reboot.
STEP 5
Open in browser, set your password用浏览器打开并设置密码
Use the URL from Step 3. Works on mobile too.使用安装完成后显示的网址,手机和电脑浏览器都可以打开。
Fill all three fields → click "Complete setup" → you're auto-logged in to the dashboard.
💡 The Setup Token is single-use and burns after this. Next time, just log in with the password you set.
STEP 6
Enter your license activation code输入授权码激活
After password setup you'll be auto-routed to the activation page (unless you're already activated).设置密码后会进入激活页面,粘贴购买后收到的授权码即可。
Paste the license key you received by email (looks like QB4-XXXX-XXXX-XXXX-XXXX) → click Activate.
On success you land on the main dashboard. You're live. Time to add your exchange API key and configure your first strategy — see the documentation.
Each license binds to one device at a time. Migrating? On the old machine, go to Settings → Release device, then activate on the new one. Two free migrations per year.
FAQ
Troubleshooting
Browser shows "This site can't be reached"
9 times out of 10, it's the cloud firewall in Step 4 — port 3000 isn't open yet. Re-check the inbound rule. Other 10%: VPS is still booting (wait 1 minute and refresh) or you're using https:// by mistake (it's http://).
Setup Token shows "invalid"
Check:
• Case sensitivity (token is uppercase letters + digits only)
• Hyphens not missed (4 groups of 4 characters, separated by 3 hyphens)
• Token expired (1-hour TTL). Recover with cat ~/cts-web/SETUP-INFO.txt on the VPS — if the timestamp inside is > 1 hour ago, regenerate by following "Forgot login password" below.
Forgot login password
On the VPS, run:
cd ~/cts-web && sudo docker compose down && sudo docker run --rm -v cts-web_cts_data:/d alpine rm /d/quant-bull-v4/auth.json && echo "SETUP_TOKEN=RESET-$(date +%s)" >> .env && sudo docker compose up -d
Refresh the browser — you're back on the first-time setup page. Find the new token with cat ~/cts-web/.env.
How do I upgrade to a new version?
On the VPS:
bash ~/cts-web/upgrade.sh
Auto-backup → pull new image → restart → health check. No data loss — positions, configs, license, password all survive the upgrade.
cd ~/cts-web && sudo docker run --rm -v cts-web_cts_data:/d -v "$PWD/backups":/b alpine tar -czf /b/manual-$(date +%Y%m%d).tar.gz -C /d .
The archive lands in ~/cts-web/backups/. Recommended: copy it off-server (rsync to your laptop, S3, Backblaze, etc.) periodically.
License shows "Locked"
Likely causes: license expired / revoked / offline grace period (72 h) elapsed without reaching the license server. Contact support to confirm. After renewal: in the browser go to Settings → Release device, then activate with the new license key.
Should I use HTTPS / a domain?
Recommended for production: put a reverse proxy (Caddy or Nginx) in front of port 3000 with a Let's Encrypt cert. The bot itself doesn't terminate TLS; if you're typing API keys over public WiFi without HTTPS, anyone on the network can sniff your password. For solo home use over a trusted connection, plain HTTP is fine for first deployment — add HTTPS once it's running.
⚠ Danger
Commands that wipe your data — do not run
Any of these will permanently delete your license, orders, and configs:
docker compose down -v (the -v flag deletes volumes)
docker volume rm cts-web_cts_data
rm -rf /var/lib/docker
Safe commands: docker compose pull / up -d / restart / down (without -v) /
docker logs. None of these touch persistent data.
Contact
Need help?
If you're stuck after following the guide, email us with:
Which step you're stuck on
A screenshot of the error (terminal red text or browser DevTools console)