Add server setup scripts (manual + cloud-init)

Two deployment options for recreating the kirgysia server:
- manual-setup/: bash script for manual server provisioning
- cloud-init/: cloud-init config + data upload script for automated VPS setup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-21 16:07:57 +04:00
co-authored by Claude Opus 4.6
commit ba4b395a4a
6 changed files with 679 additions and 0 deletions
+95
View File
@@ -0,0 +1,95 @@
# Настройка нового сервера (копия kirgysia)
## Что внутри
```
server-setup/
├── setup.sh # Скрипт автоматической настройки
├── README.md # Эта инструкция
└── data/
├── x-ui.db # База данных 3x-ui
├── fullchain.pem # SSL-сертификат
├── privkey.pem # SSL-ключ
└── authorized_keys # SSH-ключ для доступа
```
## Требования
- Ubuntu 22.04 LTS
- Root-доступ
## Быстрый старт
### 1. Скопировать папку на новый сервер
```bash
scp -r server-setup/ root@IP_НОВОГО_СЕРВЕРА:/root/
```
### 2. Подключиться к серверу
```bash
ssh root@IP_НОВОГО_СЕРВЕРА
```
### 3. Запустить скрипт
```bash
cd /root/server-setup
sudo bash setup.sh
```
Всё. Скрипт сам установит пакеты, создаст пользователя, настроит SSH, поднимет 3x-ui в Docker.
## Настройки (при необходимости)
В начале `setup.sh` есть переменные — обычно менять их не нужно:
| Переменная | По умолчанию | Описание |
|-------------|----------------|----------|
| `NEW_USER` | `eberkheev` | Имя пользователя |
| `SSH_PORT` | `10001` | Порт SSH |
| `TIMEZONE` | `UTC` | Часовой пояс |
| `STATIC_IP` | *(пусто)* | IP сервера, например `5.144.180.119/24`. Оставить пустым если сеть настраивается автоматически (DHCP) — так на большинстве VPS |
| `GATEWAY` | *(пусто)* | IP шлюза, например `5.144.180.1`. Нужен только если задан `STATIC_IP` |
| `DNS` | `8.8.8.8,8.8.4.4` | DNS-серверы |
## Что настраивает скрипт
1. Обновление системы
2. Установка пакетов: docker, git, htop, mc, nmap, fail2ban, certbot, curl, wget, unzip
3. Создание пользователя с sudo (без пароля)
4. SSH: порт 10001, вход только по ключу, root запрещён
5. Сеть (только если задан STATIC_IP)
6. 3x-ui в Docker (network_mode: host) с восстановлением базы и сертификатов
7. Скрипт обновления `~/update.sh`
## После установки
Подключение:
```bash
ssh -p 10001 eberkheev@IP_НОВОГО_СЕРВЕРА
```
Панель 3x-ui:
```
https://IP_НОВОГО_СЕРВЕРА:10002
```
(порт панели зависит от настроек в x-ui.db)
Проверка контейнера:
```bash
docker ps
```
Обновление 3x-ui:
```bash
bash ~/update.sh
```
## Обновление сертификатов
Если нужен новый сертификат — положите `fullchain.pem` и `privkey.pem` в `~/3x-ui/cert/` и перезапустите контейнер:
```bash
docker restart 3xui_app
```