Day 256 of the year: Programmers' Day. 10% off every month for as long as you keep your server. code DAY256. Claim 10% Programmers' Day: 10%: DAY256 Claim 10%
Skip to content
Linux trading bots

Trading bot VPS that stays up while your laptop sleeps.

First month $1, then the normal monthly price. One per customer.

A small Linux KVM VPS with full root, NVMe RAID10 storage and unlimited traffic for Freqtrade, Hummingbot, your own Python and ccxt bot, or a market data collector that must not miss a candle. New York for US exchanges, Amsterdam for European ones. Linux only: we do not offer Windows, so MetaTrader is not a fit here.

Provisioning
30-60 safter payment
New York to Boston
5-8 msmeasured
Amsterdam to Frankfurt
8.5 msmeasured
Memory
ECCon every plan
Plan
S-2 for one bot, S-4 for a few
1 vCPU and 2 GB runs a Freqtrade instance. Backtesting and hyperopt want S-8.
Region
New York or Amsterdam
Same price. Choose by where your exchange's API endpoint answers from.
OS
Ubuntu 24.04 or Debian 13
Docker and chrony from the standard repositories.
Packages
docker compose, chrony, ufw, fail2ban
Python 3 and a venv if you skip Docker for a custom bot.
Storage
NVMe RAID10
30 GB on S-2 is fine for a bot; years of tick data want S-4 or S-8.
Expect
Root, own kernel, REST API
A server, not a strategy. What the bot does is entirely your own decision.

Transparent pricing

Plans and prices

Monthly price, no setup fee
Day 256 of the year: Programmers' Day. 10% off every month for as long as you keep your server.DAY256Start a VPS with this code
1:2 to 1:4Shared vCPU on EPYC Milan, capped at one to four shares per node, with the node headroom left unsold.
PlanvCPUMemoryNVMeTrafficMonthly1 year
Standard
S-2Standard1vCPU2 GBMemory30 GBNVMe RAID10UnlimitedTraffic$7.99/moFirst month $1$7.19/mo on 1 yearStart for $1
S-4Standard2vCPU4 GBMemory60 GBNVMe RAID10UnlimitedTraffic$13.99/moFirst month $1$12.59/mo on 1 yearStart for $1
S-8Standard3vCPU8 GBMemory120 GBNVMe RAID10UnlimitedTraffic$24.99/moFirst month $1$22.49/mo on 1 yearStart for $1
S-16Standard4vCPU16 GBMemory240 GBNVMe RAID10UnlimitedTraffic$44.99/moFirst month $1$40.49/mo on 1 yearStart for $1
S-32Standard8vCPU32 GBMemory480 GBNVMe RAID10UnlimitedTraffic$84.99/moFirst month $1$76.49/mo on 1 yearStart for $1
S-64Standard16vCPU64 GBMemory720 GBNVMe RAID10UnlimitedTraffic$159.99/moFirst month $1$143.99/mo on 1 yearStart for $1
Dedicated CPU
D-4Dedicated1vCPU4 GBMemory45 GBNVMe RAID10UnlimitedTraffic$37.00/moFirst month $1$31.45/mo on 1 yearStart for $1
D-8Dedicated4vCPU8 GBMemory90 GBNVMe RAID10UnlimitedTraffic$69.00/moFirst month $1$58.65/mo on 1 yearStart for $1
D-16Dedicated4vCPU16 GBMemory160 GBNVMe RAID10UnlimitedTraffic$118.00/moFirst month $1$100.30/mo on 1 yearStart for $1
D-32Dedicated6vCPU32 GBMemory220 GBNVMe RAID10UnlimitedTraffic$215.00/mo$182.75/mo on 1 yearDeploy D-32
D-64Dedicated10vCPU64 GBMemory400 GBNVMe RAID10UnlimitedTraffic$377.00/mo$320.45/mo on 1 yearDeploy D-64
High Memory
H-64High Memory8vCPU64 GBMemory480 GBNVMe RAID10UnlimitedTraffic$249.00/mo$211.65/mo on 1 yearDeploy H-64
H-128High Memory16vCPU128 GBMemory960 GBNVMe RAID10UnlimitedTraffic$459.00/mo$390.15/mo on 1 yearDeploy H-128
H-192High Memory24vCPU192 GBMemory1.4 TBNVMe RAID10UnlimitedTraffic$669.00/mo$568.65/mo on 1 yearDeploy H-192
Prices in USD. Code DAY256 gives 10% off every month for as long as you keep your server, on monthly and yearly terms.

What a bot needs from a server, and what it does not.

Most bots are tiny programs. They wait for the next candle, nothing more. So the server has exactly one job, and it's a boring one: be up every single time that candle closes, with the clock right and a stable route to the exchange.

Always on, without your laptop

Run the bot on a home machine and it dies the moment the thing goes to sleep. Or at the next update, or when the Wi-Fi drops. On a VPS the process sits under systemd or Docker with a restart policy and comes back on its own. And on the day SSH is unreachable for whatever reason, the VNC console still gets you in. The kernel is yours too, so tune it however you like.

A correct clock

Every request to an exchange API carries a timestamp in its signature. Drift past the exchange's window and the request gets rejected, full stop. Chrony holds the VPS within milliseconds of public NTP. We see this one in support constantly, the ticket usually reads "why is my bot rejected", and the fix is a single line.

Close to the exchange, not just fast

New York sits in a carrier hotel on Hudson Street with measured 4 to 7 ms to Philadelphia and 7 to 12 ms to Washington DC. Amsterdam is next to AMS-IX with 9.0 ms to London and 8.5 ms to Frankfurt. Where the exchange's matching engine is hosted is something only the exchange knows, so check their docs before you pick.

Small, but not shared with strangers

Even S-2 gets a KVM instance of its own, with ECC memory and NVMe RAID10 under it. Not a container. Not a slice of a box shared with workloads nobody told you about. And every node keeps unsold headroom, on purpose. For a bot, that kind of stability is worth more than raw speed.

Which plan for which bot.

Live trading barely touches the CPU. What pushes a bot server up a plan is backtesting, hyperopt and a growing pile of tick data.

Setup Plan Why
One Freqtrade or custom ccxt bot, live or dry-run S-2 1 vCPU and 2 GB is enough for a bot that polls a few pairs
Two or three bots, or Hummingbot with its gateway S-4 Room for several containers and a small Postgres or SQLite history
Backtesting and hyperopt on the same box S-8 3 vCPU and 8 GB for the parallel workers, 120 GB for candle data
Market data collector storing years of trades S-8 or S-16 Disk grows with every pair and timeframe you record

A single Freqtrade instance in dry-run or live mode fits S-2 (1 vCPU, 2 GB, 30 GB NVMe) at €6.99 a month ($7.99). The bot spends most of its time waiting for the next candle, and 2 GB holds Freqtrade, its SQLite database and the web UI without swap. The 30 GB disk is the honest limit: it is plenty for the bot and its logs, but not for downloading years of one-minute candles for many pairs.

With a few bots, or Hummingbot plus its gateway container, S-4 (2 vCPU, 4 GB, 60 GB) at €11.99 a month ($13.99) is the comfortable choice. The second vCPU matters when a strategy computes many indicators per pair on every tick; on one shared vCPU that can delay the next cycle.

Backtesting is a different workload. Freqtrade's hyperopt runs parallel workers and holds every pair's dataframe in memory, so S-8 (3 vCPU, 8 GB, 120 GB) at €21.99 a month ($24.99) is where it stops swapping. If backtests are your main use, a Dedicated plan such as D-8 (4 vCPU, 8 GB, 90 GB) at €64.00 a month ($69.00) gives pinned cores and repeatable run times, but for the live bot itself that is more than needed. Resize in place when the need changes; RAM and vCPU change with one short reboot and the IP stays.

Setting up Freqtrade on BuyVPS.

Step 1: order, harden the login

Order S-2 or S-4 with Ubuntu 24.04, or start with the $1 trial month. A bot server holds API keys, so the first minutes go to locking the door: a non-root user, SSH keys only, a firewall that allows SSH and nothing else.

apt update && apt -y upgrade
adduser --gecos "" bot && usermod -aG sudo bot
mkdir -p /home/bot/.ssh && cp ~/.ssh/authorized_keys /home/bot/.ssh/ && chown -R bot:bot /home/bot/.ssh
sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart ssh
apt -y install ufw fail2ban && ufw allow OpenSSH && ufw enable

Step 2: time sync with chrony

Install chrony, then actually check that it is tracking. Exchanges hold your request timestamp against their own clock, and a drifted VPS gets bounced, so this is not optional.

apt -y install chrony
systemctl enable --now chrony
chronyc tracking
timedatectl set-timezone UTC

Step 3: Docker and Freqtrade with docker compose

These are the commands from the Freqtrade documentation at freqtrade.io. Run them as the bot user after adding it to the docker group.

curl -fsSL https://get.docker.com | sh
usermod -aG docker bot
su - bot
mkdir ft_userdata && cd ft_userdata
curl https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml -o docker-compose.yml
docker compose pull
docker compose run --rm freqtrade create-userdir --user-data-dir user_data
docker compose run --rm freqtrade new-config --config user_data/config.json

The config wizard asks for the exchange, the stake currency and whether to start in dry-run. Keep dry-run on until you have watched the bot for a while. Then start it:

docker compose up -d
docker compose logs -f

Step 4: a custom Python bot under systemd

For your own ccxt script, skip Docker if you prefer. A venv and a systemd unit with Restart=always do the job. Keep the keys in an environment file readable only by the bot user.

apt -y install python3-venv
su - bot
python3 -m venv ~/venv && ~/venv/bin/pip install ccxt
install -m 600 /dev/null ~/.bot.env   # EXCHANGE_KEY=... EXCHANGE_SECRET=...
[Unit]
Description=ccxt bot
After=network-online.target chrony.service

[Service]
User=bot
EnvironmentFile=/home/bot/.bot.env
ExecStart=/home/bot/venv/bin/python /home/bot/bot.py
Restart=always
RestartSec=15

[Install]
WantedBy=multi-user.target

Step 5: keys with withdraw disabled, web UI behind a tunnel

Make the exchange API key with trading on and withdrawals off. If the exchange lets you pin a key to an IP, pin it to the VPS's IPv4 address too. Now the web UI. Freqtrade serves it on port 8080 inside the compose network, and that is exactly where it belongs. Don't punch a hole for it in ufw, however tempting a browser tab looks. Reach it through an SSH tunnel instead:

ssh -L 8080:127.0.0.1:8080 bot@YOUR_IP
# then open http://127.0.0.1:8080 on your own machine

Turn on two-factor authentication on the exchange account and on every account that can log in to the server or its hosting panel. A bot is only as safe as the weakest login that can reach it.

Pitfalls we see, and how to avoid them.

Clock drift and rejected requests

Without an NTP client the clock on any VM drifts. The bot then gets timestamp errors from the exchange and the strategy sits idle without anyone noticing. Install chrony on day one and check chronyc tracking after every reboot. It is in step 2 above for a reason.

API keys committed to git

A config.json with keys in it, pushed to a public repository, is found by scanners within minutes. Keep keys in an environment file or a .env that is in .gitignore, and rotate them if they were ever in a commit. Withdrawals disabled on the key limits the damage when this goes wrong anyway.

Running the bot as root

Picture a bot running as root with one bad dependency in it. Whoever exploits that dependency now owns the whole server, every other key on it included. So run the bot as an unprivileged user, inside Docker or a venv, and keep the environment file at mode 600. Root does apt. Root does nothing else.

Expecting Windows or MetaTrader

MetaTrader 4 and 5 are Windows programs, plain and simple. They want a Windows server. We don't offer Windows, so everything on this page is about Linux bots and nothing else. If your broker talks MT5 and only MT5, this is the wrong product for you, and we would rather tell you that now than halfway through setup. But when the broker also exposes a REST or FIX API, a Python bot on Linux talks to that just fine.

Pick the region closest to your exchange.

Prices are identical in both regions, so choose by the API endpoint. New York for exchanges that answer from the US East Coast, Amsterdam for European venues. Between the two regions we measure 75 to 90 ms. See VPS New York and VPS Amsterdam, and the published benchmarks for the network and disk numbers.

Amsterdam, for Europe
New York, for North America
See all locations

Questions about running a trading bot on a VPS.

Which plan does Freqtrade need?

One instance, live or dry-run, is happy on S-2 with 1 vCPU and 2 GB. A few bots, or Hummingbot with its gateway, fit S-4. Backtesting and hyperopt are different: they hold every pair in memory and run parallel workers, so put that on S-8.

Can I run MetaTrader 4 or 5 on this VPS?

No. MetaTrader needs Windows and we only offer Linux. Freqtrade, Hummingbot and Python bots with ccxt run fine; MT4 and MT5 do not.

Is New York or Amsterdam faster for my exchange?

Look at where the exchange hosts its API first. Their documentation usually says, though sometimes it takes some digging. US-based endpoints sit closer to New York, European ones closer to Amsterdam. The two regions are 75 to 90 ms apart and the price is identical, so nothing stops you from taking the trial month, spinning one up in each and settling it with a quick ping.

Do you give trading advice or strategies?

No. We run the server. Which exchange, which strategy and how much to risk are your decisions, and nothing on this page is a claim about results.

How do I keep my API keys safe on the server?

Withdrawals off, always, on every key you create. Where the exchange supports it, lock the key to the VPS IP as well. The keys live in an environment file, mode 600, owned by the bot user, and that file never goes into git. The bot itself runs as that user and not as root. And turn on 2FA on the exchange account while you are there.

What happens if the server reboots?

Docker containers with restart: unless-stopped and systemd units with Restart=always come back on their own. Chrony resyncs the clock first. Check the logs after a reboot the first time to be sure the order is right.

Ready to deploy

Deploy a measured VPS

From $6.79/mo on a 2-year term. KVM on AMD EPYC, NVMe RAID10, ECC memory. No setup fee, cancel monthly.

30-day performance guarantee. Not satisfied? Full refund, no admin fee. How it works