Install guide安装指南

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

💡 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)

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.在刚才登录的服务器窗口里粘贴下面这行命令,然后按回车。

curl -fsSL https://ch-license-server.cts-jz.workers.dev/install.sh | bash

Wait 3–5 minutes (depending on your network). The script handles everything:

[1/6] Check Docker ✓ [2/6] Open OS firewall 3000 ✓ [3/6] Pull image (~300 MB) ✓ [4/6] Generate Setup Token ✓ [5/6] Start container ✓ healthy [6/6] Wrap up ✓ saved to SETUP-INFO.txt

You'll see a deployment summary at the end (don't close it!)

╔══════════════════════════════════════════════════════════════╗ ║ 🎉 CryptoTrade Swift deployed successfully! ║ ╚══════════════════════════════════════════════════════════════╝ 📍 URL http://1.2.3.4:3000 🔑 Setup Token XXXX-YYYY-ZZZZ-WWWW (valid 1 hour, single use)
⚠️ 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 端口就是浏览器访问软件面板的入口。

Rule values

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.使用安装完成后显示的网址,手机和电脑浏览器都可以打开。

http://YOUR_VPS_IP:3000

You'll see the first-run setup page:

┌──────────────────────────────────────────┐ │ CryptoTrade Swift │ │ First-time setup │ │ │ │ Setup Token * │ │ ┌────────────────────────────────┐ │ ← paste token from Step 3 │ │ XXXX-YYYY-ZZZZ-WWWW │ │ │ └────────────────────────────────┘ │ │ │ │ Set login password * (min 8 chars) │ │ ┌────────────────────────────────┐ │ ← choose your own │ │ •••••••• │ │ │ └────────────────────────────────┘ │ │ │ │ Confirm password * │ │ ┌────────────────────────────────┐ │ │ │ •••••••• │ │ │ └────────────────────────────────┘ │ │ │ │ [Complete setup →] │ └──────────────────────────────────────────┘

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.
Upgrade broke something — how do I roll back?
List available backups:
bash ~/cts-web/upgrade.sh --list
Roll back to a specific backup:
bash ~/cts-web/upgrade.sh --rollback <backup-file-path>
How do I take a manual backup?
Upgrades back up automatically. Manual backup:
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:

Email: [email protected] · usually replied within 24 h.