Docker-compose
Рабочие compose-файлы бота, панели, кабинета, сабпейджа.
Период 23.08–07.09.2025 — Bedolaga v2.0.x–2.2.x, Remnawave 2.1.x
- Бот v2.4.2
пруф — postgres15-alpine + redis7-alpine (
--maxmemory 256mb --maxmemory-policy allkeys-lru),bot: build:.envDOCKER_ENV,DATABASE_MODE:auto,TZ:Europe/Moscow, volumes logs/data/locales/app-config.json/miniapp/vpn_logo.png, portsWEB_API_PORT:8080,TRIBUTE:8081,YOOKASSA:8082,CRYPTOBOT:8083,PAL24:8084,WATA:8085,HELEKET:8086, networkbot_network 172.20.0.0/16. - Бот v2.6.x unified
пруф — один порт
127.0.0.1:8080:8080, healthcheckcurl -f http://localhost:8080/health/unified, сетьremnawave-network external 172.30.0.0/16пруф. - Remnawave панель eGames
пруф —
remnawave: network_mode: service:remnawave-scheduler, scheduler127.0.0.1:3000,3001, db postgres16, redis valkey7.2, subscription-pageREMNAWAVE_PANEL_URL=http://remnawave-scheduler:3000 APP_PORT=3010, nginx host. - Caddy до unified:
webhook.domain.com { handle /tribute-webhook* {reverse_proxy localhost:8081} ... /yookassa-webhook→8082 /pal24→8084 /health→8081/health }пруф; selfstealcaddy:2.9.1 network_mode:hostпруф; Cloudflare DNS-challenge Dockerfile+Caddyfile пруф; unifiedapi.domain.com {encode gzip zstd; @config path /app-config.json; reverse_proxy localhost:8080}иminiapp.domain.com + webhook.domain.com → remnawave_bot:8080пруф. - Nginx Gy9vin вебхуки
пруф; MiniApp v2.4.2
server { listen 80,443 ssl; root /var/www/remnawave-miniapp; location =/miniapp/app-config.json {CORS}; location /miniapp/ {proxy_pass http://remnawave_bot:8080/miniapp/} }пруф; unifiedupstream remnawave_bot_unified 127.0.0.1:8080и YooKassa IP allow пруф.
Период 12.11.2025–01.01.2026 — Bedolaga v2.7–2.9.4, Remnawave 2.3–2.4
Бот отдельно (канонический 2.9.x)
services:
postgres:
image: postgres:15-alpine
container_name: remnawave_bot_db
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB:-remnawave_bot}
POSTGRES_USER: ${POSTGRES_USER:-remnawave_user}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-secure_password_123}
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C"
volumes: [postgres_data:/var/lib/postgresql/data]
networks: [bot_network]
redis:
image: redis:7-alpine
container_name: remnawave_bot_redis
restart: unless-stopped
command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
volumes: [redis_data:/data]
networks: [bot_network]
bot:
build: .
container_name: remnawave_bot
restart: unless-stopped
depends_on: {postgres: {condition: service_healthy}, redis: {condition: service_healthy}}
env_file: [.env]
environment:
DOCKER_ENV: "true"
DATABASE_MODE: "auto"
POSTGRES_HOST: "postgres"
POSTGRES_PORT: "5432"
REDIS_URL: "redis://redis:6379/0"
TZ: "Europe/Moscow"
volumes:
- ./logs:/app/logs:rw
- ./data:/app/data:rw
- ./locales:/app/locales:rw
- ./vpn_logo.png:/app/vpn_logo.png:ro
ports:
- "${WEB_API_PORT:-8080}:8080"
networks: [bot_network]
networks:
bot_network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
gateway: 172.20.0.1Бот с панелью (external сеть панели)
services:
bot:
build: .
networks: [remnawave-network]
networks:
remnawave-network:
name: remnawave-network
external: trueпруф REMNAWAVE_API_URL=http://remnawave:3000.
Subscription-page (отдельно / 2.4.4 с токеном)
services:
remnawave-subscription-page:
image: remnawave/subscription-page:latest
container_name: remnawave-subscription-page
hostname: remnawave-subscription-page
restart: always
env_file: [.env]
ports: ['127.0.0.1:3010:3010']
networks: [remnawave-network]
networks:
remnawave-network:
driver: bridge
external: true remnawave-subscription-page:
image: remnawave/subscription-page:latest
container_name: remnawave-subscription-page
hostname: remnawave-subscription-page
restart: always
depends_on: {remnawave: {condition: service_healthy}}
environment:
- REMNAWAVE_PANEL_URL=http://remnawave:3000
- SUBSCRIPTION_UI_DISPLAY_RAW_KEYS=true
- APP_PORT=3010
- META_TITLE="Remnawave Subscription"
- META_DESCRIPTION="page"
- REMNAWAVE_API_TOKEN=пупупу
ports: ['127.0.0.1:3010:3010']
networks: [remnawave-network]
logging: {driver: 'json-file', options: {max-size: '30m', max-file: '5'}}пруф Панель от eGames — compose c postgres-18, remnawave-nginx host-режим, remnawave-network
пруф.
Miniapp монтирование
volumes: ["/var/www/remnawave-miniapp:/miniapp:ro"] # [id=79204](https://t.me/c/2941121338/79204)
./miniapp:/miniapp:ro # [id=124041](https://t.me/c/2941121338/124041)
./miniapp:/app/miniapp:ro # [id=124957](https://t.me/c/2941121338/124957)Caddy selfsteal для ноды (два порта)
{
https_port {$SELF_STEAL_PORT_TCP}
https_port {$SELF_STEAL_PORT_XHTTP}
default_bind 127.0.0.1
servers {
listener_wrappers {
proxy_protocol { allow 127.0.0.1/32 }
tls
}
}
auto_https disable_redirects
}
:{$SELF_STEAL_PORT_TCP} { tls internal; respond 204 }
:{$SELF_STEAL_PORT_XHTTP} { tls internal; respond 204 }
http://{$SELF_STEAL_DOMAIN} { bind 0.0.0.0; redir https://{$SELF_STEAL_DOMAIN}{uri} permanent }
https://{$SELF_STEAL_DOMAIN} { root * /var/www/html; try_files {path} /index.html; file_server }
:80 { bind 0.0.0.0; respond 204 }пруф Мини-заглушка: :9443 { tls internal { on_demand } respond 200 } — target 9443, отдельная под каждую ноду
пруф.
SS+Privoxy для YooKassa (обход блокировки не-RU IP)
services:
bot:
image: your-bot-image
environment:
HTTP_PROXY: http://privoxy:8118
HTTPS_PROXY: http://privoxy:8118
networks: [remnawave-network]
ss_tunnel:
image: shadowsocks/shadowsocks-libev:latest
container_name: ss_tunnel
restart: unless-stopped
command: > ss-local -s SS_SERVER_IP -p SS_SERVER_PORT -k "SS_PASSWORD" -m aes-256-gcm -l 1081
networks: [remnawave-network]
privoxy:
image: caligari/privoxy:latest
container_name: privoxy
restart: unless-stopped
volumes: [./privoxy.conf:/etc/privoxy/config:ro]
networks: [remnawave-network]
networks:
bot_network: {driver: bridge}
remnawave-network: {external: true}privoxy.conf:
listen-address 0.0.0.0:8118
toggle 1
enable-remote-toggle 0
allow 172.0.0.0/8
forward-socks5t /api.yookassa.ru/ ss_tunnel:1081 .пруф Проверка: docker run --rm -it --network remnawave-network curlimages/curl curl -x http://privoxy_yookassa:8118 -I https://api.yookassa.ru/v3/payments --max-time 20 → HTTP/2 401.
Период 09.02–13.03.2026 — Bedolaga v3.9–3.32, Remnawave 2.6.x, Remnawave-admin 2.x
Базовый build кабинета:
services:
cabinet-frontend:
build:
context: .
dockerfile: Dockerfile
args:
VITE_API_URL: ${VITE_API_URL}
VITE_TELEGRAM_BOT_USERNAME: ${VITE_TELEGRAM_BOT_USERNAME}
VITE_APP_NAME: ${VITE_APP_NAME}
VITE_APP_LOGO: ${VITE_APP_LOGO}
container_name: cabinet_frontend
restart: unless-stopped
ulimits:
nofile: { soft: 1048576, hard: 1048576 }
env_file: [ .env ]
networks: [ remnawave-network, nginx-proxy-manager_default, bot_network ]Из образа:
services:
cabinet-frontend:
image: ghcr.io/bedolaga-dev/bedolaga-cabinet:latest
container_name: cabinet_frontend
restart: unless-stopped
ports: ['${CABINET_PORT:-3020}:80']
volumes: ['./cabinet-dist:/usr/share/nginx/html:ro']Период 16.03–06.04.2026 — Remnawave 2.7.x (breaking), Bedolaga v3.33–3.45
- Эталон бота postgres 15-alpine/redis 7-alpine/nginx MTU 1350 healthcheck vpn_logo.png пруф.
- Кабина:
networks: bot_network external: true name: remnawave-bedolaga-telegram-bot_bot_networkпруф. - Прокси налога compose:
HTTPS_PROXY: socks5://user:PASS@IP:1080; NO_PROXY: api.telegram.org,localhost,127.0.0.1,redis,postgres+serjs/go-socks5-proxy -p 1080+ httpx[socks] пруф; extra_hosts старый IP ломает пруф.
Период 06–25.04.2026 — Bedolaga v3.45–3.52, Remnawave-admin 2.9–2.11
Remnawave web-backend (dev) 23.04.26
web-backend:
image: ghcr.io/case211/remnawave-admin-web-backend:dev
container_name: remnawave-web-backend
restart: unless-stopped
init: true
env_file:
- .env
environment:
- WEB_HOST=0.0.0.0
- WEB_PORT=8081
- MAXMIND_CITY_DB=${MAXMIND_CITY_DB:-/app/geoip/GeoLite2-City.mmdb}
- MAXMIND_ASN_DB=${MAXMIND_ASN_DB:-/app/geoip/GeoLite2-ASN.mmdb}
- BACKUP_DIR=/app/backups
volumes:
- ./logs:/app/logs
- ./geoip:/app/geoip
- ./backups:/app/backups
ports:
- "${WEB_BACKEND_PORT:-8081}:8081"
networks:
- remnawave-network
depends_on:
remnawave-admin-db:
condition: service_healthyСтатика кабинета C + Caddy 20.04.26
https://cabinet.example.com {
encode gzip zstd
handle /api/* {
uri strip_prefix /api
reverse_proxy remnawave_bot:8080
}
handle {
root * /srv/cabinet
try_files {path} /index.html
file_server
@static path *.js *.css *.woff *.woff2 *.ttf *.ico *.png *.jpg *.jpeg *.svg *.webp *.gif
header @static Cache-Control "public, max-age=31536000, immutable"
@html path *.html /
header @html Cache-Control "no-cache, must-revalidate"
}
}
# volumes:
# - /opt/bedolaga-cabinet/dist:/srv/cabinet:roПеревод кабинета на сервер с сабкой 07.04.26
https://sub.domen.top {
reverse_proxy * http://remnawave-subscription-page:3010
}
:443 {
tls internal
respond 204
}
https://lk.domen.top {
reverse_proxy https://lk2.domen.top {
header_up Host lk2.domen.top
}
}tinyauth (nginx) 07.04.26
location /tinyauth {
proxy_pass http://tinyauth/api/auth/nginx;
proxy_set_header Authorization $http_x_api_key;
proxy_set_header x-forwarded-proto $scheme;
proxy_set_header x-forwarded-host $http_host;
proxy_set_header x-forwarded-uri $request_uri;
}- Фикс сети контейнера: сеть remnawave-network +
REMNAWAVE_API_URL=http://remnawave:3000пруф. - Зомби-процессы бота →
init: true(tini) пруф. - Порт 8080 открыт наружу →
127.0.0.1:перед '${WEB...}' пруф. - Dockge — управлялка docker-compose: louislam/dockge пруф.
Период 25.04–15.05.2026 — Bedolaga v3.49–3.55, Cabinet 1.49–1.52
Логи запуска бота 3.53.0 пруф: сервисы — единый веб-сервер (8080/8082), Telegram webhook, служба мониторинга, суточные подписки (интервал 30 мин), проверка версий (repo=fr1ngg/remnawave-bedolaga-telegram-bot), NaloGO отключен.
Реальный стек (docker ps) пруф: Caddy-контейнер + remnawave-bedolaga-telegram-bot + postgres:15-alpine + redis:7-alpine; бот Unhealthy.
Пароль БД бота в docker-compose.yml, дефолт secure_password_123
пруф.
Внешняя сеть для проброса webhook пруф:
networks:
remnawave-bedolaga-telegram-bot_bot_network:
driver: bridge
external: trueVolumes гео/сертификатов (нода) пруф:
volumes:
- /var/log/remnanode:/var/log/remnanode
- ./geoip_ru.dat:/usr/local/share/xray/geoip_ru.dat
- ./geosite_ru.dat:/usr/local/share/xray/geosite_ru.dat
- ./zapret.dat:/usr/local/bin/zapret.dat
- /var/lib/remnawave/caddy/certificates:/certificatesСертификаты в xray пруф:
"certificates": [
{ "keyFile": "/certificates/current.key", "certificateFile": "/certificates/current.crt" }
]cap_add для WARP/xray: cap_add: - NET_ADMIN
пруф.
WEB_API_PORT (некритичный баг)
пруф: в compose ports: - '${WEB_API_PORT:-8080}:8080' — если поставить в env 9095, хост-порт 9095 пробросится в контейнер, а приложение внутри смотрит 8080 и не увидит 9095.
Несколько панелей на одном сервере: можно хоть 10 — разные порты в nginx/caddy и контейнерах, сети docker разнести, чтобы не пересекались пруф; «На 32 ядрах ставь хоть 30 панелек» пруф; ремна + два бота на одном серваке на разных портах пруф.
Перенос панели на другой сервер с NPM
пруф: панель отвечает только по внутренней сети; надо подключить сеть ремнавейва к npm и проксировать по hostname (docker name, например remnawave:3000), а не 127.0.0.1 — «у тебя в контейнере локалхост свой, изолированный»
пруф. Официальная дока ремны nginx proxy manager не описывает
пруф.
Recompilation без докера
пруф: npm install && npm run build напрямую на хосте — в докере tsc не устанавливается.
bedolaga-mover — перенос БД/конфигов/контейнеров, docker-контейнеры Bot + Bedolaga-cabinet + админка на одном сервере, поддержка Caddy, Ubuntu 24
пруф. Ищемые пути: /root/remnawave-bedolaga-telegram-bot, /opt/remnawave-bedolaga-telegram-bot, /home/*/..., /root/bedolaga-cabinet, /opt/remnawave-admin.
Гайд переноса Панели+БД (автор Егор): telegra.ph — «скрипт distillium/remnawave-backup-restore дал ошибку, руками получилось быстрее» пруф.
Период 16.05–05.06.2026 — Bedolaga v3.56–3.58, Remnawave-admin 2.14
- Traefik лейблы для бота /api через кабину пруф:
services:
bot:
networks:
- remnawave-network
- bot_network
labels:
- "traefik.enable=true"
- "traefik.http.routers.bot-api.rule=Host(`cabinet.домен.ru`) && PathPrefix(`/api`)"
- "traefik.http.routers.bot-api.entrypoints=https"
- "traefik.http.routers.bot-api.tls=true"
- "traefik.http.routers.bot-api.tls.certresolver=letsencrypt"
- "traefik.http.middlewares.bot-strip.stripprefix.prefixes=/api"
- "traefik.http.routers.bot-api.middlewares=bot-strip"
- "traefik.http.routers.bot-api.priority=100"
- "traefik.http.services.bot-api.loadbalancer.server.port=8080"
- "traefik.docker.network=remnawave-network"
cabinet-frontend:
image: ghcr.io/bedolaga-dev/bedolaga-cabinet:latest
container_name: cabinet_frontend
restart: unless-stopped
depends_on:
bot:
condition: service_healthy
networks:
- remnawave-network
- bot_network
environment:
- TZ=Europe/Moscow
labels:
- "traefik.enable=true"
- "traefik.http.routers.cabinet-ui.rule=Host(`cabinet.домен.ru`)"
- "traefik.http.routers.cabinet-ui.entrypoints=https"
- "traefik.http.routers.cabinet-ui.tls=true"
- "traefik.http.routers.cabinet-ui.tls.certresolver=letsencrypt"
- "traefik.http.services.cabinet-ui.loadbalancer.server.port=80"
- "traefik.docker.network=remnawave-network"
networks:
remnawave-network:
external: trueservices:
certbot:
container_name: certbot
image: certbot/certbot
network_mode: host
volumes:
- ./certs:/etc/letsencryptdocker run --rm \
-v $(pwd)/certs:/etc/letsencrypt \
-v $(pwd)/var-lib-letsencrypt:/var/lib/letsencrypt \
--network host \
certbot/certbot certonly --standalone \
--non-interactive --agree-tos \
--email admin@your-domain.com \
-d your-domain.comВ compose ноды:
volumes:
- '/opt/certbot/certs:/etc/letsencrypt:ro'Cron: 0 0 28 * * cd /opt/certbot && docker compose run --rm certbot renew
Период 07–26.06.2026 — Bedolaga 3.60–3.61, Subscription-page 7.2.5/7.2.6
Subscription-page healthcheck
healthcheck:
test: curl -f http://localhost:3010/depends_on remnawave service_healthy — на localhost иначе Reverse proxy required пруф
Nginx vhost
location / { proxy_pass http://remnawave-subscription-page:3010; include /etc/nginx/conf.d/proxy.conf; }Период 26.06–08.07.2026 — Remnawave 2.8.0, Bedolaga v3.61–3.62, Cabinet 1.59
- Эталон Caddy (панель/подписка/бот/заглушка) пруф:
https://panel.duckdns.org {
encode gzip
handle_path /monitoring* { reverse_proxy beszel:8090 }
reverse_proxy /webhook* remnawave_bot:8080
reverse_proxy remnawave:3000 {
transport http { read_buffer 8192; write_buffer 8192 }
flush_interval 500ms
}
header { -Server; Cache-Control "no-store" }
}
https://subscription.duckdns.org {
encode gzip
reverse_proxy remnawave-subscription-page:3010 {
transport http { read_buffer 8192; write_buffer 8192 }
flush_interval 500ms
}
header { -Server; Cache-Control "no-store" }
}
:443 { tls internal; respond 204 }Redis fix:
docker --unixsocketperm 777 --port 6379; healthcheck ['CMD','valkey-cli','-p','6379','ping'] interval 3s; REDIS_HOST=remnawave-redis, REDIS_PORT=6379пруфБот+панель на одном сервере: в compose бота ports обязательно
127.0.0.1:8080; лучше не держать вместе пруфСеть бота: бот создаёт свою сеть и не коннектится к remnawave пруф; error Cannot connect to host remnawave:3000 — завести в одну сеть пруф
{
"log": { "loglevel": "none" },
"dns": { "tag": "dns_inbound", "servers": ["1.1.1.1","1.0.0.1","2606:4700:4700::1111","2606:4700:4700::1001"], "queryStrategy": "UseIP" },
"inbounds": [
{ "tag": "Multi-Raw", "port": 443, "listen": "0.0.0.0", "protocol": "vless", "settings": { "clients": [], "decryption": "none" }, "sniffing": { "enabled": true, "destOverride": ["http","tls","quic"] }, "streamSettings": { "network": "raw", "security": "reality", "realitySettings": { "xver": 1, "target": "/dev/shm/nginx.sock", "shortIds": [""], "privateKey": "", "fingerprint": "", "serverNames": [""] } } },
{ "tag": "Multi-gRPC", "listen": "/dev/shm/grpc.socket,0666", "protocol": "vless", "settings": { "clients": [], "decryption": "none" }, "sniffing": { "enabled": true, "destOverride": ["http","tls","quic"] }, "streamSettings": { "network": "grpc", "security": "none", "grpcSettings": { "serviceName": "grpcpath" } } },
{ "tag": "Multi-XHTTP", "listen": "/dev/shm/xrxh.socket,0666", "protocol": "vless", "settings": { "clients": [], "decryption": "none" }, "sniffing": { "enabled": true, "destOverride": ["http","tls","quic"] }, "streamSettings": { "network": "xhttp", "xhttpSettings": { "mode": "auto", "path": "/xhttppath/", "extra": { "noSSEHeader": true, "xPaddingBytes": "100-1000", "scMaxBufferedPosts": 30, "scMaxEachPostBytes": 1000000, "scStreamUpServerSecs": "20-80" } } } },
{ "tag": "Multi-Hy2", "port": 443, "listen": "0.0.0.0", "protocol": "hysteria", "settings": { "clients": [], "version": 2 }, "streamSettings": { "network": "hysteria", "security": "tls", "finalmask": { "quicParams": { "debug": false, "congestion": "bbr" } }, "tlsSettings": { "alpn": ["h3"], "certificates": [{ "keyFile": "/etc/nginx/certs/privkey.key", "certificateFile": "/etc/nginx/certs/fullchain.pem" }] }, "hysteriaSettings": { "version": 2 } } }
],
"outbounds": [ { "tag": "DIRECT", "protocol": "freedom" }, { "tag": "BLOCK", "protocol": "blackhole" }, { "tag": "warp", "protocol": "socks", "settings": { "servers": [{ "port": 40000, "address": "127.0.0.1" }] } } ],
"routing": { "rules": [] }
}Весь vless на 443/tcp, hy2 на 443/udp пруф
Период 08–20.07.2026 — Remnawave 2.8.1, Bedolaga v3.62–3.64, Cabinet 1.61
Дословных docker-compose-файлов в заметках 121–132 нет. Зафиксированы только compose-команды и факты про compose:
docker compose pull+docker compose up -d --build— обновление бота пруф;docker compose up -d --build— установка бедолаги пруф.- Caddy:
cd /opt/reverse-proxy+docker compose exec caddy …(см. выше) пруф. - Имя сервиса бота в compose может отличаться от
remnawave_bot— смотретьdocker-compose.ymlпруф; при этомdocker restart remnawave_bot— реальное имя контейнера бота пруф. - Compose-файл ноды несёт панельные секреты; зафиксирован случай применения compose новой ноды к активной ноде из-за неротируемых секретов пруф.
- Ноду в docker связке
docker compose down && docker compose up(из гайда) критикуют как ненадёжную пруф. - Бедолага-контейнер: после правок env обязателен перезапуск контейнера пруф.
Период 20–31.07.2026 — Bedolaga v3.66/3.67 + Cabinet 1.64 (рекурренты Platega/Lava)
- Каноническая команда обновления кабинета:30.07.26
docker compose pull && docker compose up -d --build - Remnawave-Xray-UI-Editor (установка дословно)
26.07.26:
curl -fsSLO https://raw.githubusercontent.com/VAQYBIN/Remnawave-Xray-UI-Editor/main/docker-compose.yml curl -fsSL -o .env https://raw.githubusercontent.com/VAQYBIN/Remnawave-Xray-UI-Editor/main/.env.example nano .env docker compose up -d && docker compose logs -f - Скрипт nDPI + Suricata (не открытый код)
23.07.26, будьте бдительны
пруф:
curl -fsSL https://doubleservers.com/6eaygszz4o2yjlwfqs7lu5iw/k3coxnqhumw4fhcyzoh334hj -o ds-guard && chmod +x ds-guard && ./ds-guard
Период 31.07–09.08.2026 — Remnawave 3.0.0 (ломающий), Bedolaga v4.0.0, Cabinet 1.65
Структура сервисов
Сервисы: bot, cabinet (иногда bedolaga-cabinet-frontend в compose-файле)
пруф.
Для кабинета:
services:
cabinet-frontend:
image: ghcr.io/bedolaga-dev/bedolaga-cabinet:latest
healthcheck:
test: wget -q --spider http://127.0.0.1:80/Если no such service: cabinet → искать bedolaga-cabinet-frontend
пруф.
Бэкап БД в Cloudflare R2 пруф
Сохранение БД панели/бота в Cloudflare R2.
Удаление API-токенов (ручное) пруф
docker exec -it remnawave-db sh -c 'psql -U $POSTGRES_USER -d $POSTGRES_DB -c "DELETE FROM api_tokens;"'После перезапустить панель.
Период 09–20.08.2026 — Remnawave 3.2.3/3.3.0, Bedolaga v4.1.0 (GeoCheck)
- /opt/remnanode/docker-compose.yml пруф; /opt/remnawave пруф; сервис remnawave пруф
- remnawave_bot_db remnawave_user remnawave_bot пруф
- billing-monitoring Docker/npm пруф
Период 20–23.08.2026 — совместимость 2.8.x/3.2.2, GHCR, пин-борда
- Принудительная фиксация версии ноды в docker-compose при панели 2.8.0 — дословная формулировка из чата:пруф (повтор дословно: «2.8.0 с ластовой нодой не работает, пиши в компоузе 3.2.2 вместо latest» — «точный фикс для панели 2.8») пруф.
2.8.0 с ластовой нодой не работает, пиши в docker-compose `3.2.2` вместо latest - Вариант того же фикса от bypara: в docker-compose принудительно указать старую версию ноды и пуллить; для панели 2.8.0 откатывать ноду на v3.1.1 («последняя до глобальных изменений», совместима) пруф, пруф.
- После обновления Xray-ядра (xray 26.7.11 beta) «все пропало» — фикс-совет: откатить версию ядра на нодах; отдельная несовместимость: нода 3.3.0 не заведётся на панели 3.2.2 пруф.