Добавить многоязычный README и ссылку на менеджер серверов #9
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
|
||||
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
|
||||
|
|
|
|||
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
|
||||
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.
|
||||
|
|
|
|||
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