Update 2 files

- /docs/04-network.md
- /docs/04b-olimpvpn.md
This commit is contained in:
Administrator 2026-03-25 13:15:12 +05:00
parent f53c747a54
commit 3217762de1
2 changed files with 118 additions and 193 deletions

View File

@ -179,126 +179,28 @@ environment:
---
## 🔄 Бэкапы и восстановление
## Бэкапы конфигурации
### Автоматические бэкапы
### OlimpVPN (3X-UI)
| Параметр | Значение |
|----------|----------|
| **Скрипт** | `/opt/3x-ui/backup.sh` |
| **Расписание** | `0 3 * * 0` (воскресенье, 03:00 +05) |
| **Локальное хранилище** | `/opt/3x-ui/backups/` |
| **Nextcloud** | `nc.zailon.ru/Admin/Домашний Сервер/OlimpBackup/OlimpVPN/` |
| **Состав бэкапа** | `db/`, `cert/`, `docker-compose.yml` |
| **Хранение локально** | 30 дней |
| **Таймзона** | `Asia/Yekaterinburg (+05)` |
Автоматические еженедельные бэкапы на Nextcloud:
- **Скрипт**: `/opt/3x-ui/backup.sh`
- **Cron**: `0 3 * * 0` (воскресенье, 03:00)
- **Хранилище**: `nc.zailon.ru/VPN_Backups/3x-ui/`
- **Состав**: база данных, сертификаты, docker-compose.yml
### Ручной запуск бэкапа
```bash
# Ручной бэкап
cd /opt/3x-ui
tar -czf backup_$(date +%Y%m%d).tar.gz db/ cert/ docker-compose.yml
&&&bash
/opt/3x-ui/backup.sh
&&&
### Восстановление из бэкапа
&&&bash
# 1. Скачать последний бэкап с Nextcloud
LATEST=$(curl -s -u "Zailon:TOKEN" \
"https://nc.zailon.ru/remote.php/dav/files/Zailon/Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/" \
-X PROPFIND -H "Depth: 1" | \
grep -oP '3x-ui_backup_\d+_\d+\.tar\.gz' | tail -1)
curl -s -u "Zailon:TOKEN" \
"https://nc.zailon.ru/remote.php/dav/files/Zailon/Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/${LATEST}" \
-o /tmp/restore.tar.gz
# 2. Остановить сервис
cd /opt/3x-ui && docker compose down
# 3. (Опционально) Создать резервную копию текущей конфигурации
tar -czf /opt/3x-ui/pre_restore_$(date +%Y%m%d).tar.gz -C /opt/3x-ui db cert docker-compose.yml
# 4. Восстановить файлы
tar -xzf /tmp/restore.tar.gz -C /opt/3x-ui/
chown -R root:root /opt/3x-ui/
chmod 600 /opt/3x-ui/cert/private.key
# 5. Запустить сервис
# Восстановление
docker compose down
tar -xzf backup_*.tar.gz -C /opt/3x-ui/
docker compose up -d
```
# 6. Проверить статус
docker ps | grep 3xui
docker logs 3xui_app --tail 20
&&&
### Мониторинг бэкапов
&&&bash
# Логи бэкапа
tail -f /var/log/3x-ui-backup.log
# Локальные бэкапы
ls -lh /opt/3x-ui/backups/
# Проверка на Nextcloud (WebDAV)
curl -u "Zailon:TOKEN" \
"https://nc.zailon.ru/remote.php/dav/files/Zailon/Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/" \
-X PROPFIND -H "Depth: 1" | grep -oP '<d:href>\K[^<]+' | tail -5
# Проверка crontab
crontab -l
# Проверка таймзоны
timedatectl | grep "Time zone"
&&&
### Решение проблем
#### Ошибка 401 Unauthorized
&&&bash
# Пересоздать токен приложения в Nextcloud:
# Настройки → Безопасность → Приложения паролей → Создать новый
# Обновить NEXTCLOUD_PASS в /opt/3x-ui/backup.sh
&&&
#### Ошибка 404 Not Found
&&&bash
# Проверить путь к папке (регистр и пробелы важны!)
# Правильный формат: /Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/
&&&
#### Бэкап не создаётся
&&&bash
# Проверить права на запись
ls -la /opt/3x-ui/backups/
# Проверить место на диске
df -h /opt/3x-ui
# Проверить логи cron
journalctl -u cron -n 20
&&&
#### Время в логах неверное
&&&bash
# Установить таймзону
timedatectl set-timezone Asia/Yekaterinburg
# Перезапустить cron
systemctl restart cron
&&&
### Чеклист обслуживания
- [ ] **Еженедельно**: Проверять `/var/log/3x-ui-backup.log` после воскресенья
- [ ] **Ежемесячно**: Убедиться что бэкапы есть на Nextcloud
- [ ] **Ежеквартально**: Протестировать восстановление на тестовом окружении
- [ ] **При смене пароля Nextcloud**: Обновить `NEXTCLOUD_PASS` в скрипте
- [ ] **Перед обновлением 3X-UI**: Сделать ручной бэкап
---
> ⚠️ **Важно**: Токен приложения `2Fpz6-ocGSz-rRbaZ-efoa3-EDATz` имеет доступ только к WebDAV. Никогда не используйте основной пароль аккаунта в скриптах!
> **Важно**: токены и пароли хранятся отдельно, не включаются в бэкап.
---

View File

@ -15,8 +15,8 @@
3. [Установка и настройка](#установка-и-настройка)
4. [Конфигурация Xray](#конфигурация-xray)
5. [Управление клиентами](#управление-клиентами)
6. [Бэкапы](#бэкапы)
7. [Мониторинг и обслуживание](#мониторинг-и-обслуживание)
6. [Бэкапы и восстановление](#Бэкапы-и-восстановление)
7. [Мониторинг](#Мониторинг-бэкапов)
8. [Решение проблем](#решение-проблем)
---
@ -308,103 +308,126 @@ https://charon.zailon.ru:45131/charon-cerber/CLIENT_ID
---
## Бэкапы
## 🔄 Бэкапы и восстановление
### Автоматические бэкапы на Nextcloud
### Автоматические бэкапы
#### Настройка Nextcloud
| Параметр | Значение |
|----------|----------|
| **Скрипт** | `/opt/3x-ui/backup.sh` |
| **Расписание** | `0 3 * * 0` (воскресенье, 03:00 +05) |
| **Локальное хранилище** | `/opt/3x-ui/backups/` |
| **Nextcloud** | `nc.zailon.ru/Admin/Домашний Сервер/OlimpBackup/OlimpVPN/` |
| **Состав бэкапа** | `db/`, `cert/`, `docker-compose.yml` |
| **Хранение локально** | 30 дней |
| **Таймзона** | `Asia/Yekaterinburg (+05)` |
1. Создайте папку: `/VPN_Backups/3x-ui/` на `nc.zailon.ru`
2. Создайте токен приложения:
- Настройки → Безопасность → Приложения паролей
- Имя: `3X-UI Backups`
- Скопируйте пароль
#### Скрипт бэкапа
### Ручной запуск бэкапа
```bash
#!/bin/bash
# /opt/3x-ui/backup.sh
# Настройки
NEXTCLOUD_URL="https://nc.zailon.ru"
NEXTCLOUD_USER="ваш_username"
NEXTCLOUD_PASS="ваш_токен_приложения"
BACKUP_DIR="/opt/3x-ui/backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="3x-ui_backup_${DATE}.tar.gz"
# Создаем директорию для бэкапов
mkdir -p ${BACKUP_DIR}
# Создаем архив
tar -czf ${BACKUP_DIR}/${BACKUP_FILE} \
-C /opt/3x-ui db cert docker-compose.yml
# Загружаем на Nextcloud через WebDAV
curl -T ${BACKUP_DIR}/${BACKUP_FILE} \
-u ${NEXTCLOUD_USER}:${NEXTCLOUD_PASS} \
${NEXTCLOUD_URL}/remote.php/dav/files/${NEXTCLOUD_USER}/VPN_Backups/3x-ui/${BACKUP_FILE}
# Удаляем локальные бэкапы старше 30 дней
find ${BACKUP_DIR} -name "3x-ui_backup_*.tar.gz" -mtime +30 -delete
# Логирование
echo "$(date): Backup ${BACKUP_FILE} uploaded to Nextcloud" >> /var/log/3x-ui-backup.log
/opt/3x-ui/backup.sh
```
#### Настройка cron (еженедельно)
### Восстановление из бэкапа
```bash
# Делаем скрипт исполняемым
chmod +x /opt/3x-ui/backup.sh
# 1. Скачать последний бэкап с Nextcloud
LATEST=$(curl -s -u "Zailon:TOKEN" \
"https://nc.zailon.ru/remote.php/dav/files/Zailon/Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/" \
-X PROPFIND -H "Depth: 1" | \
grep -oP '3x-ui_backup_\d+_\d+\.tar\.gz' | tail -1)
# Добавляем в crontab
crontab -e
curl -s -u "Zailon:TOKEN" \
"https://nc.zailon.ru/remote.php/dav/files/Zailon/Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/${LATEST}" \
-o /tmp/restore.tar.gz
# Каждое воскресенье в 3:00
0 3 * * 0 /opt/3x-ui/backup.sh
```
# 2. Остановить сервис
cd /opt/3x-ui && docker compose down
#### Ручной бэкап
# 3. (Опционально) Создать резервную копию текущей конфигурации
tar -czf /opt/3x-ui/pre_restore_$(date +%Y%m%d).tar.gz -C /opt/3x-ui db cert docker-compose.yml
```bash
# Быстрый бэкап
cd /opt/3x-ui
tar -czf backup_manual_$(date +%Y%m%d).tar.gz db/ cert/ docker-compose.yml
# Скачать через SCP на локальный компьютер
scp root@2.27.50.20:/opt/3x-ui/backup_manual_*.tar.gz ~/backups/
```
#### Восстановление из бэкапа
```bash
# Останавливаем контейнер
cd /opt/3x-ui
docker compose down
# Восстанавливаем
tar -xzf backup_20260325.tar.gz -C /opt/3x-ui/
# Исправляем права
# 4. Восстановить файлы
tar -xzf /tmp/restore.tar.gz -C /opt/3x-ui/
chown -R root:root /opt/3x-ui/
chmod 600 /opt/3x-ui/cert/private.key
# Запускаем
# 5. Запустить сервис
docker compose up -d
# 6. Проверить статус
docker ps | grep 3xui
docker logs 3xui_app --tail 20
```
### Мониторинг бэкапов
```bash
# Логи бэкапа
tail -f /var/log/3x-ui-backup.log
# Локальные бэкапы
ls -lh /opt/3x-ui/backups/
# Проверка на Nextcloud (WebDAV)
curl -u "Zailon:TOKEN" \
"https://nc.zailon.ru/remote.php/dav/files/Zailon/Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/" \
-X PROPFIND -H "Depth: 1" | grep -oP '<d:href>\K[^<]+' | tail -5
# Проверка crontab
crontab -l
# Проверка таймзоны
timedatectl | grep "Time zone"
```
### Решение проблем
#### Ошибка 401 Unauthorized
```bash
# Пересоздать токен приложения в Nextcloud:
# Настройки → Безопасность → Приложения паролей → Создать новый
# Обновить NEXTCLOUD_PASS в /opt/3x-ui/backup.sh
```
#### Ошибка 404 Not Found
```bash
# Проверить путь к папке (регистр и пробелы важны!)
# Правильный формат: /Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/
```
#### Бэкап не создаётся
```bash
# Проверить права на запись
ls -la /opt/3x-ui/backups/
# Проверить место на диске
df -h /opt/3x-ui
# Проверить логи cron
journalctl -u cron -n 20
```
#### Время в логах неверное
```bash
# Установить таймзону
timedatectl set-timezone Asia/Yekaterinburg
# Перезапустить cron
systemctl restart cron
```
### Чеклист обслуживания
- [ ] **Еженедельно**: Проверять `/var/log/3x-ui-backup.log` после воскресенья
- [ ] **Ежемесячно**: Убедиться что бэкапы есть на Nextcloud
- [ ] **Ежеквартально**: Протестировать восстановление на тестовом окружении
- [ ] **При смене пароля Nextcloud**: Обновить `NEXTCLOUD_PASS` в скрипте
- [ ] **Перед обновлением 3X-UI**: Сделать ручной бэкап
---
## Мониторинг и обслуживание
### Обновление 3X-UI
```bash
cd /opt/3x-ui
docker compose pull
docker compose up -d
docker image prune -f
> ⚠️ **Важно**: Токен приложения `2Fpz6-ocGSz-rRbaZ-efoa3-EDATz` имеет доступ только к WebDAV. Никогда не используйте основной пароль аккаунта в скриптах!
```
### Обновление SSL сертификата