Server Setup

Initial Server Setup with Arch Linux: A Step-by-Step Guide

Arch Linux is renowned for its simplicity, transparency, and customization capabilities. Unlike many other Linux distributions, Arch doesn’t come with a pre-configured environment or user-friendly installers. Instead, it offers users the opportunity to build their systems from the ground up. Whether you’re setting up a home server, a cloud instance, or a personal development environment, this guide will walk you through the initial server setup with Arch Linux.

Why Arch Linux?

  1. Rolling Release Model: Arch provides a continuous update system, meaning you are always on the latest packages without needing to reinstall or upgrade periodically.
  2. Customization: Arch allows you to start with a minimal base install and build the system as per your needs.
  3. Learning Experience: The installation process is a fantastic way to deepen your understanding of Linux and system administration.
  4. Arch User Repository (AUR): A huge repository of user-contributed packages, offering a vast selection of software.

Pre-requisites

Before diving into the installation process, here’s what you need:

  • A server or virtual machine with at least:
  • 512 MB RAM (1 GB is recommended)
  • 2 GB of disk space
  • An internet connection to download packages and updates.
  • Familiarity with command-line operations.

Step 1: Downloading and Booting the Arch Linux ISO

  1. Download the Arch Linux ISO: Visit Arch Linux’s official site and download the latest ISO.
  2. Create a bootable USB drive: You can use tools like Rufus (Windows), Etcher (cross-platform), or dd (Linux) to create a bootable USB drive.
  3. Boot into the live environment: Insert your USB stick into the server and boot from it. You may need to configure the BIOS/UEFI settings to permit booting from USB.

Step 2: Setting the Keyboard Layout

After booting into the live environment, set your keyboard layout if necessary:

loadkeys us   # Replace 'us' with your layout code if different

Step 3: Connecting to the Internet

To connect to your network, use the following commands:

  • For Ethernet connections (usually automatic):
ip link
  • For Wi-Fi connections:
  1. Identify your wireless interface (commonly wlan0):
ip link
  1. Connect using iwctl:
iwctl

Within the iwctl prompt:

station <YOUR_INTERFACE> connect <YOUR_SSID>

Replace <YOUR_INTERFACE> and <YOUR_SSID> with your actual interface name and SSID.

Step 4: Updating System Clock

Before proceeding, synchronize the system clock:

timedatectl set-ntp true

Verify the time settings with:

timedatectl status

Step 5: Partitioning the Disk

You can use cfdisk, fdisk, or parted to partition the disk. Here’s a simple example using cfdisk:

cfdisk /dev/sda

A typical setup might include:

  • A root partition (/).
  • Optionally a swap partition (especially if you have limited RAM).
  • Filesystem types are usually ext4.

Format your root partition:

mkfs.ext4 /dev/sda1   # Replace with your actual partition name

If you created a swap partition, format it as well:

mkswap /dev/sda2
swapon /dev/sda2

Step 6: Mounting the Filesystem

Next, mount the newly created root partition:

mount /dev/sda1 /mnt

Step 7: Installing the Base System

Install the base packages and some additional utilities:

pacstrap /mnt base linux linux-firmware vim networkmanager

Step 8: Generating fstab

Create an fstab file to manage filesystem mounting:

genfstab -U /mnt >> /mnt/etc/fstab

Step 9: Chroot into Your New System

Change the root into your newly installed system:

arch-chroot /mnt

Step 10: Configuring the System

  1. Set the Time Zone:
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
hwclock --systohc
  1. Localization: Open /etc/locale.gen and uncomment your desired locales, then generate them:
locale-gen

Set your locale in /etc/locale.conf:

echo "LANG=en_US.UTF-8" > /etc/locale.conf
  1. Network Configuration:
  • Set the hostname:
echo "myhostname" > /etc/hostname
  • Configure /etc/hosts:
echo "127.0.0.1   localhost" >> /etc/hosts
echo "::1         localhost" >> /etc/hosts
echo "127.0.0.1   myhostname.localdomain myhostname" >> /etc/hosts
  1. Install a Boot Loader:

If you are using BIOS, install GRUB:

pacman -S grub
grub-install --target=i386-pc /dev/sda   # Adjust /dev/sda to your disk device
grub-mkconfig -o /boot/grub/grub.cfg

For UEFI systems, installation will differ slightly. Refer to the Arch Wiki for detailed steps.

Step 11: Exiting Chroot and Rebooting

Exit the chroot environment:

exit

Unmount partitions:

umount -R /mnt

And then reboot your system:

reboot

Step 12: Post-Installation Setup

After rebooting, you’ll be greeted by a fresh Arch Linux installation. From here, you can:

  • Enable NetworkManager:
systemctl enable NetworkManager
  • Install additional packages using pacman, such as a graphical environment, web server, or any software that meets your needs.
  • Create a new user and configure sudo access.
useradd -m -G wheel username
passwd username

Remember to set up the sudo group in the /etc/sudoers file using visudo.

Conclusion

Setting up a server with Arch Linux might seem daunting at first, but it is a rewarding experience that allows you full control and understanding of your environment. With this minimal setup guide, you are now on your way to harnessing the power of Arch Linux for your server needs. Stay tuned for more tutorials on managing your new Arch server, optimizing its performance, and securing it against potential threats. Happy hosting!