How to suspend a machine until manual restart

Hello everyone,
I have a staging environment with 2 web apps and a background worker that I like to keep switched off when I am not using them.
Problem is, no matter if I stop or suspend them, whenever a bot tries to scan the machines, they are immediately brought up back to life.
Since the background worker is not exposed to the internet (and no scan is happening for that one), it remains on a switched off state. The web apps instead are resumed immediately.

This is what I can see from the logs:

2026-04-13T10:22:33Z runner[xxxx] lhr [info]Machine started in 1.77s

2026-04-13T10:22:33Z proxy[xxxx] lhr [info]machine started in 1.899078072s

[....]

2026-04-13T10:22:42Z app[xxxx] lhr [info][10:22:42 WRN] Client error 404 for GET /wp-content/plugins/hellopress/wp_filemanager.php

2026-04-13T10:22:42Z app[xxxx] lhr [info][10:22:42 INF] HTTP GET /wp-content/plugins/hellopress/wp_filemanager.php responded 404 in 95.5095 ms

How can prevent this from happening?

Hi… What you’re seeing is the Fly Proxy’s auto-start feature, which is controlled by auto_start_machines in fly.toml:

https://fly.io/docs/reference/configuration/#the-http_service-section

https://fly.io/docs/reference/fly-proxy-autostop-autostart/

It can be under [http_service] or [[services]], depending on how complex of a configuration you have.

The usual fly launch heuristics turn this on by default, since it saves most people quite a bit of money: typical Rails/Node projects require Machines sizes that are fairly large and would be expensive if they ran 24/7. The bot traffic undeniably reduces the effectiveness of it, though.

Hope this helps!

2 Likes