mirror of https://github.com/pikvm/pikvm.git
				
				
				
			
		
			
				
	
	
		
			170 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| # Tailscale VPN
 | |
| 
 | |
| The [Tailscale VPN](https://tailscale.com/) can be used to access PiKVM from the Internet
 | |
| if configuring [port forwarding](port_forwarding.md) is not possible or more security is desired.
 | |
| Tailscale is a convenient and free (for private use) tool for organizing a small VPN network.
 | |
| 
 | |
| The basic Tailscale configuration commands are shown below.
 | |
| For detailed instructions, refer to [Tailscale support](https://tailscale.com/contact/support/).
 | |
| 
 | |
| -----
 | |
| 
 | |
| ## Configuring the PiKVM
 | |
| 
 | |
| 1. Update OS:
 | |
| 
 | |
|     {!_update_os.md!}
 | |
| 
 | |
| 2. Install the Tailscale client, run `tailscaled` service and register it in the network:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# rw
 | |
|     [root@pikvm ~]# pacman -S tailscale-pikvm
 | |
|     [root@pikvm ~]# systemctl enable --now tailscaled
 | |
|     [root@pikvm ~]# tailscale up
 | |
|     ```
 | |
| 
 | |
| 3. Follow the link to authorize this installation.
 | |
|     You likely want to [disable key expiry](https://tailscale.com/kb/1028/key-expiry/)!
 | |
| 
 | |
| 4. After authorization success, reboot to make sure that everything works correctly:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# reboot
 | |
|     ```
 | |
| 
 | |
| 5. Now, you can view the IP address of the Tailscale network interface:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# ip addr show tailscale0
 | |
|     ```
 | |
| 
 | |
| If everything is successful, PiKVM will become a member of your VPN network.
 | |
| 
 | |
| !!! warning "Do not update Tailscale if you don't have access to PiKVM without VPN"
 | |
|     Unfortunately, sometimes, updating the Tailscale client can cause problems due to
 | |
|     breaking changes. These are compatibility issues on the Tailscale side.
 | |
|     Remember this when updating.
 | |
| 
 | |
| -----
 | |
| 
 | |
| ## Configuring a client device
 | |
| 
 | |
| * [Download](https://tailscale.com/download) and install the Tailscale client
 | |
|     to the system you are using (not to the system you want to control).
 | |
| * Check the [Tailscale admin page](https://login.tailscale.com/admin/machines) to view your VPN network.
 | |
| * Follow the URL in the web browser: `https://<tailscale_kvm_ip>` and you will see the PiKVM web interface.
 | |
| 
 | |
| -----
 | |
| 
 | |
| ## Using Tailscale Certificates
 | |
| 
 | |
| PiKVM uses self-signed SSL certificates out of the box. You can also use
 | |
| [Tailscale certificates](https://tailscale.com/kb/1153/enabling-https) in place of the default one.
 | |
| 
 | |
| !!! warning
 | |
|     Tailscale certificates are provided by Let's Encrypt and has a default
 | |
|     [expiry of 90 days](https://letsencrypt.org/2015/11/09/why-90-days/).
 | |
|     There is currently no mechanism available to auto-renew Tailscale
 | |
|     certificate. You may put the commands below in a script to simplify
 | |
|     process.
 | |
| 
 | |
| 1. Switch filesystem to RW if in ReadOnly mode and delete existing PiKVM certificates for nginx and vnc.
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# rw
 | |
|     [root@pikvm ~]# rm -v /etc/kvmd/{nginx,vnc}/ssl/*.{crt,key}
 | |
|     ```
 | |
| 
 | |
| 2. Provision new certificates using [`tailscale cert`](https://tailscale.com/kb/1080/cli#cert)
 | |
|     command. Optionally you may create a directory to store the certificates.
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# mkdir .cert
 | |
|     [root@pikvm ~]# cd .cert
 | |
|     [root@pikvm .cert]# tailscale cert <tailscale_hostname>
 | |
|     ```
 | |
| 
 | |
| 3. Copy the certificates to nginx's and vnc's ssl directories.
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# cp /root/.cert/<tailscale_hostname>.key /etc/kvmd/nginx/ssl/server.key
 | |
|     [root@pikvm ~]# cp /root/.cert/<tailscale_hostname>.crt /etc/kvmd/nginx/ssl/server.crt
 | |
|     ```
 | |
| 
 | |
|     Repeat the same steps for vnc if you have configured it.
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# cp /root/.cert/<tailscale_hostname>.key /etc/kvmd/vnc/ssl/server.key
 | |
|     [root@pikvm ~]# cp /root/.cert/<tailscale_hostname>.crt /etc/kvmd/vnc/ssl/server.crt
 | |
|     ```
 | |
| 
 | |
| 4. Grant file ownership to nginx and vnc services. Switch filesystem to ReadOnly again
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# chown :kvmd-nginx /etc/kvmd/nginx/ssl/*
 | |
|     [root@pikvm ~]# chown :kvmd-vnc /etc/kvmd/vnc/ssl/*
 | |
|     [root@pikvm ~]# ro
 | |
|     ```
 | |
| 
 | |
| 5. Restart nginx and vnc services
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# systemctl restart kvmd-nginx
 | |
|     [root@pikvm ~]# systemctl restart kvmd-vnc
 | |
|     ```
 | |
| 
 | |
| -----
 | |
| 
 | |
| ## Troubleshooting
 | |
| 
 | |
| * If something does not work, the usual advice is to completely remove Tailscale from PiKVM and perform a clean installation:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# rw
 | |
|     [root@pikvm ~]# pacman -Rscnd tailscale
 | |
|     [root@pikvm ~]# rm -rf /var/lib/tailscale /var/cache/tailscale
 | |
|     [root@pikvm ~]# reboot
 | |
|     ```
 | |
| 
 | |
| Now, follow the instructions from the beginning to re-install Tailscale.
 | |
| 
 | |
| * In case of certificate issues you can try the following steps to debug and fix.
 | |
| 
 | |
| 1. Check if the services are running. If not please start them. For example,
 | |
|     web UI service can be checked using:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# systemctl status kvmd-nginx
 | |
|     ```
 | |
| 
 | |
|     For VNC:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# systemctl status kvmd-vnc
 | |
|     ```
 | |
| 
 | |
| 2. If the services are running but not accessible or showing a warning, check
 | |
|     the respective logs. For web UI:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# journalctl -xeu kvmd-nginx
 | |
|     ```
 | |
| 
 | |
| 3. If the logs shows TLS/certificate/permissions errors, the issue may be with
 | |
|     file ownership. The services must have at least the group ownership of the
 | |
|     certificates. The ownership should look similar to this:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# ls -l /etc/kvmd/{nginx,vnc}/ssl
 | |
|     /etc/kvmd/nginx/ssl:
 | |
|     total 8
 | |
|     -r--r--r-- 1 root kvmd-nginx 2872 Jan  3 16:07 server.crt
 | |
|     -r--r----- 1 root kvmd-nginx  227 Jan  3 16:07 server.key
 | |
| 
 | |
|     /etc/kvmd/vnc/ssl:
 | |
|     total 8
 | |
|     -r--r--r-- 1 root kvmd-vnc 2872 Jan  3 16:07 server.crt
 | |
|     -r--r----- 1 root kvmd-vnc  227 Jan  3 16:07 server.key
 | |
|     ```
 |