195 lines
8.5 KiB
Markdown
195 lines
8.5 KiB
Markdown
# Быстрая настройка Ubuntu Server
|
||
|
||
Набор независимых Bash-скриптов для первоначальной настройки Ubuntu Server. Можно запустить только нужные модули или выполнить их по порядку для полной настройки.
|
||
|
||
## Что входит в проект
|
||
|
||
| Файл | Назначение | Можно запускать отдельно |
|
||
| --- | --- | --- |
|
||
| `ochenstarik-server-1.sh` | Создаёт swap-файл 2 ГБ и задаёт `vm.swappiness=20` | Да |
|
||
| `ochenstarik-server-2.sh` | Обновляет систему, ставит серверные и офисные пакеты, настраивает часовой пояс и UFW | Да |
|
||
| `ochenstarik-server-user-3.sh` | Создаёт администратора, устанавливает SSH-ключ, переносит SSH на порт 20202, включает 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-сессию открытой до проверки нового входа.
|
||
|
||
## Получение проекта
|
||
|
||
```bash
|
||
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
|
||
bash -n ./ИМЯ-СКРИПТА.sh
|
||
```
|
||
|
||
## 1. Настройка swap
|
||
|
||
Файл: `ochenstarik-server-1.sh`.
|
||
|
||
Создаёт `/swapfile` размером 2 ГБ, добавляет его в `/etc/fstab` и устанавливает `vm.swappiness=20`. Повторный запуск предусмотрен.
|
||
|
||
```bash
|
||
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
|
||
```
|
||
|
||
Проверка:
|
||
|
||
```bash
|
||
swapon --show
|
||
sysctl vm.swappiness
|
||
```
|
||
|
||
## 2. Базовые пакеты, часовой пояс и брандмауэр
|
||
|
||
Файл: `ochenstarik-server-2.sh`.
|
||
|
||
Скрипт обновляет систему, устанавливает OpenSSH, UFW, fail2ban, инструменты обработки документов, изображений, аудио и видео, а также задаёт часовой пояс `Asia/Novosibirsk`.
|
||
|
||
Открываются TCP-порты:
|
||
|
||
- `22` — временный SSH-порт;
|
||
- `20202` — новый SSH-порт;
|
||
- `80`, `443` — HTTP и HTTPS;
|
||
- `2096`, `40000`, `63636` — порты приложений.
|
||
|
||
```bash
|
||
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
|
||
```
|
||
|
||
Проверка:
|
||
|
||
```bash
|
||
sudo ufw status verbose
|
||
timedatectl
|
||
```
|
||
|
||
## 3. Администратор и защита SSH
|
||
|
||
Файл: `ochenstarik-server-user-3.sh`.
|
||
|
||
Скрипт интерактивно запрашивает имя нового администратора, SSH-ключ и пароль. Затем он:
|
||
|
||
- создаёт или обновляет пользователя;
|
||
- добавляет пользователя в группу `sudo`;
|
||
- запрещает вход `root` по SSH;
|
||
- переносит SSH на порт `20202`;
|
||
- настраивает fail2ban;
|
||
- по выбору управляет правилами UFW.
|
||
|
||
Для отдельного запуска сначала установите зависимости:
|
||
|
||
```bash
|
||
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
|
||
```
|
||
|
||
Не закрывая текущую сессию, откройте второй терминал и проверьте вход:
|
||
|
||
```bash
|
||
ssh -p 20202 ИМЯ_ПОЛЬЗОВАТЕЛЯ@IP_СЕРВЕРА
|
||
```
|
||
|
||
Только после успешной проверки можно удалить временное правило порта 22:
|
||
|
||
```bash
|
||
sudo ufw delete allow 22/tcp
|
||
```
|
||
|
||
## 4. Telegram-уведомления о входах по SSH
|
||
|
||
Файл: `ochenstarik-server-tg-4.sh`.
|
||
|
||
Создайте бота через `@BotFather`, отправьте ему сообщение и узнайте ID чата. Скрипт запросит токен и ID интерактивно, отправит тестовое сообщение и подключит уведомления через PAM.
|
||
|
||
Для отдельного запуска:
|
||
|
||
```bash
|
||
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
|
||
```
|
||
|
||
Журнал уведомлений:
|
||
|
||
```bash
|
||
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 с транспортом TCP/RAW и REALITY.
|
||
|
||
```bash
|
||
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` остаются на прямом маршруте.
|
||
|
||
Проверка маршрутизации:
|
||
|
||
```bash
|
||
sudo /usr/local/sbin/ochenstarik-xray-routing status
|
||
curl -4 https://api.ipify.org
|
||
```
|
||
|
||
Отключение системного VPN:
|
||
|
||
```bash
|
||
sudo ./ochenstarik-server-vpn-5.sh --disable
|
||
```
|
||
|
||
## Полная установка
|
||
|
||
Если нужны все модули, запускайте их по очереди:
|
||
|
||
```bash
|
||
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 на новый порт.
|
||
- Перед настройкой на рабочем сервере сделайте резервную копию важных данных.
|