Ubuntu JellyfishUbuntu Jellyfish

Introduction

Setting up an Ubuntu server is just the first step in your server administration journey. The subsequent—and arguably more important—phase is maintenance. Proper upkeep ensures that your server operates efficiently, remains secure, and enjoys a longer lifespan. Whether you’re running a web service, a database, or a custom application, consistent server maintenance is crucial. This comprehensive guide will delve into the key aspects of maintaining an Ubuntu server.

Thanks to Teklan Hosting

A big thank you to Teklan Hosting for providing us with a server. Their support has made it possible for us to create and share this guide with you.

We appreciate Teklan Hosting’s contribution to our project – Give them a look if you need a VPS, Web hosting, Domains or dedicated servers and much more!

Pre-requisites

Hardware

  1. Server Machine: Running Ubuntu Server LTS (Long Term Support) is highly recommended.
  2. SSH Access: For remote administration.

Software

  1. Terminal: Terminal on MacOS/Linux or PuTTY on Windows for SSH.
  2. Text Editor: Nano, Vim, or any editor for configuration files.

Step 1: Regular Updates and Upgrades

Checking for Updates

Keep your system packages up-to-date. On Ubuntu, you can do this by running:

sudo apt update

Upgrading Packages

To upgrade the packages, execute:

sudo apt upgrade

Removing Unused Packages

To remove obsolete and unused packages, use:

sudo apt autoremove

Step 2: Monitor Server Performance

System Load

Monitor the system’s load average with:

uptime

Resource Usage

Use htop or top to view real-time server stats. Install htop with:

sudo apt install htop

Disk Usage

Check disk space with:

bash

df -h

Step 3: Backups

Automated Backups

Utilize tools like rsync or backup software such as Bacula to perform automated backups.

Manual Backups

Backup crucial files manually with:

cp /path/to/important/file /path/to/backup/location

Step 4: Security Measures

Firewall

Enable ufw (Uncomplicated Firewall) with:

sudo ufw enable

SSH Security

  1. Disable Root Login: Edit the SSHD config file with sudo nano /etc/ssh/sshd_config and set PermitRootLogin to no.
  2. Change SSH Port: In the same SSHD config file, change the Port to a number other than the default 22.

Fail2Ban

Install and configure Fail2Ban to protect against brute-force attacks:

sudo apt install fail2ban sudo systemctl enable fail2ban sudo systemctl start fail2ban

Step 5: Log Management

Viewing Logs

View system logs with:

journalctl

Log Rotation

Make sure log rotation is configured to prevent logs from consuming disk space. Check logrotate settings at /etc/logrotate.conf.

Step 6: Routine Checks

Server Reboots

It’s advisable to reboot the server after major updates. Use:

sudo reboot

Check Services

Ensure essential services are running with:

sudo systemctl status [service_name]

Step 7: Additional Steps

Disaster Recovery

Have a disaster recovery plan in place, involving a complete system image backup and a step-by-step guide to restore operations.

Documentation

Maintain clear documentation for your configurations, backup schedules, and custom scripts.

Conclusion

Maintaining an Ubuntu server requires a mix of regular updates, performance monitoring, backups, and strong security practices. While the steps may seem numerous, they are vital for ensuring your server’s longevity and robustness. Through proactive maintenance, you can pre-empt many issues and ensure a stable and secure environment for your applications.

By Tech Tutorial

Hey, I'm Chris! Nerd, Business owner, Serial Procrastinator! Will add more info soon :)