Proxmox VE (community support)

Please note that Proxmox VE is not an officially supported platform at this time because the release tests don’t run for it.

These instructions will walk you through running Flatcar Container Linux on Proxmox VE.

Choosing a channel

Flatcar Container Linux is designed to be updated automatically with different schedules per channel. You can disable this feature , although we don’t recommend it. Read the release notes for specific features and bug fixes.

The Alpha channel closely tracks master and is released frequently. The newest versions of system libraries and utilities will be available for testing. The current version is Flatcar Container Linux 4790.0.0.

$ wget https://alpha.release.flatcar-linux.net/amd64-usr/current/flatcar_production_proxmoxve_image.img

The Beta channel consists of promoted Alpha releases. The current version is Flatcar Container Linux 4757.1.0.

$ wget https://beta.release.flatcar-linux.net/amd64-usr/current/flatcar_production_proxmoxve_image.img

The Stable channel should be used by production clusters. Versions of Flatcar Container Linux are battle-tested within the Beta and Alpha channels before being promoted. The current version is Flatcar Container Linux 4593.2.5.

$ wget https://stable.release.flatcar-linux.net/amd64-usr/current/flatcar_production_proxmoxve_image.img

Creating the VM

Proxmox VE’s graphical UI only supports ISO images, but the Flatcar image is in qcow2 format. In order to create a VM with our image, you’ll need to use the command line on the Proxmox host.

VM_ID=123 # A unique integer starting from 100
IMAGE="${PWD}/flatcar_production_proxmoxve_image.img" # Must be absolute

For an amd64 VM:

qm create "${VM_ID}" \
  --bios ovmf --efidisk0 local-lvm:1 \
  --arch x86_64 --machine q35 --args "-machine sata=off" \
  --cores 2 --memory 4096 \
  --net0 "virtio,bridge=vmbr0" --ipconfig0 "ip=dhcp" \
  --virtio0 "local-lvm:0,import-from=${IMAGE}" --boot order=virtio0 \
  --scsihw virtio-scsi-pci --scsi0 local-lvm:cloudinit

Or for an arm64 VM:

qm create "${VM_ID}" \
  --bios ovmf --efidisk0 local-lvm:1 \
  --arch aarch64 --machine virt \
  --cores 2 --memory 4096 \
  --net0 "virtio,bridge=vmbr0" --ipconfig0 "ip=dhcp" \
  --virtio0 "local-lvm:0,import-from=${IMAGE}" --boot order=virtio0 \
  --scsihw virtio-scsi-pci --scsi0 local-lvm:cloudinit

Configuring the VM with OpenStack-style cloud-init config

The VM can be booted as-is, however you might want to set some cloud-init configuration. A cloud-init drive has already been added above, so the Cloud-init tab will already be visible in the UI. From here, you can set:

  • DNS servers
  • SSH public keys
  • IP Config

Setting the following will be ineffective:

  • User
  • Password
  • DNS domain
  • Upgrade packages

For better provisioning capabilities, use Ignition below.

Configuring the VM using Ignition

Important note: Ignition configuration uses the same user-data file than the cloud-init config. This means that you cannot use both Ignition config and regular cloud-init. When setting up an Ignition config, expect the cloud-init services to fail during boot (this is harmless).

Proxmox VE’s graphical interface does not support setting a custom user-data file. You’ll need to use the command line to achieve this.

First of all, you need to write the Ignition config as a snippet. Snippets are located at /var/lib/vz/snippets on the hypervisor. Write a file named user-data containing your Ignition config. Here is an example :

cat /var/lib/vz/snippets/user-data

{
  "ignition": { "version": "3.0.0" },
  "storage": {
    "files": [{
      "path": "/etc/someconfig",
      "mode": 420,
      "contents": { "source": "data:,example%20file%0A" }
    }]
  },
  "passwd": {
    "users": [
      {
        "name": "core",
        "sshAuthorizedKeys": [
          "ssh-ed25519 your-public-ssh-key"
        ]
      }
    ]
  }
}

Finally, tell the VM to use this file as user-data :

qm set "${VM_ID}" --cicustom "user=local:snippets/user-data"

You can also pass this --cicustom option directly to the qm create command above.

Using Flatcar Container Linux

Now that you have a machine booted it is time to play around. Check out the Flatcar Container Linux Quickstart guide or dig into more specific topics .