Files
init_scripts/README.MD
T

69 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Стартовые скрипты для настройки серверов
Этот репозиторий содержит скрипт `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 <username> --sshkey "<ssh_pubkey>" \
[--ssh-ip <ssh_allowed_ip>] \
[--monitor-ip <monitor_ip>] \
[--vector <vector_endpoint>] \
[--role <name>] \
[--netbird-key <key> [--netbird-ip <ip> --netbird-port <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`, по завершении выводится краткая сводка по каждому шагу.
## Примечание
Перед запуском рекомендуется ознакомиться с содержимым скрипта и адаптировать его под свои требования.