Back to Blog

Setting Up a New PC / Server with Pop!_OS 22.04

September 25, 2024
William Callahan
William Callahan

Software engineer and entrepreneur based in San Francisco.

linuxpop-osservertutorialchecklist
Setting Up a New PC / Server with Pop!_OS 22.04

I use a lot of checklists -- here's another one of mine, this time for setting up a PC / server with Pop!_OS. While these instructions are written specifically for Pop!_OS, they should work similarly for Ubuntu with minor adjustments.

Pre-Installation Steps

1. BIOS Configuration

Most modern PCs require disabling Secure Boot and TPM/device security features to install Linux distributions. To access BIOS:

  1. Power on your PC
  2. Immediately press and hold the Delete key
    • If that doesn't work, try tapping F2, F8, or F12 during startup
    • Different manufacturers use different keys, but Delete is increasingly common

Navigate to:

  • Security/Boot section
  • Disable "Secure Boot"
  • Disable "TPM Security" if present
  • Save changes and exit

2. Boot Order Configuration

While still in BIOS:

  1. Navigate to Boot Order/Boot Priority section
  2. Move USB drive to the top of the boot order
  3. Save changes and exit

3. Prepare Installation Media

  1. Download the OS:
  2. Download Etcher to create bootable USB
  3. Use Etcher to flash the OS image to your USB drive

Installation Process

Partitioning Guide

When you reach the disk partitioning step, here's how to set up your partitions:

Why These Partitions?

  • EFI partition stores bootloader files
  • Root partition holds your OS and all data
  • Modern systems with sufficient RAM often don't need swap

EFI System Partition

bash
Partition Name: EFI
Label: EFI
Create as: Primary Partition
File System: fat32
Mount point: /boot/efi
Size: 1GB  # Being generous for safety

Root Partition

bash
Partition Name: Root
Label: Pop_OS
Create as: Primary Partition
File System: ext4
Mount point: /
Size: Remaining space

💡 Pro tip: Leave 10MB free space before and after partitions for potential future adjustments.

Post-Installation Setup

System Updates

APT vs Pop!_Shop Pop!_OS uses APT for CLI package management and Pop!_Shop for GUI. Stick to one to avoid conflicts - I prefer APT for servers.

bash
# Update package lists and upgrade system
sudo apt update
sudo apt upgrade

Setting Hostname

bash
sudo hostnamectl set-hostname NEW_HOSTNAME

SSH Server Setup

Why SSH? SSH provides secure remote access to your server. Using key-based authentication is more secure than passwords.

bash
# Install SSH server
sudo apt install openssh-server

# Configure SSH
sudo nano /etc/ssh/sshd_config

Add/modify these lines:

bash
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Set up SSH keys:

bash
# Create .ssh directory
sudo mkdir -p ~/.ssh
sudo chmod 700 ~/.ssh

# Add your public key
echo "your-public-key" > ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

# For root (if needed)
sudo mkdir -p /root/.ssh
sudo chmod 700 /root/.ssh
sudo cp ~/.ssh/authorized_keys /root/.ssh/
sudo chmod 600 /root/.ssh/authorized_keys

Docker Installation

Why Docker? Docker containers provide isolated environments for running applications, making deployment and management easier.

Follow the official Docker installation guide for the latest instructions.

AppImage Management

bash
# Create applications directory
sudo mkdir -p /opt/applications

# For each AppImage:
chmod +x your-app.AppImage
sudo mv your-app.AppImage /opt/applications/

# Create desktop entry
cat << EOF > ~/.local/share/applications/your-app.desktop
[Desktop Entry]
Name=Your App Name
Exec=/opt/applications/your-app.AppImage
Icon=/path/to/icon.png
Type=Application
Categories=Utility;
EOF

Set Micro as Default Editor

bash
# Install Micro
sudo apt install micro

# Set as default editor
sudo update-alternatives --install /usr/bin/editor editor /usr/local/bin/micro 100
sudo update-alternatives --config editor

# Configure for git
echo 'export VISUAL=micro' >> ~/.bashrc
echo 'export EDITOR=micro' >> ~/.bashrc
source ~/.bashrc

Enable Automatic Reboot

bash
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Essential Tools Installation

Here's my curated list of must-have tools for development:

ToolDescriptionInstallation
HomebrewPackage manager/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
LazygitGit TUIbrew install lazygit
LazydockerDocker TUIbrew install jesseduffield/lazydocker/lazydocker
Node.js & npmJavaScript runtimecurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
pnpmFast package managernpm install -g pnpm
PythonPython runtimesudo apt install python3 python3-pip
pipxPython app installerpython3 -m pip install --user pipx
uvFast Python packagercurl -LsSf https://astral.sh/uv/install.sh | sh
WarpModern terminalVisit warp.dev for installation
MicroTerminal editorsudo apt install micro

Remember to test all services and configurations before considering the setup complete. This checklist has served me well in setting up numerous servers - I hope it helps you too!