No description
Find a file
2026-07-14 13:29:03 +07:00
.gitattributes Publish modular server setup scripts 2026-07-14 13:11:28 +07:00
.gitignore Publish modular server setup scripts 2026-07-14 13:11:28 +07:00
ochenstarik-server-1.sh Link setup choices across server scripts 2026-07-14 13:27:31 +07:00
ochenstarik-server-2.sh Link setup choices across server scripts 2026-07-14 13:27:31 +07:00
ochenstarik-server-3.env.example Publish modular server setup scripts 2026-07-14 13:11:28 +07:00
ochenstarik-server-4.env.example Publish modular server setup scripts 2026-07-14 13:11:28 +07:00
ochenstarik-server-tg-4.sh Publish modular server setup scripts 2026-07-14 13:11:28 +07:00
ochenstarik-server-user-3.sh Link setup choices across server scripts 2026-07-14 13:27:31 +07:00
ochenstarik-server-vpn-5.sh Link setup choices across server scripts 2026-07-14 13:27:31 +07:00
README.md Link setup choices across server scripts 2026-07-14 13:27:31 +07:00

Быстрая настройка Ubuntu Server

Набор независимых Bash-скриптов для первоначальной настройки Ubuntu Server. Можно запустить только нужные модули или выполнить их по порядку для полной настройки.

Что входит в проект

Файл Назначение Можно запускать отдельно
ochenstarik-server-1.sh Предлагает выбрать часовой пояс, создаёт swap-файл 2 ГБ и задаёт vm.swappiness=20 Да
ochenstarik-server-2.sh Предлагает выбрать будущий SSH-порт, обновляет систему, ставит пакеты и настраивает UFW Да
ochenstarik-server-user-3.sh Создаёт администратора, переносит SSH на порт из этапа 2, проверяет права и включает fail2ban После установки необходимых пакетов; проще всего сначала запустить скрипт 2
ochenstarik-server-tg-4.sh Отправляет уведомления в Telegram при успешном входе по SSH После установки OpenSSH и curl; обычно после скрипта 2 или 3
ochenstarik-server-vpn-5.sh Устанавливает Xray и направляет системный трафик через VLESS + REALITY Да; зависимости устанавливаются автоматически

Файлы *.env.example являются только примерами. Не записывайте настоящие пароли, токены и приватные SSH-ключи в Git.

Требования

  • Ubuntu Server или совместимая Debian-система с systemd;
  • доступ root или пользователь с sudo;
  • подключение к интернету;
  • рекомендуется сохранить текущую SSH-сессию открытой до проверки нового входа.

Получение проекта

sudo apt-get update
sudo apt-get install -y git
git clone https://github.com/ochenstarik-ui/lightweight-server.git
cd lightweight-server
chmod 700 ./*.sh

Перед запуском любого выбранного файла можно проверить его синтаксис:

bash -n ./ИМЯ-СКРИПТА.sh

1. Часовой пояс и настройка swap

Файл: ochenstarik-server-1.sh.

Сначала предлагает ввести часовой пояс в формате IANA, например Asia/Novosibirsk, Europe/Moscow или UTC, и проверяет его через timedatectl. Затем создаёт /swapfile размером 2 ГБ, добавляет его в /etc/fstab и устанавливает vm.swappiness=20. Повторный запуск предусмотрен.

curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-1.sh
chmod 700 ochenstarik-server-1.sh
bash -n ochenstarik-server-1.sh
sudo ./ochenstarik-server-1.sh

Проверка:

swapon --show
sysctl vm.swappiness

2. Базовые пакеты, часовой пояс и брандмауэр

Файл: ochenstarik-server-2.sh.

Скрипт запрашивает SSH-порт, который будет применён на этапе 3, сохраняет его в /etc/ochenstarik-server/ssh-port.conf, обновляет систему и устанавливает OpenSSH, UFW, fail2ban, инструменты обработки документов, изображений, аудио и видео.

Открываются TCP-порты:

  • 22 — временный SSH-порт;
  • выбранный SSH-порт — будущий порт SSH;
  • 80, 443 — HTTP и HTTPS;
  • 2096, 40000, 63636 — порты приложений.
curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-2.sh
chmod 700 ochenstarik-server-2.sh
bash -n ochenstarik-server-2.sh
sudo ./ochenstarik-server-2.sh

Проверка:

sudo ufw status verbose
timedatectl

3. Администратор и защита SSH

Файл: ochenstarik-server-user-3.sh.

При каждом запуске скрипт предлагает два режима:

  1. новая установка или повторная настройка администратора и SSH;
  2. только добавление открытых портов в UFW без изменения пользователя и SSH.

В режиме новой установки скрипт интерактивно запрашивает имя администратора, SSH-ключ и пароль. SSH-порт автоматически читается из защищённого файла, созданного этапом 2. Если этап 2 не выполнялся, скрипт предложит выбрать порт вручную. Затем он:

  • создаёт или обновляет пользователя;
  • добавляет пользователя в группу sudo;
  • назначает пользователю его домашнюю папку и всё содержимое .ssh;
  • устанавливает права 700 для .ssh и 600 для authorized_keys и остальных файлов ключей;
  • запрещает вход root по SSH;
  • переносит SSH на выбранный порт и добавляет для него правило UFW;
  • настраивает fail2ban;
  • по выбору управляет правилами UFW.

Для отдельного запуска сначала установите зависимости:

sudo apt-get update
sudo apt-get install -y sudo ufw fail2ban openssl openssh-server
curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-user-3.sh
chmod 700 ochenstarik-server-user-3.sh
bash -n ochenstarik-server-user-3.sh
sudo ./ochenstarik-server-user-3.sh

Не закрывая текущую сессию, откройте второй терминал и проверьте вход:

ssh -p ВЫБРАННЫЙ_ПОРТ ИМЯ_ПОЛЬЗОВАТЕЛЯ@IP_СЕРВЕРА

Только после успешной проверки можно удалить временное правило порта 22:

sudo ufw delete allow 22/tcp

Чтобы позднее открыть дополнительные порты, повторно запустите скрипт, выберите пункт 2 и введите правила через пробел или запятую:

80 443/tcp 53/udp 40000

Для записей без протокола используется TCP. Допустимы только порты от 1 до 65535. Если UFW неактивен, правила будут сохранены, но скрипт не включит брандмауэр автоматически во избежание потери SSH-доступа.

4. Telegram-уведомления о входах по SSH

Файл: ochenstarik-server-tg-4.sh.

Создайте бота через @BotFather, отправьте ему сообщение и узнайте ID чата. Скрипт запросит токен и ID интерактивно, отправит тестовое сообщение и подключит уведомления через PAM.

Для отдельного запуска:

sudo apt-get update
sudo apt-get install -y curl openssh-server logrotate
curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-tg-4.sh
chmod 700 ochenstarik-server-tg-4.sh
bash -n ochenstarik-server-tg-4.sh
sudo ./ochenstarik-server-tg-4.sh

Журнал уведомлений:

sudo tail -f /var/log/ochenstarik-ssh-login-telegram.log

Токен сохраняется на сервере в /etc/ochenstarik-server/telegram.conf с ограниченными правами. Не добавляйте этот файл в репозиторий.

5. Системный VPN через Xray

Файл: ochenstarik-server-vpn-5.sh.

Скрипт устанавливает Xray и необходимые пакеты, принимает прямую ссылку vless:// либо HTTPS-ссылку подписки 3x-ui и настраивает маршрутизацию через nftables. Если подписка содержит VLESS-ссылки на нескольких портах, скрипт выводит доступные порты и просит выбрать нужный. Поддерживается VLESS с транспортом TCP/RAW и REALITY.

curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-vpn-5.sh
chmod 700 ochenstarik-server-vpn-5.sh
bash -n ochenstarik-server-vpn-5.sh
sudo ./ochenstarik-server-vpn-5.sh

Во время запуска ссылка вводится скрыто. Скрипт сравнивает внешний IP до и после настройки и использует автоматический откат при ошибке. SSH и ответы сервисов на портах 443 и 63636 остаются на прямом маршруте.

Проверка маршрутизации:

sudo /usr/local/sbin/ochenstarik-xray-routing status
curl -4 https://api.ipify.org

Отключение системного VPN:

sudo ./ochenstarik-server-vpn-5.sh --disable

Полная установка

Если нужны все модули, запускайте их по очереди:

sudo ./ochenstarik-server-1.sh
sudo ./ochenstarik-server-2.sh
sudo ./ochenstarik-server-user-3.sh
sudo ./ochenstarik-server-tg-4.sh
sudo ./ochenstarik-server-vpn-5.sh

VPN и Telegram-уведомления являются необязательными этапами.

Безопасность

  • Всегда проверяйте скачанные скрипты перед запуском от root.
  • Не публикуйте токены Telegram, пароли, приватные SSH-ключи и ссылки VLESS.
  • Не закрывайте действующую SSH-сессию во время переноса SSH на новый порт.
  • Перед настройкой на рабочем сервере сделайте резервную копию важных данных.