{"id":5034,"date":"2026-08-30T03:40:38","date_gmt":"2026-08-29T18:40:38","guid":{"rendered":"https:\/\/donguri3.net\/server-tech\/diy-pikvm-v1-vpn-monitoring-2\/"},"modified":"2026-08-30T03:40:43","modified_gmt":"2026-08-29T18:40:43","slug":"diy-pikvm-v1-vpn-monitoring","status":"publish","type":"post","link":"https:\/\/donguri3.net\/en\/diy-repair\/diy-tools-devices\/diy-pikvm-v1-vpn-monitoring\/","title":{"rendered":"Building a PiKVM with Raspberry Pi 3, Pico, and a Budget USB Capture Board \u2013 Part 4: VPN Monitoring Edition"},"content":{"rendered":"<p class=\"\">So far, through the hardware, software, and case design installments, we have successfully built our own DIY PiKVM using a Raspberry Pi 3, a Pico-compatible board, and an HDMI-USB capture board. In this article, we will explain the configuration for PiKVM&#8217;s monitoring functions and remote management using Tailscale VPN. This setup allows you to build a reliable environment where, even if an unexpected server issue occurs, you can perform reboots and troubleshooting remotely with peace of mind.<\/p>\n<hr class=\"\" \/>\n<h2 class=\"\">Current Status and Issues with the Browser Terminal<\/h2>\n<h3 class=\"\">Web Terminal Login Status<\/h3>\n<p class=\"\">When you access the terminal via the PiKVM web UI, you are logged in by default as the &#8220;kvmd-webterm&#8221; user.<br \/>However, for some reason, the password for the &#8220;kvmd-webterm&#8221; user is not set by default, preventing you from switching from this user to the root user (using the su command) or changing the password, which creates operational inconveniences.<\/p>\n<h3 class=\"\">Checking sudoers Configuration<\/h3>\n<p class=\"\">Even when checking the following file (\/etc\/sudoers.d\/99_kvmd):<\/p>\n<pre>kvmd-pst ALL=(ALL) NOPASSWD: \/usr\/bin\/kvmd-helper-pst-remount<\/pre>\n<p class=\"\">It only contains the above entry, meaning no sudo privileges are granted to the kvmd-webterm user.<\/p>\n<hr class=\"\" \/>\n<h2 class=\"\">Solution: Setting a Password for the kvmd-webterm User<\/h2>\n<h3 class=\"\">Configuration Changes via Root Login over SSH<\/h3>\n<p class=\"\">Therefore, first log in to the PiKVM via SSH as the root user (initial password: root).<br \/>Follow the steps below to set a password for the kvmd-webterm user.<\/p>\n<ol>\n<li class=\"\">\n<p class=\"\"><strong>Switch the filesystem to Read-Write mode<br \/>\n<\/strong><\/p>\n<pre>[root@pikvm ~]# rw\n+ mount -o remount,rw \/\n+ mount -o remount,rw \/boot\n+ set +x\n=== PiKVM is in Read-Write mode ===<\/pre>\n<p class=\"\"><strong> <\/strong><\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Set a new password for the kvmd-webterm user<br \/>\n<\/strong><\/p>\n<pre>[root@pikvm ~]# passwd kvmd-webterm\nNew password:\nRetype new password:\npasswd: password updated successfully<\/pre>\n<p class=\"\"><strong> <\/strong><\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Switch the filesystem back to Read-Only mode<br \/>\n<\/strong><\/p>\n<pre>[root@pikvm ~]# ro\n+ mount -o remount,ro \/\n+ mount -o remount,ro \/boot\n+ set +x\n=== PiKVM is in Read-Only mode ===<\/pre>\n<p class=\"\"><strong> <\/strong><\/p>\n<\/li>\n<\/ol>\n<p class=\"\">With this configuration, you can now switch to root privileges from the browser terminal by running the su command and entering the root user&#8217;s password (initial value: root).<\/p>\n<hr class=\"\" \/>\n<h2 class=\"\">Configuring Remote Management via Tailscale VPN<\/h2>\n<h3 class=\"\">Installing and Configuring Tailscale<\/h3>\n<p class=\"\">To manage PiKVM remotely, we will introduce Tailscale VPN. Please refer to the official installation instructions <a class=\"\" href=\"https:\/\/docs.pikvm.org\/tailscale\/?h=tail\" target=\"_new\" rel=\"noopener\">here<\/a>. Below are the basic installation steps:<\/p>\n<ol>\n<li class=\"\">\n<p class=\"\"><strong>Update PiKVM<\/strong><br \/>Run the latest pikvm-update to update the system.<\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Install the Tailscale Client<br \/>\n<\/strong><\/p>\n<pre>[root@pikvm kvmd-webterm]# rw\n+ mount -o remount,rw \/\n+ mount -o remount,rw \/boot\n+ set +x\n=== PiKVM is in Read-Write mode ===\n[root@pikvm kvmd-webterm]# pacman -S tailscale-pikvm\nresolving dependencies...\nlooking for conflicting packages...\n\nPackages (2) tailscale-1.82.0-1 tailscale-pikvm-0.9-1\n\nTotal Download Size: 9.97 MiB\nTotal Installed Size: 36.80 MiB\n\n:: Proceed with installation? [Y\/n] Y\n:: Retrieving packages...\ntailscale-1.82.0... 10.0 MiB 2.55 MiB\/s 00:04 [########################] 100%\ntailscale-pikvm-... 3.4 KiB 2.74 KiB\/s 00:01 [########################] 100%\nTotal (2\/2) 10.0 MiB 1820 KiB\/s 00:06 [########################] 100%\n(2\/2) checking keys in keyring [########################] 100%\n(2\/2) checking package integrity [########################] 100%\n(2\/2) loading package files [########################] 100%\n(2\/2) checking for file conflicts [########################] 100%\n(2\/2) checking available disk space [########################] 100%\n:: Processing package changes...\n(1\/2) installing tailscale [########################] 100%\n(2\/2) installing tailscale-pikvm [########################] 100%\n:: Running post-transaction hooks...\n(1\/2) Reloading system manager configuration...\n(2\/2) Arming ConditionNeedsUpdate...<\/pre>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Enable the Tailscale Service<br \/>\n<\/strong><\/p>\n<pre>[root@pikvm kvmd-webterm]# systemctl enable --now tailscaled\nCreated symlink '\/etc\/systemd\/system\/multi-user.target.wants\/tailscaled.service' -&gt; '\/usr\/lib\/systemd\/system\/tailscaled.service'.<\/pre>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Start the Tailscale Connection<\/strong><\/p>\n<pre>[root@pikvm kvmd-webterm]# tailscale up\n\nTo authenticate, visit:\n\nhttps:\/\/login.tailscale.com\/a\/a456xxx\n\nSuccess.<\/pre>\n<p class=\"\">Starting Tailscale will display a URL for authentication. Access that URL and log in to complete the connection.<\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Configure Tailscale (Optional)<br \/>\n<\/strong>If necessary, consider configuring the expiration to never expire by using the &#8220;Disable key expiry&#8221; option. Select Machines &gt; click the &#8230; next to pikvm &gt; Disable key expiry<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Machines-Tailscale-Google-Chrome-2025_04_09-11_23_43.png\"><img decoding=\"async\" class=\"aligncenter size-large wp-image-1259\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Machines-Tailscale-Google-Chrome-2025_04_09-11_23_43-1024x697.png\" alt=\"Tailscale Dashboard\" width=\"1024\" height=\"697\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Machines-Tailscale-Google-Chrome-2025_04_09-11_23_43-1024x697.png 1024w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Machines-Tailscale-Google-Chrome-2025_04_09-11_23_43-300x204.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Machines-Tailscale-Google-Chrome-2025_04_09-11_23_43-768x523.png 768w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Machines-Tailscale-Google-Chrome-2025_04_09-11_23_43-530x361.png 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Machines-Tailscale-Google-Chrome-2025_04_09-11_23_43-565x385.png 565w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Machines-Tailscale-Google-Chrome-2025_04_09-11_23_43-710x484.png 710w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Machines-Tailscale-Google-Chrome-2025_04_09-11_23_43-725x494.png 725w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Machines-Tailscale-Google-Chrome-2025_04_09-11_23_43.png 1223w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<\/li>\n<\/ol>\n<h3 class=\"\">Remote Connection via Smartphone<\/h3>\n<ol>\n<li class=\"\">\n<p class=\"\">Install the Tailscale app on your smartphone (available for both iOS and Android).<\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\">Turn on the VPN connection within the app and connect to the Tailscale network that the PiKVM belongs to.<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1669.png\"><img decoding=\"async\" class=\"aligncenter size-medium wp-image-1260\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1669-169x300.png\" alt=\"PiKVM Information\" width=\"169\" height=\"300\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1669-169x300.png 169w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1669-576x1024.png 576w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1669-298x530.png 298w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1669-318x565.png 318w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1669-399x710.png 399w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1669-408x725.png 408w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1669.png 750w\" sizes=\"(max-width: 169px) 100vw, 169px\" \/><\/a><\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\">You can access the PiKVM from your smartphone&#8217;s browser by entering the IP address assigned to the PiKVM by Tailscale.<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1670.png\"><img decoding=\"async\" class=\"aligncenter size-medium wp-image-1261\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1670-169x300.png\" alt=\"Remote PiKVM\" width=\"169\" height=\"300\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1670-169x300.png 169w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1670-576x1024.png 576w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1670-298x530.png 298w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1670-318x565.png 318w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1670-399x710.png 399w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1670-408x725.png 408w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/IMG_1670.png 750w\" sizes=\"(max-width: 169px) 100vw, 169px\" \/><\/a><\/p>\n<\/li>\n<\/ol>\n<p class=\"\">This ensures that even if a server issue occurs, you can remotely restart the PiKVM or check logs, achieving a stable remote management environment.<\/p>\n<hr class=\"\" \/>\n<h2 class=\"\">Conclusion<\/h2>\n<p class=\"\">In this article, we explained the measures to set up PiKVM&#8217;s monitoring functions and remote management environment.<\/p>\n<ul>\n<li class=\"\">\n<p class=\"\">Resolved the issue where the password for the &#8220;kvmd-webterm&#8221; user, which is used for default login to the browser terminal, was not set, by modifying settings via SSH.<\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\">Enabled remote access and management from smartphones through the introduction of Tailscale VPN, establishing a framework to handle unexpected troubles with peace of mind.<\/p>\n<\/li>\n<\/ul>\n<p class=\"\">With these configurations, the system has become a secure and responsive setup that can be handled remotely and promptly at all times, even for monitoring purposes with the ASRock Beebox. We will continue to implement further updates aimed at achieving a comfortable operational experience.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So far, through the hardware, software, and case design installments, we have successfully built our own DIY P [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":1437,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"en_US","_original_post":"https:\/\/donguri3.net\/?p=1142","footnotes":""},"categories":[1164],"tags":[9,52,461,476,488,485,24,10,275,467,278],"class_list":["post-5034","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-diy-tools-devices","tag-diy","tag-https","tag-pikvm","tag-ssh","tag-tailscale","tag-vpn","tag-server","tag-275","tag-467","tag-278","en-US"],"_links":{"self":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5034","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/comments?post=5034"}],"version-history":[{"count":1,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5034\/revisions"}],"predecessor-version":[{"id":5037,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5034\/revisions\/5037"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/media\/1437"}],"wp:attachment":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/media?parent=5034"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/categories?post=5034"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/tags?post=5034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}