Webserver Upgraded to Debian 13
After 9 years (yes, I know this was way to long), I upgraded my webserver and simplified the backend setup.
262 Words
2025-12-16 16:39 -0600
It was finally time to upgrade the old Debian 10 webserver to something more modern. This time I wanted to keep everything as stock and simple as possible.
I created a new Digital Ocean dropplet and enabled IPv6.
Logged into the new system:
ssh jasonmurray.org
Make sure the system is up to date:
sudo apt update && sudo apt upgrade && sudo reboot
Enabled IPv6:
sudo vi /etc/netplan/50-cloud-init.yaml
Adding the following lines to enable IPv6:
addresses:
- "2604:a880:4:1d0:0:1:4c16:5000/64"
routes:
- to: "::/0"
via: "2604:a880:4:1d0::1"
Installed basic software:
sudo apt install fail2ban nginx certbot python3-certbot-nginx rsync nftables
Validate unattended-upgrades are enabled:
sudo dpkg-reconfigure unattended-upgrades
Added a Nginix virtual host:
sudo vi /etc/nginx/sites-enabled/jasonmurray.org
With the following basic config to get Certbot working:
server {
listen 80;
listen [::]:80;
server_name jasonmurray.org;
root /home/www/jasonmurray.org;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Created the directory:
mkdir -p /home/www/jasonmurray.org
Reload the server:
sudo systemctl reload nginx
Enabled SSL using Certbot:
sudo certbot --nginx -d jasonmurray.org
Updated my Hugo syncwebsite script:
alias syncwebsite="hugo --cleanDestinationDir && rsync -av --exclude '.DS_Store' --delete ~/Documents/www-personal/current/jasonmurray.org/public/ jasonmurray.org:www/jasonmurray.org"
Updated the website:
cd hugo; syncwebsite
That is about it. Eazy.
Sometimes it’s nice to “start over”. I didn’t copy anything, I didn’t move configs, I didn’t try to reference the old system. I “just built” a new system. A lot changed over the years. Starting over forces you to learn the “new ways” of the operating system. What commands have been replaced? Where is that configuration file at? How do they configure the network now? What new features/automations should I be using?