Skip to content

CosmoFox/cook-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

setup-server.sh

Интерактивный скрипт базовой настройки чистого VPS на Ubuntu. Выполняет пошаговую настройку безопасности, Docker, swap, фаервола и защиты от брутфорса.

Требования

  • ОС: Ubuntu 20.04 / 22.04 / 24.04
  • Доступ: root (через sudo)
  • Интернет: для установки пакетов и Docker

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

Запуск напрямую из GitHub (рекомендуется)

bash <(curl -s https://raw.githubusercontent.com/CosmoFox/cook-server/main/setup-server.sh)

Или через wget:

bash <(wget -qO- https://raw.githubusercontent.com/CosmoFox/cook-server/main/setup-server.sh)

Локальный запуск

1. Скопируйте файлы на сервер

# Со своего локального компьютера:
scp setup-server.sh root@<IP-сервера>:/<Путь>/

Или клонируйте репозиторий:

git clone https://github.com/CosmoFox/cook-server.git /opt/cook-server
cd /opt/cook-server

2. Сделайте скрипт исполняемым

chmod +x setup-server.sh

3. Запустите

./setup-server.sh

Файлы

Файл Назначение
setup-server.sh Основной скрипт настройки
.token Содержит SSH-публичный ключ для авторизации. Если файла нет — скрипт предложит сгенерировать пару ключей
id_ed25519_* / id_rsa_* Закрытый SSH-ключ (создаётся при генерации). Имя зависит от выбора: hostname, IP или вручную. Скачайте и удалите с сервера!

Интерактивное меню

После запуска вы видите чекбокс-меню:

▸ [ ] 1. Обновление системы
  [ ] 2. Установка базовых пакетов
  [X] 3. Установка Docker
  ...

Управление:

Клавиша Действие
Пробел Отметить / снять текущий шаг
Навигация между шагами
A Выбрать все
N Снять все
Enter Запустить выбранные

Доступные шаги

1. Обновление системы

  • apt updateapt upgradeapt autoremove
  • Обновляет репозитории, устанавливает последние версии пакетов, удаляет ненужные

2. Установка базовых пакетов

Пакет Зачем
curl HTTP-запросы из командной строки
htop Интерактивный мониторинг процессов
mcedit Простой текстовый редактор
fail2ban Защита от брутфорса (настраивается в шаге 7)
openssh-server SSH-сервер

3. Установка Docker

  • Подключает официальный репозиторий Docker
  • Устанавливает: docker-ce, docker-compose-plugin, docker-buildx-plugin
  • Включает и запускает сервис docker
  • Пропускает установку, если Docker уже есть

4. Настройка swap (2 ГБ)

  • Создаёт /swapfile на 2048 МБ
  • Права 600, форматирует, активирует
  • Добавляет запись в /etc/fstab для автоподключения
  • Пропускает, если swap уже активен

5. Настройка UFW (фаервол)

  • Сбрасывает существующие правила
  • Default: deny incoming, allow outgoing
  • Открывает порты:
Порт Протокол Назначение
2288 TCP SSH
80 TCP HTTP
443 TCP HTTPS
  • Включает UFW

⚠ ВНИМАНИЕ: Этот шаг полностью перезаписывает файл /etc/ssh/sshd_config. Все текущие пользовательские настройки SSH будут удалены и заменены стандартными значениями скрипта. Полная перезапись /etc/ssh/sshd_config:

Параметр Значение
Port 2288
PermitRootLogin yes
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
X11Forwarding no
  • Устанавливает публичный ключ из .token в /root/.ssh/authorized_keys
  • Рестартует SSH-сервер

7. Настройка fail2ban

  • Банит на 24 часа после 3 неудачных попыток за 10 минут
  • Мониторит /var/log/auth.log на порту 2288
  • Включает сервис

Генерация SSH-ключей

Если файл .token отсутствует при запуске, скрипт предложит сгенерировать пару ключей:

  1. Выберите тип ключа:

    • 1ED25519 (рекомендуется, быстрее, компактнее)
    • 2RSA 4096-bit (для совместимости со старыми системами)
  2. Выберите имя файла ключа:

    • 1 — по hostname сервера: id_ed25519_web-1
    • 2 — по IP-адресу: id_ed25519_10.0.0.5
    • 3hostname + IP: id_ed25519_web-1_10.0.0.5
    • 4ввести вручную (дополнительная метка)
  3. Ключи генерируются без passphrase:

    • Открытый ключ → .token
    • Закрытый ключ → файл с выбранным именем (рядом со скриптом)
  4. ⚠ Скрипт покажет предупреждение — обязательно скачайте закрытый ключ до продолжения, иначе потеряете доступ к серверу!

  5. Опционально: генерация .ppk для PuTTY — после создания ключа скрипт спросит, нужен ли формат PuTTY:

    • y — конвертирует ключ в .ppk через puttygen (установка: apt install -y putty-tools)
    • N / Enter — пропустить

Подключение с новым ключом

ssh -i /путь/к/id_ed25519_web-1 -p 2288 root@<IP-сервера>

Порядок выполнения

Рекомендуется запускать шаги в таком порядке:

  1. Обновление системы
  2. Установка базовых пакетов
  3. Установка Docker
  4. Настройка swap
  5. Настройка UFW
  6. Настройка SSH ← после этого парольный доступ отключается!
  7. Настройка fail2ban

Для полной настройки — нажмите A (выбрать все) → Enter.

После перезагрузки

Проверьте:

# SSH подключается только по ключу на порту 2288:
ssh -i ~/.ssh/id_ed25519 -p 2288 root@<IP>

# Фаервол активен:
ufw status verbose

# Docker работает:
docker run hello-world

# fail2ban активен:
fail2ban-client status

Примечания

  • Скрипт идемпотентен — повторный запуск безопасен (Docker, swap, UFW пропускаются, если уже настроены)
  • Если .token пустой или отсутствует — скрипт не продолжит работу
  • Порт SSH изменён со стандартного 22 на 2288
  • Парольная аутентификация SSH отключена

About

Интерактивный скрипт базовой настройки чистого VPS на Ubuntu

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages