diff --git a/src/assets/images/changelog/cloudflare-wan/2026-07-02-virtual-appliance-self-serve-ui.gif b/src/assets/images/changelog/cloudflare-wan/2026-07-02-virtual-appliance-self-serve-ui.gif
new file mode 100644
index 00000000000..09655105caf
Binary files /dev/null and b/src/assets/images/changelog/cloudflare-wan/2026-07-02-virtual-appliance-self-serve-ui.gif differ
diff --git a/src/content/changelog/cloudflare-one/2026-07-02-mesh-hostname-routing.mdx b/src/content/changelog/cloudflare-one/2026-07-02-mesh-hostname-routing.mdx
index 5e94c583fa7..534ac58ccd6 100644
--- a/src/content/changelog/cloudflare-one/2026-07-02-mesh-hostname-routing.mdx
+++ b/src/content/changelog/cloudflare-one/2026-07-02-mesh-hostname-routing.mdx
@@ -4,6 +4,7 @@ description: Route traffic to a Cloudflare Mesh node by hostname instead of IP.
date: 2026-07-02
products:
- cloudflare-one
+ - mesh
---
import { DashButton, MeshHostnameRoutingDiagram } from "~/components";
diff --git a/src/content/changelog/cloudflare-wan/2026-07-02-virtual-appliance-self-serve-ui.mdx b/src/content/changelog/cloudflare-wan/2026-07-02-virtual-appliance-self-serve-ui.mdx
new file mode 100644
index 00000000000..c88e23c80c6
--- /dev/null
+++ b/src/content/changelog/cloudflare-wan/2026-07-02-virtual-appliance-self-serve-ui.mdx
@@ -0,0 +1,20 @@
+---
+title: Self-serve registration of Cloudflare One Virtual Appliance in the dashboard
+description: Register a virtual appliance, generate its license key, and rotate the key directly from the Connectors page.
+date: 2026-07-02
+products:
+ - cloudflare-one-appliance
+ - cloudflare-one
+---
+
+You can now register a [Cloudflare One Virtual Appliance](/cloudflare-wan/configuration/appliance/) and generate its license key directly from the dashboard, without contacting your account team.
+
+
+
+- On the **Connectors** page, select **Add an appliance** and choose **Virtual appliance** to register a virtual appliance and generate its authentication key.
+- Use **Regenerate authentication key** from a virtual appliance connector's menu to rotate its key. The previous key is immediately and irrevocably revoked.
+- The authentication key is shown only once — copy and store it securely.
+
+This complements the existing [API and Terraform self-serve workflow](/cloudflare-wan/configuration/appliance/configure-virtual-appliance/#register-a-virtual-appliance-and-generate-a-license-key) for provisioning virtual appliances. Hardware appliances continue to use the existing account-team fulfillment workflow.
+
+For details, refer to [Configure a Cloudflare One Virtual Appliance](/cloudflare-wan/configuration/appliance/configure-virtual-appliance/).
diff --git a/src/content/docs/cloudflare-wan/configuration/appliance/configure-virtual-appliance.mdx b/src/content/docs/cloudflare-wan/configuration/appliance/configure-virtual-appliance.mdx
index 9368dcc8dab..493adc101ef 100644
--- a/src/content/docs/cloudflare-wan/configuration/appliance/configure-virtual-appliance.mdx
+++ b/src/content/docs/cloudflare-wan/configuration/appliance/configure-virtual-appliance.mdx
@@ -3,52 +3,88 @@ pcx_content_type: how-to
products:
- cloudflare-wan
title: Configure Virtual Appliance
-description: Learn how to configure Cloudflare One Virtual Appliance on VMWare ESXi or Proxmox Virtual Environment
+description: Learn how to configure Cloudflare One Virtual Appliance on VMware ESXi or Proxmox Virtual Environment
sidebar:
order: 4
---
-import { Render, Aside } from "~/components";
+import { Render, Aside, Tabs, TabItem, Steps } from "~/components";
-
+This is also available via Terraform.
+
+
VMWare: Have already obtained your OVA package and license keys if you are installing on VMWare.
Proxmox: Have already obtained your Virtual Appliance Script and license keys if you are installing on Proxmox.
\nFor details, refer to [Configure a virtual machine](#configure-a-virtual-machine) and select the appropriate tab.\n",
- networkSegmentationURL: "/cloudflare-wan/configuration/appliance/network-options/network-segmentation/",
- dhcpServerURL: "/cloudflare-wan/configuration/appliance/network-options/dhcp/dhcp-server/",
+ product="networking-services"
+ params={{
+ magicWord: "virtual",
+ productName: "Cloudflare One Appliance",
+ productNameVirtual: "Cloudflare One Virtual Appliance",
+ maintenanceURL: "/cloudflare-wan/configuration/appliance/maintenance/",
+ dashName: "Cloudflare WAN",
+ wan: "needs to correspond to the virtual network interface on the Virtual Appliance instance you have set up in VMware. Following our example from the previous steps, you need to choose port `1` since that is what corresponds to the `eno1` port we set up in VMware.",
+ lan: "needs to correspond to the virtual LAN interface on the Virtual Appliance instance you have set up in VMware. Following our example from the previous steps, you need to choose port `2` since that is what corresponds to the `eno2` port we set up in VMware.",
+ noConnectorShows: "For a Virtual Appliance to appear you need to:
VMware: Have already obtained your OVA package and license keys if you are installing on VMware.
Proxmox: Have already obtained your Virtual Appliance Script and license keys if you are installing on Proxmox.
\nFor details, refer to [Configure a virtual machine](#configure-a-virtual-machine) and select the appropriate tab.\n",
+ networkSegmentationURL: "/cloudflare-wan/configuration/appliance/network-options/network-segmentation/",
+ dhcpServerURL: "/cloudflare-wan/configuration/appliance/network-options/dhcp/dhcp-server/",
dhcpRelayURL: "/cloudflare-wan/configuration/appliance/network-options/dhcp/dhcp-relay/",
reserveIpAddressesURL: "/cloudflare-wan/configuration/appliance/network-options/dhcp/dhcp-static-address-reservation/",
- shippedLanguage: "Cloudflare One Virtual Appliance is deactivated after you install it",
- hardSoftConn: "You need to install two Virtual Appliances before you can set up a site in high availability.",
- hcConfigsURL: "/cloudflare-wan/configuration/appliance/reference/#high-availability-configurations",
- ipsecTunnelsRefURL: "/cloudflare-wan/reference/gre-ipsec-tunnels/#ipsec-tunnels",
- trafficSteeringURL: "/cloudflare-wan/reference/traffic-steering/",
- vlanIdURL: "/cloudflare-wan/configuration/appliance/reference/#vlan-id",
- healthCheckFrequencyURL: "/cloudflare-wan/configuration/common-settings/update-tunnel-health-checks-frequency/",
- routedSubnetsURL: "/cloudflare-wan/configuration/appliance/network-options/routed-subnets/",
- interruptWindowURL: "/cloudflare-wan/configuration/appliance/maintenance/interrupt-service-window/",
- tunnelHealthChecksURL: "/cloudflare-wan/reference/tunnel-health-checks/",
- wanSettingsURL: "/cloudflare-wan/configuration/appliance/reference/#wan-settings",
- sitesURL: "/cloudflare-wan/configuration/common-settings/sites/",
- networkOptionsURL: "/cloudflare-wan/configuration/appliance/network-options/",
+ shippedLanguage: "Cloudflare One Virtual Appliance is deactivated after you install it",
+ hardSoftConn: "You need to install two Virtual Appliances before you can set up a site in high availability.",
+ hcConfigsURL: "/cloudflare-wan/configuration/appliance/reference/#high-availability-configurations",
+ ipsecTunnelsRefURL: "/cloudflare-wan/reference/gre-ipsec-tunnels/#ipsec-tunnels",
+ trafficSteeringURL: "/cloudflare-wan/reference/traffic-steering/",
+ vlanIdURL: "/cloudflare-wan/configuration/appliance/reference/#vlan-id",
+ healthCheckFrequencyURL: "/cloudflare-wan/configuration/common-settings/update-tunnel-health-checks-frequency/",
+ routedSubnetsURL: "/cloudflare-wan/configuration/appliance/network-options/routed-subnets/",
+ interruptWindowURL: "/cloudflare-wan/configuration/appliance/maintenance/interrupt-service-window/",
+ tunnelHealthChecksURL: "/cloudflare-wan/reference/tunnel-health-checks/",
+ wanSettingsURL: "/cloudflare-wan/configuration/appliance/reference/#wan-settings",
+ sitesURL: "/cloudflare-wan/configuration/common-settings/sites/",
+ networkOptionsURL: "/cloudflare-wan/configuration/appliance/network-options/",
maintenanceURL: "/cloudflare-wan/configuration/appliance/maintenance/",
referenceInformationURL: "/cloudflare-wan/configuration/appliance/reference/",
troubleshootingURL: "/cloudflare-wan/configuration/appliance/troubleshooting/"
- }} />
+ }} />