mirror of
https://github.com/deadcxap/init_scripts.git
synced 2026-07-02 13:53:40 +03:00
69 lines
4.9 KiB
Markdown
69 lines
4.9 KiB
Markdown
# Стартовые скрипты для настройки серверов
|
||
|
||
Этот репозиторий содержит скрипт `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`, по завершении выводится краткая сводка по каждому шагу.
|
||
|
||
## Примечание
|
||
Перед запуском рекомендуется ознакомиться с содержимым скрипта и адаптировать его под свои требования.
|