Add multilingual README and server manager link (#9)
This commit is contained in:
parent
52b8c96a2f
commit
1f162aa93e
12 changed files with 807 additions and 365 deletions
3
.github/workflows/bash-syntax.yml
vendored
3
.github/workflows/bash-syntax.yml
vendored
|
|
@ -29,5 +29,8 @@ jobs:
|
||||||
- name: Test master language selection
|
- name: Test master language selection
|
||||||
run: bash tests/test-master-language.sh
|
run: bash tests/test-master-language.sh
|
||||||
|
|
||||||
|
- name: Test README languages and monitoring links
|
||||||
|
run: bash tests/test-readme-languages.sh
|
||||||
|
|
||||||
- name: Test step 3 SSH configuration parsing
|
- name: Test step 3 SSH configuration parsing
|
||||||
run: bash tests/test-step3-sshd-parsing.sh
|
run: bash tests/test-step3-sshd-parsing.sh
|
||||||
|
|
|
||||||
455
README.md
455
README.md
|
|
@ -1,10 +1,14 @@
|
||||||
# Быстрая настройка Ubuntu Server
|
# Lightweight Ubuntu Server Setup
|
||||||
|
|
||||||
Набор независимых Bash-скриптов для первоначальной настройки Ubuntu Server. Можно запустить только нужные модули или выполнить их по порядку для полной настройки.
|
**English** | [Русский](docs/readme/README.ru.md) | [Español](docs/readme/README.es.md) | [Deutsch](docs/readme/README.de.md) | [Français](docs/readme/README.fr.md) | [Português](docs/readme/README.pt.md) | [中文](docs/readme/README.zh-CN.md) | [日本語](docs/readme/README.ja.md) | [العربية](docs/readme/README.ar.md) | [हिन्दी](docs/readme/README.hi.md)
|
||||||
|
|
||||||
## Быстрая установка
|
A modular set of Bash installers for the initial setup, security hardening, administration, VPN, web panel, WARP, and backups on Ubuntu Server. Run the unified wizard for a guided installation or execute only the modules you need.
|
||||||
|
|
||||||
Скопируйте весь блок в терминал сервера. Он загружает архив через `codeload.github.com`, проверяет ошибки на каждом шаге и запускает единый пошаговый мастер:
|
> **Manage multiple servers:** use the companion [Server Monitor Manager](https://github.com/ochenstarik-ui/server-monitor-manager) project to add servers, collect reports, and manage several hosts from one application. It is currently in early development and should not yet be treated as production-ready.
|
||||||
|
|
||||||
|
## Quick installation
|
||||||
|
|
||||||
|
Copy the complete block into the server terminal. It downloads the repository archive through `codeload.github.com`, stops on errors, and starts the unified installer:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
set -e
|
set -e
|
||||||
|
|
@ -28,9 +32,13 @@ chmod 700 ./*.sh
|
||||||
sudo ./ochenstarik-server-install.sh
|
sudo ./ochenstarik-server-install.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Первым запросом мастер предлагает выбрать язык диалога и только затем показывает этапы 1–7 по порядку. На каждом этапе можно выбрать установку, пропуск или завершение. В первом этапе пустой ввод устанавливает все рекомендуемые наборы программ. Во время изменения SSH-порта не закрывайте текущую сессию — сначала проверьте новый вход во втором терминале.
|
The first wizard prompt selects the dialog language. English is the default; Russian, Spanish, German, French, Portuguese, Simplified Chinese, Japanese, Arabic, and Hindi are also available. The wizard then presents steps 1–7 in order. Each step can be installed, skipped, or used to exit the wizard.
|
||||||
|
|
||||||
Если нужен только мастер без скачивания полного архива:
|
Keep the current SSH session open while changing the SSH port. Test the new login in a second terminal before disconnecting.
|
||||||
|
|
||||||
|
## Short wizard-only installation
|
||||||
|
|
||||||
|
If `raw.githubusercontent.com` is reachable from the server:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
|
|
@ -44,380 +52,97 @@ chmod 700 ochenstarik-server-install.sh
|
||||||
sudo ./ochenstarik-server-install.sh
|
sudo ./ochenstarik-server-install.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
При запуске одного мастера недостающие этапы будут загружены автоматически из основной ветки и проверены командой `bash -n`.
|
The wizard downloads any missing module from the `main` branch and validates it with `bash -n` before execution.
|
||||||
|
|
||||||
## Что входит в проект
|
## Modules
|
||||||
|
|
||||||
| Файл | Назначение | Можно запускать отдельно |
|
| Script | Purpose | Standalone use |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| `ochenstarik-server-install.sh` | Сначала выбирает язык диалога, затем последовательно предлагает установить, пропустить или завершить каждый этап | Да; рекомендуемый способ полной настройки |
|
| `ochenstarik-server-install.sh` | Unified wizard with language selection and sequential module installation | Recommended |
|
||||||
| `ochenstarik-server-1.sh` | Предлагает выбрать часовой пояс, язык терминала и наборы программ, создаёт swap-файл 2 ГБ | Да |
|
| `ochenstarik-server-1.sh` | Timezone, terminal locale, program groups, and a 2 GiB swap file | Yes |
|
||||||
| `ochenstarik-server-2.sh` | Предлагает будущий SSH-порт и IPv4/IPv6, обновляет систему, ставит обязательные пакеты и настраивает UFW | Да |
|
| `ochenstarik-server-2.sh` | Base packages, SSH port, IPv4/IPv6 mode, UFW, and port management | Yes |
|
||||||
| `ochenstarik-server-user-3.sh` | Создаёт администратора, переносит SSH на порт из этапа 2, проверяет права и включает fail2ban | После установки необходимых пакетов; проще всего сначала запустить скрипт 2 |
|
| `ochenstarik-server-user-3.sh` | Administrative user, SSH key permissions, SSH migration, sudo, and fail2ban | Run after step 2 |
|
||||||
| `ochenstarik-server-tg-4.sh` | Отправляет уведомления в Telegram при успешном входе по SSH | После установки OpenSSH и `curl`; обычно после скрипта 2 или 3 |
|
| `ochenstarik-server-tg-4.sh` | Telegram notifications for successful SSH logins | Optional |
|
||||||
| `ochenstarik-server-vpn-5.sh` | Устанавливает Xray и направляет системный трафик через VLESS + REALITY | Да; зависимости устанавливаются автоматически |
|
| `ochenstarik-server-vpn-5.sh` | System VPN through Xray with a selectable subscription port | Optional |
|
||||||
| `ochenstarik-server-panel-warp-6.sh` | Устанавливает 3x-ui и Cloudflare WARP, настраивает и проверяет их порты | Ubuntu 22.04/24.04/26.04 или Debian 12/13 |
|
| `ochenstarik-server-panel-warp-6.sh` | 3x-ui panel and local Cloudflare WARP proxy | Optional |
|
||||||
| `ochenstarik-server-backup-7.sh` | Создаёт неизменяемый первичный снимок и настраивает выбранные расписания резервного копирования | Да; зависимости устанавливаются автоматически |
|
| `ochenstarik-server-backup-7.sh` | Protected initial snapshot and selected daily, weekly, or monthly schedules | Optional |
|
||||||
| `ochenstarik-server-uninstall.sh` | Удаляет настройки, службы и данные проекта для повторной установки с начала | Да; запускать только из сохранённой SSH-сессии |
|
| `ochenstarik-server-uninstall.sh` | Removes project-managed settings so installation can start again | Use carefully |
|
||||||
|
|
||||||
Файлы `*.env.example` являются только примерами. Не записывайте настоящие пароли, токены и приватные SSH-ключи в Git.
|
Every module can be downloaded and run independently:
|
||||||
|
|
||||||
## Требования
|
|
||||||
|
|
||||||
- Ubuntu Server или совместимая Debian-система с `systemd`;
|
|
||||||
- доступ `root` или пользователь с `sudo`;
|
|
||||||
- подключение к интернету;
|
|
||||||
- рекомендуется сохранить текущую SSH-сессию открытой до проверки нового входа.
|
|
||||||
|
|
||||||
## Получение проекта
|
|
||||||
|
|
||||||
Рекомендуемый способ — загрузка архива через `codeload.github.com`. Он подходит в том числе для серверов, на которых соединение с основным доменом `github.com` завершается ошибкой `SSL connection timeout`:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
set -e
|
curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/SCRIPT_NAME.sh
|
||||||
cd "$HOME"
|
chmod 700 SCRIPT_NAME.sh
|
||||||
sudo apt-get update
|
bash -n SCRIPT_NAME.sh
|
||||||
sudo apt-get install -y curl ca-certificates tar
|
sudo ./SCRIPT_NAME.sh
|
||||||
curl -4 -fL \
|
|
||||||
--retry 5 \
|
|
||||||
--retry-delay 10 \
|
|
||||||
--connect-timeout 30 \
|
|
||||||
https://codeload.github.com/ochenstarik-ui/lightweight-server/tar.gz/refs/heads/main \
|
|
||||||
-o lightweight-server.tar.gz
|
|
||||||
mkdir lightweight-server
|
|
||||||
tar -xzf lightweight-server.tar.gz -C lightweight-server --strip-components=1
|
|
||||||
rm lightweight-server.tar.gz
|
|
||||||
cd lightweight-server
|
|
||||||
chmod 700 ./*.sh
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Если `github.com` доступен с сервера, проект также можно получить через Git:
|
Replace `SCRIPT_NAME.sh` with the required filename from the table.
|
||||||
|
|
||||||
|
## Installation flow
|
||||||
|
|
||||||
|
1. Select the wizard dialog language.
|
||||||
|
2. Configure the timezone, terminal locale, recommended tools, and swap.
|
||||||
|
3. Select IPv4, IPv6, or dual-stack operation; install base services and select the future SSH port.
|
||||||
|
4. Create or update the administrative user, install the public SSH key, repair ownership and permissions, and move SSH to the port selected in step 2.
|
||||||
|
5. Optionally configure Telegram SSH-login notifications.
|
||||||
|
6. Optionally configure the system VPN and subscription port.
|
||||||
|
7. Optionally deploy 3x-ui and Cloudflare WARP with selected panel and subscription ports.
|
||||||
|
8. Optionally create the permanent initial backup and configure rotating schedules.
|
||||||
|
|
||||||
|
## Firewall and SSH notes
|
||||||
|
|
||||||
|
- Step 2 supports IPv4-only, IPv6-only, and dual-stack UFW rules.
|
||||||
|
- A repeated step 2 run can change the IP-family mode or add ports without reinstalling everything.
|
||||||
|
- Step 3 reads the SSH port chosen in step 2 and creates an administrator with sudo access.
|
||||||
|
- The home directory, `.ssh`, and `authorized_keys` ownership and permissions are checked on every run.
|
||||||
|
- Do not remove temporary port 22 access until a new SSH session succeeds on the selected port.
|
||||||
|
|
||||||
|
## Backups
|
||||||
|
|
||||||
|
Step 7 can create:
|
||||||
|
|
||||||
|
- one initial snapshot that is never rotated automatically;
|
||||||
|
- daily backups retained for 7 days;
|
||||||
|
- weekly backups retained for 4 weeks;
|
||||||
|
- monthly backups retained for 12 months.
|
||||||
|
|
||||||
|
Schedules are selected independently, so any combination can be enabled. Keep an additional copy on another server or storage device; a local backup does not protect against loss of the entire host.
|
||||||
|
|
||||||
|
## Multi-server monitoring and management
|
||||||
|
|
||||||
|
[Server Monitor Manager](https://github.com/ochenstarik-ui/server-monitor-manager) is the companion project for centralized server operations. Its planned architecture includes:
|
||||||
|
|
||||||
|
- a Flutter client for Android and iOS;
|
||||||
|
- an ASP.NET Core API with accounts, TOTP two-factor authentication, and SignalR;
|
||||||
|
- an outbound Linux agent for metrics and managed operations;
|
||||||
|
- support for adding and monitoring multiple servers from one application.
|
||||||
|
|
||||||
|
The manager is under active early development. Review its security and development documentation before connecting real production servers.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- Ubuntu Server with systemd and APT;
|
||||||
|
- root access through `sudo`;
|
||||||
|
- an active SSH session;
|
||||||
|
- outbound HTTPS access to GitHub or GitHub codeload;
|
||||||
|
- a valid public SSH key for the administrator setup.
|
||||||
|
|
||||||
|
## Update
|
||||||
|
|
||||||
|
For a Git clone:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
set -e
|
cd ~/lightweight-server
|
||||||
cd "$HOME"
|
git pull
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y git ca-certificates
|
|
||||||
git -c http.version=HTTP/1.1 clone --depth 1 https://github.com/ochenstarik-ui/lightweight-server.git
|
|
||||||
cd lightweight-server
|
|
||||||
chmod 700 ./*.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Команда `set -e` останавливает последовательность при ошибке загрузки, поэтому команды `cd` и `chmod` не будут выполняться для отсутствующей папки.
|
|
||||||
|
|
||||||
Перед запуском любого выбранного файла можно проверить его синтаксис:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
bash -n ./ИМЯ-СКРИПТА.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
## 1. Часовой пояс, язык, программы и swap
|
|
||||||
|
|
||||||
Файл: `ochenstarik-server-1.sh`.
|
|
||||||
|
|
||||||
При запуске единого мастера самый первый запрос, ещё до выбора этапа 1, задаёт язык диалога: English, Русский, Español, Deutsch, Français, Português, 中文, 日本語, العربية или हिन्दी. Начальное меню выводится на английском, а пустой ввод оставляет English. Выбор передаётся первому этапу автоматически и не меняет системную локаль сервера.
|
|
||||||
|
|
||||||
Первый этап начинается с нумерованного меню популярных часовых поясов, включая `Asia/Novosibirsk`, `Europe/Moscow` и `UTC`. Нужную зону достаточно выбрать по номеру. Для остальных зон предусмотрен полный список с последовательным выбором региона и часового пояса — вводить имя вручную не требуется.
|
|
||||||
|
|
||||||
После выбора времени скрипт показывает меню языков терминала: оставить текущий, русский, английский, немецкий, французский, испанский, итальянский, португальский, польский, украинский, турецкий, китайский, японский, корейский либо выбрать другую локаль из полного системного списка. Выбранный язык применяется к новым терминальным сессиям. Исходный `/etc/default/locale` сохраняется для последующего восстановления.
|
|
||||||
|
|
||||||
Затем можно отметить несколько наборов программ номерами через пробел, например `1 2 4 9`. Пустой ввод устанавливает все наборы, а `0` пропускает дополнительные программы:
|
|
||||||
|
|
||||||
1. Терминал и повседневная работа — Git, wget/curl, jq/yq, ripgrep, fd, fzf, lnav, редакторы, MC, tmux/screen, htop/btop, ncdu, rsync и strace.
|
|
||||||
2. Диагностика сети — DNS, ping, MTR, traceroute, tcpdump, nmap, netcat, HTTPie, whois, ethtool и socat.
|
|
||||||
3. Мониторинг системы и дисков — iotop, sysstat, SMART, lm-sensors, atop, nethogs, vnStat и psmisc.
|
|
||||||
4. Безопасность и обслуживание — auditd, AppArmor tools, Lynis, needrestart, unattended-upgrades, debsums, ACL и extended attributes.
|
|
||||||
5. Разработка и автоматизация — компилятор, ShellCheck, Python pip/venv и pipx.
|
|
||||||
6. Архивы и данные — 7-Zip, ZIP/RAR, SQLite, csvkit, клиенты PostgreSQL и Redis.
|
|
||||||
7. Документы, PDF и OCR — Poppler, qpdf, Ghostscript, OCRmyPDF/Tesseract, LibreOffice, Pandoc, antiword и catdoc.
|
|
||||||
8. Изображения, аудио и видео — ImageMagick, ExifTool, WebP, FFmpeg и MediaInfo.
|
|
||||||
9. Резервное копирование — restic, BorgBackup и rclone.
|
|
||||||
|
|
||||||
Скрипт проверяет доступность каждого пакета в подключённых репозиториях. Недоступные для конкретной версии или набора репозиториев пакеты пропускаются с предупреждением. Список программ, которых не было до запуска, сохраняется в `/etc/ochenstarik-server/step1-installed-packages.list` для безопасной очистки.
|
|
||||||
|
|
||||||
Затем скрипт создаёт `/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. Базовые пакеты, SSH-порт и брандмауэр
|
|
||||||
|
|
||||||
Файл: `ochenstarik-server-2.sh`.
|
|
||||||
|
|
||||||
При каждом запуске скрипт предлагает три действия: полную установку или обновление, изменение режима IP без переустановки пакетов либо добавление открытых портов. При полной установке он запрашивает SSH-порт для этапа 3, обновляет систему и устанавливает только обязательные компоненты: OpenSSH, UFW, fail2ban, `sudo`, TLS-сертификаты и сетевые инструменты. Дополнительные программы выбираются на этапе 1.
|
|
||||||
|
|
||||||
Для входящих подключений можно выбрать:
|
|
||||||
|
|
||||||
- только IPv4 — IPv6 отключается в UFW и системно через `sysctl`; этот режим рекомендуется, если 3x-ui используется только по IPv4;
|
|
||||||
- только IPv6 — управляемые скриптом порты открываются лишь для IPv6;
|
|
||||||
- IPv4 + IPv6 — порты открываются для обоих семейств.
|
|
||||||
|
|
||||||
Выбор сохраняется в `/etc/ochenstarik-server/ip-family.conf`, а список управляемых портов — в `/etc/ochenstarik-server/ufw-managed-ports.conf`. При переходе на режим с одним семейством старые правила этих портов пересоздаются. Скрипт не разрешит отключить семейство адресов, через которое работает текущая SSH-сессия. Для режима IPv6 также проверяются глобальный IPv6-адрес и маршрут по умолчанию.
|
|
||||||
|
|
||||||
В режиме «только IPv6» системный IPv4 остаётся доступен для исходящих соединений и работы менеджера пакетов, но входящие управляемые порты по IPv4 закрываются UFW. Полное переносимое отключение IPv4 в Linux без привязки к конкретной сетевой конфигурации не выполняется.
|
|
||||||
|
|
||||||
Открываются TCP-порты:
|
|
||||||
|
|
||||||
- `22` — временный SSH-порт;
|
|
||||||
- выбранный SSH-порт — будущий порт 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
|
|
||||||
cat /etc/ochenstarik-server/ip-family.conf
|
|
||||||
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
|
|
||||||
timedatectl
|
|
||||||
```
|
|
||||||
|
|
||||||
## 3. Администратор и защита SSH
|
|
||||||
|
|
||||||
Файл: `ochenstarik-server-user-3.sh`.
|
|
||||||
|
|
||||||
При каждом запуске скрипт предлагает два режима:
|
|
||||||
|
|
||||||
1. новая установка или повторная настройка администратора и SSH;
|
|
||||||
2. только добавление открытых портов в UFW без изменения пользователя и SSH.
|
|
||||||
|
|
||||||
В режиме новой установки скрипт интерактивно запрашивает имя администратора, SSH-ключ и пароль. SSH-порт автоматически читается из защищённого файла, созданного этапом 2. Если этап 2 не выполнялся, скрипт предложит выбрать порт вручную. Затем он:
|
|
||||||
|
|
||||||
- создаёт или обновляет пользователя;
|
|
||||||
- добавляет пользователя в группу `sudo`;
|
|
||||||
- назначает пользователю его домашнюю папку и всё содержимое `.ssh`;
|
|
||||||
- устанавливает права `700` для `.ssh` и `600` для `authorized_keys` и остальных файлов ключей;
|
|
||||||
- запрещает вход `root` по SSH;
|
|
||||||
- переносит SSH на выбранный порт и добавляет для него правило UFW;
|
|
||||||
- настраивает fail2ban;
|
|
||||||
- по выбору управляет правилами UFW.
|
|
||||||
|
|
||||||
Правила UFW добавляются с учётом режима IPv4/IPv6, сохранённого скриптом 2. Новые порты также записываются в общий список управляемых правил, поэтому последующее переключение IP-режима пересоздаст их корректно.
|
|
||||||
|
|
||||||
Для отдельного запуска сначала установите зависимости:
|
|
||||||
|
|
||||||
```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 ВЫБРАННЫЙ_ПОРТ ИМЯ_ПОЛЬЗОВАТЕЛЯ@IP_СЕРВЕРА
|
|
||||||
```
|
|
||||||
|
|
||||||
Только после успешной проверки можно удалить временное правило порта 22:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo ufw delete allow 22/tcp
|
|
||||||
```
|
|
||||||
|
|
||||||
Чтобы позднее открыть дополнительные порты, повторно запустите скрипт, выберите пункт `2` и введите правила через пробел или запятую:
|
|
||||||
|
|
||||||
```text
|
|
||||||
80 443/tcp 53/udp 40000
|
|
||||||
```
|
|
||||||
|
|
||||||
Для записей без протокола используется TCP. Допустимы только порты от `1` до `65535`. Если UFW неактивен, правила будут сохранены, но скрипт не включит брандмауэр автоматически во избежание потери SSH-доступа.
|
|
||||||
|
|
||||||
## 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-ссылки на нескольких портах, скрипт выводит доступные порты и просит выбрать нужный. Поддерживается 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
|
|
||||||
```
|
|
||||||
|
|
||||||
## 6. Панель 3x-ui и локальный proxy Cloudflare WARP
|
|
||||||
|
|
||||||
Файл: `ochenstarik-server-panel-warp-6.sh`.
|
|
||||||
|
|
||||||
Скрипт предлагает выбрать три разных порта:
|
|
||||||
|
|
||||||
- порт веб-панели 3x-ui, по умолчанию `2053`;
|
|
||||||
- порт подписок 3x-ui, по умолчанию `2096`;
|
|
||||||
- локальный SOCKS5/HTTP proxy-порт WARP, по умолчанию `40000`.
|
|
||||||
|
|
||||||
3x-ui устанавливается официальным интерактивным установщиком. После установки выбранные порты записываются в стандартную SQLite-базу с предварительной резервной копией. Скрипт включает сервис подписок, запускает `x-ui` и проверяет оба TCP-слушателя.
|
|
||||||
|
|
||||||
Cloudflare WARP устанавливается из официального APT-репозитория, переводится в Local proxy mode через MASQUE и проверяется запросом к Cloudflare: ответ должен содержать `warp=on`.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-panel-warp-6.sh
|
|
||||||
chmod 700 ochenstarik-server-panel-warp-6.sh
|
|
||||||
bash -n ochenstarik-server-panel-warp-6.sh
|
|
||||||
sudo ./ochenstarik-server-panel-warp-6.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
В UFW открываются и проверяются `80/tcp`, `443/tcp`, выбранный порт панели и выбранный порт подписок. WARP слушает только локально на `127.0.0.1:40000` либо другом выбранном порту. Этот порт намеренно не публикуется через UFW, поскольку локальный proxy не требует аутентификации.
|
|
||||||
|
|
||||||
Публичные порты 3x-ui открываются только для семейств адресов, выбранных на этапе 2. В режиме `ipv4` скрипт не создаёт правил IPv6.
|
|
||||||
|
|
||||||
Поддерживаются официально доступные пакеты WARP для Ubuntu `jammy`, `noble`, `resolute` и Debian `bookworm`, `trixie` на `amd64` и `arm64`.
|
|
||||||
|
|
||||||
Официальные источники: [установка 3x-ui](https://github.com/MHSanaei/3x-ui/wiki/Installation), [пакеты Cloudflare WARP](https://pkg.cloudflareclient.com/) и [режимы WARP](https://developers.cloudflare.com/warp-client/warp-modes/).
|
|
||||||
|
|
||||||
## 7. Резервные копии сервера
|
|
||||||
|
|
||||||
Файл: `ochenstarik-server-backup-7.sh`.
|
|
||||||
|
|
||||||
Скрипт создаёт полный сжатый снимок корневой файловой системы с сохранением владельцев, ACL и расширенных атрибутов. Виртуальные файловые системы, временные каталоги, swap, подключённые диски и сам каталог бэкапов исключаются. Первичный снимок создаётся сразу, повторно не перезаписывается и не участвует в ротации. Если файловая система поддерживает атрибут `immutable`, первичный архив и его контрольная сумма дополнительно защищаются от случайного удаления.
|
|
||||||
|
|
||||||
При установке можно выбрать несколько расписаний одним вводом, например `1 3`:
|
|
||||||
|
|
||||||
- ежедневное — хранится 7 последних архивов;
|
|
||||||
- еженедельное — хранится 4 последних архива;
|
|
||||||
- ежемесячное — хранится 12 последних архивов;
|
|
||||||
- только первичный снимок без автоматического расписания.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-backup-7.sh
|
|
||||||
chmod 700 ochenstarik-server-backup-7.sh
|
|
||||||
bash -n ochenstarik-server-backup-7.sh
|
|
||||||
sudo ./ochenstarik-server-backup-7.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
По умолчанию архивы сохраняются в `/var/backups/ochenstarik-server`, но во время установки можно указать абсолютный путь на другом диске. Незавершённые архивы имеют суффикс `.partial` и не попадают в ротацию. Для каждого готового архива создаётся файл `.sha256`.
|
|
||||||
|
|
||||||
Проверка расписаний и ручной запуск:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
systemctl list-timers "ochenstarik-backup-*"
|
|
||||||
sudo /usr/local/sbin/ochenstarik-server-backup daily
|
|
||||||
sudo journalctl -u ochenstarik-backup@daily.service
|
|
||||||
```
|
|
||||||
|
|
||||||
Проверка целостности первичного снимка:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd /var/backups/ochenstarik-server/initial
|
|
||||||
sha256sum -c ./*.sha256
|
|
||||||
```
|
|
||||||
|
|
||||||
Восстанавливайте архив только из rescue-системы или в отдельный пустой каталог, предварительно проверив контрольную сумму. Пример распаковки в подготовленный каталог `/restore`:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
mkdir -p /restore
|
|
||||||
zstd -dc /ПУТЬ/К/АРХИВУ.tar.zst | tar --acls --xattrs --numeric-owner -xpf - -C /restore
|
|
||||||
```
|
|
||||||
|
|
||||||
Это локальная резервная копия, а не защита от отказа диска или потери сервера. Регулярно переносите готовые архивы и `.sha256` на отдельный сервер или накопитель. Снимок создаётся с работающей системы; для активно изменяющихся баз данных дополнительно используйте штатный экспорт или согласованный снимок самой базы.
|
|
||||||
|
|
||||||
## Полная установка
|
|
||||||
|
|
||||||
Рекомендуемый способ — единый мастер. Он показывает этапы по порядку и перед каждым предлагает установить его, пропустить либо завершить работу. Если остальные файлы находятся рядом, мастер использует их. Если какой-либо этап отсутствует, мастер безопасно загрузит его из основной ветки, проверит `bash -n` и только потом запустит.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-install.sh
|
|
||||||
chmod 700 ochenstarik-server-install.sh
|
|
||||||
bash -n ochenstarik-server-install.sh
|
|
||||||
sudo ./ochenstarik-server-install.sh
|
sudo ./ochenstarik-server-install.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
После ошибки этап можно повторить, пропустить или завершить весь мастер. Повторный запуск мастера разрешён: каждый модуль поддерживает повторную настройку.
|
## Reset project-managed configuration
|
||||||
|
|
||||||
Отдельные скрипты сохранены. При необходимости их по-прежнему можно запускать вручную по очереди:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo ./ochenstarik-server-1.sh
|
cd ~/lightweight-server
|
||||||
sudo ./ochenstarik-server-2.sh
|
|
||||||
sudo ./ochenstarik-server-user-3.sh
|
|
||||||
sudo ./ochenstarik-server-tg-4.sh
|
|
||||||
sudo ./ochenstarik-server-vpn-5.sh
|
|
||||||
sudo ./ochenstarik-server-panel-warp-6.sh
|
|
||||||
sudo ./ochenstarik-server-backup-7.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
VPN, 3x-ui, WARP, Telegram-уведомления и автоматические расписания резервного копирования являются необязательными этапами.
|
|
||||||
|
|
||||||
## Удаление и повторная установка с начала
|
|
||||||
|
|
||||||
Файл: `ochenstarik-server-uninstall.sh`.
|
|
||||||
|
|
||||||
Скрипт удаляет управляемые правила UFW, настройки IPv4/IPv6, SSH drop-in, fail2ban-конфигурацию, Telegram-hook, Xray, 3x-ui, WARP, расписания резервного копирования, swap и служебные файлы проекта. Перед изменением SSH открывается порт `22/tcp`. Правило порта, через который работает текущая SSH-сессия, сохраняется, чтобы не потерять доступ.
|
|
||||||
|
|
||||||
Удаление администратора и самих архивов резервных копий требует отдельных подтверждений. Обязательные системные пакеты второго этапа и обновления Ubuntu сохраняются, чтобы не потерять доступ к серверу. Языковые пакеты и дополнительные программы удаляются только если первый скрипт зафиксировал, что до его запуска их не было.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-uninstall.sh
|
|
||||||
chmod 700 ochenstarik-server-uninstall.sh
|
|
||||||
bash -n ochenstarik-server-uninstall.sh
|
|
||||||
sudo ./ochenstarik-server-uninstall.sh
|
sudo ./ochenstarik-server-uninstall.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Не закрывайте текущую SSH-сессию. После очистки сначала проверьте отдельное подключение через порт 22, затем снова запускайте нужные установочные скрипты. Старое правило текущего SSH-порта можно удалить только после успешной проверки нового входа.
|
Read every confirmation carefully. The reset script preserves critical Ubuntu packages and avoids removing access until explicitly confirmed.
|
||||||
|
|
||||||
## Безопасность
|
|
||||||
|
|
||||||
- Всегда проверяйте скачанные скрипты перед запуском от `root`.
|
|
||||||
- Не публикуйте токены Telegram, пароли, приватные SSH-ключи и ссылки VLESS.
|
|
||||||
- Не закрывайте действующую SSH-сессию во время переноса SSH на новый порт.
|
|
||||||
- Перед настройкой на рабочем сервере сделайте резервную копию важных данных.
|
|
||||||
|
|
|
||||||
32
docs/readme/README.ar.md
Normal file
32
docs/readme/README.ar.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# الإعداد السريع لخادم Ubuntu
|
||||||
|
|
||||||
|
[English](../../README.md) | [Русский](README.ru.md) | [Español](README.es.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Português](README.pt.md) | [中文](README.zh-CN.md) | [日本語](README.ja.md) | **العربية** | [हिन्दी](README.hi.md)
|
||||||
|
|
||||||
|
مجموعة نصوص Bash مستقلة لإعداد Ubuntu Server وتأمينه وإدارة SSH وVPN و3x-ui وWARP والنسخ الاحتياطية.
|
||||||
|
|
||||||
|
> لمراقبة عدة خوادم وإدارتها من تطبيق واحد، استخدم [Server Monitor Manager](https://github.com/ochenstarik-ui/server-monitor-manager). المشروع ما زال في مرحلة تطوير مبكرة.
|
||||||
|
|
||||||
|
## التثبيت السريع
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y curl ca-certificates
|
||||||
|
curl -4 -fLO --retry 5 --retry-delay 10 --connect-timeout 30 \
|
||||||
|
https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-install.sh
|
||||||
|
chmod 700 ochenstarik-server-install.sh
|
||||||
|
sudo ./ochenstarik-server-install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
السؤال الأول يحدد لغة المثبت، واللغة الافتراضية هي English. بعد ذلك يمكن تشغيل كل مرحلة من المراحل السبع أو تخطيها أو إنهاء المثبت.
|
||||||
|
|
||||||
|
## المراحل
|
||||||
|
|
||||||
|
1. المنطقة الزمنية ولغة الطرفية والبرامج وملف swap.
|
||||||
|
2. الحزم الأساسية ومنفذ SSH وIPv4/IPv6 وUFW.
|
||||||
|
3. المستخدم الإداري ومفتاح SSH والصلاحيات وsudo وfail2ban.
|
||||||
|
4. إشعارات Telegram عند تسجيل الدخول عبر SSH.
|
||||||
|
5. VPN للنظام باستخدام Xray.
|
||||||
|
6. لوحة 3x-ui ووكيل Cloudflare WARP المحلي.
|
||||||
|
7. النسخة الأولية والنسخ اليومية أو الأسبوعية أو الشهرية.
|
||||||
|
|
||||||
|
لا تغلق جلسة SSH الحالية أثناء تغيير المنفذ. اختبر الاتصال الجديد أولاً في طرفية أخرى. راجع [الوثائق الإنجليزية الرئيسية](../../README.md) لمزيد من التفاصيل.
|
||||||
32
docs/readme/README.de.md
Normal file
32
docs/readme/README.de.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Schnelle Einrichtung von Ubuntu Server
|
||||||
|
|
||||||
|
[English](../../README.md) | [Русский](README.ru.md) | [Español](README.es.md) | **Deutsch** | [Français](README.fr.md) | [Português](README.pt.md) | [中文](README.zh-CN.md) | [日本語](README.ja.md) | [العربية](README.ar.md) | [हिन्दी](README.hi.md)
|
||||||
|
|
||||||
|
Modulare Bash-Skripte für Ersteinrichtung, Absicherung, SSH, VPN, 3x-ui, WARP und Sicherungen auf Ubuntu Server.
|
||||||
|
|
||||||
|
> Zur Überwachung und gemeinsamen Verwaltung mehrerer Server verwenden Sie [Server Monitor Manager](https://github.com/ochenstarik-ui/server-monitor-manager). Das Projekt befindet sich noch in einer frühen Entwicklungsphase.
|
||||||
|
|
||||||
|
## Schnellinstallation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y curl ca-certificates
|
||||||
|
curl -4 -fLO --retry 5 --retry-delay 10 --connect-timeout 30 \
|
||||||
|
https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-install.sh
|
||||||
|
chmod 700 ochenstarik-server-install.sh
|
||||||
|
sudo ./ochenstarik-server-install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Die erste Frage wählt die Sprache des Installers; English ist voreingestellt. Danach kann jeder der sieben Schritte ausgeführt, übersprungen oder zum Beenden verwendet werden.
|
||||||
|
|
||||||
|
## Schritte
|
||||||
|
|
||||||
|
1. Zeitzone, Terminalsprache, empfohlene Programme und Swap.
|
||||||
|
2. Basispakete, SSH-Port, IPv4/IPv6 und UFW.
|
||||||
|
3. Administrator, SSH-Schlüssel, Rechte, sudo und fail2ban.
|
||||||
|
4. Telegram-Benachrichtigungen für SSH-Anmeldungen.
|
||||||
|
5. System-VPN über Xray.
|
||||||
|
6. 3x-ui und lokaler Cloudflare-WARP-Proxy.
|
||||||
|
7. Erstsicherung sowie tägliche, wöchentliche oder monatliche Sicherungen.
|
||||||
|
|
||||||
|
Schließen Sie die aktuelle SSH-Sitzung während der Portänderung nicht. Testen Sie zuerst die neue Anmeldung in einem zweiten Terminal. Weitere Hinweise enthält die [englische Hauptdokumentation](../../README.md).
|
||||||
32
docs/readme/README.es.md
Normal file
32
docs/readme/README.es.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Configuración rápida de Ubuntu Server
|
||||||
|
|
||||||
|
[English](../../README.md) | [Русский](README.ru.md) | **Español** | [Deutsch](README.de.md) | [Français](README.fr.md) | [Português](README.pt.md) | [中文](README.zh-CN.md) | [日本語](README.ja.md) | [العربية](README.ar.md) | [हिन्दी](README.hi.md)
|
||||||
|
|
||||||
|
Conjunto modular de scripts Bash para la configuración inicial, seguridad, SSH, VPN, 3x-ui, WARP y copias de seguridad de Ubuntu Server.
|
||||||
|
|
||||||
|
> Para supervisar y administrar varios servidores desde una aplicación, consulte [Server Monitor Manager](https://github.com/ochenstarik-ui/server-monitor-manager). El proyecto se encuentra en una fase temprana de desarrollo.
|
||||||
|
|
||||||
|
## Instalación rápida
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y curl ca-certificates
|
||||||
|
curl -4 -fLO --retry 5 --retry-delay 10 --connect-timeout 30 \
|
||||||
|
https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-install.sh
|
||||||
|
chmod 700 ochenstarik-server-install.sh
|
||||||
|
sudo ./ochenstarik-server-install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
La primera pregunta selecciona el idioma del instalador; English es el valor predeterminado. Después puede instalar, omitir o detener cada una de las siete etapas.
|
||||||
|
|
||||||
|
## Etapas
|
||||||
|
|
||||||
|
1. Zona horaria, idioma del terminal, programas recomendados y swap.
|
||||||
|
2. Paquetes básicos, puerto SSH, IPv4/IPv6 y UFW.
|
||||||
|
3. Usuario administrador, clave SSH, permisos, sudo y fail2ban.
|
||||||
|
4. Notificaciones de Telegram para accesos SSH.
|
||||||
|
5. VPN del sistema mediante Xray.
|
||||||
|
6. Panel 3x-ui y proxy local Cloudflare WARP.
|
||||||
|
7. Instantánea inicial y copias diarias, semanales o mensuales.
|
||||||
|
|
||||||
|
No cierre la sesión SSH actual durante el cambio de puerto. Pruebe primero el nuevo acceso en otro terminal. Consulte la [documentación principal en inglés](../../README.md) para la instalación por archivo, actualización y restablecimiento.
|
||||||
32
docs/readme/README.fr.md
Normal file
32
docs/readme/README.fr.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Configuration rapide d’Ubuntu Server
|
||||||
|
|
||||||
|
[English](../../README.md) | [Русский](README.ru.md) | [Español](README.es.md) | [Deutsch](README.de.md) | **Français** | [Português](README.pt.md) | [中文](README.zh-CN.md) | [日本語](README.ja.md) | [العربية](README.ar.md) | [हिन्दी](README.hi.md)
|
||||||
|
|
||||||
|
Scripts Bash modulaires pour la configuration initiale, la sécurisation, SSH, le VPN, 3x-ui, WARP et les sauvegardes d’Ubuntu Server.
|
||||||
|
|
||||||
|
> Pour surveiller et administrer plusieurs serveurs depuis une seule application, consultez [Server Monitor Manager](https://github.com/ochenstarik-ui/server-monitor-manager). Ce projet est encore au début de son développement.
|
||||||
|
|
||||||
|
## Installation rapide
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y curl ca-certificates
|
||||||
|
curl -4 -fLO --retry 5 --retry-delay 10 --connect-timeout 30 \
|
||||||
|
https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-install.sh
|
||||||
|
chmod 700 ochenstarik-server-install.sh
|
||||||
|
sudo ./ochenstarik-server-install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
La première question sélectionne la langue de l’installateur ; English est la valeur par défaut. Chacune des sept étapes peut ensuite être installée, ignorée ou utilisée pour quitter.
|
||||||
|
|
||||||
|
## Étapes
|
||||||
|
|
||||||
|
1. Fuseau horaire, langue du terminal, programmes recommandés et swap.
|
||||||
|
2. Paquets de base, port SSH, IPv4/IPv6 et UFW.
|
||||||
|
3. Administrateur, clé SSH, permissions, sudo et fail2ban.
|
||||||
|
4. Notifications Telegram des connexions SSH.
|
||||||
|
5. VPN système via Xray.
|
||||||
|
6. Panneau 3x-ui et proxy local Cloudflare WARP.
|
||||||
|
7. Instantané initial et sauvegardes quotidiennes, hebdomadaires ou mensuelles.
|
||||||
|
|
||||||
|
Ne fermez pas la session SSH actuelle pendant le changement de port. Testez d’abord la nouvelle connexion dans un autre terminal. Consultez la [documentation principale en anglais](../../README.md) pour plus de détails.
|
||||||
32
docs/readme/README.hi.md
Normal file
32
docs/readme/README.hi.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Ubuntu Server का त्वरित सेटअप
|
||||||
|
|
||||||
|
[English](../../README.md) | [Русский](README.ru.md) | [Español](README.es.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Português](README.pt.md) | [中文](README.zh-CN.md) | [日本語](README.ja.md) | [العربية](README.ar.md) | **हिन्दी**
|
||||||
|
|
||||||
|
Ubuntu Server की प्रारंभिक स्थापना, सुरक्षा, SSH, VPN, 3x-ui, WARP और बैकअप के लिए मॉड्यूलर Bash स्क्रिप्ट।
|
||||||
|
|
||||||
|
> एक ऐप से कई सर्वरों की निगरानी और संयुक्त प्रबंधन के लिए [Server Monitor Manager](https://github.com/ochenstarik-ui/server-monitor-manager) का उपयोग करें। यह परियोजना अभी शुरुआती विकास चरण में है।
|
||||||
|
|
||||||
|
## त्वरित स्थापना
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y curl ca-certificates
|
||||||
|
curl -4 -fLO --retry 5 --retry-delay 10 --connect-timeout 30 \
|
||||||
|
https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-install.sh
|
||||||
|
chmod 700 ochenstarik-server-install.sh
|
||||||
|
sudo ./ochenstarik-server-install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
पहला प्रश्न इंस्टॉलर की भाषा चुनता है; डिफ़ॉल्ट English है। इसके बाद सातों चरणों को चलाया, छोड़ा या इंस्टॉलर बंद किया जा सकता है।
|
||||||
|
|
||||||
|
## चरण
|
||||||
|
|
||||||
|
1. समय क्षेत्र, टर्मिनल भाषा, अनुशंसित प्रोग्राम और swap।
|
||||||
|
2. मूल पैकेज, SSH पोर्ट, IPv4/IPv6 और UFW।
|
||||||
|
3. प्रशासक, SSH कुंजी, अनुमतियाँ, sudo और fail2ban।
|
||||||
|
4. SSH लॉगिन के लिए Telegram सूचनाएँ।
|
||||||
|
5. Xray के माध्यम से सिस्टम VPN।
|
||||||
|
6. 3x-ui पैनल और स्थानीय Cloudflare WARP प्रॉक्सी।
|
||||||
|
7. प्रारंभिक स्नैपशॉट और दैनिक, साप्ताहिक या मासिक बैकअप।
|
||||||
|
|
||||||
|
SSH पोर्ट बदलते समय मौजूदा सत्र बंद न करें। पहले दूसरे टर्मिनल में नया लॉगिन जाँचें। अधिक जानकारी के लिए [मुख्य अंग्रेज़ी दस्तावेज़](../../README.md) देखें।
|
||||||
32
docs/readme/README.ja.md
Normal file
32
docs/readme/README.ja.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Ubuntu Server クイックセットアップ
|
||||||
|
|
||||||
|
[English](../../README.md) | [Русский](README.ru.md) | [Español](README.es.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Português](README.pt.md) | [中文](README.zh-CN.md) | **日本語** | [العربية](README.ar.md) | [हिन्दी](README.hi.md)
|
||||||
|
|
||||||
|
Ubuntu Server の初期設定、セキュリティ、SSH、VPN、3x-ui、WARP、バックアップを行うモジュール式 Bash スクリプトです。
|
||||||
|
|
||||||
|
> 複数のサーバーを一つのアプリで監視・管理するには、[Server Monitor Manager](https://github.com/ochenstarik-ui/server-monitor-manager) を使用してください。このプロジェクトは現在、開発の初期段階です。
|
||||||
|
|
||||||
|
## クイックインストール
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y curl ca-certificates
|
||||||
|
curl -4 -fLO --retry 5 --retry-delay 10 --connect-timeout 30 \
|
||||||
|
https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-install.sh
|
||||||
|
chmod 700 ochenstarik-server-install.sh
|
||||||
|
sudo ./ochenstarik-server-install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
最初の質問でインストーラーの言語を選択します。既定値は English です。その後、7 つの各ステップを実行、スキップ、または終了できます。
|
||||||
|
|
||||||
|
## ステップ
|
||||||
|
|
||||||
|
1. タイムゾーン、端末言語、推奨プログラム、スワップ。
|
||||||
|
2. 基本パッケージ、SSH ポート、IPv4/IPv6、UFW。
|
||||||
|
3. 管理者、SSH 鍵、アクセス権、sudo、fail2ban。
|
||||||
|
4. SSH ログインの Telegram 通知。
|
||||||
|
5. Xray によるシステム VPN。
|
||||||
|
6. 3x-ui パネルとローカル Cloudflare WARP プロキシ。
|
||||||
|
7. 初回スナップショットと日次、週次、月次バックアップ。
|
||||||
|
|
||||||
|
SSH ポートの変更中は現在のセッションを閉じないでください。別のターミナルで新しい接続を先に確認してください。詳細は[英語のメイン文書](../../README.md)を参照してください。
|
||||||
32
docs/readme/README.pt.md
Normal file
32
docs/readme/README.pt.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Configuração rápida do Ubuntu Server
|
||||||
|
|
||||||
|
[English](../../README.md) | [Русский](README.ru.md) | [Español](README.es.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | **Português** | [中文](README.zh-CN.md) | [日本語](README.ja.md) | [العربية](README.ar.md) | [हिन्दी](README.hi.md)
|
||||||
|
|
||||||
|
Scripts Bash modulares para configuração inicial, segurança, SSH, VPN, 3x-ui, WARP e backups no Ubuntu Server.
|
||||||
|
|
||||||
|
> Para monitorar e administrar vários servidores em um único aplicativo, use o [Server Monitor Manager](https://github.com/ochenstarik-ui/server-monitor-manager). O projeto ainda está em uma fase inicial de desenvolvimento.
|
||||||
|
|
||||||
|
## Instalação rápida
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y curl ca-certificates
|
||||||
|
curl -4 -fLO --retry 5 --retry-delay 10 --connect-timeout 30 \
|
||||||
|
https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-install.sh
|
||||||
|
chmod 700 ochenstarik-server-install.sh
|
||||||
|
sudo ./ochenstarik-server-install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
A primeira pergunta seleciona o idioma do instalador; English é o padrão. Depois, cada uma das sete etapas pode ser instalada, ignorada ou usada para sair.
|
||||||
|
|
||||||
|
## Etapas
|
||||||
|
|
||||||
|
1. Fuso horário, idioma do terminal, programas recomendados e swap.
|
||||||
|
2. Pacotes básicos, porta SSH, IPv4/IPv6 e UFW.
|
||||||
|
3. Administrador, chave SSH, permissões, sudo e fail2ban.
|
||||||
|
4. Notificações Telegram para logins SSH.
|
||||||
|
5. VPN do sistema por Xray.
|
||||||
|
6. Painel 3x-ui e proxy local Cloudflare WARP.
|
||||||
|
7. Snapshot inicial e backups diários, semanais ou mensais.
|
||||||
|
|
||||||
|
Não feche a sessão SSH atual durante a alteração da porta. Teste primeiro o novo login em outro terminal. Consulte a [documentação principal em inglês](../../README.md) para obter detalhes adicionais.
|
||||||
427
docs/readme/README.ru.md
Normal file
427
docs/readme/README.ru.md
Normal file
|
|
@ -0,0 +1,427 @@
|
||||||
|
# Быстрая настройка Ubuntu Server
|
||||||
|
|
||||||
|
[English](../../README.md) | **Русский** | [Español](README.es.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Português](README.pt.md) | [中文](README.zh-CN.md) | [日本語](README.ja.md) | [العربية](README.ar.md) | [हिन्दी](README.hi.md)
|
||||||
|
|
||||||
|
> Для мониторинга и объединённого управления несколькими серверами используйте дополнительный проект [Server Monitor Manager](https://github.com/ochenstarik-ui/server-monitor-manager). Проект находится на ранней стадии разработки.
|
||||||
|
|
||||||
|
Набор независимых Bash-скриптов для первоначальной настройки Ubuntu Server. Можно запустить только нужные модули или выполнить их по порядку для полной настройки.
|
||||||
|
|
||||||
|
## Быстрая установка
|
||||||
|
|
||||||
|
Скопируйте весь блок в терминал сервера. Он загружает архив через `codeload.github.com`, проверяет ошибки на каждом шаге и запускает единый пошаговый мастер:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
set -e
|
||||||
|
cd "$HOME"
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y curl ca-certificates tar
|
||||||
|
archive="$(mktemp)"
|
||||||
|
trap 'rm -f "$archive"' EXIT
|
||||||
|
curl -4 -fL \
|
||||||
|
--retry 5 \
|
||||||
|
--retry-delay 10 \
|
||||||
|
--connect-timeout 30 \
|
||||||
|
https://codeload.github.com/ochenstarik-ui/lightweight-server/tar.gz/refs/heads/main \
|
||||||
|
-o "$archive"
|
||||||
|
install -d -m 700 lightweight-server
|
||||||
|
tar -xzf "$archive" -C lightweight-server --strip-components=1
|
||||||
|
rm -f "$archive"
|
||||||
|
trap - EXIT
|
||||||
|
cd lightweight-server
|
||||||
|
chmod 700 ./*.sh
|
||||||
|
sudo ./ochenstarik-server-install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Первым запросом мастер предлагает выбрать язык диалога и только затем показывает этапы 1–7 по порядку. На каждом этапе можно выбрать установку, пропуск или завершение. В первом этапе пустой ввод устанавливает все рекомендуемые наборы программ. Во время изменения SSH-порта не закрывайте текущую сессию — сначала проверьте новый вход во втором терминале.
|
||||||
|
|
||||||
|
Если нужен только мастер без скачивания полного архива:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y curl ca-certificates
|
||||||
|
curl -4 -fLO \
|
||||||
|
--retry 5 \
|
||||||
|
--retry-delay 10 \
|
||||||
|
--connect-timeout 30 \
|
||||||
|
https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-install.sh
|
||||||
|
chmod 700 ochenstarik-server-install.sh
|
||||||
|
sudo ./ochenstarik-server-install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
При запуске одного мастера недостающие этапы будут загружены автоматически из основной ветки и проверены командой `bash -n`.
|
||||||
|
|
||||||
|
## Что входит в проект
|
||||||
|
|
||||||
|
| Файл | Назначение | Можно запускать отдельно |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `ochenstarik-server-install.sh` | Сначала выбирает язык диалога, затем последовательно предлагает установить, пропустить или завершить каждый этап | Да; рекомендуемый способ полной настройки |
|
||||||
|
| `ochenstarik-server-1.sh` | Предлагает выбрать часовой пояс, язык терминала и наборы программ, создаёт swap-файл 2 ГБ | Да |
|
||||||
|
| `ochenstarik-server-2.sh` | Предлагает будущий SSH-порт и IPv4/IPv6, обновляет систему, ставит обязательные пакеты и настраивает UFW | Да |
|
||||||
|
| `ochenstarik-server-user-3.sh` | Создаёт администратора, переносит SSH на порт из этапа 2, проверяет права и включает fail2ban | После установки необходимых пакетов; проще всего сначала запустить скрипт 2 |
|
||||||
|
| `ochenstarik-server-tg-4.sh` | Отправляет уведомления в Telegram при успешном входе по SSH | После установки OpenSSH и `curl`; обычно после скрипта 2 или 3 |
|
||||||
|
| `ochenstarik-server-vpn-5.sh` | Устанавливает Xray и направляет системный трафик через VLESS + REALITY | Да; зависимости устанавливаются автоматически |
|
||||||
|
| `ochenstarik-server-panel-warp-6.sh` | Устанавливает 3x-ui и Cloudflare WARP, настраивает и проверяет их порты | Ubuntu 22.04/24.04/26.04 или Debian 12/13 |
|
||||||
|
| `ochenstarik-server-backup-7.sh` | Создаёт неизменяемый первичный снимок и настраивает выбранные расписания резервного копирования | Да; зависимости устанавливаются автоматически |
|
||||||
|
| `ochenstarik-server-uninstall.sh` | Удаляет настройки, службы и данные проекта для повторной установки с начала | Да; запускать только из сохранённой SSH-сессии |
|
||||||
|
|
||||||
|
Файлы `*.env.example` являются только примерами. Не записывайте настоящие пароли, токены и приватные SSH-ключи в Git.
|
||||||
|
|
||||||
|
## Требования
|
||||||
|
|
||||||
|
- Ubuntu Server или совместимая Debian-система с `systemd`;
|
||||||
|
- доступ `root` или пользователь с `sudo`;
|
||||||
|
- подключение к интернету;
|
||||||
|
- рекомендуется сохранить текущую SSH-сессию открытой до проверки нового входа.
|
||||||
|
|
||||||
|
## Получение проекта
|
||||||
|
|
||||||
|
Рекомендуемый способ — загрузка архива через `codeload.github.com`. Он подходит в том числе для серверов, на которых соединение с основным доменом `github.com` завершается ошибкой `SSL connection timeout`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
set -e
|
||||||
|
cd "$HOME"
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y curl ca-certificates tar
|
||||||
|
curl -4 -fL \
|
||||||
|
--retry 5 \
|
||||||
|
--retry-delay 10 \
|
||||||
|
--connect-timeout 30 \
|
||||||
|
https://codeload.github.com/ochenstarik-ui/lightweight-server/tar.gz/refs/heads/main \
|
||||||
|
-o lightweight-server.tar.gz
|
||||||
|
mkdir lightweight-server
|
||||||
|
tar -xzf lightweight-server.tar.gz -C lightweight-server --strip-components=1
|
||||||
|
rm lightweight-server.tar.gz
|
||||||
|
cd lightweight-server
|
||||||
|
chmod 700 ./*.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Если `github.com` доступен с сервера, проект также можно получить через Git:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
set -e
|
||||||
|
cd "$HOME"
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y git ca-certificates
|
||||||
|
git -c http.version=HTTP/1.1 clone --depth 1 https://github.com/ochenstarik-ui/lightweight-server.git
|
||||||
|
cd lightweight-server
|
||||||
|
chmod 700 ./*.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Команда `set -e` останавливает последовательность при ошибке загрузки, поэтому команды `cd` и `chmod` не будут выполняться для отсутствующей папки.
|
||||||
|
|
||||||
|
Перед запуском любого выбранного файла можно проверить его синтаксис:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
bash -n ./ИМЯ-СКРИПТА.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## 1. Часовой пояс, язык, программы и swap
|
||||||
|
|
||||||
|
Файл: `ochenstarik-server-1.sh`.
|
||||||
|
|
||||||
|
При запуске единого мастера самый первый запрос, ещё до выбора этапа 1, задаёт язык диалога: English, Русский, Español, Deutsch, Français, Português, 中文, 日本語, العربية или हिन्दी. Начальное меню выводится на английском, а пустой ввод оставляет English. Выбор передаётся первому этапу автоматически и не меняет системную локаль сервера.
|
||||||
|
|
||||||
|
Первый этап начинается с нумерованного меню популярных часовых поясов, включая `Asia/Novosibirsk`, `Europe/Moscow` и `UTC`. Нужную зону достаточно выбрать по номеру. Для остальных зон предусмотрен полный список с последовательным выбором региона и часового пояса — вводить имя вручную не требуется.
|
||||||
|
|
||||||
|
После выбора времени скрипт показывает меню языков терминала: оставить текущий, русский, английский, немецкий, французский, испанский, итальянский, португальский, польский, украинский, турецкий, китайский, японский, корейский либо выбрать другую локаль из полного системного списка. Выбранный язык применяется к новым терминальным сессиям. Исходный `/etc/default/locale` сохраняется для последующего восстановления.
|
||||||
|
|
||||||
|
Затем можно отметить несколько наборов программ номерами через пробел, например `1 2 4 9`. Пустой ввод устанавливает все наборы, а `0` пропускает дополнительные программы:
|
||||||
|
|
||||||
|
1. Терминал и повседневная работа — Git, wget/curl, jq/yq, ripgrep, fd, fzf, lnav, редакторы, MC, tmux/screen, htop/btop, ncdu, rsync и strace.
|
||||||
|
2. Диагностика сети — DNS, ping, MTR, traceroute, tcpdump, nmap, netcat, HTTPie, whois, ethtool и socat.
|
||||||
|
3. Мониторинг системы и дисков — iotop, sysstat, SMART, lm-sensors, atop, nethogs, vnStat и psmisc.
|
||||||
|
4. Безопасность и обслуживание — auditd, AppArmor tools, Lynis, needrestart, unattended-upgrades, debsums, ACL и extended attributes.
|
||||||
|
5. Разработка и автоматизация — компилятор, ShellCheck, Python pip/venv и pipx.
|
||||||
|
6. Архивы и данные — 7-Zip, ZIP/RAR, SQLite, csvkit, клиенты PostgreSQL и Redis.
|
||||||
|
7. Документы, PDF и OCR — Poppler, qpdf, Ghostscript, OCRmyPDF/Tesseract, LibreOffice, Pandoc, antiword и catdoc.
|
||||||
|
8. Изображения, аудио и видео — ImageMagick, ExifTool, WebP, FFmpeg и MediaInfo.
|
||||||
|
9. Резервное копирование — restic, BorgBackup и rclone.
|
||||||
|
|
||||||
|
Скрипт проверяет доступность каждого пакета в подключённых репозиториях. Недоступные для конкретной версии или набора репозиториев пакеты пропускаются с предупреждением. Список программ, которых не было до запуска, сохраняется в `/etc/ochenstarik-server/step1-installed-packages.list` для безопасной очистки.
|
||||||
|
|
||||||
|
Затем скрипт создаёт `/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. Базовые пакеты, SSH-порт и брандмауэр
|
||||||
|
|
||||||
|
Файл: `ochenstarik-server-2.sh`.
|
||||||
|
|
||||||
|
При каждом запуске скрипт предлагает три действия: полную установку или обновление, изменение режима IP без переустановки пакетов либо добавление открытых портов. При полной установке он запрашивает SSH-порт для этапа 3, обновляет систему и устанавливает только обязательные компоненты: OpenSSH, UFW, fail2ban, `sudo`, TLS-сертификаты и сетевые инструменты. Дополнительные программы выбираются на этапе 1.
|
||||||
|
|
||||||
|
Для входящих подключений можно выбрать:
|
||||||
|
|
||||||
|
- только IPv4 — IPv6 отключается в UFW и системно через `sysctl`; этот режим рекомендуется, если 3x-ui используется только по IPv4;
|
||||||
|
- только IPv6 — управляемые скриптом порты открываются лишь для IPv6;
|
||||||
|
- IPv4 + IPv6 — порты открываются для обоих семейств.
|
||||||
|
|
||||||
|
Выбор сохраняется в `/etc/ochenstarik-server/ip-family.conf`, а список управляемых портов — в `/etc/ochenstarik-server/ufw-managed-ports.conf`. При переходе на режим с одним семейством старые правила этих портов пересоздаются. Скрипт не разрешит отключить семейство адресов, через которое работает текущая SSH-сессия. Для режима IPv6 также проверяются глобальный IPv6-адрес и маршрут по умолчанию.
|
||||||
|
|
||||||
|
В режиме «только IPv6» системный IPv4 остаётся доступен для исходящих соединений и работы менеджера пакетов, но входящие управляемые порты по IPv4 закрываются UFW. Полное переносимое отключение IPv4 в Linux без привязки к конкретной сетевой конфигурации не выполняется.
|
||||||
|
|
||||||
|
Открываются TCP-порты:
|
||||||
|
|
||||||
|
- `22` — временный SSH-порт;
|
||||||
|
- выбранный SSH-порт — будущий порт 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
|
||||||
|
cat /etc/ochenstarik-server/ip-family.conf
|
||||||
|
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
|
||||||
|
timedatectl
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Администратор и защита SSH
|
||||||
|
|
||||||
|
Файл: `ochenstarik-server-user-3.sh`.
|
||||||
|
|
||||||
|
При каждом запуске скрипт предлагает два режима:
|
||||||
|
|
||||||
|
1. новая установка или повторная настройка администратора и SSH;
|
||||||
|
2. только добавление открытых портов в UFW без изменения пользователя и SSH.
|
||||||
|
|
||||||
|
В режиме новой установки скрипт интерактивно запрашивает имя администратора, SSH-ключ и пароль. SSH-порт автоматически читается из защищённого файла, созданного этапом 2. Если этап 2 не выполнялся, скрипт предложит выбрать порт вручную. Затем он:
|
||||||
|
|
||||||
|
- создаёт или обновляет пользователя;
|
||||||
|
- добавляет пользователя в группу `sudo`;
|
||||||
|
- назначает пользователю его домашнюю папку и всё содержимое `.ssh`;
|
||||||
|
- устанавливает права `700` для `.ssh` и `600` для `authorized_keys` и остальных файлов ключей;
|
||||||
|
- запрещает вход `root` по SSH;
|
||||||
|
- переносит SSH на выбранный порт и добавляет для него правило UFW;
|
||||||
|
- настраивает fail2ban;
|
||||||
|
- по выбору управляет правилами UFW.
|
||||||
|
|
||||||
|
Правила UFW добавляются с учётом режима IPv4/IPv6, сохранённого скриптом 2. Новые порты также записываются в общий список управляемых правил, поэтому последующее переключение IP-режима пересоздаст их корректно.
|
||||||
|
|
||||||
|
Для отдельного запуска сначала установите зависимости:
|
||||||
|
|
||||||
|
```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 ВЫБРАННЫЙ_ПОРТ ИМЯ_ПОЛЬЗОВАТЕЛЯ@IP_СЕРВЕРА
|
||||||
|
```
|
||||||
|
|
||||||
|
Только после успешной проверки можно удалить временное правило порта 22:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo ufw delete allow 22/tcp
|
||||||
|
```
|
||||||
|
|
||||||
|
Чтобы позднее открыть дополнительные порты, повторно запустите скрипт, выберите пункт `2` и введите правила через пробел или запятую:
|
||||||
|
|
||||||
|
```text
|
||||||
|
80 443/tcp 53/udp 40000
|
||||||
|
```
|
||||||
|
|
||||||
|
Для записей без протокола используется TCP. Допустимы только порты от `1` до `65535`. Если UFW неактивен, правила будут сохранены, но скрипт не включит брандмауэр автоматически во избежание потери SSH-доступа.
|
||||||
|
|
||||||
|
## 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-ссылки на нескольких портах, скрипт выводит доступные порты и просит выбрать нужный. Поддерживается 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
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. Панель 3x-ui и локальный proxy Cloudflare WARP
|
||||||
|
|
||||||
|
Файл: `ochenstarik-server-panel-warp-6.sh`.
|
||||||
|
|
||||||
|
Скрипт предлагает выбрать три разных порта:
|
||||||
|
|
||||||
|
- порт веб-панели 3x-ui, по умолчанию `2053`;
|
||||||
|
- порт подписок 3x-ui, по умолчанию `2096`;
|
||||||
|
- локальный SOCKS5/HTTP proxy-порт WARP, по умолчанию `40000`.
|
||||||
|
|
||||||
|
3x-ui устанавливается официальным интерактивным установщиком. После установки выбранные порты записываются в стандартную SQLite-базу с предварительной резервной копией. Скрипт включает сервис подписок, запускает `x-ui` и проверяет оба TCP-слушателя.
|
||||||
|
|
||||||
|
Cloudflare WARP устанавливается из официального APT-репозитория, переводится в Local proxy mode через MASQUE и проверяется запросом к Cloudflare: ответ должен содержать `warp=on`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-panel-warp-6.sh
|
||||||
|
chmod 700 ochenstarik-server-panel-warp-6.sh
|
||||||
|
bash -n ochenstarik-server-panel-warp-6.sh
|
||||||
|
sudo ./ochenstarik-server-panel-warp-6.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
В UFW открываются и проверяются `80/tcp`, `443/tcp`, выбранный порт панели и выбранный порт подписок. WARP слушает только локально на `127.0.0.1:40000` либо другом выбранном порту. Этот порт намеренно не публикуется через UFW, поскольку локальный proxy не требует аутентификации.
|
||||||
|
|
||||||
|
Публичные порты 3x-ui открываются только для семейств адресов, выбранных на этапе 2. В режиме `ipv4` скрипт не создаёт правил IPv6.
|
||||||
|
|
||||||
|
Поддерживаются официально доступные пакеты WARP для Ubuntu `jammy`, `noble`, `resolute` и Debian `bookworm`, `trixie` на `amd64` и `arm64`.
|
||||||
|
|
||||||
|
Официальные источники: [установка 3x-ui](https://github.com/MHSanaei/3x-ui/wiki/Installation), [пакеты Cloudflare WARP](https://pkg.cloudflareclient.com/) и [режимы WARP](https://developers.cloudflare.com/warp-client/warp-modes/).
|
||||||
|
|
||||||
|
## 7. Резервные копии сервера
|
||||||
|
|
||||||
|
Файл: `ochenstarik-server-backup-7.sh`.
|
||||||
|
|
||||||
|
Скрипт создаёт полный сжатый снимок корневой файловой системы с сохранением владельцев, ACL и расширенных атрибутов. Виртуальные файловые системы, временные каталоги, swap, подключённые диски и сам каталог бэкапов исключаются. Первичный снимок создаётся сразу, повторно не перезаписывается и не участвует в ротации. Если файловая система поддерживает атрибут `immutable`, первичный архив и его контрольная сумма дополнительно защищаются от случайного удаления.
|
||||||
|
|
||||||
|
При установке можно выбрать несколько расписаний одним вводом, например `1 3`:
|
||||||
|
|
||||||
|
- ежедневное — хранится 7 последних архивов;
|
||||||
|
- еженедельное — хранится 4 последних архива;
|
||||||
|
- ежемесячное — хранится 12 последних архивов;
|
||||||
|
- только первичный снимок без автоматического расписания.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-backup-7.sh
|
||||||
|
chmod 700 ochenstarik-server-backup-7.sh
|
||||||
|
bash -n ochenstarik-server-backup-7.sh
|
||||||
|
sudo ./ochenstarik-server-backup-7.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
По умолчанию архивы сохраняются в `/var/backups/ochenstarik-server`, но во время установки можно указать абсолютный путь на другом диске. Незавершённые архивы имеют суффикс `.partial` и не попадают в ротацию. Для каждого готового архива создаётся файл `.sha256`.
|
||||||
|
|
||||||
|
Проверка расписаний и ручной запуск:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
systemctl list-timers "ochenstarik-backup-*"
|
||||||
|
sudo /usr/local/sbin/ochenstarik-server-backup daily
|
||||||
|
sudo journalctl -u ochenstarik-backup@daily.service
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверка целостности первичного снимка:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /var/backups/ochenstarik-server/initial
|
||||||
|
sha256sum -c ./*.sha256
|
||||||
|
```
|
||||||
|
|
||||||
|
Восстанавливайте архив только из rescue-системы или в отдельный пустой каталог, предварительно проверив контрольную сумму. Пример распаковки в подготовленный каталог `/restore`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p /restore
|
||||||
|
zstd -dc /ПУТЬ/К/АРХИВУ.tar.zst | tar --acls --xattrs --numeric-owner -xpf - -C /restore
|
||||||
|
```
|
||||||
|
|
||||||
|
Это локальная резервная копия, а не защита от отказа диска или потери сервера. Регулярно переносите готовые архивы и `.sha256` на отдельный сервер или накопитель. Снимок создаётся с работающей системы; для активно изменяющихся баз данных дополнительно используйте штатный экспорт или согласованный снимок самой базы.
|
||||||
|
|
||||||
|
## Полная установка
|
||||||
|
|
||||||
|
Рекомендуемый способ — единый мастер. Он показывает этапы по порядку и перед каждым предлагает установить его, пропустить либо завершить работу. Если остальные файлы находятся рядом, мастер использует их. Если какой-либо этап отсутствует, мастер безопасно загрузит его из основной ветки, проверит `bash -n` и только потом запустит.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-install.sh
|
||||||
|
chmod 700 ochenstarik-server-install.sh
|
||||||
|
bash -n ochenstarik-server-install.sh
|
||||||
|
sudo ./ochenstarik-server-install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
После ошибки этап можно повторить, пропустить или завершить весь мастер. Повторный запуск мастера разрешён: каждый модуль поддерживает повторную настройку.
|
||||||
|
|
||||||
|
Отдельные скрипты сохранены. При необходимости их по-прежнему можно запускать вручную по очереди:
|
||||||
|
|
||||||
|
```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
|
||||||
|
sudo ./ochenstarik-server-panel-warp-6.sh
|
||||||
|
sudo ./ochenstarik-server-backup-7.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
VPN, 3x-ui, WARP, Telegram-уведомления и автоматические расписания резервного копирования являются необязательными этапами.
|
||||||
|
|
||||||
|
## Удаление и повторная установка с начала
|
||||||
|
|
||||||
|
Файл: `ochenstarik-server-uninstall.sh`.
|
||||||
|
|
||||||
|
Скрипт удаляет управляемые правила UFW, настройки IPv4/IPv6, SSH drop-in, fail2ban-конфигурацию, Telegram-hook, Xray, 3x-ui, WARP, расписания резервного копирования, swap и служебные файлы проекта. Перед изменением SSH открывается порт `22/tcp`. Правило порта, через который работает текущая SSH-сессия, сохраняется, чтобы не потерять доступ.
|
||||||
|
|
||||||
|
Удаление администратора и самих архивов резервных копий требует отдельных подтверждений. Обязательные системные пакеты второго этапа и обновления Ubuntu сохраняются, чтобы не потерять доступ к серверу. Языковые пакеты и дополнительные программы удаляются только если первый скрипт зафиксировал, что до его запуска их не было.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-uninstall.sh
|
||||||
|
chmod 700 ochenstarik-server-uninstall.sh
|
||||||
|
bash -n ochenstarik-server-uninstall.sh
|
||||||
|
sudo ./ochenstarik-server-uninstall.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Не закрывайте текущую SSH-сессию. После очистки сначала проверьте отдельное подключение через порт 22, затем снова запускайте нужные установочные скрипты. Старое правило текущего SSH-порта можно удалить только после успешной проверки нового входа.
|
||||||
|
|
||||||
|
## Безопасность
|
||||||
|
|
||||||
|
- Всегда проверяйте скачанные скрипты перед запуском от `root`.
|
||||||
|
- Не публикуйте токены Telegram, пароли, приватные SSH-ключи и ссылки VLESS.
|
||||||
|
- Не закрывайте действующую SSH-сессию во время переноса SSH на новый порт.
|
||||||
|
- Перед настройкой на рабочем сервере сделайте резервную копию важных данных.
|
||||||
32
docs/readme/README.zh-CN.md
Normal file
32
docs/readme/README.zh-CN.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Ubuntu Server 快速配置
|
||||||
|
|
||||||
|
[English](../../README.md) | [Русский](README.ru.md) | [Español](README.es.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Português](README.pt.md) | **中文** | [日本語](README.ja.md) | [العربية](README.ar.md) | [हिन्दी](README.hi.md)
|
||||||
|
|
||||||
|
一组模块化 Bash 脚本,用于 Ubuntu Server 的初始配置、安全加固、SSH、VPN、3x-ui、WARP 和备份。
|
||||||
|
|
||||||
|
> 如需在一个应用中监控并统一管理多台服务器,请使用 [Server Monitor Manager](https://github.com/ochenstarik-ui/server-monitor-manager)。该项目目前仍处于早期开发阶段。
|
||||||
|
|
||||||
|
## 快速安装
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y curl ca-certificates
|
||||||
|
curl -4 -fLO --retry 5 --retry-delay 10 --connect-timeout 30 \
|
||||||
|
https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/ochenstarik-server-install.sh
|
||||||
|
chmod 700 ochenstarik-server-install.sh
|
||||||
|
sudo ./ochenstarik-server-install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
安装程序的第一个问题用于选择界面语言,默认是 English。随后七个步骤都可以运行、跳过或用于退出安装程序。
|
||||||
|
|
||||||
|
## 安装步骤
|
||||||
|
|
||||||
|
1. 时区、终端语言、推荐程序和交换文件。
|
||||||
|
2. 基础软件包、SSH 端口、IPv4/IPv6 和 UFW。
|
||||||
|
3. 管理员、SSH 密钥、权限、sudo 和 fail2ban。
|
||||||
|
4. SSH 登录的 Telegram 通知。
|
||||||
|
5. 通过 Xray 配置系统 VPN。
|
||||||
|
6. 3x-ui 面板和本地 Cloudflare WARP 代理。
|
||||||
|
7. 初始快照以及每日、每周或每月备份。
|
||||||
|
|
||||||
|
更改 SSH 端口时不要关闭当前会话。请先在另一个终端中测试新连接。更多说明请参阅[英文主文档](../../README.md)。
|
||||||
31
tests/test-readme-languages.sh
Normal file
31
tests/test-readme-languages.sh
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.."
|
||||||
|
|
||||||
|
readmes=(
|
||||||
|
README.md
|
||||||
|
docs/readme/README.ru.md
|
||||||
|
docs/readme/README.es.md
|
||||||
|
docs/readme/README.de.md
|
||||||
|
docs/readme/README.fr.md
|
||||||
|
docs/readme/README.pt.md
|
||||||
|
docs/readme/README.zh-CN.md
|
||||||
|
docs/readme/README.ja.md
|
||||||
|
docs/readme/README.ar.md
|
||||||
|
docs/readme/README.hi.md
|
||||||
|
)
|
||||||
|
|
||||||
|
[[ "${#readmes[@]}" == 10 ]]
|
||||||
|
grep -Fqx '# Lightweight Ubuntu Server Setup' README.md
|
||||||
|
|
||||||
|
for readme in "${readmes[@]}"; do
|
||||||
|
[[ -s "$readme" ]]
|
||||||
|
grep -Fq 'https://github.com/ochenstarik-ui/server-monitor-manager' "$readme"
|
||||||
|
grep -Fq 'English' "$readme"
|
||||||
|
grep -Fq 'Русский' "$readme"
|
||||||
|
grep -Fq 'Español' "$readme"
|
||||||
|
grep -Fq 'हिन्दी' "$readme"
|
||||||
|
done
|
||||||
|
|
||||||
|
printf 'README language and monitoring links passed.\n'
|
||||||
Loading…
Reference in a new issue