Используйте эту страницу как быстрый справочник по частым задачам self-hosting на Ubuntu.
Запуск скрипта как сервиса
Если вы запускаете скрипт вроде ./myscript.sh и хотите автозапуск после перезагрузки, создайте systemd unit.
/etc/systemd/system/myscript.service
[Unit]
Description=Virtual Distributed Ethernet
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/YOUR_SCRIPT
Restart=on-failure
[Install]
WantedBy=multi-user.target
Перезагрузите systemd, включите сервис и запустите его:
Reload and enable service
sudo systemctl daemon-reload
sudo systemctl enable myscript.service
sudo systemctl start myscript.service
sudo systemctl status myscript.service
Ночной ребут по расписанию
Откройте crontab:
Добавьте строку в конец:
0 4 * * * /sbin/shutdown -r +5
Это объявит ребут в 04:00 и перезагрузит систему в 04:05.
Формат cron:
Если команда ребута требует root-прав, используйте sudo crontab -e.
Удаление старых/неиспользуемых данных Docker
Проверьте использование места Docker:
Команды очистки:
docker container prune
docker image prune
docker network prune
docker volume prune
docker system prune
Удалить все неиспользуемые образы (не только dangling):
Удалить большую часть неиспользуемых объектов Docker:
docker system prune --all
-a и --all могут удалить образы, которые вы хотели оставить для быстрого redeploy.
Очистка сервера
Проверьте использование файловой системы:
Установите и запустите ncdu для интерактивного анализа:
Будьте осторожны с ручным удалением файлов в системных директориях.
Частые цели для очистки:
- Старые логи в
/var/log:
sudo journalctl --vacuum-time=2d
- Неиспользуемые Docker-объекты в
/var/lib/docker:
sudo docker image prune
sudo docker container prune
sudo docker network prune
sudo docker volume prune
sudo docker system prune -a
- Неиспользуемые пакеты:
Для хостов Pterodactyl избегайте ручного удаления бэкапов в /var/lib/pterodactyl, чтобы не нарушить состояние панели.
Скрипты
Проверка геолокации
wget -qO - "https://raw.githubusercontent.com/vernette/ipregion/refs/heads/master/ipregion.sh" | bash
Speedtest
sudo apt update && sudo apt install -y curl && curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash && sudo apt install -y speedtest && speedtest
Проверка IP на блокировки сервисов
bash <(curl -Ls IP.Check.Place) -l en
Информация о среде и тесты с российскими ISP
wget -qO- speedtest.artydev.ru | bash
Информация о среде и тесты с ISP
wget -qO- bench.sh | bash
Перед запуском curl | bash или wget | bash в production обязательно проверяйте удаленные скрипты.
Установка ядра Xanmod
Проверьте поддерживаемый уровень CPU
wget https://dl.xanmod.org/check_x86-64_psabi.sh
chmod +x check_x86-64_psabi.sh
./check_x86-64_psabi.sh
Зарегистрируйте ключ подписи Xanmod
wget -qO - https://dl.xanmod.org/archive.key | sudo gpg --dearmor -vo /etc/apt/keyrings/xanmod-archive-keyring.gpg
Добавьте репозиторий Xanmod
echo 'deb [signed-by=/etc/apt/keyrings/xanmod-archive-keyring.gpg] http://deb.xanmod.org releases main' | sudo tee /etc/apt/sources.list.d/xanmod-release.list
Установите пакет ядра
sudo apt update && sudo apt install linux-xanmod-x64v3
Завершение
Если вашему стеку нужен BBR-тюнинг, примените его и перезагрузитесь.
Ограничение частоты ICMP-ответов
Добавьте более строгие лимиты ICMP в /etc/sysctl.conf:
cat <<'EOT' | sudo tee -a /etc/sysctl.conf
net.ipv4.icmp_msgs_burst=1
net.ipv4.icmp_msgs_per_sec=1
net.ipv4.icmp_ratelimit=1
net.ipv6.icmp.ratelimit=1
EOT
sudo sysctl -p
Используйте это только после тестов, потому что агрессивные ICMP-лимиты могут усложнить диагностику сети.