Welcome! Type "help" for available commands.
$
Loading terminal interface...
Back to Blog

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

September 25, 2024
William Callahan

Software engineer, founder, and leadership background in finance/tech. 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:
    • Pop!_OS 22.04
    • Or Ubuntu 22.04 if you prefer
  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

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

Root Partition

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.

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

Setting Hostname

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.

# Install SSH server
sudo apt install openssh-server

# Configure SSH
sudo nano /etc/ssh/sshd_config

Add/modify these lines:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Set up SSH keys:

# 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

# 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

# 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

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!

Similar Content

HomeExperienceEducationCVProjectsBookmarksInvestmentsContactBlog
Welcome! Type "help" for available commands.
$
Loading terminal interface...

Similar Content

Related Articles

BLOG
August 30, 2024
New Virtual Machine Server Setup Checklist

New Virtual Machine Server Setup Checklist

A detailed guide to setting up a new Linux virtual machine server, from initial updates to security hardening

serverlinuxdocker+10 more
William CallahanWilliam Callahan
BLOG
May 12, 2025
Setting Up a Modern Spring Boot Web Server with REST API & Web Content (2025 Guide)

Setting Up a Modern Spring Boot Web Server with REST API & Web Content (2025 Guide)

A comprehensive guide to creating a Spring Boot application with RESTful APIs and static web content using Maven and IntelliJ IDEA's latest features i...

spring bootjavamaven+13 more
William CallahanWilliam Callahan
BLOG
September 25, 2025
How to Secure Environment Variables for LLMs, MCPs, and AI Tools Using 1Password or Doppler

How to Secure Environment Variables for LLMs, MCPs, and AI Tools Using 1Password or Doppler

Stop hardcoding API keys in MCP configs and AI tool settings. Learn how to use 1Password CLI or Doppler to inject secrets just-in-time for Claude, Cur...

security1passworddoppler+13 more
William CallahanWilliam Callahan

Related Investments

INV
December 31, 2022
AngelList

AngelList

Platform connecting startups with investors, talent, and resources for fundraising and growth.

investment platformsotheractive+8 more
aVenture
INV
December 31, 2021
NorthOne Business Banking

NorthOne Business Banking

Digital banking platform designed specifically for small businesses and startups.

financeseries cactive+8 more
INV
December 31, 2021
Sudrania

Sudrania

Fund administration and accounting platform for investment managers.

financeseries aactive+7 more

Related Bookmarks

LINK
July 1, 2025
The New Skill in AI is Not Prompting, It’s Context Engineering

The New Skill in AI is Not Prompting, It’s Context Engineering

Context Engineering is the new skill in AI. It is about providing the right information and tools, in the right format, at the right time.

context engineeringprompt engineeringai agents+10 more
philschmid.de
LINK
July 28, 2025
Streaming Custom Data

Streaming Custom Data

Learn how to stream custom data from the server to the client.

real-time dataai sdksstreaming apis+7 more
v5.ai-sdk.dev
LINK
September 16, 2025
consent.io - The Privacy Infrastructure for Developers

consent.io - The Privacy Infrastructure for Developers

Developer-friendly tools for GDPR compliance, consent management, and privacy-first data collection. Build trust with your users while staying complia...

open source softwareconsent management platformsgdpr compliance+10 more
consent.io

Related Projects

PRJ
Filey - Flag Deprecated Files Extension

Filey - Flag Deprecated Files Extension

VS Code extension for flagging deprecated files

vs codevisual studio codecursor+17 more
PRJ
repo-tokens-calculator

repo-tokens-calculator

CLI token counter (Python + tiktoken + uv) with pretty summary

clipythontiktoken+11 more
PRJ
ComposerAI

ComposerAI

AI email client / mailbox for agentic search and tasks

aiemail clientllm+13 more