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. Dedicated instances tend to deliver more consistent CPU throughput under sustained load, which is the main reason to pay the premium.

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.

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 are competitive with other major providers in the same tier.

Linode supports cloud-init since late 2023. Pass a user-data file at creation time and your instance configures itself on first boot. This allows deploying a hardened sshd_config and a baseline package set on every 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.

Intra-region network performance is a consistent strength, with low latency and high throughput between instances on the same private VLAN - which matters for database replication and cache cluster traffic. Cross-region transatlantic throughput is reasonable for the tier.

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).

Local NVMe storage on Dedicated instances delivers solid sequential and random I/O performance for cloud storage, though not exceptional compared to provisioned IOPS offerings from AWS at higher cost.

For database workloads, the more relevant figure is write latency under concurrency. Dedicated instances handle sustained concurrent database load with lower and more consistent latency than Shared instances, which are subject to host contention. This confirms the dedicated tier is worth the premium for latency-sensitive database workloads.

Block Storage volumes (attachable up to 10TB) are noticeably slower than 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.

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.

NetBSD and OpenBSD are not in the official image library but can be installed via custom image upload (raw disk images, max 6TB). Installing OpenBSD via a custom image on a Nanode 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, with 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. 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 pre-loading your keys in the Linode account panel is recommended over 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.

LKE passes the Kubernetes conformance tests. The CSI driver for Block Storage works correctly for PersistentVolumes - provisioning, resizing, and deletion are 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. Failover from primary to replica completes with automatic DNS cutover, which is acceptable for most web applications but may require application-level retry logic for latency-sensitive systems.

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.

# 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 appears to have held up based on user reports and community feedback.

Response times for non-urgent tickets are generally within a few hours. 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