This article assumes you have your OS already installed and you are ready to go. There is sometimes a need to host your own site from your home/residence/HomeLab. Virtualmin is an excellelent hosting panel I think it’s one of the best it takes all the mind bending work out of hosting your own website. Just a FYI here this can be done in a VM/SBC type device as well.

Let’s get started:

1 – ssh/login into your server/vm
Let’s update the respository (The first command does this) and then we need to upgrade all the system packages (The second command does that) the && allows you to run them together.
2 – sudo apt update && sudo apt -y full-upgrade
Let’s edit our respository source and add the GPG Keys for the Software.
3 – sudo nano -c /etc/apt/sources.list
Append the following to the file above:
deb sarge contrib
4 – apt-key list <enter>

note: look for the jcameron-key if it’s not there then do the following.
5 - sudo apt-key adv --keyserver hkp:// --recv-keys D97A3AE911F63C51
6 – apt-key list <enter>

Let’s install the dependencies for Webmin/Virtualmin
7 – sudo apt -y install software-properties-common apt-transport-https gpg

8 – sudo apt update

9 – sudo apt -y install webmin

This will take a while to complete, I would get a cup of coffee and wait for it.
You can set your root password with the following command:
10 – sudo /usr/share/webmin/ /etc/webmin/ root NewStrongPassword
If you haven’t already done so, you should set your hostaname.
11 – sudo hostnamectl set-hostname

Let’s Download Virtualmin & Install it.

12 – sudo wget

Config Virtualmin for use on a Raspberry Pi/OPi5

You can install Virtualmin on a SBC with just a simple modification on to the install script. Per this post on on (

I Suggest you use Debian Buster/Bullseye or Bookworm OS
You need to follow the instructions below:
sudo nano -c

w/nano <enter> ctrl-W to Find the text "get_distro"

Add in os_type="debian" after get_distro

log_debug "Operating system name: $os_real"
log_debug "Operating system version: $os_version"
log_debug "Operating system type: $os_type"
log_debug "Operating system major: $os_major_version"

What this does is, it will force the script to recognize the host as a debian operating system type.

Return to Step 13 … It should install without any issues.

Make the script executable.
13 – chmod a+x
Make the script executable.
14 – sudo ./
Follow the onscreen prompts to complete the install

This process on a SBC will take a very long time be patient please.

Add the port to the native firewall to allow access
15 – ufw allow 10000

In this next section we will need to finish off the sever configuration
To access your new Management GUI goto https://your_ip:10000

We need to run this to finish up the install completely.
Make sure to select what works for you, I use the less ram.
I use up to 2 gb of ram here. Use what works for you.
I don’t use this because I run it manually.
Choose the DB you use … I use mariadb/MySqlDB
I skipped this because I don’t a DNS server configured yet.
You are not done yet, Click next.
I use hashed but use what your comfortable with.
I use the default here, it seems to work great to be honest.
Use this because it’s easier to find them if you need them.
Now you are pretty much finished.
Press the re-check and refresh configuration
Now you are done and ready for action.

I know this is a bit on the long side but I wanted to make sure all the details were addressed for a complete and working configuration. Thank you for reading and spending time with us. Let us know what ya think.

By Michael Cooper

30 years in IT last 15 as a Senior Systems Engineer. GO BUCKS!

Leave a Reply

Your email address will not be published. Required fields are marked *