Debian 13 (Trixie) Guides: Server Setup, Security and Troubleshooting

This page collects every LiberianGeek guide written or updated for Debian 13 “Trixie”, the current Debian stable release, grouped by the job you are trying to do. Most guides also cover Debian 12 “Bookworm” where the steps differ. If you are setting up a new server, follow the order in the next section; if you have a specific problem, jump to the table that matches it.

Debian 13 at a glance

Debian 13 (Trixie)Debian 12 (Bookworm)
StatusCurrent stableOldstable
Released9 August 202510 June 2023
End of regular security support9 August 202811 July 2026 (already ended)
End of LTS30 June 203030 June 2028
APT source formatdeb822 .sources filesOne-line sources.list (deb822 optional)
Dates from the release table on debian.org/releases, checked 11 November 2026. The latest point release at that time was Debian 13.7 (12 September 2026).

Because Debian 12 left regular security support on 11 July 2026 and is now covered only by the volunteer LTS team, servers still on Bookworm should plan the move. Start with how to upgrade Debian 12 to Debian 13 without breaking your server.

Setting up a new Debian 13 server: a sensible order

  1. Create a normal admin account and give it sudo rights, so you stop working as root.
  2. Set up SSH key authentication and confirm you can log in with the key in a second terminal.
  3. Only then harden sshd_config (no root login, no password login).
  4. Turn on the UFW firewall, allowing SSH before you enable it.
  5. Enable automatic security updates.
  6. Set the hostname and time zone, and add a swap file on small VPS plans.
  7. Add Fail2Ban if SSH is reachable from the internet.

Steps 2 to 4 are where lockouts happen. Keep your current SSH session open until a new login works, and on a VPS make sure you know how to reach the provider’s web console before you change SSH or firewall settings. The Debian server security checklist goes through the security part in more depth.

Install, upgrade and package management

TaskGuide
Move a server from Bookworm to TrixieUpgrade Debian 12 to Debian 13
Understand or fix APT repository files (debian.sources)Debian 13 sources.list and the deb822 format
Install security updates automaticallyAutomatic security updates with unattended-upgrades
Install a newer kernel or boot an older oneUpdate the kernel on Debian 13 and 12

Users, system settings and SSH access

TaskGuide
Give a user sudo rightsEnable sudo for a user
Change a user or root password, or reset a forgotten oneChange password in Debian 13 and 12
Log in with an SSH key instead of a passwordSSH key authentication
Rename the machineChange the hostname
Fix the time zone or clock syncSet the time zone and time sync
Add swap on a low-memory serverCreate a swap file
Run your own program as a service that restarts on failureCreate a systemd service

Security

TaskGuide
Firewall with simple allow/deny rulesUFW firewall setup
Lock down the SSH serverHarden SSH (sshd_config)
Ban IPs that keep failing to log inFail2Ban setup
See which ports are listening and which program owns themCheck open ports
HTTPS certificate for a websiteLet’s Encrypt with Certbot and nginx

Monitoring and troubleshooting

Symptom or questionGuide
Disk is full, or you need to find what uses the spaceCheck disk space (df, du, ncdu)
Server is slow or swapping; did the OOM killer run?Check memory usage
High load average or a process eating CPUCheck CPU usage and info
A service failed and you need its logsView logs with journalctl
Back up folders to another disk or serverrsync backups

Networking and DNS tools

TaskGuide
Find the private and public IP addressGet IP address
Give the server a fixed addressSet a static IP address
Query DNS recordsdig or nslookup
Test reachability and find where packets stopping and traceroute
Use netstat, or its modern replacement ssInstall netstat (net-tools or ss)

To check a domain’s records from the browser instead of the server, use the DNS lookup and email records checker.

Web server, databases and applications

TaskGuide
PHP for WordPress or other PHP apps (PHP-FPM with nginx or Apache)Install PHP 8.4
Database serverInstall MariaDB
Put nginx in front of an app running on a local portnginx reverse proxy with proxy_pass
Free TLS certificate and HTTP to HTTPS redirectCertbot with nginx
Run containersInstall Docker
Java development kitInstall JDK on Ubuntu and Debian 13

Which Debian version am I running?

Before following any guide, check the release, because some package names and file locations differ between Debian 12 and 13:

cat /etc/debian_version
grep VERSION_CODENAME /etc/os-release

A 13.x version and VERSION_CODENAME=trixie mean Debian 13; 12.x and bookworm mean Debian 12. If something in a guide does not match what you see, or you would rather have someone do the work for you, tell us what is broken.