{"id":145,"date":"2026-04-12T10:33:10","date_gmt":"2026-04-12T10:33:10","guid":{"rendered":"http:\/\/digitalartifex.dev\/?p=145"},"modified":"2026-04-12T10:33:10","modified_gmt":"2026-04-12T10:33:10","slug":"proxmox-node-management-renaming-nodes","status":"publish","type":"post","link":"http:\/\/digitalartifex.dev\/index.php\/2026\/04\/12\/proxmox-node-management-renaming-nodes\/","title":{"rendered":"Proxmox Node Management &#8211; Renaming Nodes"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Maybe the hosting provider you just bought a server from automatically sets the hostname or maybe you didn&#8217;t think about it when you setup your homelab and now want to give your servers better names than &#8220;PVE0X&#8221;. Whatever your reason is, the problem is still the same: you need to rename your proxmox node(s). The process is fairly simple, but there are some considerations to be made before proceeding.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Storage Considerations (Datacenter)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If your shared storage refers to its host via hostname rather than IP address or DNS entry, then these will need to be re-provisioned as they cannot be edited. Any containers or virtual machines that are using that storage needs to be migrated to a different storage location.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Storage Considerations (Containers &amp; Nodes)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The same goes for storage such as NFS referenced by containers, nodes and virtual machines. You should change these references to IP address or DNS entry name. You may also update then to use the hostname you plan on using, but this is less advisable for potential future changes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now that we have migrated our storages to IP address or our local-lvm, we can start making changes. You will need to repeat the following steps on each node in the cluster you want to rename. You will also need to repeat the corosync config step for  every node in the cluster, even if they are not being renamed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1 &#8211; Connect via SSH<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">First things first, we will want to be connecting to the node(s) via SSH and not the Proxmox Web Interface. This will prevent any communication issues that may crop up during the process. Make sure to transfer your SSH key to the nodes prior to continuing, if you haven&#8217;t already.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>eval $(ssh-agent)\nssh-add \/path\/to\/ssh\/key\nssh &lt;user>@&lt;server_ip><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2 &#8211; Obtain Local Lock<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Now that we are connected, we will need to obtain a local lock with <code>pmxcfs<\/code> so that we can edit our server&#8217;s configuration. To do this, we will need to kill the process with the current lock, <code>pve-cluster<\/code>, then pass the <code>-l<\/code> flag to the invocation of <code>pmxcfs<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl stop pve-cluster\npmxcfs -l<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If there is any issue with the lock, there will be an error message similar to: <code>[main] notice: unable to acquire pmxcfs lock - trying again<\/code>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If everything is okay, the output should just look like <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;main] notice: resolved node name 'tucana' to '192.168.12.3' for default node IP address\n&#91;main] notice: forcing local mode (although corosync.conf exists)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3 &#8211; Modify Host Files<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Now, we will need to edit <code>\/etc\/hostname<\/code> and <code>\/etc\/hosts<\/code> to reflect our desired changes. Here, I will be changing <code>pve<\/code> to <code>tucana<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>\/etc\/hosts<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>127.0.0.1 localhost.localdomain localhost\n192.168.12.3 tucana.net.hlab tucana\n\n# The following lines are desirable for IPv6 capable hosts\n\n::1     ip6-localhost ip6-loopback\nfe00::0 ip6-localnet\nff00::0 ip6-mcastprefix\nff02::1 ip6-allnodes\nff02::2 ip6-allrouters\nff02::3 ip6-allhosts<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>\/etc\/hostname<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tucana<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4 &#8211; Modify Corosync Config<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Since we have changed the hostname, we will also have to update references in <code>\/etc\/pve\/corosync.conf<\/code> to reflect the changes. Alternatively, you can delete this configuration to reset the cluster state, then recreate the cluster after the name changes have been made.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>\/etc\/pve\/corosync.conf<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>logging {\n  debug: off\n  to_syslog: yes\n}\n\nnodelist {\n  node {\n    name: ara\n    nodeid: 1\n    quorum_votes: 1\n    ring0_addr: 192.168.12.125\n  }\n  node {\n    name: tucana\n    nodeid: 3\n    quorum_votes: 1\n    ring0_addr: 192.168.12.3\n  }\n  node {\n    name: volans\n    nodeid: 2\n    quorum_votes: 1\n    ring0_addr: 192.168.12.251\n  }\n}\n\nquorum {\n  provider: corosync_votequorum\n}\n\ntotem {\n  cluster_name: hlab01\n  config_version: 3\n  interface {\n    linknumber: 0\n  }\n  ip_version: ipv4-6\n  link_mode: passive\n  secauth: on\n  token_coefficient: 321\n  version: 2\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5 &#8211; Restart The Node<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Once we have made those changes, we will need to restart the node so it can create the directory structure required for the next step.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>killall pmxcfs\nreboot<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 6 &#8211; Transfer LXC Configs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before we can transfer the LXC configs to the new node name, we will again need to kill the current lock and create our own.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl stop pve-cluster\npmxcfs -l<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now, we can move the configs from the old node name to the new name.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mv \/etc\/pve\/nodes\/&lt;old_name>\/lxc\/* \/etc\/pve\/nodes\/&lt;new_name>\/lxc\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 7 &#8211; Cleanup &amp; Reboot<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, we will need to clean up the last reference to the node&#8217;s previous name.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rm -rf \/etc\/pve\/nodes\/&lt;old_name><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">After this, restart the node<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>reboot<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s it! Your node has been renamed and you can move on to the other nodes in the cluster.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Maybe the hosting provider you just bought a server from automatically sets the hostname or maybe you didn&#8217;t think about it when you setup your homelab and now want to give your servers better names than &#8220;PVE0X&#8221;. Whatever your reason is, the problem is still the same: you need to rename your proxmox node(s). The [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":146,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,18,25],"tags":[],"class_list":["post-145","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-homelab","category-server"],"_links":{"self":[{"href":"http:\/\/digitalartifex.dev\/index.php\/wp-json\/wp\/v2\/posts\/145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/digitalartifex.dev\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/digitalartifex.dev\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/digitalartifex.dev\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/digitalartifex.dev\/index.php\/wp-json\/wp\/v2\/comments?post=145"}],"version-history":[{"count":17,"href":"http:\/\/digitalartifex.dev\/index.php\/wp-json\/wp\/v2\/posts\/145\/revisions"}],"predecessor-version":[{"id":163,"href":"http:\/\/digitalartifex.dev\/index.php\/wp-json\/wp\/v2\/posts\/145\/revisions\/163"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/digitalartifex.dev\/index.php\/wp-json\/wp\/v2\/media\/146"}],"wp:attachment":[{"href":"http:\/\/digitalartifex.dev\/index.php\/wp-json\/wp\/v2\/media?parent=145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/digitalartifex.dev\/index.php\/wp-json\/wp\/v2\/categories?post=145"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/digitalartifex.dev\/index.php\/wp-json\/wp\/v2\/tags?post=145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}