Linux Guide¶
π Absolute Basics - Start Here If You're New!¶
What is a Terminal or Command Prompt?
Quote
The terminal is an interface in which you can type and execute text-based commands. Command prompt is the name of the terminal in Windows, otherwise, it is pretty much the same.
The operating principles of command prompt (letβs use cmd from now on) and the terminal are the same, but various commands might not be. Although a lot of Home Lab related projects can run on Windows, it's advised, if possible to run on Linux or macOS due to Networking differences.
Note
From now on, Iβll refer to both command prompt and the terminal as βterminalβ unless I am highlighting specific differences between the two.
How to use a Terminal
There are two main ways to use a Terminal.
- Directly on the Host system
- Via SSH from a Remote System
#οΈβ£ Terminal Applications¶
The basic Terminal on Linux and macOS should provide all the functionality you would need as a beginner, but as you advance you may find some features lacking and that's where changing out your Terminal can boost your productivity or fix certain issues you may have along the way.
This isn't an exhaustive list, but some of the common Terminal Alternatives available are:
| Terminal Name | Operating System | Installation | Notes |
|---|---|---|---|
| See Notes | Built-in Default on many Distro's | GTK3: gnome-terminal - KDE: konsole |
|
| ptyxis | Default on Fedora | ||
| Alacritty | See GitHub Repo | Precompiled for macOS and Windows available | |
| Guake | sudo apt install guake |
||
| Kitty | sudo apt install kitty |
||
| Terminator | sudo apt install terminator |
||
| Tilix | See GitHub Repo | ||
| Warp | Download from site | Affiliate Link | |
| XTERM | sudo apt install xterm |
| Terminal Name | Operating System | Installation | Notes |
|---|---|---|---|
| Terminal | Built-in Default | ||
| Alacritty | , , | See GitHub Repo | Precompiled for macOS and Windows available |
| iTerm2 | Download from site | ||
| Kitty | sudo apt install kitty |
||
| Warp | Download from site | Affiliate Link |
| Terminal Name | Operating System | Installation | Notes |
|---|---|---|---|
| Command Prompt | Built-in Default | ||
| Alacritty | , , | See GitHub Repo | Precompiled for macOS and Windows available |
| Warp | Windows Version Coming 2025 | Affiliate Link | |
| Windows Terminal | Download in Microsoft Store | ||
| Windows Terminal Preview | Download in Microsoft Store |
No matter what you use, while on the Terminal, please don't blindly copy and paste commands you find on the internet... take some time to understand what you're trying to do. It's a lot easier to help someone that makes a simple typo than it is if the user accidentally formats their entire computer.
How to Copy/Paste in Terminal
Different Terminals have different ways of handling this and it even differs if you're on the Host or connected via SSH. The first thing to try is the normal shortcuts:
- Ctrl C OR Cmd C for Copy
- Ctrl V OR Cmd V for Paste
If the above doesn't work, the next thing to try is:
- Ctrl Shift C OR Cmd Shift C for Copy
- Ctrl Shift V OR Cmd Shift V for Paste
Another common way is to Right-Click for Paste
Understanding file paths and directories
You'll see many tutorials asking you to navigate around the system so there's a few quick things you should become familiar with.
On Linux and macOS, the Home Directory (sometimes called $HOME and often referred to as ~) is usually located at /home/<username> for Linux and /Users/<username> for macOS.
In many cases, especially for navigation you can use the shortcut of ~ with no issues, but you shouldn't use it in a docker-compose.yml file for example. Instead you would use the Absolute Path. You can find this with the command echo $PWD (which stands for "Print Working Directory")
Since a lot of HomeLab projects are Docker based, we recommend to keep everything organized by creating a singular folder (example: ~/docker) and you create your project folders inside of that.
~/docker
βββ diun
βββ dockge
βββ <etc>
π§ Linux Fundamentals¶
What is the difference between Desktop & Server Versions?
Desktop Linux is designed for everyday personal computer use - it comes with a graphical interface (GUI) that lets you click on things, browse the web, and use your computer just like Windows or Mac. It includes everyday software like web browsers, office programs, and media players, making it perfect for regular computer tasks.
Server Linux is built for running services and doesn't include a graphical interface by default - everything is controlled through text commands. It's stripped down to use fewer resources and runs without unnecessary programs, focusing instead on reliability, security, and the ability to run services (like websites or game servers) efficiently. While you can add a graphical interface to Server versions later, most people run them completely through command-line interface, often managing them remotely from another computer.