This article explains how to configure a high-performance Linux development workstation running Debian 13 (Trixie) or Debian 12 (Bookworm).
π Table of Contents
- Introduction
- Hardware & Network
- OS Installation
- Partition Layout (Actual Example)
- Pre-requisites
- Base System Configuration
- Development Environment
- Authentication Services (NIS)
- Backup & Recovery
π§© Introduction
This guide prepares a workstation optimized for local development, build pipelines, and database workloads on fast NVMe storage.
It focuses on reproducibility, speed, and maintainability.
π§ Hardware & Network
- CPU: Ryzen 9 5950X / 7950X / 9950X
- RAM: 64 β 128 GB DDR5
- Storage: NVMe for OS + secondary NVMe for
/data
- Network: 2.5 Gbps Ethernet preferred
- Hostname:
devbox.local
(or whatever your lcoal domain is)
π§ Actual Hardware Used
- Case: Coolermaster TD500 Mesh V2
- PSU: Coolermaster MWE 850W Gold
- Motherboard: MSI X670E Gaming Plus Wifi
- CPU: Ryzen 9 9950X
- Cooler: Thermalright PA 140 Assassin
- RAM: 128 GB DDR5 Crucial 5600MT/s
- GPU: iGPU (Upgrade later)
- Storage: Single 2tb Samsung 990 Pro for OS and
/data
(data will go on a RAID0 array later) - Network: 2.5 Gbps
πΏ OS Installation
- Boot installer in UEFI mode.
- Use manual partitioning.
- Create the first user
sysadmin
(same password asroot
).
π½ Partition Layout (Actual Example)
Mount Point | Device | Size | Use% | Description |
---|---|---|---|---|
/ | /dev/nvme0n1p2 | 92 GB | 7% | Root filesystem β OS and core packages |
/boot/efi | /dev/nvme0n1p1 | 975 MB | 1% | EFI System Partition |
/var | /dev/nvme0n1p3 | 37 GB | 2% | Logs, APT cache, Docker layers, build artifacts |
/tmp | /dev/nvme0n1p5 | 2.7 GB | 2% | Isolated temporary area β protects root from overflow |
/home | /dev/nvme0n1p6 | 274 GB | 3% | User homes, SDKMAN!, Maven, IDE configs |
/data | /dev/nvme0n1p7 | 1.3 TB | 1% | Databases, container volumes, project data |
Rationale: The layout isolates transient and variable data from system and user data for cleaner backups and improved stability.
π¦ Pre-requisites
sudo apt update
sudo apt install -y curl wget zip unzip ca-certificates
curl --version
wget --version
βοΈ Base System Configuration
Users & Groups
Create sysadmin
during installation and assign sudo privileges to other users:
sudo usermod -aG sudo <username>
Sudo Configuration
sudo apt install -y sudo
sudo cp /etc/sudoers /etc/sudoers.bak.$(date -u +%Y%m%d-%H%M%S)
grep -qE 'includedir[[:space:]]+/etc/sudoers\.d' /etc/sudoers || \
echo '#includedir /etc/sudoers.d' | sudo tee -a /etc/sudoers >/dev/null
sudo install -d -m 755 /etc/sudoers.d
echo '%sysadmin ALL=(ALL) NOPASSWD: ALL' | sudo tee /etc/sudoers.d/nopass >/dev/null
sudo chmod 0440 /etc/sudoers.d/nopass
Timezone & NTP
sudo timedatectl set-timezone Europe/Dublin
sudo apt install -y systemd-timesyncd
sudo systemctl enable --now systemd-timesyncd
timedatectl show | grep NTPSynchronized
π Development Environment
Essentials
sudo apt install -y git build-essential cmake
gcc --version
make --version
Git
sudo apt install -y git
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --global init.defaultBranch main
git config --global credential.helper 'cache --timeout=3600'
Vim (Full Version)
sudo apt install -y vim-gtk3
vim --version | grep +clipboard
Java & Maven (via SDKMAN!)
Note: Install as a regular user, not root.
curl -s "https://get.sdkman.io" | bash
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"
exec $SHELL -l
sdk install java 21.0.4-tem
sdk install maven
java -version
mvn -v
Go
sudo apt install -y golang
go version
Python
sudo apt install -y python3 python3-venv python3-pip
python3 --version
pip3 --version
Node.js (via nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install --lts
node -v
npm -v
IDEs & Tools
IntelliJ IDEA (via JetBrains Toolbox)
sudo apt install -y libfuse2 libxi6 libxrender1 libxtst6 libgtk-3-bin
curl -fsSL https://raw.githubusercontent.com/nagygergo/jetbrains-toolbox-install/master/jetbrains-toolbox.sh | bash
jetbrains-toolbox
VS Code
sudo snap install code --classic
code --version
Google Chrome
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | \
gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/google.gpg >/dev/null
sudo tee /etc/apt/sources.list.d/google-chrome.sources <<'EOF'
Types: deb
URIs: http://dl.google.com/linux/chrome/deb/
Suites: stable
Components: main
Architectures: amd64
Signed-By: /etc/apt/trusted.gpg.d/google.gpg
EOF
sudo apt update
sudo apt install -y google-chrome-stable
google-chrome --version
Insomnia (API Client)
The official repo lacks Debian packages. Install from GitHub release:
wget https://github.com/Kong/insomnia/releases/download/core%4011.6.1/Insomnia.Core-11.6.1.deb
sudo apt install -y ./Insomnia.Core-11.6.1.deb
insomnia --version
π Authentication Services (NIS)
sudo apt install -y nis<br>echo "dublinux.net" | sudo tee /etc/defaultdomain<br>sudo tee /etc/yp.conf >/dev/null <<br><br>Enable automatic home directory creation:<br><br>sudo apt install -y libpam-mkhomedir<br>sudo pam-auth-update --enable mkhomedir
π Backup & Recovery
rsync -avh --delete /data /mnt/nas/devbox-backup
ls /mnt/nas/devbox-backup
β
Your Linux development workstation is fully configured.
All steps include verification commands for consistent reproducibility across machines.