From 5515900d6233726335d9900dbf0e0648e88d74f8 Mon Sep 17 00:00:00 2001 From: ochenstarik-ui Date: Wed, 15 Jul 2026 15:03:18 +0700 Subject: [PATCH] Add multilingual README and server manager link --- .github/workflows/bash-syntax.yml | 3 + README.md | 455 ++++++------------------------ docs/readme/README.ar.md | 32 +++ docs/readme/README.de.md | 32 +++ docs/readme/README.es.md | 32 +++ docs/readme/README.fr.md | 32 +++ docs/readme/README.hi.md | 32 +++ docs/readme/README.ja.md | 32 +++ docs/readme/README.pt.md | 32 +++ docs/readme/README.ru.md | 427 ++++++++++++++++++++++++++++ docs/readme/README.zh-CN.md | 32 +++ tests/test-readme-languages.sh | 31 ++ 12 files changed, 807 insertions(+), 365 deletions(-) create mode 100644 docs/readme/README.ar.md create mode 100644 docs/readme/README.de.md create mode 100644 docs/readme/README.es.md create mode 100644 docs/readme/README.fr.md create mode 100644 docs/readme/README.hi.md create mode 100644 docs/readme/README.ja.md create mode 100644 docs/readme/README.pt.md create mode 100644 docs/readme/README.ru.md create mode 100644 docs/readme/README.zh-CN.md create mode 100644 tests/test-readme-languages.sh diff --git a/.github/workflows/bash-syntax.yml b/.github/workflows/bash-syntax.yml index 3313963..c205cf7 100644 --- a/.github/workflows/bash-syntax.yml +++ b/.github/workflows/bash-syntax.yml @@ -29,5 +29,8 @@ jobs: - name: Test master language selection 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 run: bash tests/test-step3-sshd-parsing.sh diff --git a/README.md b/README.md index 6150fb0..54c2d15 100644 --- a/README.md +++ b/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 set -e @@ -28,9 +32,13 @@ chmod 700 ./*.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 sudo apt-get update @@ -44,380 +52,97 @@ chmod 700 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-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-сессии | +| `ochenstarik-server-install.sh` | Unified wizard with language selection and sequential module installation | Recommended | +| `ochenstarik-server-1.sh` | Timezone, terminal locale, program groups, and a 2 GiB swap file | Yes | +| `ochenstarik-server-2.sh` | Base packages, SSH port, IPv4/IPv6 mode, UFW, and port management | Yes | +| `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 notifications for successful SSH logins | Optional | +| `ochenstarik-server-vpn-5.sh` | System VPN through Xray with a selectable subscription port | Optional | +| `ochenstarik-server-panel-warp-6.sh` | 3x-ui panel and local Cloudflare WARP proxy | Optional | +| `ochenstarik-server-backup-7.sh` | Protected initial snapshot and selected daily, weekly, or monthly schedules | Optional | +| `ochenstarik-server-uninstall.sh` | Removes project-managed settings so installation can start again | Use carefully | -Файлы `*.env.example` являются только примерами. Не записывайте настоящие пароли, токены и приватные SSH-ключи в Git. - -## Требования - -- Ubuntu Server или совместимая Debian-система с `systemd`; -- доступ `root` или пользователь с `sudo`; -- подключение к интернету; -- рекомендуется сохранить текущую SSH-сессию открытой до проверки нового входа. - -## Получение проекта - -Рекомендуемый способ — загрузка архива через `codeload.github.com`. Он подходит в том числе для серверов, на которых соединение с основным доменом `github.com` завершается ошибкой `SSL connection timeout`: +Every module can be downloaded and run independently: ```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 +curl -fLO https://raw.githubusercontent.com/ochenstarik-ui/lightweight-server/main/SCRIPT_NAME.sh +chmod 700 SCRIPT_NAME.sh +bash -n SCRIPT_NAME.sh +sudo ./SCRIPT_NAME.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 -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 +cd ~/lightweight-server +git pull sudo ./ochenstarik-server-install.sh ``` -После ошибки этап можно повторить, пропустить или завершить весь мастер. Повторный запуск мастера разрешён: каждый модуль поддерживает повторную настройку. - -Отдельные скрипты сохранены. При необходимости их по-прежнему можно запускать вручную по очереди: +## Reset project-managed configuration ```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 +cd ~/lightweight-server sudo ./ochenstarik-server-uninstall.sh ``` -Не закрывайте текущую SSH-сессию. После очистки сначала проверьте отдельное подключение через порт 22, затем снова запускайте нужные установочные скрипты. Старое правило текущего SSH-порта можно удалить только после успешной проверки нового входа. - -## Безопасность - -- Всегда проверяйте скачанные скрипты перед запуском от `root`. -- Не публикуйте токены Telegram, пароли, приватные SSH-ключи и ссылки VLESS. -- Не закрывайте действующую SSH-сессию во время переноса SSH на новый порт. -- Перед настройкой на рабочем сервере сделайте резервную копию важных данных. +Read every confirmation carefully. The reset script preserves critical Ubuntu packages and avoids removing access until explicitly confirmed. diff --git a/docs/readme/README.ar.md b/docs/readme/README.ar.md new file mode 100644 index 0000000..044230d --- /dev/null +++ b/docs/readme/README.ar.md @@ -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) لمزيد من التفاصيل. diff --git a/docs/readme/README.de.md b/docs/readme/README.de.md new file mode 100644 index 0000000..34f45d1 --- /dev/null +++ b/docs/readme/README.de.md @@ -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). diff --git a/docs/readme/README.es.md b/docs/readme/README.es.md new file mode 100644 index 0000000..457868d --- /dev/null +++ b/docs/readme/README.es.md @@ -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. diff --git a/docs/readme/README.fr.md b/docs/readme/README.fr.md new file mode 100644 index 0000000..b86c4e0 --- /dev/null +++ b/docs/readme/README.fr.md @@ -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. diff --git a/docs/readme/README.hi.md b/docs/readme/README.hi.md new file mode 100644 index 0000000..0a69f30 --- /dev/null +++ b/docs/readme/README.hi.md @@ -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) देखें। diff --git a/docs/readme/README.ja.md b/docs/readme/README.ja.md new file mode 100644 index 0000000..8e15e1e --- /dev/null +++ b/docs/readme/README.ja.md @@ -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)を参照してください。 diff --git a/docs/readme/README.pt.md b/docs/readme/README.pt.md new file mode 100644 index 0000000..0e8d360 --- /dev/null +++ b/docs/readme/README.pt.md @@ -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. diff --git a/docs/readme/README.ru.md b/docs/readme/README.ru.md new file mode 100644 index 0000000..2a3a022 --- /dev/null +++ b/docs/readme/README.ru.md @@ -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 на новый порт. +- Перед настройкой на рабочем сервере сделайте резервную копию важных данных. diff --git a/docs/readme/README.zh-CN.md b/docs/readme/README.zh-CN.md new file mode 100644 index 0000000..c6b826c --- /dev/null +++ b/docs/readme/README.zh-CN.md @@ -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)。 diff --git a/tests/test-readme-languages.sh b/tests/test-readme-languages.sh new file mode 100644 index 0000000..8d56f72 --- /dev/null +++ b/tests/test-readme-languages.sh @@ -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' -- 2.45.2