Releases: eGamesAPI/remnawave-reverse-proxy
v3.0.0
REMNAWAVE REVERSE PROXY
๐ Major Changes
๐ฆ ะะพะดัะปัะฝะฐั ะฐัั ะธัะตะบัััะฐ ัะบัะธะฟัะฐ
- ะกะบัะธะฟั ะฟะพะปะฝะพัััั ัะตะพัะณะฐะฝะธะทะพะฒะฐะฝ ะฒ ะผะพะดัะปัะฝัั ััััะบัััั ะดะปั ัะดะพะฑััะฒะฐ ะฟะพะดะดะตัะถะบะธ ะธ ัะฐััะธัะตะฝะธั
- ะะพะดัะปะธ ัะฐะทะดะตะปะตะฝั ะฟะพ ะบะฐัะตะณะพัะธัะผ:
src/nginx/*.shโ ัััะฐะฝะพะฒะบะฐ ั ะฒะตะฑ-ัะตัะฒะตัะพะผ Nginxsrc/caddy/*.shโ ัััะฐะฝะพะฒะบะฐ ั ะฒะตะฑ-ัะตัะฒะตัะพะผ Caddysrc/modules/*.shโ ะพะฑัะธะต ะผะพะดัะปะธ (add_node, warp, ipv6, manage_panel)src/api/remnawave_api.shโ API ััะฝะบัะธะธ ะดะปั ัะฐะฑะพัั ั ะฟะฐะฝะตะปััsrc/lang/*.shโ ัะทัะบะพะฒัะต ัะฐะนะปั (en, ru)
- ะะฒัะพะผะฐัะธัะตัะบะฐั ะทะฐะณััะทะบะฐ ะธ ะพะฑะฝะพะฒะปะตะฝะธะต ะผะพะดัะปะตะน ะฟัะธ ะพะฑะฝะพะฒะปะตะฝะธะธ ัะบัะธะฟัะฐ
๐ ะะพะฒัะน ะฒะตะฑ-ัะตัะฒะตั Caddy
- ะะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตัะถะบะฐ Caddy 2.11.2 ะฒ ะบะฐัะตััะฒะต ะฐะปััะตัะฝะฐัะธะฒั Nginx
- ะ ะฐะฑะพัะฐะตั ัะตัะตะท Unix-ัะพะบะตั (
/dev/shm/nginx.sock) ะฐะฝะฐะปะพะณะธัะฝะพ Nginx - ะะฒัะพะผะฐัะธัะตัะบะพะต ะฟะพะปััะตะฝะธะต ะธ ะฟัะพะดะปะตะฝะธะต SSL-ัะตััะธัะธะบะฐัะพะฒ (ะฒัััะพะตะฝะฝัะน ACME)
- ะะพัััะฟะตะฝ ะดะปั ะฒัะตั ัะตะถะธะผะพะฒ ัััะฐะฝะพะฒะบะธ: ะฟะฐะฝะตะปั+ะฝะพะดะฐ, ัะพะปัะบะพ ะฟะฐะฝะตะปั, ัะพะปัะบะพ ะฝะพะดะฐ
๐ OAuth2 Telegram ะฐะฒัะพัะธะทะฐัะธั
- ะะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตัะถะบะฐ Telegram OAuth ะดะปั ะฒั ะพะดะฐ ะฒ ะฟะฐะฝะตะปั
Nginx ะบะพะฝัะธะณััะฐัะธั (ะดะพะฑะฐะฒะปัะตััั ะฒ ะฑะปะพะบ server ะฟะฐะฝะตะปะธ):
# OAuth2 Telegram login
location ^~ /oauth2/ {
if ($http_referer !~ "^https://oauth\.telegram\.org/") {
return 444;
}
proxy_http_version 1.1;
proxy_pass http://remnawave;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}Caddy ะบะพะฝัะธะณััะฐัะธั (ะฐะฒัะพะผะฐัะธัะตัะบะธ ะดะพะฑะฐะฒะปัะตััั ะฒ Caddyfile):
@oauth2 {
path /oauth2/*
header Referer https://oauth.telegram.org/*
}
handle @oauth2 {
reverse_proxy {BACKEND_URL} {
header_up Host {host}
}
}
@oauth2_bad {
path /oauth2/*
not header Referer https://oauth.telegram.org/*
}
handle @oauth2_bad {
abort
}
โ ๏ธ ะะปั ัััะตััะฒัััะธั ัััะฐะฝะพะฒะพะบ: ะะพะฑะฐะฒััะต ะบะพะฝัะธะณััะฐัะธั ะฒัััะฝัั ะฒnginx.confะธะปะธCaddyfile
๐ง ะะฟัะธะผะธะทะฐัะธั Docker Compose
- ะะฝะตะดัะตะฝั YAML anchors ะดะปั ัะผะตะฝััะตะฝะธั ะดัะฑะปะธัะพะฒะฐะฝะธั ะบะพะฝัะธะณััะฐัะธะธ:
x-common: &common
ulimits:
nofile:
soft: 1048576
hard: 1048576
restart: always
x-networks: &networks
networks:
- remnawave-network
x-logging: &logging
logging:
driver: json-file
options:
max-size: 100m
max-file: 5
x-env: &env
env_file: .env- ะกะตัะฒะธัั ะธัะฟะพะปัะทััั ะบะพะผะฑะธะฝะฐัะธะธ anchors:
<<: [*common, *logging, *env, *networks] - ะฃะฑัะฐะฝะพ ะดัะฑะปะธัะพะฒะฐะฝะธะต
ulimits,restart,loggingะดะปั ะบะฐะถะดะพะณะพ ัะตัะฒะธัะฐ - ะฃะฒะตะปะธัะตะฝ ะปะธะผะธั ะปะพะณะพะฒ ั
30mะดะพ100mะฝะฐ ัะฐะนะป - ะะฑะฝะพะฒะปะตะฝั ะฒะตััะธะธ ะพะฑัะฐะทะพะฒ:
postgres: 18.1โ18.3valkey: 9.0.0-alpineโ9.0.3-alpine
- ะะพะฑะฐะฒะปะตะฝ volume
valkey-socketะดะปั Unix-ัะพะบะตัะฐ Redis - Redis ะฝะฐัััะพะตะฝ ะฝะฐ ัะฐะฑะพัั ัะตัะตะท Unix-ัะพะบะตั (
--unixsocket /var/run/valkey/valkey.sock) - ะฃะฑัะฐะฝะพ ะถัััะบะพะต ะทะฐะดะฐะฝะธะต ะฟะพะดัะตัะธ ะดะปั
remnawave-network
๐ NET_ADMIN ะดะปั ะฝะพะดั
- ะะพะฑะฐะฒะปะตะฝ
cap_add: NET_ADMINะดะปั ะบะพะฝัะตะนะฝะตัะฐremnanode - ะะตะพะฑั ะพะดะธะผะพ ะดะปั ัะฐะฑะพัั ะฟะปะฐะณะธะฝะพะฒ
๐ ะะฑะฝะพะฒะปะตะฝะธั .env ัะฐะนะปะฐ
ะะพะฒัะต ะฟะตัะตะผะตะฝะฝัะต:
| ะะตัะตะผะตะฝะฝะฐั | ะะฟะธัะฐะฝะธะต |
|---|---|
REDIS_SOCKET |
ะััั ะบ Unix-ัะพะบะตัั ะดะปั ะฟะพะดะบะปััะตะฝะธั ะบ Redis (Valkey): /var/run/valkey/valkey.sock |
TELEGRAM_BOT_PROXY |
ะะฟัะธะพะฝะฐะปัะฝัะน ะฟัะพะบัะธ ะดะปั Telegram ะฑะพัะฐ (ัะพัะผะฐั: socks5://user:password@host:port) |
TELEGRAM_NOTIFY_SERVICE |
Chat_id ะดะปั ัะตัะฒะธัะฝัั ัะฒะตะดะพะผะปะตะฝะธะน |
TELEGRAM_NOTIFY_TBLOCKER |
Chat_id ะดะปั ัะฒะตะดะพะผะปะตะฝะธะน ััะฐัะธะบ-ะฑะปะพะบะตัะฐ |
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED |
ะะบะปััะตะฝะธะต ัะฒะตะดะพะผะปะตะฝะธะน ะพ ะฝะตะฟะพะดะบะปัััะฝะฝัั
ะฟะพะปัะทะพะฒะฐัะตะปัั
(true/false) |
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS |
ะะฝัะตัะฒะฐะปั ะฒ ัะฐัะฐั
ะดะปั ัะฒะตะดะพะผะปะตะฝะธะน (ะฝะฐะฟัะธะผะตั: [6, 24, 48]) |
ะฃะดะฐะปะตะฝั ะฟะตัะตะผะตะฝะฝัะต:
TELEGRAM_NOTIFY_USERS_THREAD_IDTELEGRAM_NOTIFY_NODES_THREAD_IDTELEGRAM_NOTIFY_CRM_THREAD_ID
ะขะตะฟะตัั
thread_idัะบะฐะทัะฒะฐะตััั ะฒ ะพัะฝะพะฒะฝะพะน ะฟะตัะตะผะตะฝะฝะพะน ัะตัะตะท ะดะฒะพะตัะพัะธะต:"-100123:80"
๐ ะะฑะฝะพะฒะปะตะฝั ะฟะตัะตะฒะพะดั
- ะฃะปัััะตะฝั ะธ ะฐะบััะฐะปะธะทะธัะพะฒะฐะฝั ะฒัะต ัะตะบััั ัะพะพะฑัะตะฝะธะน ะฒ ััััะบะพะผ ะธ ะฐะฝะณะปะธะนัะบะพะผ ัะทัะบะฐั
v2.3.0
REMNAWAVE REVERSE PROXY
๐ Major Changes
๐ก Gcore Certificate Generation
- Added new method to generate domain certificates via Gcore
๐ Real IP for Subscription Page
- Added proper proxy headers in
nginx.conffor the subscription page server block (panel + node setup):
proxy_set_header X-Real-IP $proxy_protocol_addr;
proxy_set_header X-Forwarded-For $proxy_protocol_addr;- Subscription page now correctly shows the real client IP when updating subscriptions via your connection client
๐ง Nginx Hash Table Optimization
- Added
server_names_hash_bucket_size 64;tonginx.conf - Fixes the error โcould not build the server_names_hashโ for long or complex domain names
- Increases hash bucket size for reliable server_name handling
๐ Subscription Page Error Handling
- Changed
@redirectfromreturn 404;toreturn 444;innginx.conf - Improves security and prevents unnecessary 404 logs
๐ API Token for Subscription Page
- Subscription Page now requires an API token
- On fresh installation (panel only or panel + node), the API token is automatically generated and already added to the configuration
- On existing (old) installations, you need to manually create an API token in your panel and add the environment variable
REMNAWAVE_API_TOKEN=your_token_hereindocker-compose.ymlunder thesubscription-pageservice
โ๏ธ Subscription Page Configuration
- New environment variable
SUBSCRIPTION_UI_DISPLAY_RAW_KEYS=true - When enabled, shows raw vless:// links in the subscription UI
- By default hidden when HWID binding is active
๐ Updated Translations
- Improved and updated translations across the entire project
v2.2.0
REMNAWAVE REVERSE PROXY
๐ Major Changes
๐OAuth Provider Detection via API
- Replaced .env file checking with API-based OAuth provider detection
- Now uses GET /api/auth/status endpoint to dynamically verify enabled authentication providers:
- GitHub OAuth2
- Yandex OAuth2
- PocketID OAuth2
- Telegram authentication
๐ฆNode Configuration Simplification
- Removed .env-node file from node configurations
- Migrated all node environment variables to docker-compose.yml for easier management. Only two parameters required now:
NODE_PORT - Port for node communication (default: 2222)
SECRET_KEY - Contains node certificates - Previous parameters APP_PORT and SSL_CERT from .env-node are no longer needed
๐จPanel Management Improvements
- Removed Legiz rule templates
- Panel rule management is now simplified - all configurations are done directly in Remnawave panel interface
v2.1.9
REMNAWAVE REVERSE PROXY
๐ Major Changes
-
Debian 13 Support ๐ง
-
Replaced dynamic IP fetching with a static IP 172.30.0.1 for panel and node configurations.
-
Updated .env and docker-compose.yml for seamless operation.
Domain Uniqueness Check ๐
- Introduced the check_node_domain function to verify domain availability using the /api/nodes endpoint.
- Integrated into add_node_to_panel with a loop to prompt for a unique domain if the provided one is already in use.
New Editing Features โ๏ธ
- Added an app-config.json editor for streamlined application configuration.
- Introduced a branding editor for customizing the visual identity.
- Implemented app deletion functionality for better management.
IPv4 Configuration Update ๐
- Replaced ForceIPv4 with UseIPv4 for more flexible network handling.
SNI Templates Fix ๐ ๏ธ
- Resolved issues with SNI templates to ensure stability and proper request handling.
v2.1.4
v2.1.0
REMNAWAVE REVERSE PROXY
๐ Main Changes
๐Features
-
Custom Branding for Subscription Page: Added support for configuring custom branding (name, support URL, logo URL) for the subscription page during setup via Legiz extensions. Refer to the configuration reference for details.
-
Updated .env Configuration: Enhanced the .env file structure to support new customization options, improving flexibility for deployment.
๐งFixes
- Certificate Domain Assignment: Resolved an issue in the installation_panel and installation_node functions for the Cloudflare method (CERT_METHOD=1). Now correctly sets PANEL_CERT_DOMAIN, SUB_CERT_DOMAIN, and NODE_CERT_DOMAIN to their respective base domains, ensuring proper SSL certificate paths in Nginx configurations.
Token Validation in get_panel_token: Fixed token validation issues by:
- Adding robust validation for API responses, handling 401 Unauthorized errors and invalid JSON.
- Implementing a final token verification step to ensure only valid tokens are used.
- Preventing script continuation with invalid tokens, resolving errors like jq: error: Cannot iterate over null.
๐Improvements
- Xray Configuration: Removed QUIC protocol
v2.0.7
REMNAWAVE REVERSE PROXY
๐ Main Changes
๐ง Update Check Addition:
- Introduced a new function to check for available software updates. This ensures users can stay up-to-date with the latest features and security patches seamlessly.
๐ง Notification Updates:
- Added update notifications in the main menu, enabling users to easily identify and install new software versions for improved usability.
๐ง ACME Certificate Renewal - Port 80 Handling:
- Implemented the update_current_certificates function to automatically open and close port 80 for ACME-based (HTTP-01 challenge) certificate renewals. This enhances reliability and security by automating certificate updates with minimal manual intervention.
- Added cron job integration to correctly handle port 80 opening and closing during certificate renewals, ensuring consistent and secure operation.
v2.0.5
REMNAWAVE REVERSE PROXY
๐ Main Changes
๐งSubpage and Application Features:
- Introduced Orion subpage for enhanced user navigation
- Added HWID-only application list for improved security and access control
- Implemented jsDelivr fallback for reliable subpage downloads
- Refactored subpage menu for better usability and maintainability
๐งSquad Update Fixes:
- Updated get_default_squad to return all squad UUIDs instead of a single default squad
- Modified main script to iterate over all squad UUIDs and call update_squad for each
- Added robust error handling and logging for squad updates
๐Updated get_panel_token function:
- Added support for new OAuth providers: GitHub, PocketID, and Yandex
๐งFix:
- manage_warp and view_logs function
Remove:
- Deletion of existing UFW ports to prevent unintended configuration loss
v2.0.0
REMNAWAVE REVERSE PROXY
๐ Main Changes
๐ New Features and Capabilities
๐ง WARP Native Integration (by distillium)
- Added a complete WARP Native management module
- Ability to install and remove WARP Native
- Integration of WARP configuration into panel nodes
๐ Improved Panel/Node Management
- New unified "Panel/Node Management" menu
- Real-time container log viewing
- Centralized management for starting/stopping/updating
๐ Script Removal System
- Safe removal of only the script and local files
- Full removal including panel/node data
- Confirmations to prevent accidental deletion
๐ API Endpoints
New:
- /api/config-profiles - configuration profile management
- /api/internal-squads - internal squads management
Removed:
- /api/xray - replaced with config-profiles
- /api/inbounds - replaced with new architecture
๐จ Interface Reorganization
- Unified panel/node management functions
- Added WARP Native module
- Added script removal system
- Optimized navigation
v1.7.5
REMNAWAVE REVERSE PROXY
๐ง Docker Images Fixes
Pinned Docker image versions to improve stability:
remnawave/backend: from latest to 1.6.16
remnawave/node: from latest to 1.6.4
๐ก๏ธ Security and Stability Improvements
Added container existence checks before performing template operations:
Check for remnawave container in the function manage_template_upload
Check for remnawave-subscription-page container in the function manage_sub_page_upload
If container is missing, an appropriate error message is shown