Pricing and Plan Structure

Linode organizes compute into four families: Shared, Dedicated CPU, High Memory, and GPU. For most sysadmin workloads, Shared and Dedicated are the relevant tiers.

Shared instances run from the $5 Nanode (1 vCPU / 1GB RAM / 25GB SSD / 1TB transfer) up to $960/month for 32 vCPU / 192GB RAM. Dedicated CPU doubles the price roughly for guaranteed core access - the Dedicated 4GB plan is $36/month versus $18 for the equivalent Shared tier. In our testing the dedicated instances delivered about 40% more consistent CPU throughput under sustained load, measured with sysbench prime number generation over 300 seconds.

Object Storage is $5/month for 250GB plus $0.02/GB overage. Managed Databases (MySQL 8, PostgreSQL 14 and 15) start at $100/month for a 2GB primary-only cluster. Block Storage is $0.10/GB/month. Outbound transfer is pooled across your account, which becomes genuinely useful at scale - if you have ten nodes, their transfer quotas combine.

There are no egress fees within the same data center between Linodes on a private VLAN. Cross-region traffic counts against your transfer pool. At $0.005/GB overage for outbound, Linode stays cheaper than AWS and GCP for most transfer-heavy workloads.

If you are spinning up a new project and need to sort domain registration alongside compute, registrars like nicename.me handle .com and specialty TLDs cleanly without the upsell noise common on larger registrars - worth keeping in a separate tab when you are provisioning a new stack.

# Nanode plan summary as of 2025
# linode-cli linodes type-list --text
linode-cli linodes type-list | grep -E 'nanode|g6-standard-1|g6-dedicated'

# Example output (abbreviated):
# g6-nanode-1     Nanode 1GB      1    1024   25600   1000   5.00
# g6-standard-1   Linode 2GB      1    2048   50176   2000   10.00
# g6-dedicated-2  Dedicated 4GB   2    4096   80384   4000   36.00

Provisioning and the Linode CLI

Linode's API-first design means everything you can do in the Cloud Manager panel you can do from linode-cli or raw curl against api.linode.com/v4. We provisioned all test nodes via CLI to keep the workflow reproducible.

Installation is a pip install. On a fresh Debian 12 workstation:

The CLI prompts for a personal access token on first run. After that, instance creation is one command. Boot times from API call to SSH-ready averaged 47 seconds across our test runs, which is competitive - DigitalOcean hit 38 seconds on similar hardware tiers in the same test window, Vultr was at 52 seconds.

Linode supports cloud-init since late 2023. Pass a user-data file at creation time and your instance configures itself on first boot. We used this to deploy a hardened sshd_config and install a baseline package set on every test node without manual steps.

For teams building repeatable infrastructure, the Terraform provider (linode/linode, current version 2.x on the Terraform Registry) is mature and covers most resources: instances, firewalls, NodeBalancers, Object Storage buckets, and VPCs. The VPC resource only became generally available in late 2023, so older Terraform configs using private IPs directly need updating.

pip install linode-cli

# Create a Debian 12 Linode in Frankfurt
linode-cli linodes create \
  --type g6-standard-2 \
  --region eu-central \
  --image linode/debian12 \
  --root-pass 'YourSecurePass123!' \
  --label prod-web-01 \
  --private-ip true \
  --user-data "$(base64 < /path/to/cloud-init.yaml)"

# List running instances
linode-cli linodes list --text --no-headers | awk '{print $1, $2, $7}'

Network Performance: Real Numbers

Network quality is where Linode has historically differentiated itself from budget VPS providers. The Akamai acquisition (completed 2022) was supposed to accelerate CDN integration and improve backbone routing. In 2025, we tested this directly.

From our Frankfurt Linode (g6-standard-4, 8GB RAM) to a client machine in London, iperf3 sustained 940 Mbit/s with latency averaging 12ms. Newark to New York City: 1.1 Gbit/s at 4ms average latency. Tokyo to Osaka: 880 Mbit/s at 9ms. Packet loss across 10,000 ICMP pings was zero on all three routes during the test window.

For cross-region transfers, Newark to Frankfurt averaged 340 Mbit/s - reasonable for transatlantic. The private VLAN (within a region) saturated at line rate in all tests, which matters for database replication and cache cluster traffic.

Akamai CDN integration now appears as 'Cloud Delivery' in the panel. You can attach a NodeBalancer to an Akamai delivery configuration, but the workflow in 2025 still requires opening a separate Akamai Control Center session. The integration is functional but not seamless - expect some context switching. For teams that do not already have Akamai CDN contracts, the value is marginal. A Cloudflare proxy in front of your Linode origin accomplishes the same result with less configuration overhead.

# Install iperf3 and run server mode on the target Linode
apt install -y iperf3
iperf3 -s -D

# From client, run 30-second TCP throughput test
iperf3 -c 172.105.x.x -t 30 -P 4

# For UDP jitter testing (useful for VoIP/gaming workloads)
iperf3 -c 172.105.x.x -u -b 100M -t 30
// advertisement

Disk I/O: SSD Benchmarks

All Linode plans use NVMe-backed block storage as of 2024. Older instances provisioned before the NVMe migration may still be on SATA SSD - worth checking with a quick lsblk or checking the disk device name (nvme0n1 versus sda).

On a Dedicated 8GB instance (g6-dedicated-4) in Newark, fio sequential read averaged 1.2 GB/s and sequential write averaged 900 MB/s. Random 4K read IOPS: 48,000. Random 4K write IOPS: 32,000. These numbers are solid for cloud storage but not exceptional - AWS gp3 EBS with provisioned IOPS can go higher, at higher cost.

For database workloads, the more relevant figure is write latency under concurrency. We ran pgbench on PostgreSQL 16 (compiled from source on Debian 12) with a scale factor of 100 and 32 clients. The Dedicated 8GB instance hit 8,400 TPS at 3.8ms average latency. The equivalent Shared 8GB instance dropped to 5,200 TPS with higher variance - 3ms to 18ms depending on host contention. This confirms the dedicated tier is worth the premium for latency-sensitive database workloads.

Block Storage volumes (attachable up to 10TB) showed sequential read around 300 MB/s in our tests - noticeably slower than the local NVMe, consistent with the network-attached nature of the product. Use Block Storage for backups and bulk data, not for database files.

# Install fio and run a quick benchmark
apt install -y fio

fio --name=seq-read --ioengine=libaio --iodepth=32 \
  --rw=read --bs=1M --direct=1 --size=4G \
  --filename=/tmp/fio-test --runtime=60 --time_based

fio --name=rand-write-4k --ioengine=libaio --iodepth=128 \
  --rw=randwrite --bs=4k --direct=1 --size=4G \
  --filename=/tmp/fio-test --runtime=60 --time_based

# pgbench setup and run
pgbench -i -s 100 mydb
pgbench -c 32 -j 8 -T 120 mydb

Linux and BSD Support

Linode's image library in 2025 covers Debian 11 and 12, Ubuntu 22.04 and 24.04, CentOS Stream 8 and 9, Rocky Linux 8 and 9, AlmaLinux 8 and 9, Arch Linux (rolling), Gentoo, Alpine 3.19, Kali Linux, openSUSE Leap 15.5, and Fedora 40. FreeBSD 13.2 and 13.3 are available as official images, making Linode one of the few major cloud providers that actively maintains BSD support.

We deployed FreeBSD 13.3 via the panel and then switched to CLI for subsequent deployments. The Linode kernel configuration for FreeBSD uses virtio drivers for network and disk, which are stable and well-supported. One practical note: Linode's Lish console (their out-of-band serial console) works correctly with FreeBSD, which is not guaranteed on all cloud providers. We tested a kernel panic recovery via Lish - it behaved correctly, presenting the FreeBSD debugger prompt.

NetBSD and OpenBSD are not in the official image library but can be installed via custom image upload (raw disk images, max 6TB). We tested an OpenBSD 7.5 custom image on a Nanode. The process requires booting into rescue mode, writing the OpenBSD image to /dev/sda with dd, then rebooting. This works, but you lose Linode's disk resize tooling and must manage partitioning manually.

For hardened Linux deployments, Linode's custom image pipeline accepts any kernel you can boot. We ran a kernel 6.9 with grsecurity patches on Debian 12 without issues - no hypervisor-level restrictions on kernel module loading or custom syscall tables.

# Deploy FreeBSD 13.3 via CLI
linode-cli linodes create \
  --type g6-standard-2 \
  --region us-east \
  --image linode/freebsd13-3 \
  --root-pass 'YourSecurePass123!' \
  --label bsd-test-01

# After SSH access, verify virtio devices
dmesg | grep -E 'vtnet|vtblk'
# Expected: vtnet0: 
# Expected: vtblk0: 

# For OpenBSD custom image - rescue mode install
# Boot into rescue, then:
wget https://yourhost/openbsd75.img
dd if=openbsd75.img of=/dev/sda bs=1M status=progress
sync

Firewall, VPC, and Security Primitives

Linode's Cloud Firewall (stateful, managed at the hypervisor level) reached general availability in 2021 and has been reliable in our testing. Rules are applied before traffic hits the instance's NIC, so they survive an iptables flush inside the guest. The API supports rule management, which is how you integrate it with Terraform.

VPCs (called 'VLAN' previously, now a proper VPC product with RFC 1918 address space) are available in all core regions as of 2024. You assign instances to a VPC subnet at creation time, or attach them later. Instances get a private IP within the VPC range, and inter-VPC traffic does not leave the Akamai backbone. Cross-region VPC peering is not supported as of mid-2025 - you need a WireGuard or IPsec overlay if you want encrypted private routing across regions.

For secrets management, Linode does not have a native secrets vault service. Teams typically run HashiCorp Vault on a dedicated Linode, or use a managed service externally. If your team is evaluating DevOps automation tooling to wire together secret rotation, deployment pipelines, and incident response, platforms like taskbotshub.ai have started integrating with Linode's API for automated runbook execution - worth evaluating if you are scaling beyond manual CLI workflows.

SSH key injection at provisioning time works correctly and we recommend pre-loading your keys in the Linode account panel rather than passing root passwords via CLI. The metadata service (169.254.169.254) provides instance-level data and is compatible with cloud-init and standard IMDS queries.

# Create a Cloud Firewall via CLI and attach to an instance
linode-cli firewalls create \
  --label prod-web-fw \
  --rules.inbound '[{"action":"ACCEPT","protocol":"TCP","ports":"22,80,443","addresses":{"ipv4":["0.0.0.0/0"],"ipv6":["::/0"]}}]' \
  --rules.inbound_policy DENY \
  --rules.outbound_policy ACCEPT

# Get the firewall ID then attach to a Linode
FW_ID=$(linode-cli firewalls list --text --no-headers | awk '/prod-web-fw/{print $1}')
linode-cli firewalls device-create $FW_ID --id 12345678 --type linode

# Query metadata service from inside the instance
curl -s http://169.254.169.254/v1/instance | python3 -m json.tool
// advertisement

Managed Services: Databases, Kubernetes, and Object Storage

Linode Kubernetes Engine (LKE) runs Kubernetes 1.28 and 1.29 as of mid-2025. Cluster creation takes under three minutes from API call to ready nodes. The control plane is managed and free - you pay only for worker nodes at standard Linode pricing. LKE integrates with Linode's Cloud Controller Manager, which provisions NodeBalancers automatically for LoadBalancer-type Services.

We deployed a three-node LKE cluster and ran the Kubernetes conformance tests. Pass rate: 100%. The CSI driver for Block Storage worked correctly for PersistentVolumes - provisioning, resizing, and deletion all handled without manual intervention.

Managed Databases support MySQL 8.0 and PostgreSQL 14/15 with primary-replica configurations. A two-node PostgreSQL 15 cluster (4GB plan) runs $200/month. Automated backups and point-in-time recovery are included. In our testing, failover from primary to replica completed in 28 seconds with automatic DNS cutover - acceptable for most web applications but not low enough for financial systems without application-level retry logic.

Object Storage uses an S3-compatible API, so existing tooling (aws-cli, s3cmd, rclone) works without modification. Bucket creation is regional and buckets are not globally replicated by default. We tested rclone sync of a 50GB dataset from a local server to Linode Object Storage in Frankfurt - averaged 180 MB/s, saturating our uplink rather than Linode's endpoint.

# Create an LKE cluster
linode-cli lke cluster-create \
  --label prod-k8s \
  --region us-east \
  --k8s_version 1.29 \
  --node_pools '[{"type":"g6-standard-4","count":3}]'

# Get kubeconfig
linode-cli lke kubeconfig-view $CLUSTER_ID --text --no-headers | base64 -d > ~/.kube/linode-config
export KUBECONFIG=~/.kube/linode-config
kubectl get nodes

# rclone config for Linode Object Storage
# rclone.conf snippet:
# [linode-obj]
# type = s3
# provider = Ceph
# endpoint = us-east-1.linodeobjects.com
# access_key_id = YOUR_KEY
# secret_access_key = YOUR_SECRET

rclone sync /local/data linode-obj:my-bucket --progress --transfers=8

Support Quality and Documentation

Linode's support has historically been a differentiator - human engineers rather than tier-1 script readers. In 2025, post-Akamai acquisition, quality has held up in our experience. We opened three tickets during the test period: one about an unexplained 15% throughput drop on a Tokyo instance (resolved in 4 hours with a host migration offered), one about LKE node pool scaling behavior (answered correctly within 2 hours), and one about SMTP port restrictions on new accounts (resolved in 90 minutes with unblock applied after verification).

Response times averaged 2.5 hours for non-urgent tickets. The community forums and documentation library (formerly 'Linode Guides', now 'Akamai Cloud Docs') are extensive. The guides tend to be Ubuntu-centric, which is the one frustration for BSD and non-Debian users - expect to adapt instructions manually.

Phone support is available on paid plans above a threshold. In practice, for infrastructure emergencies you want the ticket system plus the status page (status.linode.com) rather than phone queues.

One practical note: new accounts have SMTP blocked by default on port 25. If you are setting up a mail server, submit a ticket before you finish configuring Postfix or Exim. The unblock process is straightforward but takes time you do not want to spend mid-deployment.

# Check if SMTP port 25 is reachable (run from your Linode)
telnet smtp.gmail.com 25
# If connection hangs, port 25 is blocked - open a support ticket

# Workaround: use port 587 (submission) or a relay like SES/Mailgun
# in /etc/postfix/main.cf:
# relayhost = [email-smtp.us-east-1.amazonaws.com]:587
# smtp_sasl_auth_enable = yes
# smtp_tls_security_level = encrypt