Installing a generic Ubuntu server

Disclaimer

This little tutorial is by no way exhaustively complete, but it provides a simple step-by-step guide on how to install a generic Ubuntu server. This article was written while working on the Active Directory, Samba Edition series, as I decided that such “generic” servers will be required in future tutorials.

It is presumed that you are able to use a command-line based text editor, such as vi or nano. If you don’t feel you’d be able to do that, read this article about the nano text editor first.

 

First things first

The hostnames and IP addresses of the Ubuntu Server we are going to install in this tutorial are as required for the Active Directory, Samba Series article series. NOTE: these series are still a work in progress, so please be patient. I will update this article as soon as the series are published.

To be more elaborate:

  • The hostname of the server is dc01.raginagi.local
  • The IP address is 10.5.5.10, with the netmask of /24 (255.255.255.0)
  • Default route (some might know this as “default gateway”) is 10.5.5.1.
  • For now, we are going to have only one DNS server specified, that is 8.8.8.8.
  • We are going to install everything on a single hard drive which has a size of 10 GiB (do not laugh here, this is a virtual machine ;))

In fact, the only way how this might differ from a “real iron” is MDRAID Linux software RAID configuration. And even then, if you have a supported hardware RAID controller, this is not something that you need. I promise to write a separate article on MDRAID later. ๐Ÿ™‚

Off we go

First, you need to download the Ubuntu Server 16.04 LTS ISO image from Ubuntu’s website and burn it to a DVD (burning is not required, of course, if you are installing a virtual machine). I am not going to elaborate on this here – just google it (or click here). ๐Ÿ™‚ As to edition which you should choose – if you are low on memory (less than 2 gigabytes), choose 32 bit, otherwise 64 bit is almost always preferred. In fact, if you are going to upgrade memory in the future, I highly recommend choosing a 64 bit edition in any case, as it is not possible to change over to 64 bits later – this requires a complete reinstall.

Then, boot your server from the install image.

First, the bootloader will allow you to choose the desired language. As to servers, I personally choose to select English regardless of the fact that my mothertongue, Latvian, is also available. If there are any error messages, it’s way easier to search them up in Google if they are in English. I am not so sure about other “large” languages, but this tutorial is for the English edition anyway. You are free to choose what you wish, though.

virtualbox_dc01-raginagi-local_18_06_2016_19_35_26

Next, you have several options to choose from:

virtualbox_dc01-raginagi-local_18_06_2016_19_36_03

Normally, you would choose “Install Ubuntu Server“. As to the second option, “Multiple server install with MAAS” – I will probably cover this in a future tutorial, but for now, just forget this. If you are using a physical DVD that you just burned, and not an ISO image that is mounted to a virtual machine, it might be a good idea to use the third option first, which will check whether your DVD reads well and without any errors. As to the fourth option, “Test memory” – it’s a good idea to run this tool, Memtest86+, on any physical machine prior to its deployment in production. Even if your server’s memory seems to be working at first, it may hide some treacherous problems that may surface later and create all kinds of stability issues with your server. As to the last 2 items, you do not need them to install your Ubuntu Server. You might need the last one, “Rescue a broken system“, if your installation has gone nuts, though, but this requires considerable amount of expertise anyway, and, should you be using this option, you probably do not need this tutorial at all.

Once the setup has booted (it’s pretty fast), you choose the installation language again. Choose whatever you wish, but please take into account the notice I gave previously. I would choose English.

virtualbox_dc01-raginagi-local_18_06_2016_19_36_34

Then, you may choose your country, i.e. your geographical location. If your country is not in this short list, choose “other” here. Afterwards, you will be able to choose your region (Europe in my case) and country (Latvia in my case).
virtualbox_dc01-raginagi-local_18_06_2016_19_36_53

While you chose your geographical location previously, now you have to choose your locale settings. They are also known as regional settings. Ehmm, this is all about how dates, time and numbers are displayed.
virtualbox_dc01-raginagi-local_18_06_2016_19_37_19

In the next screen, you are asked if you would like Ubuntu setup to detect your keyboard layout automatically or would like to select a default keyboard layout from a list. Normally, just choose “No” and select whatever you like. Note that this is a server, and you probably do not want anything else than English (US) keyboard. Should keyboards in your country have keys mapped in a different way, choose your country’s keyboard afterwards.
virtualbox_dc01-raginagi-local_18_06_2016_19_37_27

After a quick hardware detection procedure that follows, setup will try to bring up your networking. If you have multiple network cards, you will be asked which one will be used for now. First, autoconfiguration using DHCP will be attempted but, should you not have a DHCP server in your network, you will be presented with an opportunity to configure your network settings manually.
virtualbox_dc01-raginagi-local_18_06_2016_19_37_41

virtualbox_dc01-raginagi-local_18_06_2016_19_38_44

First of all, you will have to enter your server’s desired IP address:
virtualbox_dc01-raginagi-local_18_06_2016_19_38_56

Then, the netmask:
virtualbox_dc01-raginagi-local_18_06_2016_19_39_05

Default gateway, of course:
virtualbox_dc01-raginagi-local_18_06_2016_19_39_14

And name (DNS) servers, of course. If you happen to have multiple name servers, enter them all in that single line, separated by spaces.
virtualbox_dc01-raginagi-local_18_06_2016_19_39_24

The next thing is setting the hostname. For our example, we will be installing the first domain controller of our Samba domain, so let the hostname be “dc01“:
virtualbox_dc01-raginagi-local_18_06_2016_19_40_48

Then, the domain has to be entered. We will be provisioning the “raginagi.local” Active Directory domain later, so let’s use the same one here.
virtualbox_dc01-raginagi-local_18_06_2016_19_40_59

After that, you will have to enter the full name of the administrative local user. In UNIX-type systems, historically the “root” user has been the one which can do everything, including wiping out the system without any confirmations. Ubuntu has the root user disabled by default (it can be enabled later, when the system is installed), so let’s create a user called “administrator”.
virtualbox_dc01-raginagi-local_18_06_2016_19_41_14

We entered the user’s full name previously, so now let’s enter its username:
virtualbox_dc01-raginagi-local_18_06_2016_19_41_25

Obviously, a password has to be set as well. Choose a decent one.
virtualbox_dc01-raginagi-local_18_06_2016_19_41_40

virtualbox_dc01-raginagi-local_18_06_2016_19_41_47

It is possible to encrypt the user’s home directory (user profiles are called their home directories in UNIX type systems). Let’s choose “No” for now when asked.

Now, we have arrived at one of the most funny parts – disk partitioning. As this is a good topic by itself, and to make it easier to write and publish additions to this article later, this is a separate chapter.

Disk partitioning

While Ubuntu setup offers you to partition your disks automatically, I usually choose “manual” just to have some more granular control over the process. In some situations, it might not be easy to change this configuration later, so it’s better to do things well since the very start.
So, let’s choose “Manual”.
virtualbox_dc01-raginagi-local_18_06_2016_19_42_56

Given that your hard drives are fresh and contain no partitions on them, you will see all of them in this list.
virtualbox_dc01-raginagi-local_18_06_2016_19_43_06

Highlight and press Enter on each to create an empty partition table on the drive you are going to install the system to. They are actually not yet written to the disks, but this operation is neccessary to be able to create the partitions themselves.
virtualbox_dc01-raginagi-local_18_06_2016_19_43_14

After the partitions are created, you will see “free space” under each disk drive.
virtualbox_dc01-raginagi-local_18_06_2016_19_43_23

As we have only one hard drive in our current configuration, we want to create two partitions on it. One would be used for the swap file, the other for the system itself.

Highlight the “free space” line and press Enter on it do open the partition creation dialog.
virtualbox_dc01-raginagi-local_18_06_2016_19_43_28

After you choose “Create a new partition”, you will be asked for its size. As the first partition will be used for swap, let’s enter 1 GB here. Yes, just type in “1 GB” and press Enter. As to swap size, the rule of thumb, at least in the good old days, was to create swap 2 time the size of RAM, but in my experience, these days, if you have enough RAM, you can live with a very small swap partition or even without it.
virtualbox_dc01-raginagi-local_18_06_2016_19_43_37

After that, you will be asked about the partition’s type. For the good old MBR partitions, you can have just 4 of them. To work around this, one of those 4 can be created as a “extended” partition and host some more partitions. As we are going to use just 2 partitions on our hard drive, let’s choose “Primary” here.
virtualbox_dc01-raginagi-local_18_06_2016_19_43_43

Location? Beginning of the free space, obviously.
virtualbox_dc01-raginagi-local_18_06_2016_19_43_48

Now it’s getting interesting. “Use as” allows us to choose what we are going to use this partition for. Choose “swap area” here. While Linux systems do allow to use a swap file instead of a swap partition, partition will be faster due to lack of file system overhead. After you are done, navigate to “Done setting up the partition” and press Enter.
virtualbox_dc01-raginagi-local_18_06_2016_19_44_00

As you see, now we have a single partition created, as well as some free space left over. Highlight “free space” again and press Enter on it to create another partition.
virtualbox_dc01-raginagi-local_18_06_2016_19_44_09
virtualbox_dc01-raginagi-local_18_06_2016_19_44_18

As to size, leave whatever it offers – that’s the remaining amount of free space on this disk. You may enter your own amount here, should you wish to do so.
virtualbox_dc01-raginagi-local_18_06_2016_19_44_24

Primary, again.
virtualbox_dc01-raginagi-local_18_06_2016_19_44_30

Partition settings:
virtualbox_dc01-raginagi-local_18_06_2016_19_44_52

I suppose I need to elaborate on this a little bit. “Use as” is set to “btrfs journaling file system“. It’s the brand new, glossy & shiny filesystem for Linux with an aim to replace the previous ext4. While ext4 works pretty well, I personally miss the ability to create volume snapshots on it to be able to take “frozen”, consistent backups. btrfs has lots and lots of more interesting features. You MAY choose “ext4 journaling file system” here, but I’d choose BTRFS. You can read more about it on Wikipedia.

As to mount point, choose “/” here. See, UNIX systems do not have drive letters like Windows does. Instead, you have some kind of a “root” or “/“, as it is called, file system, and “mount” all other devices in empty directories withing the “root” or any previously mounted file systems. Such empty directories are called mount points. The “root” file system has the mount point called “/“. Also note that UNIX systems, including Ubuntu, use “/” as a directory separator, unlike Microsoft Windows, which uses “\“.

Otherwise than setting these who items, you’re done. Press “Done setting up the partition“. Alternatively, for instance if you are using SSD, you may wish to select “Mount options” and select “noatime” and “nodiratime“. This means the file system will not write information about the last access time of files (noatime) and directories (nodiratime). This will reduce the amount of disk writes and thus lengthen the lifespan of your SSD.
virtualbox_dc01-raginagi-local_18_06_2016_19_45_01

When you’re done, choose “Finish partitioning and write changes to disk“.
virtualbox_dc01-raginagi-local_18_06_2016_19_45_12

You will be asked for a confirmation.

virtualbox_dc01-raginagi-local_18_06_2016_19_45_19

Finishing the installation

The next thing you need to choose is whether your network requires a proxy to access the Internet. If you haven’t heard this word before or are unsure, just leave this blank. ๐Ÿ™‚
virtualbox_dc01-raginagi-local_18_06_2016_19_48_42

Next, you need to choose what to install. As we can (and will) install all the necessary packages after the system is up, choose “OpenSSH server” to be able to access the machine via SSH later, using PuTTY on Windows, OpenSSH client on Linux or any other SSH client application.
virtualbox_dc01-raginagi-local_18_06_2016_19_50_58

After that, the actual installation will take place.
virtualbox_dc01-raginagi-local_18_06_2016_19_51_39

The GRUB boot loader is a tiny program which starts up before the Linux is loaded and its task is, ehmm, to start up your Ubuntu Linux system. So, yes, you want to install it.
virtualbox_dc01-raginagi-local_18_06_2016_19_54_00

Seems that we are done. Press “Finish” to reboot. Your DVD will be ejected and your server (or virtual machine) will reboot into the brand new Ubuntu Server operating system.
virtualbox_dc01-raginagi-local_18_06_2016_19_54_22

While some might think this doesn’t look very shiny, this is how an Ubuntu Server looks like:
virtualbox_dc01-raginagi-local_18_06_2016_19_54_50

Type in the username (administrator) and password you entered during the installation process. Please note that, while you type in your password, no placeholder characters such as “*” will be typed. For novices, this may lead to an impression that something is not working as it should. It does work, though. Just type in your password and press Enter.

Once you are logged in, type this command:

sudo apt-get update

virtualbox_dc01-raginagi-local_18_06_2016_19_55_13

What it does is it updates the software information in the software repositories. Such repositories are something akin to Apple’s AppStore or Google Play. Updating repositories is similar to checking for updates in Windows systems.

Once you press Enter, you will be asked for your password again. See, I wrote about the root user previously. Our user, administrator, is not as powerful and can’t do system-related tasks without the sudo command. sudo means “Super User DO“, and allows, after confirming this with your password, to perform administrative activities. Think of it as something similar as Windows UAC, although it must be admitted that sudo existed before Windows was even conceived. ๐Ÿ™‚
virtualbox_dc01-raginagi-local_18_06_2016_19_55_25

Once the repositories have been updated, type another command:

sudo apt-get dist-upgrade

virtualbox_dc01-raginagi-local_18_06_2016_19_57_43

This will update your system.

virtualbox_dc01-raginagi-local_18_06_2016_19_57_50

When the upgrade tool asks whether you want to download and update the specified packages, type Y and press Enter.

When the packages are updated, you might also wish to reboot the server, using this command:
sudo reboot

Should you wish to shut it down, type in this:
sudo shutdown -h now

Now you know some of the most basic commands as well, and they will be used in other tutorials in this blog. ๐Ÿ™‚

Enabling the root user (purely optional)

There are actually two steps you might want to perform. One of them is enabling console login and another is allowing root to log in via SSH, which also requires the first step to be done. While this may reduce the security of your server, should you wish to enable root, do this:

  1. Log in as administrator user
  2. Type in this command:

sudo su -

As explained previously, sudo means execution of a command with superuser (root) privileges. su -, on the other hand, changes the user (Switch User). As we are executing it with superuser privileges, in this particular case we will get switched over to root user.

3. Type in this command:
passwd root

This command will ask you to enter a password for the root user. Choose a good, secure password for this and enter it here. Afterwards, you will have to re-enter it again.

4. Type “exit“, then press Enter, then “exit” again, then Enter, to log out from the system.
5. Log in as the “root” user.

To enable remote access via SSH using the root credentials, you will also have to edit the /etc/ssh/sshd_config file, find the line called “PermitRootLogin” and replace “WithoutPassword” with “yes“. Then, restart the SSH daemon or reboot your server.

Congratulations! Now you have a generic Ubuntu server running and can proceed with other tutorials that refer to this one.