Ubuntu Terminal Add-Ons And Applications Every Platform Engineer Should Have
After breaking my XORG profile in my Ubuntu work computer I decided, rather than spend more time trying to fix it, I should do a fresh install.
Since I’ll be installing everything from scratch it’s a good opportunity to write about it. If you are not interested in Ubuntu maybe check this article instead: Mac Terminal Add-Ons Every Platform Engineer Should Have
Installing Ubuntu
Before we can install everything from scratch we need to install Ubuntu. This is a very straightforward process :
Step 1: Download the ISO I’m going with 22.04.3
Step 2: Download Rufus & set up boot USB
Step 3: Install Ubuntu
Fresh Start
These are my preferred applications that I always install on a fresh computer
Barrier
The first thing I always install is Barrier, which allows me to use my Windows keyboard and mouse with my other computers
sudo apt install barrier
Chrome
Despite the hate Chrome gets these days I still use it almost every day, also there are several add-ons for Chrome that are essential to what I do.
Caffeine
Have you ever used a full-screen application and had to move the mouse to keep the screen from turning off?
sudo apt install caffeine
Slack
Used for work and for friend groups
sudo snap install slack
Zoom
From the website — https://zoom.us/download?os=linux
sudo apt install ./zoom_amd64.deb
NetSpeed
You would think living in London would mean you have good internet. Wrong. Because of this, I like to keep a network monitor display on the taskbar to see if the internet is slow on my side or on the side of the server.
This one takes some installation. First is chrome-gnome-shell
sudo apt install chrome-gnome-shell
Then Extension Manager from the Ubuntu Software app. From the Extension Manager app search for Net Speed. There are only 2 and only one is supported.
VS Code
My preferred code editor — https://code.visualstudio.com/docs/setup/linux
sudo apt install ./<file>.deb
PulseAudio for Ubuntu
PulseAudio gives you more control over your recording devices as well as well as playback devices. Very handy if you have more than one device.
sudo apt install pulseaudio -y
sudo apt install pavucontrol -y
Terminal Applications
Now we move to terminal add-ons and terminal-only applications like aws and kubectl. But before we start configuring and installing all the other applications in the terminal let’s pump the terminal interface with Oh My ZSH
ZSH
sudo apt install zsh
Great tutorial by @satriajanaka09
Dependencies
- Install Git —
sudo apt install git
- Install Curl —
sudo apt install curl
- Install Git —
sudo apt install vim
(I thought that would have been installed by default but apparently not)
AWS
From the AWS website: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Kubectl
Essentials — https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/
kubectx and kubens
sudo git clone https://github.com/ahmetb/kubectx /opt/kubectx
sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens
mkdir -p ~/.oh-my-zsh/custom/completions
chmod -R 755 ~/.oh-my-zsh/custom/completions
ln -s /opt/kubectx/completion/_kubectx.zsh ~/.oh-my-zsh/custom/completions/_kubectx.zsh
ln -s /opt/kubectx/completion/_kubens.zsh ~/.oh-my-zsh/custom/completions/_kubens.zsh
echo "fpath=($ZSH/custom/completions $fpath)" >> ~/.zshrc
PIP
Python3 comes preinstalled with Ubuntu 22.04 but pip doesn’t come with it.
sudo apt install python3-pip
Vault
I use Hashicorp’s Vault quite a lot for work and for personal projects.
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install vault
jq
jq is a command line based JSON processor that allows to transform, filter, slice, map, or perform other operations on JSON data.
sudo apt install -y jq
yq
Similar to jq but for yml outputs.
sudo snap install yq
libkecca & sha3sum
I was surprised that this wasn’t installed on Ubuntu 22.04. This is handy for working with key pair keys
git clone https://github.com/maandree/libkeccak
cd libkeccak
make
sudo make install
cd ..
git clone https://github.com/maandree/sha3sum.git
cd sha3sum
autoreconf -i
./configure
make
sudo make install
SSH Keys
Whether you are using Gitlab, Github or BitBucket you need to generate SSH keys and upload them to your repo.
ssh-keygen -t ed25519
cat /home/<user>/.ssh/id_ed25519.pub
There will be applications that I will have forgotten but I will keep this article updated with any new stack that I end up using or that I forgot.
Single Script
#!/bin/bash
# Update package list and upgrade existing packages
sudo apt update
sudo apt upgrade -y
# Install Barrier
sudo apt install barrier -y
# Install Chrome
# You can manually download Chrome from the website and install it.
# Install Caffeine
sudo apt install caffeine -y
# Install Slack
sudo snap install slack --classic
# Install Zoom
# Download Zoom from the website and then install it.
# Example: sudo apt install ./zoom_amd64.deb
# Install NetSpeed
sudo apt install chrome-gnome-shell -y
# Install Extension Manager manually as described
# Search for and install Net Speed extension
# Install VS Code
# Download VS Code .deb package from the website and install it.
# Example: sudo apt install ./<file>.deb
# Install PulseAudio
sudo apt install pulseaudio pavucontrol -y
# Install ZSH
sudo apt install zsh -y
# Install ZSH dependencies
sudo apt install git curl vim -y
# Install AWS CLI
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# Install kubectl
# Follow the provided link for installation instructions
# Install kubectx and kubens
sudo git clone https://github.com/ahmetb/kubectx /opt/kubectx
sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens
mkdir -p ~/.oh-my-zsh/custom/completions
chmod -R 755 ~/.oh-my-zsh/custom/completions
ln -s /opt/kubectx/completion/_kubectx.zsh ~/.oh-my-zsh/custom/completions/_kubectx.zsh
ln -s /opt/kubectx/completion/_kubens.zsh ~/.oh-my-zsh/custom/completions/_kubens.zsh
echo "fpath=($ZSH/custom/completions $fpath)" >> ~/.zshrc
# Install Python3 pip
sudo apt install python3-pip -y
# Install Vault
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install vault -y
# Install jq
sudo apt install -y jq
# Install yq
sudo snap install yq
# Install libkecca and sha3sum
git clone https://github.com/maandree/libkeccak
cd libkeccak
make
sudo make install
cd ..
git clone https://github.com/maandree/sha3sum.git
cd sha3sum
autoreconf -i
./configure
make
sudo make install
# Generate SSH Keys (Replace <user> with your username)
ssh-keygen -t ed25519
cat /home/<user>/.ssh/id_ed25519.pub
# You may need to manually configure and upload SSH keys to your Git repositories
echo "All installations and configurations are complete."