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 and founder with a background in finance and tech. Currently building aVenture.vc, a platform for researching private companies. 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

My list of useful 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 worked well for me across multiple server setups.

Similar Content

Home
CV
ExperienceEducation
ProjectsBookmarksInvestmentsContactBlog
Welcome! Type "help" for available commands.
$
Loading terminal interface...

Similar Content

Related Articles

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

serverlinuxdockersecuritytutorialmachine+7
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)

How to create a Spring Boot application with RESTful APIs and static web content using Maven and IntelliJ IDEA in modern Java.

spring bootjavamavenintellij idearest apiweb development+10
BLOG

Related Bookmarks

skeptrune.com
November 26, 2025
How I Use Claude Code & SSH on My Phone with Termux and Tailscale

How I Use Claude Code & SSH on My Phone with Termux and Tailscale

You don’t need a new startup or third-party service to use Claude Code on your phone. You just need SSH, Tailscale, and Termux. Here’s how to code fro...

claude coderemote developmentmobile developmentssh and terminal accesstailscalephone+7
LINK
v5.ai-sdk.dev
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 apistypescript examplesserver-sent eventscustom+4
LINK
seangoedecke.com
December 4, 2025
Everything I know about good API design

Everything I know about good API design

Most of what modern software engineers do involves APIs: public interfaces for communicating with a program, like this one from Twilio. I’ve spent a l...

software engineeringapi designbackend developmentapi versioningrest apigood+7
LINK

Related Projects

Filey - Flag Deprecated Files Extension

Filey - Flag Deprecated Files Extension

VS Code extension for flagging deprecated files

vs codevisual studio codecursorwindsurftypescriptdeveloper tools+14
PRJ

Related Books

Essential TypeScript 5, Third Edition

Essential TypeScript 5, Third Edition

Adam Freeman

"TypeScript is a popular superset of JavaScript that adds support for static typing. TypeScript's typing features, which will be instantly familiar to...

computersadam freemansimon and schustertypescriptessentialthird+5
BOOK
Spring AI in Action

Spring AI in Action

Craig Walls

Use Spring AI to add generative AI features like virtual assistants, text summaries, and suggestions to your Java applications. No matter what kind of...

computerscraig wallssimon and schusterspringactionfeatures+5
BOOK
The Joy of JavaScript

The Joy of JavaScript

Luis Atencio

The Joy of JavaScript introduces techniques that turn JavaScript programmers into JavaScript pros. Summary Whether building interactive browser-based...

computersluis atenciosimon and schusterjavascriptjoyapplications+5
BOOK

Related Investments

AngelList

AngelList

aVenture

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

investment platformsotheractiveangellistplatformgrowth+5
INV
NorthOne Business Banking

NorthOne Business Banking

Digital banking platform designed specifically for small businesses and startups.

financeseries cactivebankingnorthonebusiness+5
INV
Sudrania

Sudrania

Fund administration and accounting platform for investment managers.

financeseries aactivesudraniaplatforminvestment+4
INV