This is Part I (the boring part) of my Ubuntu Home Server install.
Other parts can be found at:
For anyone who’s installed Ubuntu Server before, there’s not much here for you. I’m putting this here for anyone starting out with Ubuntu and for the sake of completeness.
Also, my 1st warning: this is the setup I think will serve me best for my particular situation. It may not be the best for you, and, while it’s somewhat redundant, it certainly isn’t “enterprise-grade.” You were warned 😉
In the steps below, anytime you see something in brackets, replace it with the correct value for your system, without the brackets.
For example, if you see:
ssh [username]@[ip address]
You should really enter something like:
All the major Linux distros are awesome. You really can’t go wrong! For servers, I’ve typically gone with Centos in the past (and on this Ubuntu server will be many Centos virtual machines). However, there is one reason I’ve decided to go with Ubuntu in this instance: ZFS. Ubuntu has ZFS baked in, whereas Centos and Fedora require recompilation of kernel modules after major OS upgrades. Since I want this box to be as turnkey as possible (if it goes down, my internet will go down as well), Ubuntu it is!
First, download the Ubuntu Server iso from Ubuntu. I’ll be using the 18.04 LTS release, since I prefer to stick to LTS releases for critical infrastructure.
Next, either burn the iso to a DVD or image it to a flash drive. If you use the flash drive method, I recommend Fedora Media Writer. It’s available for Windows, MacOS, and Linux, and will image pretty much any Linux distro to USB.
Once you’ve got a bootable DVD or flash drive, boot from it. Most servers and workstations will tell you which key to press on the keyboard to get to your BIOS/UEFI boot menu.
After booting, choose *Install Ubuntu Server.
Choose your language.
Choose your keyboard layout.
Choose Install Ubuntu.
I’m going to use DHCP for now and set static IP later when I configure the virtualization networks for KVM. If you need to configure a static IP, you can do so here.
If you use an internet proxy, set it here.
Choose the default Ubuntu mirror.
I prefer to use LVM in case I need to resize partitions in the future.
I’ll be using one SSD as a boot volume. Choose whichever drive you’ll be booting from. I’ll be using all of the rest of the drives for ZFS, so I’ll leave them as they are for now.
By default, Ubuntu will only use 4GB of your drive for the root partition. Since all of my other data will live my ZFS volumes, I’ll expand the volume to use the whole 1TB.
To change the size of the root volume, use the down arrow to chose “ubuntu-lv,” press Enter, then choose “Edit.”
Ubuntu will helpfully tell you the max size you can set the partition to. Enter that number and choose “Save.”
Let Ubuntu know your name, your computer’s name, the username you’d like to use, and the password you’d like to use.
You now have the option of installing a secure shell server. This will allow you to log in remotely. I’ll be installing this.
You also have the option of installing some other services. You can always install these later. I’ll be skipping them and just choosing “Done.”
When the installation has finished, choose “Reboot Now.”
Remove the bootable DVD or flash drive and press Enter.
Once the server has rebooted, you can log in to the server itself or via SSH (if you installed SSH).
If you need to find out your server’s IP address for SSH, log in via the console and run the following:
Then on the computer you are using to SSH into the server run:
ssh [username]@[ip address]
Before anything else, let’s make sure everything is up-to-date.
sudo apt upgrade
Once that has completed, you may need to reboot.
KDE On a Server?
Let’s get right to it: it’s not considered security-wise to install a GUI on a server. However, I’ll be using things like Handbrake and Virtual Machine Manager, so I’ll be putting on KDE. To add a bit of security and save memory, I’ll manually start KDE when I need it.
To install just the very minimum of KDE (you can always add the other bits later), run:
sudo apt install kubuntu-desktop --no-install-recommends
I’m also going to install a couple other KDE apps to make my life easier. KDE’s Konsole terminal and the dolphin file manager:
sudo apt install konsole dolphin
If you want all of KDE, and have it start be default, you can simply run this instead:
sudo apt install kubuntu-desktop
If GNOME is more your thing, you can install it with:
sudo apt install ubuntu-gnome-desktop
If you install just the minimum KDE, your server will still boot in console mode. To start KDE, simply log in and run:
Since I’ll often want to use the UI remotely, I’m also going to install a package called xrdp. This will serve a desktop over the RDP protocol so I can get a desktop remotely:
sudo apt install xrdp
This will install xrdp, configure the service to start automatically, and start the service. Once it’s finished, you can connect to your server’s IP address via any remote desktop app and use the same username and password you use to log in locally.