<aside> 👉 This is a more opinionated post than usual: I live on the command line on Linux. As such, I perform a few extra steps after a fresh installation to get to a “usable” system.
</aside>
Revision: 20250121-0 (init
: 20240524)
This post discusses post-installation steps for a Ubuntu (Desktop, minimal install) Noble Numbat installation. Some will adapt to server instances. Please use its components as you see fit.
Ubuntu 24.04 LTS (Noble Numbat) is a significant release with several notable improvements and features. I will note only a few:
A few of the novel changes in Noble Numbat can be seen
This is a quick guide to get some functionalities in place for using the OS.
Desktop installs do not install openssh-server
during setup. I want ssh
access to this box:
sudo apt install openssh-server
After copying my .ssh
keys over, I also sudo apt [keychain](<https://wiki.gentoo.org/wiki/Keychain>)
Tailscale is a Zero-Conf Virtual Private Network (VPN) that creates a NAT-traversal-capable Mesh Network over Wireguard. The IPs in your mesh are on the 100.
subnet, a range of IP addresses reserved for Carrier-Grade NAT (CGNAT).
To clarify the above slightly:
I have been a Tailscale believer since 2021. In 2022, I even wrote a piece on “desktop access on Unraid using a Jump Desktop RDC with an ssh-tunnel over Tailscale.”
Tailscale provides many other features (Magic DNS, Exit Node with Mullvad integration, Taildrop, …). For an excellent technical overview of the solution, please see https://tailscale.com/blog/how-tailscale-works
Once you have your account, follow the Ubuntu Installation steps (you might need to sudo apt install curl
first).
For remote access systems (or servers), you can also Disable key expiry
from your Machines
dashboard’s host menu.
If you are a NextDNS.io customer, go to your https://my.nextdns.io/ page and look up the Linux’s “systemd-resolved” instructions.
Edit the /etc/systemd/resolved.conf
file and enter the provided configuration data.
If you want to track the device, add its name before the NextDNS ID. For example, if you have something like DNS=IPv4or6#ID.dns.nextdns.io
adapt it to show your HOST
: DNS=IPv4or6#HOST-ID.dns.nextdns.io
as described in the “Identify your devices” section of that page.
Restart the service for the changes to take effect: sudo service systemd-resolved restart
The purpose of this remote desktop is to allow access to the remote screen from the login window and enable my user to perform operations on it. I used to be an x11vnc
user. With the transition to Wayland, I started looking for alternate solutions and settling on NoMachine, which adds sound and allows users to drop files from one system to another. Because I am the only person accessing the system, I only need one connection, be it the local subnet (direct or Wireguard VPN) or Tailscale.
After downloading the .deb
file for our x86_64
system, and sudo dpkg -i
installing it, the tool will enable the NX
service on port 4000.
Because we will likely have many interfaces created when we add Dockge to our system, we will edit the /usr/NX/etc/server.cfg
file to modify the NXdListenAddress
setting only to access the subnet IP of our host to be used. Many other settings can be changed from the configuration file; please see https://kb.nomachine.com/AR02N00877 for additional details.
From the “NoMachine” application, select “Settings → Server → Security” so we can control host access further:
Please refer to “Unattended Upgrades on Ubuntu Linux” for details on how to do this.
Unattended Upgrades on Ubuntu Linux (Rev: 20240622-0)
Ubuntu’s Hardware Enablement (aka “LTS Enablement Stacks”) is meant to support a more recent kernel. The Linux kernel is the core part of the system that manages hardware and system resources like memory, CPU, and devices. It doesn’t include user tools or interfaces. The Linux operating system (here, Ubuntu 24.04) consists of the kernel plus everything else needed to use a computer — like system libraries, software tools, and user interfaces.
To install the latest kernel supported by the OS (as of April 2025, on 24.04, that would be kernel 6.11), use:
sudo apt-get install --install-recommends linux-generic-hwe-24.04
Downloaded .deb
files do not install when double-clicking on them as in previous releases (test installing Chrome, 1Password, Visual Studio Code, or WaveBox’s .deb
, for example). You can use the terminal and install those using sudo apt install <FULL_PATH>.deb
To regain the ability to open those files from the file manager, use the App Center
application and search for the gdebi
debian package
.
20240616 add: this might not be needed in the future per “Ubuntu is Finally Adding DEB Installer Support to App Center.”
When trying to use .AppImage
files the first time, you will get an AppImages require FUSE to run
error (test with Stacer‘s .AppImage
, for example)
sudo apt install libfuse2t64
will solve this, and now you can start the tool.
A .snap
file is a compressed SquashFS file system containing all the application's necessary files and directories in a compressed format.
Snap will automatically update its applications (as long as they are closed), but updating itself often requires some help.
sudo killall snap-store
sudo snap refresh
A Flatpak file contains the entire application, including its binaries, libraries, and other dependencies. This ensures the application can run independently of the host system's libraries and configurations.
FlatHub gives you access to many valuable applications, such as Extension Manager.
To get access to it, follow the instructions at https://flathub.org/setup/Ubuntu
This will add flatpak
support. Selecting the Install button from packages listed on https://flathub.org/ will allow you to install the downloaded files.
Note that at the time of this write-up, no noble
version is yet available at https://ppa.launchpadcontent.net/flatpak/stable/ubuntu/dists/. As such, sudo nano /etc/apt/sources.list.d/flatpak-ubuntu-stable-noble.sources
and replace noble
by jammy
on the Suites
line.
After installing Extension Manager, you can add additional Gnome Extensions, such as Astra Monitor, *Caffeine,* ****Net Speed Simplified, or Clipboard Indicator, when browsing for extensions.
brew
became popular on MacOS and has been ported to Linux.
One reason to use brew
is that although you might have an apt
or snap
version of many tools available, the brew
version is likely more recent than the one available with those package managers.
For example, on 22.04, brew
was required to get a recent version of podman
to support the NVIDIA Container toolkit. On 24.04, apt info podman
tells us we have 4.9.3, while brew info podman
shows 5.0.3 available.
Follow the instructions at https://brew.sh/ to install the brew
command (we recommend a sudo apt install git git-lfs
before attempting to install it).
After following the recommended instructions (and performing the steps in the “Next steps” section of the installer), you can install a few useful tools (do a brew info NAME
to get details on each tool)
brew install buf ctop duf eza fd fx fzf hyfetch keychain tldr zoxide
If you are looking for more interesting CLI utilities, see https://dev.to/lissy93/cli-tools-you-cant-live-without-57f6
nix-env
is a unique and powerful package manager with a distinct approach to software installation and management; each package is defined using a purely functional language as a function of its inputs (dependencies), leading to deterministic and reproducible builds.
nix-shell
is designed to create isolated and reproducible shell environments: you can test tools without installing them.
Each software is installed in its directories, which support running multiple versions of the same tool. Each directory contains everything related to that installation. One key thing is that Nix guarantees that the same package build will always produce the same result, regardless of the machine or time.
To install the package manager component, see https://nixos.org/download/#nix-install-linux and follow the recommended post-installation instructions (including adding the start command to your .bashrc
).
After your installation, select a package to install (you can see all available packages at https://search.nixos.org/packages). You can test a package before installing it. For example, with imgcat: nix-shell -p imgcat
. After the installation, you will be in a [nix-shell:~]$
where you can check which imgcat
and then run an imgcat /usr/share/plymouth/ubuntu-logo.png
command. When you exit this shell, you will see that which imgcat
shows that it is not available anymore.
To install the tool, follow the package’s nix-env
“on Non NixOS” instructions; here nix-env -iA nixpkgs.imgcat
. After this, which imgcat
will show the tool available on your system.
We only discussed Nix as a package manager here; there is much more that Nix can do related to building content. Check https://nix.dev/tutorials/ to see more.
I have been on Z Shell since before it became the default shell for MacOS, and use the popular oh-my-zsh with powerline-10k
<aside> ➡️
</aside>
You can confirm it is installed on your host by trying to install it: sudo apt install zsh
To change your default shell to zsh
use chsh -s /usr/bin/zsh
After installation, run it (type zsh
) and follow the interactive “Z Shell configuration function for new users"
Oh My Zsh is a delightful, open source, community-driven framework for managing your Zsh configuration. It comes bundled with thousands of helpful functions, helpers, plugins, themes […]
To install it, follow the instructions from https://ohmyz.sh/#install