Unraid is a hypervisor by itself. So aside from just running docker containers, you can also spawn VMs. I wanted to install Ubuntu Server 22.04 so I could run the GNS3 remote server on it.

Ubuntu Server Installation

You can download the Ubuntu iso image from this page. It’s either you download to your local machine or using Unraid with the help of the CLI or some docker app.

While waiting for the download to complete. Go to Settings > VM Manager and set ‘Enable VMs’ to yes. You can also toggle the advanced view to have a more detailed look on the settings. Here you will see the directory of the iso files and the storage so be sure to have your shares properly configured.

alt text

Just to give you an idea my iso directory is saved to a cache that doesn’t have redundancy. Image files that are not intended to be used any sooner can either be deleted or transferred to an archive directory on your main array.

alt text

It is important to transfer the iso file to the iso share or else you won’t be able to select this later on.

alt text

Go to VMs > Add VM > Ubuntu. Select the CPU cores and memory as well as the ISO file.

alt text

Assign the disk size.

alt text

For network model ensure that br0 is selected. For VM console port Unraid starts with the default port of VNC but just to avoid any conflict later on when you run appliances on GNS3 just choose a different port range from 5900. Uncheck ‘Start VM after creation’. Everything else can be kept in default. Create the VM.

alt text

Note network-model should be set to virtio-net to avoid any networking issues with the docker containers.

alt text

Go back and edit this VM and toggle from form to XML view on the upper right hand side. To enable nested virtualization insert the following line in the part.

alt text

<feature policy='require' name='vmx'/>

Update, start the VM, and open the console. Install the OS how you normally do it.

alt text

As for me I always choose Ubuntu Server (not minimized) everytime to avoid any package dependencies later on.

alt text

Be sure the VM is assigned a DHCP IP when you get to the network settings or assign a static one if you wish. I always prefer the latter.

alt text

Modify disk to utilize all. There really is no use case to use LVM if you are just running GNS3 server.

alt text

alt text

alt text

Also ensure OpenSSH to be installed!

alt text

Reboot the server after installation and check your IP within the VNC console. Try to login via ssh.

alt text

Perform basic checks especially the disk space! The root directory should be assigned the biggest chunk of the disk size.

alt text

Install GNS3 Server

I am sharing the link to the official documentation here for reference. It says to execute the following commands as root:

sudo -i
cd /tmp
curl https://raw.githubusercontent.com/GNS3/gns3-server/master/scripts/remote-install.sh > gns3-remote-install.sh
bash gns3-remote-install.sh --with-openvpn --with-iou --with-i386-repository

Now if we check the status of the gns3 services. It would always show it’s activating

alt text

If you check the log file mentioned there you would see the following

CRITICAL web_server.py:88 Could not start the server: [Errno 99] error while attempting to bind on address (‘172.16.253.1’, 3080): cannot assign requested address

Let’s check the configuration file getting loaded and see if we can see anything there.

alt text

The controller config file can be found in the highlighted path shown above. At the same time we can see GNS3 is trying to listen on 172.16.253.1.

alt text

This seems to be the default IP configured in the installation. Change this to the local IP of your VM.

alt text

Restart GNS3 and check the status again. It should be running now.

alt text

At this point you should be able to connect from a remote GNS3 GUI to this server.

Lastly to start GNS3 server automatically every reboot, just enable the service:

systemctl enable gns3