️ Ubuntu VPS Optimization

If you like this project, consider supporting me on Buy Me a Coffee ☕️


tags:

Quick guide to free disk space, reduce RAM/CPU usage, and improve security on a headless Ubuntu 22.04+ VPS running web/DB/Docker stacks. These optimizations are particularly effective for small VPS instances (1–4 GB RAM) where every megabyte counts.

What this covers / Что охватывает:

When to apply / Когда применять:

[!IMPORTANT] These optimizations target headless servers only. Do not apply GPU removal or service disabling on desktop systems or VMs that need graphical output. Эти оптимизации только для headless серверов. Не применяйте на десктопах.


📚 Table of Contents


Remove Unnecessary Packages

Basic Cleanup

sudo apt update                               # Update package list / Обновить список пакетов
sudo apt autoremove --purge                   # Remove orphaned + configs / Удалить сироты + конфиги
sudo apt autoclean && sudo apt clean          # Clear APT cache / Очистить кэш APT

Orphaned Packages

sudo apt install deborphan                    # Install deborphan / Установить deborphan
sudo apt purge $(deborphan)                   # Remove orphaned packages / Удалить пакеты-сироты

Graphics Stack (headless servers)

sudo apt purge '*nvidia*' libgl1-mesa-dri libglu1-mesa xserver-xorg*  # Remove GPU stack / Удалить GPU стек

[!TIP] On headless VPS this frees ~300–500 MB. Ensure no GUI apps depend on these packages before removing. / На headless VPS это освобождает ~300–500 МБ.

Other Removable Packages

sudo apt purge snapd                          # Remove snapd (~300 MB) / Удалить snapd
sudo apt purge language-pack-*                # Remove language packs (keep en) / Удалить языковые пакеты
sudo apt install language-pack-en             # Reinstall English pack / Переустановить английский пакет

Disable Unneeded Services

Disable Service

sudo systemctl disable --now <SERVICE>.service  # Disable and stop / Отключить и остановить
sudo systemctl daemon-reload                    # Reload systemd / Перезагрузить systemd
# GPU / VM / Power management — not needed on headless VPS
# GPU
sudo systemctl disable --now gpu-manager switcheroo-control thermald power-profiles-daemon speech-dispatcherd

# VM tools / Ubuntu extras — disable if not needed
#
sudo systemctl disable --now open-vm-tools lxd-agent pollinate ubuntu-advantage

Conditionally Disable

# Mail/DNS/FTP — if unused
sudo systemctl disable --now dovecot postfix named proftpd

[!CAUTION] Do NOT disable these critical services: sshd, apache2, nginx, mysql, php-fpm, docker, cron, rsyslog, fail2ban, crowdsec. / Не отключайте критичные сервисы.

Check Running Services

systemctl list-units --type=service --state=running        # List running / Список запущенных
systemctl list-units --type=service --state=running | wc -l  # Count running / Количество запущенных

Monitoring & Verification

Final Checks

df -h                                         # Disk usage / Использование диска
htop                                          # RAM/CPU monitoring / Мониторинг RAM/CPU
deborphan                                     # Check for leftovers / Проверить остатки
systemd-analyze blame                         # Boot time per service / Время загрузки по сервисам

Reboot

sudo reboot                                   # Reboot to apply changes / Перезагрузить для применения изменений

Expected Results

Metric Improvement (EN / RU)
Disk space +1 GB+ freed / +1 ГБ+ освобождено
RAM −100–300 MB / −100–300 МБ
CPU −5–15% idle load / −5–15% нагрузки
Security Fewer open ports and attack surface / Меньше портов и поверхность атаки

Ideal for stacks: Tomcat / Nginx / MySQL / Docker / PHP-FPM. / Идеально для стеков: Tomcat / Nginx / MySQL / Docker / PHP-FPM.


💡 Best Practices


On this page

linux Ubuntu VPS Optimization 📚 Table of Contents Remove Unnecessary Packages Basic Cleanup Orphaned Packages Graphics Stack (headless servers) Other Removable Packages Disable Unneeded Services Disable Service Recommended to Disable Conditionally Disable Check Running Services Monitoring &amp; Verification Final Checks Reboot Expected Results 💡 Best Practices Documentation Links