FreeBSD.software
Home/Guides/FreeBSD Cloud Support in 2026: AWS, Azure, GCP
guide·2026-04-09·10 min read

FreeBSD Cloud Support in 2026: AWS, Azure, GCP

Status of FreeBSD on major cloud providers in 2026. AWS, Azure, and GCP image availability, cloud-init support, provider-specific limitations, and practical deployment guidance.

FreeBSD Cloud Support in 2026: AWS, Azure, GCP

Running FreeBSD in the cloud is possible on all three major providers, but the experience varies wildly from Linux. Linux is the default, the tested path, the one that gets updated first. FreeBSD is the afterthought -- supported but not prioritized. This post documents exactly what works, what does not, and how to navigate the gaps as of early 2026.

The General State of Affairs

Every major cloud provider offers FreeBSD images. None treat FreeBSD as a first-class citizen. The practical consequences:

  • FreeBSD images are updated less frequently than Linux images
  • Provider-specific tools and agents lag behind their Linux counterparts
  • Documentation assumes Linux
  • Support staff may not be familiar with FreeBSD
  • Some instance types or features are Linux-only

Despite this, FreeBSD runs well on cloud infrastructure. The underlying virtualization (KVM/Xen/Hyper-V) supports FreeBSD, and the FreeBSD kernel includes virtio drivers for efficient I/O. The problems are in the ecosystem around the VM, not the VM itself.

Amazon Web Services (AWS)

Official AMIs

The FreeBSD project publishes official AMIs for AWS. These are maintained by Colin Percival (the FreeBSD release engineer and Tarsnap creator) and are the recommended starting point.

Available AMIs in early 2026:

  • FreeBSD 14.2-RELEASE (amd64 and arm64)
  • FreeBSD 13.4-RELEASE (amd64 and arm64)
  • FreeBSD 15.0-CURRENT snapshots (for testing)

Find the latest AMIs:

sh
# Search for official FreeBSD AMIs aws ec2 describe-images \ --owners 782442783595 \ --filters "Name=name,Values=FreeBSD 14.2-RELEASE*" \ --query 'Images[*].[ImageId,Name,CreationDate]' \ --output table \ --region us-east-1

Supported Instance Types

FreeBSD works on most EC2 instance types:

  • General purpose: t3, t4g (ARM), m5, m6i, m7i, m6g (ARM), m7g (ARM)
  • Compute optimized: c5, c6i, c7i, c6g (ARM), c7g (ARM)
  • Memory optimized: r5, r6i, r7i
  • Storage optimized: i3, d3
  • ARM instances: Graviton 2 and 3 (c6g, m6g, r6g, c7g, m7g, r7g) work with FreeBSD arm64 AMIs

Notable limitations:

  • Nitro Enclaves: Not supported on FreeBSD
  • Elastic GPU: Linux-only
  • Some newest generation instances: May not have FreeBSD AMIs immediately at launch

EC2 User Data and cloud-init

FreeBSD AMIs support ec2 user data for instance initialization. The FreeBSD images use a custom firstboot mechanism rather than cloud-init:

sh
#!/bin/sh # User data script (runs on first boot) pkg install -y nginx sysrc nginx_enable=YES service nginx start

For more complex provisioning, install cloud-init:

sh
pkg install py311-cloud-init sysrc cloudinit_enable=YES

cloud-init on FreeBSD supports:

  • Instance metadata retrieval
  • SSH key injection
  • User creation
  • Package installation
  • Script execution

cloud-init features that are limited or missing on FreeBSD:

  • Network configuration (partial support, depends on cloud-init version)
  • Disk resizing (works but may require manual ZFS expansion)
  • Some datasource-specific features

EBS and Storage

EBS volumes work correctly with FreeBSD. The virtio-blk and NVMe drivers are in the FreeBSD kernel:

sh
# List attached EBS volumes geom disk list # Create a ZFS pool on an EBS volume zpool create data /dev/nvd1

EBS snapshots work as expected. IO1/IO2 provisioned IOPS volumes perform correctly.

Networking

VPC networking works. FreeBSD uses the vtnet (virtio-net) driver:

sh
# Check network interface ifconfig vtnet0

Elastic Network Interfaces (ENI) can be attached and detached. Enhanced Networking (ENA) is supported through the ena driver in FreeBSD:

sh
# Verify ENA driver is loaded kldstat | grep ena

Security groups, network ACLs, and VPC peering all work transparently -- these are network-level features that do not depend on the guest OS.

Elastic Load Balancers

ALB and NLB work with FreeBSD instances. Health checks (HTTP/TCP) function normally. The only caveat is that the AWS agent for target group registration may require manual setup.

AWS Systems Manager

SSM Agent is not available for FreeBSD. You cannot use Systems Manager for remote management, patch management, or parameter retrieval on FreeBSD instances. Use SSH instead.

Terraform and Infrastructure as Code

Terraform works for provisioning FreeBSD EC2 instances:

sh
resource "aws_instance" "freebsd" { ami = "ami-xxxxxxxxxxxxxxxxx" # FreeBSD 14.2 AMI instance_type = "t3.medium" key_name = "my-key" tags = { Name = "freebsd-server" } user_data = <<-EOF #!/bin/sh pkg install -y nginx sysrc nginx_enable=YES service nginx start EOF }

Microsoft Azure

Official Images

FreeBSD images are available on Azure Marketplace, published by the FreeBSD Foundation in collaboration with Microsoft:

sh
# List available FreeBSD images az vm image list --publisher thefreebsdfoundation --all --output table

Available images:

  • FreeBSD 14.2 (amd64)
  • FreeBSD 13.4 (amd64)

Azure-Specific Integration

Azure has invested more in FreeBSD support than the other cloud providers, historically driven by the fact that some Azure networking infrastructure runs FreeBSD.

The waagent (Windows Azure Linux Agent -- yes, the name is ironic) has a FreeBSD port:

sh
pkg install py311-azure-agent sysrc waagent_enable=YES

This agent handles:

  • SSH key provisioning
  • Hostname configuration
  • Disk provisioning and extension
  • Custom data/user data processing
  • Extension support (limited compared to Linux)

VM Sizes

FreeBSD works on standard Azure VM sizes:

  • B-series (burstable)
  • D-series (general purpose)
  • E-series (memory optimized)
  • F-series (compute optimized)
  • L-series (storage optimized)
sh
# Create a FreeBSD VM on Azure az vm create \ --resource-group myRG \ --name freebsd-vm \ --image thefreebsdfoundation:freebsd-14:14_2:latest \ --size Standard_D2s_v3 \ --admin-username azureuser \ --ssh-key-values ~/.ssh/id_rsa.pub

Azure Limitations

  • Azure Monitor Agent: Not available for FreeBSD. Use custom monitoring solutions.
  • Azure Backup: Does not support FreeBSD VMs. Implement your own backup strategy with ZFS snapshots and Azure Blob Storage.
  • Accelerated Networking: Supported on FreeBSD with the Mellanox mlx4/mlx5 drivers in newer FreeBSD versions.
  • Azure Kubernetes Service: Linux-only. Cannot add FreeBSD nodes to an AKS cluster.
  • Azure DevOps Agents: No FreeBSD build agent. Run in a jail or VM on a Linux host.

Managed Disks

Azure managed disks work with FreeBSD:

sh
# Attach a managed disk and create a ZFS pool # After attaching in the portal: geom disk list # Find the new disk zpool create data /dev/da1

Google Cloud Platform (GCP)

Official Images

GCP has official FreeBSD images in the freebsd-org-cloud-dev project:

sh
# List available FreeBSD images gcloud compute images list --project freebsd-org-cloud-dev --filter="name~freebsd-14"

Compute Engine

FreeBSD runs on GCE with standard machine types:

sh
# Create a FreeBSD instance gcloud compute instances create freebsd-vm \ --zone us-central1-a \ --machine-type e2-medium \ --image-project freebsd-org-cloud-dev \ --image-family freebsd-14-2-release-amd64 \ --boot-disk-size 30GB

GCP Integration

GCP's integration with FreeBSD is the weakest of the three major providers:

  • Guest Agent: The GCP guest agent (formerly google-daemon) has FreeBSD support, but it is less maintained than the Linux version.
  • OS Login: Works for SSH key management through IAM.
  • Cloud Monitoring: The Ops Agent is Linux-only. Use custom exporters for monitoring.
  • Managed Instance Groups: Work with FreeBSD custom images but are not well-tested.
sh
# Install GCP guest agent pkg install google-cloud-sdk

GCP Limitations

  • Container-Optimized OS: Linux-only. Cannot run Google's container-optimized instances with FreeBSD.
  • GKE: Linux-only node pools.
  • Cloud Run/Cloud Functions: Linux-only serverless.
  • Persistent Disk snapshots: Work but are not as well-tested with FreeBSD as with Linux.
  • Local SSD: Supported but verify performance with your instance type.

Other Cloud Providers

Vultr

Vultr is notably FreeBSD-friendly. They offer:

  • One-click FreeBSD deployment
  • Multiple FreeBSD versions
  • Custom ISO upload for installation
  • Good documentation for FreeBSD
sh
# Vultr provides FreeBSD 14 as a standard OS option # No special image search required

DigitalOcean

DigitalOcean has official FreeBSD droplets:

  • FreeBSD 14.x available
  • cloud-init support via their custom metadata system
  • Block storage works
  • Floating IPs work

Hetzner Cloud

Hetzner offers FreeBSD images and is popular with European FreeBSD users for its price-to-performance ratio.

OVHcloud

OVH provides FreeBSD on bare metal and VPS instances. Their bare metal offerings are popular for FreeBSD users who want dedicated hardware at cloud prices.

Cloud-Init Deep Dive

cloud-init is the standard for cloud instance initialization across providers. FreeBSD support is present but incomplete compared to Linux.

Installing cloud-init

sh
pkg install py311-cloud-init sysrc cloudinit_enable=YES

Supported Modules on FreeBSD

  • set_hostname -- works
  • update_hostname -- works
  • users_groups -- works
  • ssh -- works (key injection)
  • runcmd -- works
  • write_files -- works
  • package_update_upgrade_install -- works (uses pkg)
  • growpart -- partial (UFS resize works, ZFS requires manual steps)
  • disk_setup -- partial
  • mounts -- partial
  • network -- limited (depends on version)

cloud-init Configuration Example

sh
#cloud-config hostname: freebsd-server fqdn: freebsd-server.example.com users: - name: admin groups: wheel ssh_authorized_keys: - ssh-rsa AAAA... packages: - nginx - python311 runcmd: - sysrc nginx_enable=YES - service nginx start write_files: - path: /usr/local/etc/nginx/nginx.conf content: | worker_processes auto; events { worker_connections 1024; } http { server { listen 80; root /usr/local/www/nginx; } }

Practical Recommendations

For Production Servers

Use AWS or Azure for production FreeBSD instances. Both have the most mature FreeBSD support and the most tested images.

Essential first-boot setup:

sh
#!/bin/sh # First-boot provisioning script # Update packages pkg update && pkg upgrade -y # Install essentials pkg install -y sudo bash vim-console # Configure firewall cat >> /etc/pf.conf << 'EOF' set skip on lo0 block in all pass out all keep state pass in on vtnet0 proto tcp to port 22 pass in on vtnet0 proto tcp to port {80, 443} EOF sysrc pf_enable=YES service pf start # Enable periodic security checks cat >> /etc/periodic.conf << 'EOF' daily_status_security_enable="YES" daily_status_security_pkgaudit_enable="YES" EOF

For Cost Optimization

FreeBSD instances on ARM (AWS Graviton) offer excellent price-performance. FreeBSD runs well on ARM and the Graviton instances are 20-40% cheaper than equivalent x86 instances for most workloads.

sh
# Use Graviton instances on AWS aws ec2 run-instances \ --image-id ami-xxxxxxxxx \ # FreeBSD 14.2 arm64 AMI --instance-type t4g.medium \ --key-name my-key

For Monitoring

Since most cloud monitoring agents do not support FreeBSD, deploy your own:

sh
# Install node_exporter for Prometheus monitoring pkg install node_exporter sysrc node_exporter_enable=YES service node_exporter start # Expose on port 9100 for Prometheus scraping

FAQ

Can I run Docker on FreeBSD in the cloud?

No. Docker requires Linux kernel features. If you need containers, run a Linux instance or use FreeBSD jails as an alternative.

Which cloud provider has the best FreeBSD support?

AWS, due to Colin Percival's ongoing AMI maintenance and the maturity of the FreeBSD/EC2 tooling. Azure is a close second with their waagent support. Vultr and DigitalOcean are good for simpler deployments.

Can I use FreeBSD for a Kubernetes node?

No. Kubernetes requires a Linux runtime (containerd or CRI-O). FreeBSD can run kubectl and helm as client tools, but it cannot be a cluster node.

How do I resize a ZFS root partition on a cloud instance?

After resizing the disk in the cloud console, the FreeBSD instance needs to recognize the new size. For GPT+ZFS: gpart recover da0, then gpart resize -i da0, then zpool online -e zroot da0p. Details vary by image layout.

Are FreeBSD cloud images secure by default?

The official images are reasonably secure (SSH key auth, no root password, minimal installed packages) but you should still harden: enable pf, disable unused services, configure pkg audit, and set up periodic security checks.

Can I create custom FreeBSD cloud images?

Yes. Use mkimg or dd to create raw disk images, then upload to your cloud provider. AWS uses aws ec2 import-image, Azure uses az image create, and GCP uses gcloud compute images create. Building from the official release ISOs or the vm-image artifacts is the easiest path.

Is there a managed database service that runs on FreeBSD in the cloud?

No. All managed database services (RDS, Cloud SQL, Azure Database) run on Linux. If you need a database on FreeBSD, run it yourself on a FreeBSD instance. PostgreSQL and MySQL both run excellently on FreeBSD.

Get more FreeBSD guides

Weekly tutorials, security advisories, and package updates. No spam.