# Установка и обновление

> Команды, порядок поднятия, миграции, откаты.

## Период 23.08–07.09.2025 — Bedolaga v2.0.x–2.2.x, Remnawave 2.1.x

- Каноничное обновление (до 2.5.x): `docker compose down && docker compose pull && docker compose up -d && docker compose logs -f` [id=1789,18904,20391](https://t.me/c/2941121338/1789); `.env` только при `down→up` [id=1789](https://t.me/c/2941121338/1789); `down -v` трёт базы.
- Сборка из исходников: `build: .` вместо `image:` [id=2149,3025](https://t.me/c/2941121338/2149); автоустановщик `install_bot.sh` [id=21791](https://t.me/c/2941121338/21791); `git pull origin main && make reload` [id=59851](https://t.me/c/2941121338/59851); `make help/up/down/reload` [id=53244](https://t.me/c/2941121338/53244).
- Подготовка: `mkdir -p ./logs ./data ./data/backups ./data/referral_qr && chmod -R 755 ./logs ./data && sudo chown -R 1000:1000 ./logs ./data` [id=9840,19626,35081,59669](https://t.me/c/2941121338/9840).
- Panel/Node: `bash <(curl -fsSL https://cc.watchcats.ru/install-remnanode.sh)` [id=19565](https://t.me/c/2941121338/19565); Ansible [iphizic/remna-node](https://github.com/iphizic/remna-node) [id=17810](https://t.me/c/2941121338/17810); reverse-proxy [eGamesAPI/remnawave-reverse-proxy](https://github.com/eGamesAPI/remnawave-reverse-proxy) [id=17773](https://t.me/c/2941121338/17773).
- Первичная настройка: Админ панель → Подписки → Управление серверами → Синхронизация; затем Remnawave → Синхронизация [id=2224,20793](https://t.me/c/2941121338/2224).

## Период 12.11.2025–01.01.2026 — Bedolaga v2.7–2.9.4, Remnawave 2.3–2.4

### Remnawave панель
```bash
cd /opt/remnawave && docker compose pull remnawave && docker compose down && docker compose up -d && docker compose logs -f
cd /opt/remnanode && docker compose pull remnanode && docker compose down && docker compose up -d
```
[id=93968](https://t.me/c/2941121338/93968) Бекап обязателен; 2.3.0 требует ноды 2.3.0. Для нод `pull`, не `build` [id=119864](https://t.me/c/2941121338/119864).

### Bedolaga бот — команды
```bash
cd /root/remnawave-bedolaga-telegram-bot && git pull origin main && make reload
# или (обязательно --build):
git pull origin main && docker compose down && docker compose up -d --build && docker compose logs -f
# make reload-follow — с логами
```
[id=67593,94189,106270,125758,143268](https://t.me/c/2941121338/67593) При `Your local changes ... docker-compose.yml` → stash/скачать оригинал [id=96615,95929](https://t.me/c/2941121338/96615); если `make` нет — `docker compose down && docker compose up -d --build` [id=135872](https://t.me/c/2941121338/135872); после правок локалей/лого — ребилд [id=138223](https://t.me/c/2941121338/138223).

### Бот+панель на одном сервере
- `docker-compose.local.yml` [id=113541,106223](https://t.me/c/2941121338/113541); `REMNAWAVE_API_URL=http://remnawave:3000` в Docker-сети [id=101833,106223](https://t.me/c/2941121338/101833); вне сети — домен [id=107391,125474](https://t.me/c/2941121338/107391).
```bash
docker network create remnawave_network
docker network connect remnawave_network remnawave
docker network connect remnawave_network remnawave_bot
```
[id=115232](https://t.me/c/2941121338/115232)
```bash
mkdir -p ./logs ./data ./data/backups ./data/referral_qr
chmod -R 755 ./logs ./data
sudo chown -R 1000:1000 ./logs ./data
```
[id=137718](https://t.me/c/2941121338/137718)

### Автоустановщики
DigneZzZ/remnawave-scripts, Capybara-z/RemnaSetup, xxphantom/remnawave-installer, eGamesAPI/remnawave-reverse-proxy (3 мин) [id=97750](https://t.me/c/2941121338/97750), wrx861/bedolaga_auto_install [id=113551,118077](https://t.me/c/2941121338/113551), DonMatteoVPN/Reshala-Remnawave-Bedolaga (оценка ёмкости) [id=118048](https://t.me/c/2941121338/118048).

### Миграция/бекап
- [distillium/remnawave-backup-restore](https://github.com/distillium/remnawave-backup-restore) [id=79181,108073](https://t.me/c/2941121338/79181); с postgres 18 — вручную [id=114571](https://t.me/c/2941121338/114571); восстановление «очистить и восстановить» → рестарт [id=102565,118111](https://t.me/c/2941121338/102565); бэкапы во вкладке «Бэкапы» [id=118111](https://t.me/c/2941121338/118111); `scp -r <dir> user@ip:<dir>` [id=143314](https://t.me/c/2941121338/143314); 3x-ui: «пользователи переносятся, подписки нет» [id=79539](https://t.me/c/2941121338/79539); SFTP `postgres_data` + скрытые `.env` при остановленных докерах [id=108073](https://t.me/c/2941121338/108073).
- VPS: 4/4/60GB/1Gbit для 100–200 юзеров + 4–5 нод [id=63907](https://t.me/c/2941121338/63907); мин 2/4, идеал 4/8 [id=98473,102878,117734](https://t.me/c/2941121338/98473).

## Период 09.02–13.03.2026 — Bedolaga v3.9–3.32, Remnawave 2.6.x, Remnawave-admin 2.x

### Bedolaga Bot
```bash
cd /opt/remnawave-bedolaga-telegram-bot
git pull origin main
docker compose down
docker compose up -d --build
docker compose logs -f
```
[id=239068, 255592](https://t.me/c/2941121338/239068)

С dev-ветки:
```bash
git pull
git fetch origin
git checkout -b dev origin/dev
```
[id=222154/222156](https://t.me/c/2941121338/222154). Обратно `git checkout main` [id=222156](https://t.me/c/2941121338/222156). Миграции поэтапно: 2.9.3/3.7.0/3.11 → 3.14 → 3.15.1 → ласт [id=242786, 244963](https://t.me/c/2941121338/242786). uv.lock перегенерация:
```bash
docker run --rm -it -v "$PWD:/app" -w /app python:3.13-slim sh -lc 'pip install -U uv && uv lock'
```
[id=253421](https://t.me/c/2941121338/253421)

Бэкап БД:
```bash
docker exec remnawave_bot_db pg_dump -Fc -U postgres remnawave_bot > backup_$(date +%Y%m%d_%H%M%S).dump
docker exec -i remnawave_bot_db pg_restore -U postgres -d remnawave_bot --clean --if-exists < backup_XXXXXXXX_XXXXXX.dump
```
[id=230949, 245593](https://t.me/c/2941121338/230949)

### Bedolaga Cabinet
```bash
cd /opt/bedolaga-cabinet && git pull origin main && docker compose down && docker compose up -d --build && docker compose logs -f
```
[id=240341, 260038](https://t.me/c/2941121338/240341)
```bash
docker pull ghcr.io/bedolaga-dev/bedolaga-cabinet:latest
docker create --name tmp_cabinet ghcr.io/bedolaga-dev/bedolaga-cabinet:latest
docker cp tmp_cabinet:/usr/share/nginx/html ./cabinet-dist
docker rm tmp_cabinet
```
[id=233021](https://t.me/c/2941121338/233021)

## Период 16.03–06.04.2026 — Remnawave 2.7.x (breaking), Bedolaga v3.33–3.45

- Канон бота: `cd /root/remnawave-bedolaga-telegram-bot; git pull origin main; git fetch --tags && git checkout vX.Y.Z; make reload` [id=276660](https://t.me/c/2941121338/276660); `cd /opt/remnawave-bedolaga-telegram-bot && git pull origin main && docker compose down && docker compose up -d --build && docker compose logs -f` [id=296699; id=320223; id=281439](https://t.me/c/2941121338/296699); `docker builder prune -a -f && docker compose down && docker compose build --no-cache && docker compose up -d` [id=292232](https://t.me/c/2941121338/292232); откат `git fetch --tags; git checkout v3.45.0; docker compose down && docker compose build --no-cache && docker compose up -d` [id=322152](https://t.me/c/2941121338/322152) (нужен alembic downgrade [id=322179, id=322241](https://t.me/c/2941121338/322179)).
- Порог миграций: <3.15.1 → сначала 3.15.1 (Alembic), потом last [id=274071](https://t.me/c/2941121338/274071); с 2.9.3 → 3.15.1 → last [id=298623; id=306882](https://t.me/c/2941121338/298623); 2.9→3.0.0→3.10→3.20→main [id=310306](https://t.me/c/2941121338/310306).
- Первый старт: `mkdir -p ./logs ./data ./data/backups ./data/referral_qr; chmod -R 755 ./logs ./data; sudo chown -R 1000:1000 ./logs ./data` [id=283144; id=322795](https://t.me/c/2941121338/283144).
- Кабина: `cd /opt/bedolaga-cabinet && git pull origin main && docker compose down && docker compose up -d --build` [id=277955](https://t.me/c/2941121338/277955); docker-образ `ghcr.io/bedolaga-dev/bedolaga-cabinet:latest` → tmp_cabinet → /srv/cabinet → nginx reload [id=293990; id=289572](https://t.me/c/2941121338/293990); `npm run build && cd /opt/caddy && docker compose down && docker compose up -d --build` [id=281439](https://t.me/c/2941121338/281439); порядок caddy down→bot down→build bot→up bot→caddy [id=297704](https://t.me/c/2941121338/297704).
- Порядок/сети: одна docker-сеть, запуск панель→сабка→бот→nginx [id=276112](https://t.me/c/2941121338/276112); кабину вне РФ [id=274086; id=305807](https://t.me/c/2941121338/274086); 443 панель → 8443 кабина [id=275679](https://t.me/c/2941121338/275679).
- Перенос/бэкап: distillium/remnawave-backup-restore, DigneZzZ/remnawave-scripts [id=277194; id=285111](https://t.me/c/2941121338/277194); `pg_dump -Fc -U remnawave_user remnawave_bot > backup.dump; pg_restore -U remnawave_user -d remnawave_bot --clean --if-exists < dump` [id=283274; id=320893; id=320828](https://t.me/c/2941121338/283274).

## Период 06–25.04.2026 — Bedolaga v3.45–3.52, Remnawave-admin 2.9–2.11

```bash
# Бот:
cd /opt/remnawave-bedolaga-telegram-bot && git pull origin main && docker compose down && docker compose up -d --build && docker compose logs -f
# Кабинет:
cd /opt/bedolaga-cabinet && git pull origin main && npm run build && cd /opt/caddy && docker compose down && docker compose up -d --build && docker compose logs -f
```
[id=358050,358452|13-14.04.2026](https://t.me/c/2941121338/358050)

```bash
git pull && make up       # [id=339984](https://t.me/c/2941121338/339984)
git pull && make reload   # [id=370102](https://t.me/c/2941121338/370102)
docker compose down && git stash && git pull && make up  # [id=391078](https://t.me/c/2941121338/391078)
sudo docker compose down && docker compose up  # [id=371578](https://t.me/c/2941121338/371578) не просто restart!
```

```bash
# Права для медиа [id=391620|23.04.2026](https://t.me/c/2941121338/391620)
mkdir -p ./logs ./data ./data/backups ./data/referral_qr
chmod -R 755 ./logs ./data
sudo chown -R 1000:1000 ./logs ./data
mkdir -p uploads/images uploads/videos uploads/thumbnails
sudo chown -R 1000:1000 uploads/
```

- Порядок: сначала 3.15.1, потом последняя [id=391061](https://t.me/c/2941121338/391061); бекап 2.9→3.51 — откат на 3.15.1 [id=393646,393644](https://t.me/c/2941121338/393646).
- Автоудаление: `INACTIVE_USER_DELETE_MONTHS` (дефолт 3) [id=390482](https://t.me/c/2941121338/390482); `REMNAWAVE_USER_DELETE_MODE=disable` [id=390662](https://t.me/c/2941121338/390662).
- Включить оплату ТГ старс: .env true + docker compose down && up [id=371527](https://t.me/c/2941121338/371527).

## Период 25.04–15.05.2026 — Bedolaga v3.49–3.55, Cabinet 1.49–1.52

### Минимальный .env бота (Frist) [id=491827](https://t.me/c/2941121338/491827)
```
BOT_TOKEN=
ADMIN_IDS=
REMNAWAVE_API_URL=
REMNAWAVE_API_KEY=
POSTGRES_DB=
POSTGRES_USER=
POSTGRES_PASSWORD=
```
Остальное закомментировать, чтобы править из админки бота [id=491827, 434366, 438130, 458332](https://t.me/c/2941121338/491827). «У тебя енв должен быть строк на 20 в идеале» [id=434366](https://t.me/c/2941121338/434366).

### Права на директории Bedolaga [id=402523](https://t.me/c/2941121338/402523)
```bash
mkdir -p ./logs ./data ./data/backups ./data/referral_qr
chmod -R 755 ./logs ./data
sudo chown -R 1000:1000 ./logs ./data
mkdir -p uploads/images uploads/videos uploads/thumbnails
sudo chown -R 1000:1000 uploads/
```

### Установка с нуля — живой разбор [id=491327–492392](https://t.me/c/2941121338/491327) (11.05)
- `make up` падает на старом docker → обновить: `sudo curl -fsSL https://get.docker.com | sh`
- `docker compose` недоступен на старом compose → использовать `docker-compose up -d` (и НЕ вводить `—build` с длинным тире — «No such service: —build»)
- pydantic `MULENPAY_SHOP_ID: Input should be a valid integer` → в .env поставить 0 или закомментировать неиспользуемые платёжки; правило: «читай строку в ошибке, ищи её в .env через Ctrl+W, ставь 0 или комментируй»
- daemon не запущен → `sudo systemctl start docker` (перезагрузка не обязательна)
- **правильная пересборка**: `docker compose down && docker compose up -d --build && docker compose logs -f -t`; с чистым кешем: `docker builder prune -a -f && docker compose build --no-cache`
- изменения .env НЕ применяются рестартом ремны — нужна полная пересборка бота (`--build`), «бот не увидит изменений в апи панели без полной пересборки»
- саблинк: если в ремне SUBDOMAIN без `/api/sub`, бот выдаёт `/api/sub/...`; пусть бот выдаёт голый домен — тоже работает

### Обновление бота
Канонически — git pull [id=427740](https://t.me/c/2941121338/427740): `git pull origin main && docker compose up -d --build`.
На dev-ветку [id=423272](https://t.me/c/2941121338/423272) (данные БД и .env сохраняются; вернуться — `git checkout main`):
```bash
git pull
git fetch origin
git checkout -b dev origin/dev
```
Через тег [id=456967](https://t.me/c/2941121338/456967):
```bash
git checkout tags/v3.54.0
```
При `git pull` «3 раза нифига» → checkout на тег [id=456966, 456967](https://t.me/c/2941121338/456966).

### Обновление кабинета [id=424130](https://t.me/c/2941121338/424130)
```bash
git pull origin main   # + пересборка
```
Вне докера — «читать доку, качаешь и пересобираешь статику». Для 1.50→1.52 нужно `docker compose pull` + сборка, иначе last-modified остаётся прежним [id=501927](https://t.me/c/2941121338/501927). Образ: `cabinet-dist` [id=433330](https://t.me/c/2941121338/433330). Обновление: скачать новый образ и закинуть в srv-папку (`docker compose up -d --build`) [id=506064, 505661](https://t.me/c/2941121338/506064).

### Порядок поднятия компонентов (важно!) [id=502278](https://t.me/c/2941121338/502278)
```bash
cd /opt/remnawave/ && docker compose up -d
cd /opt/remnawave/subscription && docker compose up -d
cd /root/remnawave-bedolaga-telegram-bot && docker compose up -d
cd /root/bedolaga-cabinet && docker compose up -d
cd /opt/remnawave/angie && docker compose up -d
```
Остановка — наоборот (от последнего к первому). Последним всегда ребутать nginx/angie после пересборки бота и обновления.

### Remnawave: сброс superadmin [id=501393](https://t.me/c/2941121338/501393)
```bash
docker exec -it remnawave cli
# enable password authentication → задаём пароль
# затем docker compose down && up -d на серве с ремной
```

### Ноды: обновление после 2.7.4 [id=501683](https://t.me/c/2941121338/501683)
```bash
cd /opt/remnanode
# в docker-compose.yml добавить cap_add: [NET_ADMIN]
cd /opt/remnanode && docker compose pull remnanode && docker compose down && docker compose up -d && docker compose logs -f
```
Потом ребутнуть панель (ноды стартуют через панель).

### Установка ноды
- Официально: [docs.rw/remnawave-node](https://docs.rw/docs/install/remnawave-node) [id=454392, 457801](https://t.me/c/2941121338/454392)
- Готовый скрипт: [DigneZzZ/remnawave-scripts · README_RU.md](https://github.com/DigneZzZ/remnawave-scripts/blob/main/README_RU.md) [id=454408](https://t.me/c/2941121338/454408)
- [Case211/remnanode-install](https://github.com/Case211/remnanode-install) [id=406874](https://t.me/c/2941121338/406874)
- Токены Node Agent можно сгенерить «на все ноды сразу одним файлом» (fleet), но агент всё равно нужен; есть скрипт автоустановщика агента из админки; Ansible можно [id=491149, 491509](https://t.me/c/2941121338/491149)
- eGames-скрипт для прода не рекомендуют: «Вот даже сам егеймс пишет, ну не юзайте для прода вы его» [id=434325](https://t.me/c/2941121338/434325); «у меня оригинальный просто правил что надо» [id=434324](https://t.me/c/2941121338/434324); «Установка ремны = ctrl c ctrl v (docker-compose)» [id=483223](https://t.me/c/2941121338/483223)

### Решала: установка
```bash
wget -O install.sh https://raw.githubusercontent.com/DonMatteoVPN/Reshala-Remnawave-Bedolaga/main/install.sh \
  && bash install.sh \
  && reshala
```
[id=489095](https://t.me/c/2941121338/489095) Скрипт продаётся в топике /30933 (платная поддержка).

### Прочие команды обслуживания
- `docker images prune` — диск заполняется при каждом обновлении [id=447692–447696](https://t.me/c/2941121338/447692)
- `--build` после правок env обязателен при `docker compose up -d` [id=410208](https://t.me/c/2941121338/410208)
- `docker logs -f remnawave_bot`; `docker compose logs -f bot` (перейти в папку с compose.yml) [id=458030](https://t.me/c/2941121338/458030); имя контейнера может быть просто `bot`, а не `remnawave_bot` [id=458410, 435226](https://t.me/c/2941121338/458410)
- Алиас обновления [id=467325](https://t.me/c/2941121338/467325):
```bash
cat ~/.bashrc | grep bedolaga
echo 'alias bedolaga-update="/opt/bedolaga-scripts/bedolaga-update.sh"' >> ~/.bashrc && source ~/.bashrc
```
- Логи при старте: базовый порядок Redis, DB, Bot; логи через log.rw [id=500756](https://t.me/c/2941121338/500756); ссылка для логов https://log.rw/QgWljylF [id=440030](https://t.me/c/2941121338/440030)
- Перенос бота: база + бекап (`remnawave_bot_pg.tar.gz`), env перенести [id=464988, 466279](https://t.me/c/2941121338/464988); «Сделать бэкапы на старом сервере. Накатить на новом» [id=425794](https://t.me/c/2941121338/425794); проксирование не забыть [id=425781](https://t.me/c/2941121338/425781)
- Remnawave-monitor обновление [id=414391](https://t.me/c/2941121338/414391):
```
cd /opt/remnawave-monitor
sudo systemctl stop remnawave-monitor
sudo git pull origin main
sudo npm install --omit=dev
sudo systemctl start remnawave-monitor
```

---

## Период 16.05–05.06.2026 — Bedolaga v3.56–3.58, Remnawave-admin 2.14

- Обновление бота [id=517004](https://t.me/c/2941121338/517004):
```bash
git pull && docker compose down && docker compose build --no-cache && docker compose up -d && docker compose logs -f
```
- Обновление кабинета + бота [id=526643](https://t.me/c/2941121338/526643):
```bash
cd /opt/bedolaga-cabinet && git pull origin main && docker compose down && docker compose up -d --build && docker compose logs -f
cd /opt/remnawave-bedolaga-telegram-bot/ && git pull origin main && docker compose down && docker compose up -d --build && docker compose logs -f
```
- Обновление бота `git pull && make reload` [id=646068](https://t.me/c/2941121338/646068).
- Обновление 3.53→3.56: ручной бэкап Redis+БД (автобекап tar.zip с паролем, проверить не пустой) [id=517053](https://t.me/c/2941121338/517053)[id=517037](https://t.me/c/2941121338/517037).
- Перенос бота на другой сервер: бэкапы .env + БД → залить в новую инсталляцию [id=522486](https://t.me/c/2941121338/522486).
- После изменения .env — `down && up -d`, рестарт не подтягивает [id=580215](https://t.me/c/2941121338/580215)[id=552023](https://t.me/c/2941121338/552023)[id=552150](https://t.me/c/2941121338/552150).
- pg_dump ошибка `role "postgres" does not exist` — не та роль у бота [id=517101](https://t.me/c/2941121338/517101):
```bash
docker exec remnawave_bot_db pg_dump -Fc -U postgres remnawave_bot > backup_$(date +%Y%m%d_%H%M%S).dump
```
- Кабинет с минимальным env не запускается у части — нужен полный env [id=566129](https://t.me/c/2941121338/566129)[id=569554](https://t.me/c/2941121338/569554).

## Период 07–26.06.2026 — Bedolaga 3.60–3.61, Subscription-page 7.2.5/7.2.6

### Subscription Page
```bash
cd /opt/remnawave/subscription && docker compose pull && docker compose down && docker compose up -d && docker compose logs -f
```
[id=725823](https://t.me/c/2941121338/725823)

### Бот
```bash
cd remnawave-bedolaga-telegram-bot && docker compose down && git pull origin main && docker compose up -d --build
```
[id=742746](https://t.me/c/2941121338/742746) — после локалей: `docker compose build bot && docker compose up -d bot` [id=715946](https://t.me/c/2941121338/715946)

### Кабинет
```bash
cd /opt/bedolaga-cabinet && docker compose pull && docker compose up -d
```
[id=742746](https://t.me/c/2941121338/742746) — удалить /srv/cabinet, взять /cabinet-dist из образа, пересоздать [id=721243](https://t.me/c/2941121338/721243)

### Логи ноды
```bash
docker exec -it remnanode tail -f /var/log/supervisor/xray.out.log | grep -- "->"
```
[id=655894](https://t.me/c/2941121338/655894)

### Xray-core ручное обновление
```bash
mkdir -p /opt/remnanode/custom-xray && cd /opt/remnanode/custom-xray
apt update && apt install unzip -y
wget https://github.com/XTLS/Xray-core/releases/download/v26.6.1/Xray-linux-64.zip
unzip -o Xray-linux-64.zip
nano /opt/remnanode/docker-compose.yml   # volumes: - '/opt/remnanode/custom-xray/xray:/usr/local/bin/xray:ro'
cd /opt/remnanode && docker compose down && docker compose up -d
```
[id=658371|09.06.2026](https://t.me/c/2941121338/658371)

## Период 26.06–08.07.2026 — Remnawave 2.8.0, Bedolaga v3.61–3.62, Cabinet 1.59

- Remnawave панель:
```bash
cd /opt/remnawave
docker compose pull
docker compose up -d
docker compose logs -f --tail=100
# вариант с down:
cd /opt/remnawave && docker compose pull && docker compose down && docker compose up -d && docker compose logs -f
```
[id=773870](https://t.me/c/2941121338/773870)[id=772343](https://t.me/c/2941121338/772343)
- Не обновляет выше 2.7.4 при `docker compose pull` если основная ветка не переключена [id=772343](https://t.me/c/2941121338/772343)
- После обновления 2.8.0: все сервера пропали в Happ — известная проблема [id=789275](https://t.me/c/2941121338/789275); Happ не хочет работать адекватно на 2.8.0 remnanode, в INCY ок [id=777111](https://t.me/c/2941121338/777111)

- Bedolaga Bot:
```bash
cd remnawave-bedolaga-telegram-bot && docker compose down && git pull origin main && docker compose up -d --build
```
[id=773870](https://t.me/c/2941121338/773870)
```bash
cd /путь/до/бедолаги
git pull --ff-only origin main
make reload
```
[id=773693](https://t.me/c/2941121338/773693)[id=786676](https://t.me/c/2941121338/786676)[id=786677](https://t.me/c/2941121338/786677)[id=786679](https://t.me/c/2941121338/786679)[id=756244](https://t.me/c/2941121338/756244)
- Если давно не обновлялся — `git pull --ff-only` и резервная копия [id=786680](https://t.me/c/2941121338/786680)
- Обновлять панель и бота вместе — одно без другого не работает (2.7→2.8) [id=782077](https://t.me/c/2941121338/782077)

- Bedolaga Cabinet:
```bash
cd /opt/bedolaga-cabinet
docker compose pull
docker compose up -d
```
[id=773870](https://t.me/c/2941121338/773870)
```bash
docker pull ghcr.io/bedolaga-dev/bedolaga-cabinet:latest
docker rm -f tmp_cabinet 2>/dev/null || true
rm -rf /tmp/cabinet-dist
mkdir -p /tmp/cabinet-dist
docker create --name tmp_cabinet ghcr.io/bedolaga-dev/bedolaga-cabinet:latest
docker cp tmp_cabinet:/usr/share/nginx/html/. /tmp/cabinet-dist/
docker rm tmp_cabinet
sudo rsync -a --delete /tmp/cabinet-dist/ /srv/cabinet/
rm -rf /tmp/cabinet-dist
```
[id=773727](https://t.me/c/2941121338/773727)

- Переезд на новый сервер (панель+бот+кабина): `rsync -avr` — самый эффективный, 15 минут [id=786342](https://t.me/c/2941121338/786342)[id=786351](https://t.me/c/2941121338/786351)[id=786355](https://t.me/c/2941121338/786355); ansible [id=786355](https://t.me/c/2941121338/786355)[id=834032](https://t.me/c/2941121338/834032); рекомендация: панель и бота на отдельные сервера [id=786381](https://t.me/c/2941121338/786381)

- Скрипты установки:
  - x1roko/node-setup (selfsteal, 4 инбаунда vless raw/xhttp/grpc/hy2): [x1roko/node-setup](https://github.com/x1roko/node-setup) [id=781565](https://t.me/c/2941121338/781565)
  - Case211 skill-remnawave-xray: `/plugin marketplace add Case211/skill-remnawave-xray`, `/plugin install remnawave-xray@case211` — Remnawave 2.8.0, Xray v26.6.27, Caddy 2.11.4 [id=784565](https://t.me/c/2941121338/784565)

## Период 08–20.07.2026 — Remnawave 2.8.1, Bedolaga v3.62–3.64, Cabinet 1.61

### Bedolaga Bot
- Каноническая команда обновления [id=837220|09.07.2026](https://t.me/c/2941121338/837220):
  ```bash
  cd /путь/к/remnawave-bedolaga-telegram-bot
  git pull origin main
  docker compose pull
  docker compose up -d --build
  ```
- Если после обновления Remnawave до 2.8 бот «не видит обнову» — обновить бота вручную [id=837409..837411](https://t.me/c/2941121338/837409).
- Тактика: лучше обновляться постепенно от версии к версии (можно попросить нейронку написать скрипт), но иногда прокатывает и сразу [id=837221|09.07.2026](https://t.me/c/2941121338/837221). «Обновляться можно сразу до последней; бэкапы наше всё; были версии, которые ломались» [id=868494|14.07.2026](https://t.me/c/2941121338/868494).
- Установка бедолаги: `docker compose up -d --build` [id=850467, 850518, 850519|11.07.2026](https://t.me/c/2941121338/850467).
- Ручное редактирование env по SSH: `nano .env` в директории бота, путь вида `/opt/remnawave-bedolaga-...` (зависит от того, куда ставил) [id=912533..912542|19.07.2026](https://t.me/c/2941121338/912533).
- После правок env — перезапустить контейнер, иначе бот показывает «Бот не настроен» при верных env [id=867989|13.07.2026](https://t.me/c/2941121338/867989); там же спрашивали про API на **8080**.
- Логи бота: `docker compose logs -f` — сервис называется не `remnawave_bot`, а как в `docker-compose.yml` [id=840770|09.07.2026](https://t.me/c/2941121338/840770).
- Перезапуск контейнера при обходе бага бэкапов: `docker restart remnawave_bot` [id=847895|11.07.2026](https://t.me/c/2941121338/847895).
- ИИ-помощь: «Кодекс мне за 10 минут обновил все ноды, панель под 2.8.0 прод с дева перенёс и бота обновил» [id=837498](https://t.me/c/2941121338/837498). Если что-то не взлетело — смотреть документацию Remnawave (очень подробная) [id=836859](https://t.me/c/2941121338/836859); сама `docs.rw` из РФ без ВПН не открывается [id=869005|14.07.2026](https://t.me/c/2941121338/869005).

### Caddy / reverse-proxy (для панели и бота)
- Caddy у Bedolaga идёт в докере — перезапускать в докере [id=840807|09.07.2026; тот же блок повторяется как копирайт-гайд [id=852039|11.07.2026](https://t.me/c/2941121338/840807)]:
  ```bash
  cd /opt/reverse-proxy
  docker compose exec caddy caddy validate --config /etc/caddy/Caddyfile
  docker compose exec caddy caddy reload --config /etc/caddy/Caddyfile
  docker compose logs -f caddy
  ```
- nginx: не держать 80 порт открытым (кроме момента обновления сертификатов) — «80 он нах не нужен» [id=921274|20.07.2026](https://t.me/c/2941121338/921274).
- nginx-фикс для xhttp poll-эндпоинта (проброс слэша, без пересборки ядра/клиента) [id=919011|19.07.2026](https://t.me/c/2941121338/919011):
  ```
  location /api/v4/media/session/poll {
    error_page 418 = @xhttp_poll_legacy;
    if ($arg_sid = "") { return 418; }
    rewrite ^/api/v4/media/session/poll$ /api/v4/media/session/poll/ break;
    proxy_pass http://127.0.0.1:10085;
  }
  ```
- Критика типового «блогерского» гайда (certbot + remnanode) [id=911094, 911128|19.07.2026](https://t.me/c/2941121338/911094): сертификаты в `/opt/certbot/certs` вместо стандартного `/etc/letsencrypt`; крон на renew каждое 28-е число вместо ежедневного запуска (Let's Encrypt рекомендует 1–2 раза в день, запуск каждый час не нагружает сервер); связка `remnanode` через `docker compose down/up` ненадёжна; «скрипт в 90 дней сломается». Крон-строка из гайда (дословно) [id=911128](https://t.me/c/2941121338/911128):
  ```
  0 5 * * 0 ufw allow 80 && /usr/bin/certbot renew --quiet && ufw delete allow 80 && ufw reload && cd /opt/remnanode && docker compose down && docker compose up >> /usr/local/remnawave_reverse/cron_jobs.log 2>&1
  ```

### Remnawave — операции в панели
- Все конфиги юзеров лежат в панели; нода поднимается за 3 минуты (максимум 5), логи отдельно [id=843804](https://t.me/c/2941121338/843804). Бэкап ноды — только логи: «Все конфиги в панели лежат же» [id=847895, 848243|11.07.2026](https://t.me/c/2941121338/847895).
- Шаблоны Xray: `Настройки → Шаблоны XRAY` — добавить шаблон с конфигом и роутингом, подключить через панель [id=915262..915265|19.07.2026](https://t.me/c/2941121338/915262). То же в другой формулировке: «Шаблоны → xray json», там же собирается сводка (JSON-роутинг вместо глючного happ-роутинга) [id=838070..838096|09.07.2026](https://t.me/c/2941121338/838070).
- happ routing отключается/чистится в панели: `Панель > Настройки > Подписка > happ routing` — удалить всё и сохранить [id=915216, 915226, 915230, 915244|19.07.2026](https://t.me/c/2941121338/915216).
- Подпись под нодой — это поле `description` в Remnawave [id=880089|15.07.2026](https://t.me/c/2941121338/880089); как поменять надпись внизу кабинета (типа «Основные сервера») — тоже поле `description` в настройках хоста [id=912520..912523|19.07.2026](https://t.me/c/2941121338/912520); чтобы она отображалась в Happ — нужна платная сабка Happ [id=912524](https://t.me/c/2941121338/912524).
- Коэффициент трафика на ноде: `Управление → нода → коэффициент трафика → 0` (трафик не считается) — рабочий способ не съедать лимит юзера на не-БС нодах [id=879142, 873704|15.07.2026; [id=879274](https://t.me/c/2941121338/879142).
- Массовый перевыпуск подписок при смене домена саб-ссылки: массовые действия → «отозвать подписку» (`POST /api/users/bulk/revoke-subscription`), либо попросить юзеров импортировать заново [id=924023..924076|20.07.2026](https://t.me/c/2941121338/924023).
- Удаление подписки в кабинете отключает юзера в панели — ожидаемое поведение [id=923013|20.07.2026](https://t.me/c/2941121338/923013).
- Нельзя отредактировать раздел клиентов в конфиге ноды через панель (например добавить `reverse` tag в `clients`) — надо править конфиг на самой ноде [id=881763|15.07.2026](https://t.me/c/2941121338/881763):
  ```json
  "clients": [
    {
      "id": "ac04551d-6ebf-4685-86e2-17c12491f7f4",
      "flow": "xtls-rprx-vision",
      "reverse": {
        "tag": "reverse-out"
      }
    }
  ]
  ```
- Правила ответов (response rules) в панели — пример кастомного правила под клиент STEALTHNET [id=904777|18.07.2026](https://t.me/c/2941121338/904777):
  ```json
  {
        "name": "STEALTHNET App",
        "description": "STEALTHNET VPN client (xray + sing-box for hysteria/TUN). Serve XRAY_JSON so hysteria nodes are included.",
        "enabled": true,
        "operator": "AND",
        "conditions": [
          {
            "headerName": "user-agent",
            "operator": "REGEX",
            "value": "^STEALTHNET",
            "caseSensitive": false
          }
        ],
        "responseType": "XRAY_JSON"
  }
  ```
- Кнопка «Канал/Бот» в ремне добавляется через кастомные заголовки (headers) [id=904654|18.07.2026](https://t.me/c/2941121338/904654).
- Секреты нод: общие для всех нод на одной панели, между панелями разные; ротации секретов при переиспользовании нет — зафиксирован случай, когда docker-compose новой ноды отработал на активной ноде [id=862791..862855|13.07.2026](https://t.me/c/2941121338/862791). Бедолага-бот держит как минимум три панельных секрета; панель секреты между нодами не обновляет [id=862594](https://t.me/c/2941121338/862594).
- Автонастройка selfsteal: появится возможность загружать свои шаблоны или выбирать стандартные [id=872327|14.07.2026](https://t.me/c/2941121338/872327).
- Лого VPN у бота — файл `vpn_logo.png` в папке бота [id=903905|18.07.2026](https://t.me/c/2941121338/903905).
- Уведомления бота в супергруппу: кидаешь сообщение в топик, сохраняешь ссылку — id топика в конце ссылки `t.me/c/2941121338/52/<id>` [id=869589|14.07.2026](https://t.me/c/2941121338/869589).

---

## Период 20–31.07.2026 — Bedolaga v3.66/3.67 + Cabinet 1.64 (рекурренты Platega/Lava)

- Бот от Bedolaga **требует установленную панель** Remnawave [id=940788|Noname|22.07.2026](https://t.me/c/2941121338/940788); установка панели — **по докам docs.rw** [id=940790|Lincoln|22.07.2026 15:16](https://t.me/c/2941121338/940790).
- Обновление кабинета (в директории кабинета):
  ```
  docker compose pull && docker compose up -d --build
  ```
  [id=1000760|bypara|30.07.2026](https://t.me/c/2941121338/1000760)
- Бот v3.66/v3.67: **обновлять бот и кабинет вместе** (кабинет v1.64.0 ↔ бот v3.67.0) [id=998121, 998125](https://t.me/c/2941121338/998121).
- Спеки под панель: 2 vCPU AMD Ryzen 9 5950X, 4 GB DDR4, 120 GB NVMe SSD [id=999152|khanzele|30.07.2026](https://t.me/c/2941121338/999152); «нужно хотя бы 4 ГБ ОЗУ» [id=999120|воздухан](https://t.me/c/2941121338/999120); «для панели пофик, что угодно подойдёт» [id=999113|Ня абузерша](https://t.me/c/2941121338/999113); «ОВХ для панели» [id=999099|𝚊𝚝𝚊𝚛𝚊𝚡𝚒𝚊](https://t.me/c/2941121338/999099).
- «До 100 юзеров пофиг, если панель и сабка на ОВХ» [id=941055|Alexey|22.07.2026](https://t.me/c/2941121338/941055).
- Docker-инструмент проверки детекта DPI: `docker run --rm -it --pull=always ghcr.io/runnin4ik/dpi-detector:latest` [id=934724|—|21.07.2026 19:45](https://t.me/c/2941121338/934724).

## Период 31.07–09.08.2026 — Remnawave 3.0.0 (ломающий), Bedolaga v4.0.0, Cabinet 1.65

### Обновление бота до v4.0.0 (Remnawave 3.0) [id=1032536](https://t.me/c/2941121338/1032536)
```text
.env: TRAFFIC_EXCLUDED_USER_UUIDS → TRAFFIC_EXCLUDED_USER_IDS, временно GRACE_ACCESS_MODE=drain
# Бот (в папке с ботом!)
git pull
docker compose build bot
docker compose stop bot
docker compose run --rm bot alembic upgrade head
docker compose run --rm bot python -m scripts.backfill_remnawave_ids           # dry-run
docker compose run --rm bot python -m scripts.backfill_remnawave_ids --apply   # запись
docker compose up -d bot          # именно up -d, restart не перечитает .env
docker compose logs -f bot
# Кабинет (bedolaga-cabinet)
git pull
docker compose build cabinet
docker compose up -d cabinet
docker compose logs -f cabinet
# Грейс — в последнюю очередь
docker compose run --rm bot python -m app.tools.grace_access restore-all --apply
# вернуть рабочий GRACE_ACCESS_MODE, затем docker compose up -d bot
```

### Обновление кабинета [id=1034576](https://t.me/c/2941121338/1034576)
```bash
docker compose pull && docker compose up -d --build
```

### Откат ноды на 2.8.0 [id=1031264, id=1060633](https://t.me/c/2941121338/1031264)
```bash
cd /opt/remnanode && sed -i -E 's#remnawave/node:[A-Za-z0-9._-]+#remnawave/node:2.8.0#g' docker-compose.yml && docker compose pull remnanode && docker compose up -d --force-recreate remnanode && docker inspect remnanode --format 'Установленный образ: {{.Config.Image}}' && docker compose logs --tail=50 remnanode
```

### Временный патч бота для Remnawave 3.0 (до выхода v4.0) [id=1021626](https://t.me/c/2941121338/1021626)
```bash
cd /opt/bedolaga

# Бэкап:
cp app/external/remnawave_api.py app/external/remnawave_api.py.bak

# Патч (одна строка):
sed -i "s/uuid=user_data\['uuid'\],/uuid=str(user_data['id']),/" app/external/remnawave_api.py

# Убедиться что заменилось (должна быть ровно одна строка):
grep -n "uuid=str(user_data\['id'\])" app/external/remnawave_api.py

# Пересобрать:
docker compose up -d --build bot
sleep 15

# После всех проверок можно закрепить
cd /opt/bedolaga
git checkout -b local/remnawave-3.0-compat
git add app/external/remnawave_api.py
git commit -m "patch: use numeric id as uuid for Remnawave 3.0 compat"
```

### Обновление ENV для Remnawave 3.0+ [id=1037040, id=1039553](https://t.me/c/2941121338/1037040)
- Новый .env переменная: `### Secrets ### APP_SECRET=change_me` — это JWT AUTH SECRET (старый `JWT_API_TOKENS_SECRET` переименован)
- Семпл: [remnawave/backend · .env.sample](https://github.com/remnawave/backend/blob/main/.env.sample)
- Миграция ENV: https://log.rw/NEWENV

## Период 09–20.08.2026 — Remnawave 3.2.3/3.3.0, Bedolaga v4.1.0 (GeoCheck)

### Remnawave панель
- Скрипт eGames:
```bash
bash <(curl -Ls https://raw.githubusercontent.com/eGamesAPI/remnawave-reverse-proxy/refs/heads/main/install_remnawave.sh)
```
[id=1149069](https://t.me/c/2941121338/1149069) репо [eGamesAPI/remnawave-reverse-proxy](https://github.com/eGamesAPI/remnawave-reverse-proxy); [id=1149205](https://t.me/c/2941121338/1149205)
- Обновление панели:
```
cd /opt/remnawave && docker compose pull && docker compose down && docker compose up -d && docker compose logs -f
```
[id=1145027](https://t.me/c/2941121338/1145027); только сервис: `docker compose pull remnawave && docker compose down && docker compose up -d && docker compose logs -f` [id=1106749](https://t.me/c/2941121338/1106749)
- Порядок: панель -> ноды [id=1155937](https://t.me/c/2941121338/1155937) [id=1155936](https://t.me/c/2941121338/1155936); бекап 2.8.1->3.2 [id=1128302](https://t.me/c/2941121338/1128302)
- Vpnutka хостинг: https://panel.vpnutka.ru [id=1094473](https://t.me/c/2941121338/1094473); доки https://docs.rw [id=1103551](https://t.me/c/2941121338/1103551); защита [docs.rw/panel-security](https://docs.rw/install/panel-security/) [id=1151234](https://t.me/c/2941121338/1151234)

### Remnawave нода
```
curl -fsSL https://get.docker.com | sh
mkdir -p /opt/remnanode && cd /opt/remnanode
docker run --rm ghcr.io/xtls/xray-core x25519
openssl rand -hex 8
ufw allow 22 && ufw allow 443 && ufw allow 80 && ufw allow 2222 && ufw enable
nano /opt/remnanode/docker-compose.yml
docker compose up -d && docker compose logs -f -t
```
[id=1094514](https://t.me/c/2941121338/1094514); capybara-z [id=1091260](https://t.me/c/2941121338/1091260)

### Bedolaga/Cabinet
- .env + рестарт [id=1100556](https://t.me/c/2941121338/1100556); триал закомментировать в .env [id=1101022](https://t.me/c/2941121338/1101022)
- БД дамп:
```
docker exec remnawave_bot_db pg_dump -Fc -U remnawave_user remnawave_bot > backup_$(date +%Y%m%d_%H%M%S).dump
docker exec -i remnawave_bot_db pg_restore -U remnawave_user -d remnawave_bot --clean --if-exists < backup_20260403_225103.dump
```
[id=1148751](https://t.me/c/2941121338/1148751)
- Cabinet: `git pull; git fetch --all; git reset --hard origin/main; git checkout v1.65.0; docker compose build --no-cache; docker compose down && docker compose up -d` -> UI v1.47.0 баг [id=1129926](https://t.me/c/2941121338/1129926)
- Cabinet patch v1.64.0:
```
git clone https://github.com/BEDOLAGA-DEV/bedolaga-cabinet.git; cd bedolaga-cabinet; git fetch --tags; git switch --detach v1.64.0; git apply --check telegram-init-data-fix.patch; git apply telegram-init-data-fix.patch
```
[id=1154497](https://t.me/c/2941121338/1154497)
- Связь панель-нода: socks5 danted, netbird, Cloudflare M2M [id=1119132](https://t.me/c/2941121338/1119132) [id=1119257](https://t.me/c/2941121338/1119257); WG промежуток [id=1119490](https://t.me/c/2941121338/1119490)
- Asnumbers автораскур: API хостеров/доменов, XDP, NodeMan [id=1112197](https://t.me/c/2941121338/1112197) [id=1112225](https://t.me/c/2941121338/1112225)

## Период 20–23.08.2026 — совместимость 2.8.x/3.2.2, GHCR, пин-борда

- **Обновление Remnawave до 3.x** — официальный гайд «как обновиться до новой версии»: в `.env` поменять версию с `2` на `3`, затем запустить команду из документации (`f.docs.rw`); доп. канал с логами/релизами: `https://t.me/remnalog` [id=1163018|21.08](https://t.me/c/2941121338/1163018).
- **Секция документации по установке ноды** (в чате обозвана «секретной версией установки ноды»): `d.docs.rw/install/remnawave-node` [id=1167308|22.08](https://t.me/c/2941121338/1167308).
- **Апгрейд панели 2.7.4 → 2.8.0** — выполняется вместе с апгрейдом бота [id=1174272|23.08](https://t.me/c/2941121338/1174272).
- **Панельные скрипты DenFiord** (`https://github.com/DenFiord/remnascripts`, Ubuntu 22.04/24.04/26.04): «скрипты для очень быстрой и беспонтовой установки Selfsteal, ноды и WARP»; состав: SelfSteal (32 русскоязычных сайта-заглушки, Nginx/Traefik, Reality-маршрут), **RemnaNode Manager** (установка ноды через **Panel API** или **SECRET_KEY**, неограниченное количество параллельных нод на одном VPS, автоопределение хостинга/страны, поддержка **Remnawave Panel 2.6–3.3**), RemnaWARP (включая per-node, HealthGuard), RemnaPsiphon (локальный SOCKS-туннель, circuit breaker) [id=1166173, id=1166989|22.08](https://t.me/c/2941121338/1166173).
- **Канонический фикс-приём при обновлении**: если панель 2.8.0 — не оставлять тег ноды `latest`, а зафиксировать версию в compose (см. «Docker-compose») [id=1174272, id=1174256|23.08](https://t.me/c/2941121338/1174272), [id=1157938|20.08](https://t.me/c/2941121338/1157938).
- **Бэкап/восстановление панели**: скрипт `https://github.com/distillium/remnawave-backup-restore` (вывод `Remnawave backup 4.0.0`) [id=1160274|21.08](https://t.me/c/2941121338/1160274), [id=1166989|22.08](https://t.me/c/2941121338/1166989).

---
Источник: https://host.pink/baza/paneli/ustanovka-obnovlenie/
Оригинал: https://github.com/Rxflex/BedolagaBD/blob/main/docs/01-панели/установка-обновление.md
Лицензия: CC BY-SA 4.0
