Skip to content

Basic Setup, Finally

Grapes hanging off a vine

I have been doing versions of this setup repeatedly over years. If I was smarter I would have written this down years ago. These steps are for Ubuntu 24.04; they should work with minimal modification for other Debian-based systems.

I’m now going to peel some grapes and make good use of all the time I just saved my future self.

I also saved a copy of these instructions on Github.

Update the install

sudo apt update

sudo apt upgrade

Install pw manager, import passwords

The process for doing this will vary based on the password manager you use. Depending on your use case, I recommend 1Password or KeepassXC.

Install curl

sudo apt install curl

Install Mullvad VPN

sudo curl -fsSLo /usr/share/keyrings/mullvad-keyring.asc

echo "deb [signed-by=/usr/share/keyrings/mullvad-keyring.asc arch=$( dpkg --print-architecture )] $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/mullvad.list

sudo apt update

sudo apt install mullvad-vpn

Install Gnome Tweaks

sudo apt update && sudo apt install gnome-tweaks -y

Play fun things

sudo apt install ubuntu-restricted-extras

Install VLC via the App store

Like it says.

Install Flatpak

Some things require this; get it in place ahead of time.

sudo apt install flatpak

sudo apt install gnome-software-plugin-flatpak

flatpak remote-add --if-not-exists flathub

Create ssh keys

ssh-keygen -t ed25519 -C ""

eval "$(ssh-agent -s)"

ssh-add ~/.ssh/id_ed25519

Verify Python is installed, and add some additional tools

python3 -V

sudo apt install -y build-essential libssl-dev libffi-dev python3-dev

sudo apt install -y python3-pip

sudo apt install -y python3-venv

Verify if git is installed; install it if needed

git --version

sudo apt install git

git config --global "your name"

git config --global "your_email"

Install SublimeText

wget -qO - | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/sublimehq-archive.gpg > /dev/null

echo "deb apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list

sudo apt-get update

sudo apt-get install sublime-text

Buy a license for Sublime. It’s awesome, pay them.

Install gdebi (for easier install of .deb packages)

sudo apt install gdebi

Install Obsidian

I downloaded the deb package from – I have found the deb package to be more reliable, but ymmv.

Once you have the deb file downloaded, cd to where it was downloaded and install it using gdebi. For me, this was:

cd ~/Downloads

sudo gdebi obsidian_1.6.3_amd64.deb

Install Node

Node can be installed in a few different ways. I prefer using Node Version Manager (NVM) to manage and install Node.

Get latest version from

These install instructions contain the two shell commands needed to install NVM.

Once you have installed NVM, enable it by running:
source ~/.bashrc

Then, install the LTS version of node:

nvm install --lts

If a specific application needs a different version, you can install it using NVM.

Install Java

Like Node, Java can be installed in a few different ways from different sources. I use the guide here to take the sting out of the decision making and review process:

Based on the guidance from WhichJDK, I used the Adoptium Eclipse Temurin v21 LTS version of Java. Seriously, it gets me tired just writing this name out; the Java world is way more convoluted than it needs to be. Thanks, Oracle.

The instructions to install Eclipse Temurin are available here:

Verify that some packages required for install are in place:

sudo apt install -y wget apt-transport-https gpg

I used a slightly different command than what’s listed on the install instuctions. Specifically, I added “sudo” to the tee commands in the next two install steps. Without this addition, the steps failed with a permissions issue because only the initial command (and not the subsequent piped commands) ran as sudo.

sudo wget -qO - | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null

sudo echo "deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list

sudo apt update

sudo apt install temurin-21-jdk


From download the Linux Installer. This should download a file named “ZAP_[VERSION_NUMBER]” – at the time of this writing, ZAP is on version 2.15.0, so the Linux Installer is named

In a terminal, navigate to ~/Downloads and make the install script executable:
chmod +x ./

Then, run the install script.

sudo ./

Install nmap

sudo apt install nmap

Nmap needs to run as root; this requirement can be sidestepped by allowing nmap to be run using the –privileged flag. To enable use of the –privileged flag:

sudo apt install libcap2-bin

sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip $(which nmap)

Install Wireshark

sudo add-apt-repository ppa:wireshark-dev/stable

sudo apt update

sudo apt install wireshark

Select “Yes” to allow non-superusers to capture packets. To complete the configuration steps that allow non-superusers to use Wireshark to capture network traffic, add the current user to the “wireshark” group.

sudo usermod -aG wireshark $(whoami)

Tshark is a command line version of wireshark I use in some cases; check if it is installed by:

which tshark

If this does not return anything, install tshark:

sudo apt install tshark

Then, shut down and restart your system to have the permissions created during the Wireshark and tshark install take effect.

When you reboot your system, verify that tshark is working by entering:

tshark -D

This will show all the network interfaces you can use to capture traffic.

Install Docker

Verify/install some required dependencies:

sudo apt-get install ca-certificates curl

sudo install -m 0755 -d /etc/apt/keyrings

sudo curl -fsSL -o /etc/apt/keyrings/docker.asc

sudo chmod a+r /etc/apt/keyrings/docker.asc

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli docker-buildx-plugin docker-compose-plugin

Add current user to the “docker” group. This is generally okay assuming that Docker is being installed on a laptop/computer that is only used by one trusted person. For more info see here:

sudo usermod -aG docker $USER

Shut down and restart the computer.

Verify the version of docker:

docker --version

Verify that Docker is running:

systemctl status docker (hit Shift-q to exit)

Test the Docker install:

docker run hello-world

Run MobSF

docker pull opensecurity/mobile-security-framework-mobsf:latest
docker run -it --rm \
-p 8000:8000 \


sudo apt install gimp


Install Base VirtualBox and the Extension Pack

sudo apt update

wget -O- | sudo gpg --dearmor --yes --output /usr/share/keyrings/oracle-virtualbox-2016.gpg

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] $(. /etc/os-release && echo "$VERSION_CODENAME") contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list

sudo apt install virtualbox-7.0

If you have secure boot enabled, walk through the steps displayed onscreen.

Add the current user to the ‘vboxusers’ group.
sudo usermod -a -G vboxusers $USER

Then, reboot your system. If you have Secure Boot enabled, you will need to enter your secure boot passcode (created while installing VirtualBox) during the login process.

Download the Extension Pack from

Start Virtual Box; add the Extension pack (Extension –> Install, or Ctrl-Shift-I)

Google Earth

sudo wget -qO - | gpg --dearmor | sudo tee /etc/apt/keyrings/google-earth.gpg >/dev/null

sudo sh -c 'echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/google-earth.gpg] stable main" > /etc/apt/sources.list.d/google-earth.list'

sudo apt update

sudo apt install google-earth-pro-stable