# Стартовые скрипты для настройки серверов Этот репозиторий содержит скрипт `setup.sh` для базовой подготовки Ubuntu/Debian сервера. Скрипт автоматизирует установку полезных пакетов, создание пользователя, настройку сетевой безопасности и журналирования. ## Возможности `setup.sh` - обновление пакетов и установка базового софта; - создание нового пользователя с `sudo` без пароля; - настройка SSH‑доступа только по указанному ключу; - настройка межсетевого экрана UFW; - установка Docker и разрешение работы без `root`; - установка и настройка Fail2Ban для защиты SSH; - включение автоматических обновлений `unattended-upgrades`; - установка часового пояса Europe/Moscow; - ротация логов и их отправка через Vector, включая логи Docker; - установка и запуск Netbird по ключу с добавлением правила UFW для центрального сервера; - проверка наличия роли в репозитории, копирование её в `/opt/` и запуск `init.sh` (если есть) для старта первого Docker Compose стека; если роль не найдена, выводится предупреждение. - проверки запуска UFW, Docker, Vector, Netbird и конфигурации SSH. ## Требования - Скрипт должен запускаться от `root`. - Требуется подключение к интернету для установки пакетов. ## Использование Запуск (или из-под root, или sudo sh): Так как репозиторий приватный, надо сперва автризоваться на github: - сгенерировать [PAT (personal access token)](https://github.com/settings/personal-access-tokens/new) с правами **Contents: Read** ТОЛЬКО НА НУЖНЫЙ РЕПОЗИТОРИЙ! - добавить токен в окружение: ```bash export GITHUB_TOKEN='ghp_...' export CURL_HOME="$(mktemp -d)" printf 'header = "Authorization: Bearer %s"\n' "$GITHUB_TOKEN" > "$CURL_HOME/.curlrc" ``` - после выполнения настройки - удалить авторизацию для безопасности ```bash rm -rf "$CURL_HOME" unset CURL_HOME GITHUB_TOKEN ``` ```bash bash <(curl -sL https://raw.githubusercontent.com/deadcxap/init_scripts/main/setup.sh) \ --user --sshkey "" \ [--ssh-ip ] \ [--monitor-ip ] \ [--vector ] \ [--role ] \ [--netbird-key [--netbird-ip --netbird-port ]] ``` Параметры: - `-u, --user` — имя создаваемого пользователя; - `-k, --sshkey` — строка публичного SSH‑ключа (например `"ssh-rsa AAAA..."`); - `-s, --ssh-ip` — IP‑адрес, с которого разрешён SSH‑доступ (если не указан — порт открыт всем); - `-m, --monitor-ip` — IP‑адрес сервера мониторинга для порта 45876/tcp (если не указан — порт не открывается); - `-v, --vector` — URL приёмника логов Vector (если не указан — Vector не устанавливается); - `-r, --role` — имя роли из [репозитория](https://github.com/deadcxap/init_scripts); перед запуском проверяется наличие папки, после чего её содержимое копируется в `/opt/` и при наличии выполняется `init.sh`; если папка отсутствует, выводится предупреждение и шаг пропускается; - `-n, --netbird-key` — ключ настройки Netbird; - `-i, --netbird-ip` — IP центрального сервера Netbird (если указан вместе с портом, добавляется правило UFW); - `-p, --netbird-port` — порт центрального сервера Netbird (используется вместе с IP). Логи выполнения сохраняются в `/var/log/core_setup.log`, по завершении выводится краткая сводка по каждому шагу. ## Примечание Перед запуском рекомендуется ознакомиться с содержимым скрипта и адаптировать его под свои требования.