Skip to content

SkyDeaD/UbuntuServer-Fast-Configuration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UbuntuServer Fast Configuration

logo

Ubuntu 24.04 | 26.04 bash license MIT

🇷🇺 Русский · 🇬🇧 English

Каждый раз, когда поднимаешь новый VPS, повторяется одно и то же: поставить нормальный ls, накатить Docker, разобраться со свопом на маленьком сервере, включить SSH только по ключу и не забыть про UFW. Чтобы не повторять регулярно одно и то же — написал скрипт с меню на 12 пунктов, который делает это всё сам, спрашивая только там, где решение реально важно принять тебе, а не ему.

Требования

Ubuntu 24.04 или 26.04, root-доступ, исходящий интернет.

Содержание

Быстрый старт

curl -fsSL https://raw.githubusercontent.com/SkyDeaD/UbuntuServer-Fast-Configuration/main/install.sh | sudo bash && source ~/.bashrc

Ставится как команда usfc, сразу тихо делает apt update и открывает меню. Функция usfc() (не alias) добавляется в .bashrc сама при первом запуске — дальше просто usfc, sudo руками писать не нужно, а когда меню закрывается, она сама подтягивает .bashrc в твою же сессию, так что новые алиасы/промпт видны сразу, без ручного source или переподключения (подробнее — в FAQ).

2026-07-15_23-02 2026-07-15_23-05 2026-07-15_23-07 2026-07-15_23-12 2026-07-15_23-15 2026-07-15_23-20

В меню — номер пункта (5, можно несколько сразу: 1 3 5 или 1,3,5), раздел целиком (B/S/P), всё сразу (A), можно сочетать (B,S). На пачку из нескольких пунктов вопрос один, дальше каждый идёт по своим дефолтным ответам без остановок. H — справка по алиасам, R — команды отката, U — снести сам usfc.

Не доверяешь curl | sudo bash и хочешь применить то же самое руками, пункт за пунктом? — держи ручную инструкцию.

Что делает каждый пункт

База, сервисы, защита — по порядку

Базовые пакетыmicro, curl, wget, git, nano, certbot + python3-certbot-nginx, unzip, htop, jq, rsync и ещё несколько вещей, которые обычно ставишь в первую же минуту на любом сервере — в том числе software-properties-common, без которого не заработает add-apt-repository, нужный дальше для PPA fastfetch. Специально идёт первым пунктом.

CLI-утилиты + starship — современные замены классических утилит (eza вместо ls с иконками, bat/batcat вместо cat с подсветкой, fd/fdfind вместо find, ripgrep, zoxide — «умный» cd, ncdu для разбора места на диске) и starship-промпт — всё вместе, потому что это один и тот же слой "как выглядит и ощущается терминал". Алиасы в .bashrc (ls/ll/la/lt/cat/catp/scat/fd) и eval-строки для zoxide/starship пишутся сразу тем же пунктом, а не отдельным шагом позже.

fastfetch — показывает информацию о сервере (ОС, ядро, память, диск, IP) при каждом заходе по SSH. Версия не ниже 2.64.0 (более старые не умеют выравнивание в format-строках, которое использует прилагаемый config.jsonc). Конфиг и автозапуск пишутся в .bashrc сразу тем же пунктом.

tmux — мультиплексор терминала: держит сессию живой при обрыве связи (просто переподключаешься по SSH — и всё, что запускал, на месте, включая несколько окон/панелей). Ставится с минимальным конфигом (мышь, история на 10000 строк).

Docker + Compose — CE + Compose plugin из официального репозитория Docker (не пакет docker.io из репов Ubuntu — он старый).

nginx-full — веб-сервер/реверс-прокси.

Docker log rotation — ограничивает логи контейнеров (лимит 10 МБ на файл): без этого логи Docker по умолчанию ничем не ограничены и со временем могут забить всё место на диске.

fail2ban — банит IP после нескольких неудачных попыток входа по SSH (защита от перебора паролей). Настраивается на реальный SSH-порт сервера, не хардкожен 22.

unattended-upgrades — сам ставит security-обновления системы, без твоего участия.

ZRAM + swap + earlyoom — zram (сжатая память прямо в оперативке; сколько % RAM под неё отдать — теперь спрашивается при установке, по умолчанию 75%) плюс резервный swap-файл на диске (размер тоже спрашивается — скрипт сам предлагает разумный вариант по объёму свободного места, не жёстко 1 ГБ на все случаи) с более низким приоритетом, чтобы использовался только если не хватило zram. Плюс vm.swappiness=80/vm.vfs_cache_pressure=50 и опционально earlyoom — защита от полного зависания сервера при нехватке памяти.

SSH hardening — переводит вход только на ключ, выключает вход по паролю и вход под root. Самый рискованный пункт меню, поэтому единственный с самопроверкой перед применением: перед тем как выключить пароль, скрипт заводит одноразовый ключ и реально проверяет вход по нему — если проверка не прошла, автоматически откатывает конфиг и оставляет пароль включённым.

UFW — файрвол: закрывает все порты, кроме нужных (SSH-порт и то, что сервер уже реально слушает на момент включения).

Раздел «защита» идёт последним осознанно: UFW при включении сканирует реально слушающие порты, и если Docker/nginx уже подняты, фаервол сразу увидит их порты, а не только 22-й.

Кастомизация

src/config.jsonc для fastfetch — редактируешь и коммитишь, src/setup.sh тянет его по сырой ссылке при каждом запуске.

Свой форк — меняешь REPO_RAW_BASE в начале install.sh и src/setup.sh. Версия проверяется через отдельный файл src/VERSION — если правишь src/setup.sh, не забудь его поднять.

FAQ

Иконки/шрифты в терминале выглядят как квадратики или кракозябры

Это шрифт твоего локального терминала (клиента), не сервера — Nerd Font для иконок eza/starship/fastfetch ставится и настраивается в приложении, через которое ты подключаешься по SSH, скрипт на это никак повлиять не может.

Docker не ставится, ошибка про кодовое имя дистрибутива

Официальный репозиторий Docker иногда отстаёт от свежих релизов Ubuntu — скрипт сам это ловит и переключается на совместимый noble.

Хочу пересмотреть SSH hardening или UFW без пересоздания сервера

usfc ещё раз — на уже настроенных пунктах меню покажет текущее состояние и спросит, менять ли.

Contributing

Делался в первую очередь под свои сервера, так что часть решений — это то, что удобно мне. Баги и пожелания приветствуются — открывай issue.

Лицензия

MIT

About

Menu-driven Bash installer that turns a fresh Ubuntu 24.04/26.04 VPS into a configured server: CLI tools, Docker, nginx, zram/swap, fail2ban, SSH & UFW hardening.

Topics

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.en

Stars

3 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages