Trading · no KYC
Host Freqtrade on an Offshore VPS
Run the open-source Freqtrade crypto trading bot 24/7 on an offshore, no-KYC VPS you pay for in crypto — your strategy, API keys, and trade history never touch a third-party SaaS.
What it is
Freqtrade is a free, open-source algorithmic crypto trading bot written in Python that connects to exchanges via CCXT (Binance, Kraken, Bybit, OKX and dozens more). It runs your own backtested strategies in dry-run or live mode, exposes a REST API and the FreqUI web dashboard, and can hyperopt/backtest strategies and train FreqAI machine-learning models.
Why host it offshore
A trading bot needs to stay online around the clock and holds exchange API keys that can move money — you want it on infrastructure you control, not a shared cloud tied to your legal identity. An offshore, no-KYC VPS paid in crypto keeps your strategy IP, key material, and trading footprint off any KYC'd provider account, while unmetered bandwidth and included DDoS protection keep the bot reachable and the exchange connection stable.
The deploy
A working reference setup
Copy this onto a fresh ChainVPS instance. Replace the placeholders, then bring it up.
# Ubuntu 24.04 — install Docker first:
# curl -fsSL https://get.docker.com | sh
#
# Then scaffold Freqtrade's user_data + config, then start.
# Bootstrap (run once, before bringing the stack up):
# docker compose run --rm freqtrade create-userdir --userdir /freqtrade/user_data
# docker compose run --rm freqtrade new-config --config /freqtrade/user_data/config.json
# # edit user_data/config.json: exchange keys, pairs, dry_run:true to start,
# # and set api_server.listen_ip_address 0.0.0.0 + a strong jwt_secret_key/password.
#
# docker-compose.yml:
services:
freqtrade:
image: freqtradeorg/freqtrade:stable
restart: unless-stopped
container_name: freqtrade
volumes:
- "./user_data:/freqtrade/user_data"
# Bind FreqUI/REST API to localhost only — reach it via SSH tunnel:
# ssh -L 8080:127.0.0.1:8080 user@your-vps
ports:
- "127.0.0.1:8080:8080"
command: >
trade
--logfile /freqtrade/user_data/logs/freqtrade.log
--db-url sqlite:////freqtrade/user_data/tradesv3.sqlite
--config /freqtrade/user_data/config.json
--strategy SampleStrategy
Firewall
Ports to open
| Port | Protocol | Purpose |
|---|---|---|
| 8080 | TCP | FreqUI web dashboard + REST API — keep bound to 127.0.0.1 and reach it over an SSH tunnel, never expose raw to the internet |
| 22 | TCP | SSH for management and for tunneling to FreqUI; move off 22 and use key-only auth |
| 443 | TCP | Optional — only if you front FreqUI with an authenticated HTTPS reverse proxy instead of an SSH tunnel |
Right-sizing
Which plan you need
VPS Nano/Small (1 vCPU, 1-2 GB RAM)
Single bot, dry-run or live on a handful of pairs, no on-box hyperopt. Freqtrade idles at a few hundred MB; this is plenty for 24/7 trading.
VPS Pro (2-4 vCPU, 4-8 GB RAM)
Live bot on many pairs plus occasional backtesting and hyperopt runs. Extra cores cut multi-day hyperopt jobs from hours to minutes; SSD helps large OHLCV datasets.
Dedicated (or top VPS with 8+ vCPU / 16+ GB)
FreqAI ML model training, big multi-year backtests, or several bots side by side. FreqAI is CPU/RAM hungry — dedicated cores avoid noisy-neighbor stalls during model retrains.
Best locations: Freqtrade holds exchange API keys and your strategy edge, so it fits the privacy tier (NL, CH, RO, IS, MD, LU) — CH and IS are strong picks for jurisdictional privacy. There is a real tradeoff: trading latency depends on distance to your exchange's matching engine, so if you run tight timeframes on a Binance-style venue, NL gives the best mix of low European latency and privacy. Freqtrade trades on candle closes (not sub-millisecond HFT), so tens of milliseconds of latency is harmless for most strategies — pick privacy-tier locations freely.
Lock it down
Hardening checklist
- Never expose port 8080 to the public internet. Keep the localhost bind shown above and reach FreqUI through an SSH tunnel (ssh -L 8080:127.0.0.1:8080), or put it behind an authenticated HTTPS reverse proxy. An open FreqUI with the /forceexit and /forcebuy endpoints is a direct path to draining your account.
- Start every strategy in dry_run:true and only flip to live after backtesting confirms behavior. Set a hard stoploss and max_open_trades in config.json so a bug can't over-leverage.
- Create exchange API keys with trading enabled but withdrawals DISABLED, and IP-whitelist the key to your VPS's static IP. That way a leaked key can trade but cannot move coins off the exchange.
- Lock down config.json: it contains keys and the FreqUI jwt_secret_key/password in plaintext — chmod 600 it, set a long random jwt_secret_key, and never commit it to git. Consider passing secrets via environment variables instead.
- Harden the box itself: key-only SSH on a non-default port, UFW allowing only SSH, unattended-upgrades on, and back up user_data/ (config, sqlite trade DB, strategies) off-server on a schedule.
- Enable Freqtrade's Telegram integration for trade alerts and remote /status, /stop, /forceexit control — it lets you kill a misbehaving bot from your phone without opening the web UI.
Deploy it on
The right ChainVPS product
Questions
Hosting Freqtrade — FAQ
Do I need to expose any inbound ports for the bot to trade?
No. Freqtrade makes outbound connections to the exchange API; it needs no inbound ports to place trades. Port 8080 is only for the optional FreqUI dashboard, and that should stay bound to localhost behind an SSH tunnel.
Can I run it in dry-run (paper trading) first?
Yes, and you should. Set dry_run:true in config.json to simulate trades against live market data with no real orders. Only switch to live once your strategy is backtested and you have watched the dry-run behave. No exchange keys with real balances are needed for dry-run or backtesting.
Will a small VPS handle live trading?
Easily. A 1 vCPU / 1-2 GB VPS Nano or Small runs a live single-bot setup 24/7. You only need more cores and RAM for on-box hyperopt, large backtests, or FreqAI machine-learning training, which are bursty compute jobs rather than steady load.
How do I access the FreqUI dashboard safely?
Leave 8080 bound to 127.0.0.1 as in the compose file and open an SSH tunnel from your laptop: ssh -L 8080:127.0.0.1:8080 user@your-vps, then browse http://localhost:8080. This keeps the trade-control API off the public internet entirely.
Is running a trading bot allowed on ChainVPS?
Yes. Freqtrade is legitimate software connecting to public exchange APIs. ChainVPS is no-KYC and crypto-paid, so there is no identity tied to the trading activity, but you are responsible for complying with your own exchange's terms and your local regulations.
How do I keep the bot running after a reboot or crash?
The compose file uses restart: unless-stopped, and Docker's service starts on boot, so the bot comes back automatically after a reboot or container crash. Add Telegram alerts so you are notified if it stops, and back up user_data/ regularly to preserve your trade database and config.
More to self-host
Other one-click stacks
Spin up Freqtrade
in the next 60 seconds.
Unmetered bandwidth · DDoS included · 21 cryptocurrencies · no KYC.