Provision a Server
Provision a Server for actuated¶
You'll need to provision or allocate a Server which is capable of virtualisation. This is because each of your builds will run in an isolated microVM, with its own networking, Kernel and filesystem.
We regularly update our recommendations, which include bare-metal and cloud VMs which support nested virtualisation. These do not need to be overly expensive, if performance is not a concern, DigitalOcean VMs are available from tens of dollars per month, but a bare-metal server with a CPU that will run at a burst capacity of 4.4GHz, is around 100 USD / mo. If you have your own hardware, this can also be a really cost effective way of adopting actuated.
Intel/AMD aka x86_64
¶
There are a number of names and codenames for what we all know as "regular PCs" - with either an Intel or AMD CPU, the codenames are x86_64
and amd64
which are used interchangeably.
-
Bare-metal on-premises (cheap, convenient, high performance)
Running bare-metal on-premises is a cost-effective and convenient way to re-use existing hardware investment.
The machine could be racked in your server room, under your desk, or in a co-lo somewhere.
Make sure you segment or isolate the agent into its own subnet, VLAN, DMZ, or VPC so that it cannot access the rest of your network. If you are thinking of running an actuated runner at home, we can share some iptables rules that worked well for our own testing.
-
Bare-metal on the cloud (higher cost, convenient, high performance)
Bare-metal doesn't have to mean managing hardware in your own physical datacenter. You can deploy machines by API, pay-as-you-go and get the highest performance available.
Bear in mind that whilst the cost of bare-metal is higher than VMs, you will be able to pack more builds into them and get better throughput since actuated can schedule builds much more efficiently than GitHub's self-hosted runner.
We have seen the best performance from hosts with high clock speeds like the recent generation of AMD processors, combined with local NVMe storage. Rotational drives and SATA SSDs are significantly slower. At the lower end of bare-metal providers, you'll pay 40-50 EUR / mo per host, moving up to 80-150 EUR / mo for NVMe and AMD processors, when you go up to enterprise-grade bare-metal with 10Gbit uplinks, you'll be more in the range of 500-1500 USD / mo.
There are at least a dozen options for hosted bare-metal: Equinix Metal, Ionos, Hetzner, AWS, Cherry Servers, Alibaba Cloud, OVHcloud, fasthosts, Scaleway and Vultr, see a list here.
Equinix Metal have partnered with us to offer 500 USD of credit for new customers to use on actuated. You'll get the discount code after signing up with us. We've tested their c3.small.x86 and c2.small.x86 machines, and they are very fast, with enterprise-grade networking and support included, with many different regions available.
Both Ionos and Hetzner have excellent value, with NVMe storage very fast AMD CPUs available.
Having tested several of Scaleway's servers, we do not recommend their current generation of bare-metal due to slow I/O and CPU speeds.
-
Cloud Virtual Machines (VMs) that support nested virtualization (lowest cost, convenient, mid-level performance)
This option may not have the raw speed and throughput of a dedicated, bare-metal host, but keeps costs low and is convenient for getting started.
We know of at least three providers which have options for nested virtualisation: DigitalOcean, Google Compute Platform (GCP) (new customers get 300 USD free credits from GCP) support nested virtualisation on their Virtual Machines (VMs), and Azure.
ARM64 aka aarch64
¶
ARM CPUs are highly efficient when it comes to power consumption and pack in many more cores than the typical x86_64 CPU. This makes them ideal for running many builds in parallel. In typical testing, we've seen ARM builds running under emulation taking 35-45 minutes being reduced to 1-3 minutes total.
-
ARM for on-premises
For on-premises ARM64 builds, we recommend the Mac Mini M1 (2020) with 16GB RAM and 512GB storage with Asahi Linux.
The Raspberry Pi 4 also works, and in one instance was much faster than using emulation with a Hosted GitHub Runner.
It's also possible to buy a 1 or 2U server from Ampere through one of their partners, with a capital expense up front.
-
ARM on-demand, in the cloud
For ARM64, Hetzner provides outstanding value in their RX-Line with 128GB / 256GB RAM coupled with NVMe and 80 cores for around 200 EUR / mo. These are Ampere Altra Servers. There is a minimum commitment of one month, and an initial setup cost per server.
Following on from that, you have the a1.metal instance on AWS with 16 cores and 30GB / RAM for roughly 0.4 USD / hour, and roughly half that cost with a 1x year reservation. This is ideal if you already have an account with AWS and want to pay per minute. The instances are configured with an 8GB EBS volume by default, which will need to be increased to around 60-80GB. Optionally, the storage class can also be upgraded from gp2 (default) to gp3 for better baseline performance.
For a step up on specs, features like BGP and enterprise-grade networking, take a look at the c3.large.arm64 (Ampere Altra) from Equinix Metal comes with enterprise-grade networking and faster uplinks. These machines come in at around 2.5 USD / hour, but are packed out with many cores and other benefits.
Equinix Metal have partnered with us to offer 500 USD of credit for new customers to use on actuated. You'll get the discount code after signing up with us.
-
ARM VMs with nested virtualisation
The current generations of ARM servers available from cloud providers do not support KVM, or nested virtualisation, which means you need to pick from the previous two options.
There are ARM VMs available on Azure, GCP, and Oracle OCI. We have tested each and since they are based on the same generation of Ampere Altra hardware, we can confirm that they do not have KVM available and will not work for running actuated builds.
Server Operating System¶
The recommended Operating System for an Actuated Agent is: Ubuntu Server 22.04 or Ubuntu Server 20.04.
Still not sure which option is right for your team? Get in touch with us on the Actuated Slack and we'll help you decide.
Next steps¶
Now that you've created a Server or VM with the recommended Operating System, you'll need to install the actuated agent and get in touch with us, to register it.