### Install Remnawave Go SDK Source: https://docs.rw/docs/sdk/go-sdk Use the go get command to add the SDK to your project. Ensure the version matches your Remnawave backend version. ```bash go get github.com/Jolymmiles/remnawave-api-go/v2@latest ``` -------------------------------- ### Create Chain from Russia to European Servers Source: https://docs.rw/docs/guides/templates/mihomo This example demonstrates creating a proxy chain starting from a Russian server to access European servers. It uses `include-proxies: true` in the `remnawave` field for the proxy provider and specifies an `override` for the chaining behavior. The chain is then used in a `proxy-groups` configuration. ```yaml # Creating chain through Russian server for access to European servers proxy-providers: russlanddialer: # Chain from Russia to other countries type: inline exclude-filter: '🇷🇺|🇳🇱' # Filter for proxies that won't be used for chaining remnawave: # Custom field used only in Remnawave include-proxies: true # Adds proxies for chain creation override: dialer-proxy: 🇷🇺 Russia # Host name that will be chain for European exit (can also be proxy-group) additional-prefix: '🇷🇺➡️' # Prefix for proxy name (indicates bridge from Russia) payload: # Using chain in group proxy-groups: - name: PROXY icon: https://cdn.jsdelivr.net/gh/Koolson/Qure@master/IconSet/IconSet/Color/Hijacking.png type: select proxies: - ⚡️ Fastest # LEAVE THIS LINE! use: # This parameter adds chains to the group - russlanddialer - name: ⚡️ Fastest icon: https://cdn.jsdelivr.net/gh/Koolson/Qure@master/IconSet/IconSet/Color/Auto.png type: url-test tolerance: 150 url: https://cp.cloudflare.com/generate_204 interval: 300 include-all: true # Core functionality, adds all available proxies to this group exclude-filter: '🇷🇺' # Excludes Russia from them remnawave: # Custom field used only in Remnawave (disables adding all proxies to this section, except manually specified) include-proxies: false proxies: # LEAVE THIS LINE! ``` -------------------------------- ### Install Dependencies for Migration Tool Source: https://docs.rw/docs/migrate/marzban Update system packages and install Git and wget, which are required for downloading and running the migration tool. ```bash # Update system packages sudo apt-get update # Install Git and wget sudo apt-get install -y git wget ``` -------------------------------- ### API Key header example Source: https://docs.rw/docs/security/caddy-with-custom-path Example of the X-Api-Key header format for API requests. ```http X-Api-Key: YxOovHLnpkcmSig5082egcHnyTk8SK4dNGAFHgZ2LKZezgj5oUj2FA2IR2sMwbALnP9YNpzZ ``` -------------------------------- ### Start and Follow Cloudflare Tunnel Logs Source: https://docs.rw/docs/install/reverse-proxies/try-cloudflare Starts the Docker containers in detached mode and then continuously displays the logs. Look for the URL of your quick tunnel in the output. ```bash docker compose up -d && docker compose logs -f ``` -------------------------------- ### Example .env File for Database Configuration Source: https://docs.rw/docs/install/environment-variables Configure PostgreSQL user, password, database name, and the DATABASE_URL in your .env file. ```dotenv POSTGRES_USER=postgres POSTGRES_PASSWORD=postgres POSTGRES_DB=postgres DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres" ``` -------------------------------- ### Install Docker via official script Source: https://docs.rw/docs/install/requirements Use this command to install Docker on supported Linux distributions. ```bash sudo curl -fsSL https://get.docker.com | sh ``` -------------------------------- ### Start Containers Source: https://docs.rw/docs/install/remnawave-panel Starts the Docker containers in detached mode and follows the logs. ```bash docker compose up -d && docker compose logs -f -t ``` -------------------------------- ### Example .env File for Ports Source: https://docs.rw/docs/install/environment-variables Configure the application port and metrics port by setting APP_PORT and METRICS_PORT in your .env file. ```dotenv APP_PORT=3000 METRICS_PORT=3001 ``` -------------------------------- ### Create Project Directory Source: https://docs.rw/docs/install/remnawave-node Initialize the directory structure for the Remnawave Node installation. ```bash mkdir /opt/remnanode && cd /opt/remnanode ``` -------------------------------- ### Install XTLS SDK via NPM Source: https://docs.rw/docs/sdk/xtls-sdk Use this command to install the core XTLS SDK package in your Node.js project. ```bash npm install @remnawave/xtls-sdk ``` -------------------------------- ### Start Subscription Page Container Source: https://docs.rw/docs/install/subscription-page/bundled Start the subscription page container in detached mode and follow its logs. ```bash docker compose up -d && docker compose logs -f ``` -------------------------------- ### Navigate to Remnawave Directory Source: https://docs.rw/docs/install/subscription-page/separate-server Navigate to the Remnawave installation directory on the server where Remnawave Panel is installed. ```bash cd /opt/remnawave && nano .env ``` -------------------------------- ### Create docker-compose.yml file Source: https://docs.rw/docs/install/reverse-proxies/angie Navigate to the installation directory and open the file editor to create the configuration. ```bash cd /opt/remnawave/angie && nano docker-compose.yml ``` -------------------------------- ### Complete Public Config Profile Source: https://docs.rw/docs/learn-en/server-routing A full configuration example including log settings, inbounds, outbounds, and a complete routing ruleset. ```json { "log": { "loglevel": "none" }, "inbounds": [ { "tag": "PUBLIC_RU_INBOUND", "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": { "target": "USE YOUR OWN VALUE!", "show": false, "xver": 0, "shortIds": [""], "privateKey": "USE YOUR OWN KEY!", "serverNames": ["USE YOUR OWN VALUES!"] } } } ], "outbounds": [ { "protocol": "freedom", "tag": "DIRECT" }, { "protocol": "blackhole", "tag": "BLOCK" }, { "tag": "SS_OUTBOUND_TO_DE", "protocol": "shadowsocks", "settings": { "servers": [ { "address": "DE NODE ADDRESS", "password": "PASSWORD FROM PREVIOUS STEP", "port": 9999, "level": 0, "method": "chacha20-ietf-poly1305" } ] } } ], "routing": { "rules": [ { "ip": ["geoip:private"], "outboundTag": "BLOCK" }, { "domain": ["geosite:private"], "outboundTag": "BLOCK" }, { "protocol": ["bittorrent"], "outboundTag": "BLOCK" }, { "ip": ["geoip:ru"], "outboundTag": "DIRECT" }, { "domain": ["geosite:category-ru"], "outboundTag": "DIRECT" }, { "inboundTag": ["PUBLIC_RU_INBOUND"], "outboundTag": "SS_OUTBOUND_TO_DE" } ] } } ``` -------------------------------- ### Notification event configuration examples Source: https://docs.rw/docs/features/fine-tuned-notifications YAML snippets demonstrating how to enable or disable specific notification channels for events. ```yaml events: user.created: telegram: false # Disable Telegram webhook: true # Keep Webhook enabled ``` ```yaml events: user_hwid_devices.added: telegram: false webhook: false ``` ```yaml events: user.expired: <<: *bothDisabled # Disable both channels ``` -------------------------------- ### Start Nginx Container with Docker Compose Source: https://docs.rw/docs/install/reverse-proxies/nginx Command to start the Nginx container in detached mode and follow its logs. ```bash docker compose up -d && docker compose logs -f -t ``` -------------------------------- ### Install Remnawave Backend Contract SDK Source: https://docs.rw/docs/sdk/typescript-sdk Install the Remnawave backend contract SDK using npm. Ensure the version matches your Remnawave backend. ```bash npm install @remnawave/backend-contract ``` -------------------------------- ### Example .env File for API Scaling Source: https://docs.rw/docs/install/environment-variables Set the number of API instances to run by configuring the API_INSTANCES variable in your .env file. Leave at default (1) if not optimizing for high user loads. ```dotenv API_INSTANCES=1 ``` -------------------------------- ### Navigate to Remnawave directory Source: https://docs.rw/blog/updating-guides/updating-to-1.4.x Use this command to access the installation directory before editing configuration files. ```bash cd /opt/remnawave && nano docker-compose.yml ``` -------------------------------- ### Example .env File for Redis Configuration Source: https://docs.rw/docs/install/environment-variables Configure Redis connection details, including host, port, database, and password, in your .env file. ```dotenv REDIS_HOST=remnawave-redis REDIS_PORT=6379 ``` -------------------------------- ### Public Profile Configuration Example Source: https://docs.rw/docs/learn-en/server-routing A complete configuration template for a public profile using VLESS and Reality, including inbound, outbound, and routing settings. ```json { "log": { "loglevel": "none" }, "inbounds": [ { "tag": "PUBLIC_RU_INBOUND", "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": { "target": "USE YOUR OWN VALUE!", "show": false, "xver": 0, "shortIds": [""], "privateKey": "USE YOUR OWN KEY!", "serverNames": ["USE YOUR OWN VALUES!"] } } } ], "outbounds": [ { "protocol": "freedom", "tag": "DIRECT" }, { "protocol": "blackhole", "tag": "BLOCK" } ], "routing": { "rules": [ { "ip": ["geoip:private"], "outboundTag": "BLOCK" }, { "domain": ["geosite:private"], "outboundTag": "BLOCK" }, { "protocol": ["bittorrent"], "outboundTag": "BLOCK" } ] } } ``` -------------------------------- ### Install Remnawave Python SDK Source: https://docs.rw/docs/sdk/python-sdk Install the Remnawave Python SDK using pip. This command is used to add the library to your project's dependencies. ```bash pip install remnawave ``` -------------------------------- ### Start Caddy Docker Container Source: https://docs.rw/docs/install/reverse-proxies/caddy These commands start the Caddy Docker container in detached mode and then display its logs in real-time. This is used to verify the Caddy service is running correctly. ```bash docker compose up -d && docker compose logs -f -t ``` -------------------------------- ### Download Caddyfile Configurations Source: https://docs.rw/docs/security/caddy-with-minimal-setup Commands to download different Caddyfile security setups. ```bash curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/minimal-security-setup-with-mfa/Caddyfile ``` ```bash curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/minimal-security-setup-with-mfa-with-api-without-auth/Caddyfile ``` -------------------------------- ### View Xray core logs Source: https://docs.rw/docs/guides/common-errors Example log output showing the SPAWN_ERROR and associated connection failures. ```text remnanode | ERROR [HttpExceptionFilter] Failed to get system stats - { stack: [ null ], code: 'A010', path: '/node/stats/get-system-stats' } remnanode | LOG [XrayService] Getting config checksum... remnanode | LOG [XrayService] XTLS config generated in: 1ms remnanode | ERROR [XrayService] XML-RPC fault: SPAWN_ERROR: xray - { stack: [ null ] } remnanode | LOG [XrayService] Start XTLS took: 2s 568ms remnanode | ERROR [StatsService] Failed to get system stats: /xray.app.stats.command.StatsService/GetSysStats UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:61000 (2025-05-08T14:36:08.821Z) - { stack: [ null ], isOk: false, code: 'A002' } ``` -------------------------------- ### Create Subscription Page Directory Source: https://docs.rw/docs/install/subscription-page/separate-server On the separate server designated for the subscription page, create the necessary directory structure and navigate into it. Ensure Docker is installed on this server. ```bash mkdir -p /opt/remnawave/subscription && cd /opt/remnawave/subscription && nano docker-compose.yml ``` -------------------------------- ### Connect to Marzban Database Source: https://docs.rw/docs/migrate/marzban Example command to connect to your Marzban MySQL database if it's running in a Docker container. Replace placeholders with your actual container name and root password. ```bash docker exec -it marzban-mysql mysql -uroot -pPassword ``` -------------------------------- ### Sample Prometheus Configuration Source: https://docs.rw/docs/install/environment-variables This is a sample Prometheus configuration file (prometheus.yml) demonstrating how to scrape metrics from Remnawave, including basic authentication setup. ```yaml global: # scrape_interval: 15s scrape_timeout: 10s evaluation_interval: 15s scrape_configs: - job_name: 'remnawave' scheme: http metrics_path: /metrics static_configs: - targets: ['remnawave:3001'] scrape_interval: 30s basic_auth: username: admin password: change_me ``` -------------------------------- ### Prometheus Metrics Help Text Source: https://docs.rw/docs/changelog/remnawave-panel Example of a Prometheus HELP text for a custom metric, indicating the metric's purpose. ```promql # HELP remnawave_node_online_users Number of online users on a node ``` -------------------------------- ### Create TinyAuth User Hash (Running Container) Source: https://docs.rw/docs/security/tinyauth-for-nginx Generates a user hash using an already running TinyAuth container. This is an alternative to creating the hash during initial setup. ```bash docker exec -it tinyauth ./tinyauth user create --interactive ``` -------------------------------- ### API Key Authentication Example Source: https://docs.rw/docs/security/tinyauth-for-nginx Use Basic authentication with your username and password encoded in Base64 within the X-Api-Key header to authenticate requests to the Tinyauth API. ```http X-Api-Key: Basic dXNlcm5hbWU6cGFzc3dvcmQ= ``` -------------------------------- ### Configure and Run Migration Tool Source: https://docs.rw/docs/migrate/marzban Execute the migration tool with command-line flags specifying source and destination panel details, and optional parameters like preserving user status. ```bash ./remnawave-migrate \ --panel-type=marzban \ --panel-url=https://your-marzban-server \ --panel-username=admin \ --panel-password=your-admin-password \ --remnawave-url=https://your-remnawave-server \ --remnawave-token=your-remnawave-token \ --preserve-status ``` -------------------------------- ### Example .env File for Secret Keys Source: https://docs.rw/docs/install/environment-variables Set the JWT authentication and API token secret keys in your .env file. Ensure these are strong, randomly generated strings. ```dotenv JWT_AUTH_SECRET=strong_secret_key JWT_API_TOKENS_SECRET=strong_secret_key ``` -------------------------------- ### Download Configuration Files Source: https://docs.rw/docs/install/remnawave-panel Downloads the docker-compose and environment sample files from the repository. ```bash curl -o docker-compose.yml https://raw.githubusercontent.com/remnawave/backend/refs/heads/main/docker-compose-prod.yml ``` ```bash curl -o .env https://raw.githubusercontent.com/remnawave/backend/refs/heads/main/.env.sample ``` -------------------------------- ### Initialize Caddy Directory Source: https://docs.rw/docs/security/caddy-with-custom-path Create and navigate to the directory intended for the Caddy configuration. ```bash mkdir -p /opt/remnawave/caddy && cd /opt/remnawave/caddy ``` -------------------------------- ### Create and Initialize Remnawave API Client Source: https://docs.rw/docs/sdk/go-sdk Demonstrates how to create a base client and extend it with organized sub-clients for API interactions. Ensure you replace placeholder URLs and tokens with your actual credentials. ```go package main import ( "context" "fmt" "log" remapi "github.com/Jolymmiles/remnawave-api-go/v2/api" ) func main() { ctx := context.Background() // Create base client baseClient, err := remapi.NewClient( "https://your-panel.example.com", remapi.StaticToken{Token: "YOUR_API_TOKEN"}, ) if err != nil { log.Fatal(err) } // Wrap with organized sub-clients client := remapi.NewClientExt(baseClient) // Get user by UUID - simplified signature resp, err := client.Users().GetUserByUuid(ctx, "user-uuid-here") if err != nil { log.Fatal(err) } switch r := resp.(type) { case *remapi.UserResponse: fmt.Printf("User: %s\n", r.Response.Username) case *remapi.NotFoundError: fmt.Println("User not found") case *remapi.BadRequestError: fmt.Printf("Validation error: %v\n", r.Errors) } } ``` -------------------------------- ### Install Nginx Dependencies Source: https://docs.rw/docs/install/reverse-proxies/nginx Installs necessary dependencies for Nginx, including cron and socat, on Debian-based systems. ```bash sudo apt-get install cron socat ``` -------------------------------- ### Initialize Angie Configuration File Source: https://docs.rw/docs/install/reverse-proxies/angie Opens the angie.conf file for editing within the designated directory. ```bash cd /opt/remnawave/angie && nano angie.conf ``` -------------------------------- ### Create Caddy Directory and Caddyfile Source: https://docs.rw/docs/install/reverse-proxies/caddy Use this command to create the directory for Caddy configuration and open the Caddyfile for editing. Remember to replace placeholder domain names. ```bash mkdir -p /opt/remnawave/caddy && cd /opt/remnawave/caddy && nano Caddyfile ``` -------------------------------- ### Create docker-compose.yml Source: https://docs.rw/docs/install/remnawave-node Navigate to the project directory to prepare the configuration file. ```bash cd /opt/remnanode && nano docker-compose.yml ``` -------------------------------- ### Start Subscription Page Container Source: https://docs.rw/docs/install/subscription-page/separate-server Start the Remnawave subscription page container in detached mode and follow its logs to monitor the startup process. ```bash docker compose up -d && docker compose logs -f ``` -------------------------------- ### Example Webhook Payload Source: https://docs.rw/docs/features/webhooks This is an example of the JSON payload structure sent with webhooks. It includes scope, event, timestamp, and data specific to the event. ```json { "scope": "service", "event": "service.panel_started", "timestamp": "2026-01-01T11:57:29.426Z", "data": { "panelVersion": "2.5.0" } } ``` -------------------------------- ### Prometheus Metrics Join Example Source: https://docs.rw/docs/changelog/remnawave-panel Example of using Prometheus joins to enrich queries by combining node metrics with basic node information. ```promql node_online_users * on(node_uuid) group_left(node_name) node_basic_info ``` -------------------------------- ### Install acme.sh for SSL Certificates Source: https://docs.rw/docs/install/reverse-proxies/nginx Installs the acme.sh script for issuing and managing SSL certificates. Replace EMAIL with your actual email address. ```bash curl https://get.acme.sh | sh -s email=EMAIL && source ~/.bashrc ``` -------------------------------- ### Start Traefik Container Source: https://docs.rw/docs/install/reverse-proxies/traefik Command to start the Traefik container using Docker Compose and follow its logs. This command assumes your docker-compose.yml is in the current directory. ```bash docker compose up -d && docker compose logs -f -t ``` -------------------------------- ### Cloudflare Tunnel Log Output Example Source: https://docs.rw/docs/install/reverse-proxies/try-cloudflare Example log output indicating that a quick tunnel has been created. The URL provided is how you will access your Remnawave instance. ```text INF +--------------------------------------------------------------------------------------------+ INF | Your quick Tunnel has been created! Visit it at (it may take some time to be reachable): | INF | https://usually-43434-wow-poor.trycloudflare.com | INF +--------------------------------------------------------------------------------------------+ ``` -------------------------------- ### Create Certificate Directory Source: https://docs.rw/docs/install/reverse-proxies/nginx Creates a directory to store SSL certificates and navigates into it. ```bash mkdir -p /opt/remnawave/nginx && cd /opt/remnawave/nginx ``` -------------------------------- ### Install and Configure SSL Certificate Source: https://docs.rw/docs/install/reverse-proxies/nginx Installs the issued SSL certificate and configures acme.sh to automatically renew it. This command also reloads the Nginx configuration. Replace DOMAIN with your actual domain name. ```bash acme.sh --install-cert -d 'DOMAIN' --key-file /opt/remnawave/nginx/privkey.key --fullchain-file /opt/remnawave/nginx/fullchain.pem --reloadcmd "docker exec remnawave-nginx nginx -s reload" ``` -------------------------------- ### Initialize Remnawave SDK Source: https://docs.rw/docs/sdk/python-sdk Initialize the Remnawave SDK with base URL and token. Ensure environment variables REMNAWAVE_BASE_URL and REMNAWAVE_TOKEN are set. ```python import os import asyncio from remnawave import RemnawaveSDK # Updated import for new package from remnawave.models import ( # Updated import path UsersResponseDto, UserResponseDto, GetAllConfigProfilesResponseDto, CreateInternalSquadRequestDto ) async def main(): # URL to your panel (ex. https://vpn.com or http://127.0.0.1:3000) base_url: str = os.getenv("REMNAWAVE_BASE_URL") # Bearer Token from panel (section: API Tokens) token: str = os.getenv("REMNAWAVE_TOKEN") # Initialize the SDK remnawave = RemnawaveSDK(base_url=base_url, token=token) # Fetch all users response: UsersResponseDto = await remnawave.users.get_all_users() total_users: int = response.total users: list[UserResponseDto] = response.users print("Total users: ", total_users) print("List of users: ", users) if __name__ == "__main__": asyncio.run(main()) ``` -------------------------------- ### Create Subscription Page Directory Source: https://docs.rw/docs/install/subscription-page/bundled Create a directory for the subscription page and navigate into it. ```bash mkdir -p /opt/remnawave/subscription && cd /opt/remnawave/subscription && nano docker-compose.yml ``` -------------------------------- ### GET /api/system/metadata Source: https://docs.rw/blog/api-changelog/v244-v250 Retrieves system metadata. ```APIDOC ## GET /api/system/metadata ### Description New endpoint added to retrieve system metadata. ### Method GET ### Endpoint /api/system/metadata ``` -------------------------------- ### GET /api/subscription-page-configs Source: https://docs.rw/blog Retrieves subscription page configurations. ```APIDOC ## GET /api/subscription-page-configs ### Description Retrieves the configurations for subscription pages. ### Method GET ### Endpoint /api/subscription-page-configs ``` -------------------------------- ### Create Angie Directory Source: https://docs.rw/docs/install/reverse-proxies/angie Creates the directory structure for the Angie configuration files and navigates into it. ```bash mkdir -p /opt/remnawave/angie && cd /opt/remnawave/angie ``` -------------------------------- ### GET /api/bandwidth-stats/nodes Source: https://docs.rw/blog Retrieves bandwidth statistics for nodes. ```APIDOC ## GET /api/bandwidth-stats/nodes ### Description Retrieves bandwidth statistics for all nodes. ### Method GET ### Endpoint /api/bandwidth-stats/nodes ``` -------------------------------- ### GET /api/bandwidth-stats/nodes/realtime Source: https://docs.rw/blog Retrieves real-time bandwidth statistics for nodes. ```APIDOC ## GET /api/bandwidth-stats/nodes/realtime ### Description Retrieves real-time bandwidth statistics for nodes. ### Method GET ### Endpoint /api/bandwidth-stats/nodes/realtime ``` -------------------------------- ### Create Project Directory Source: https://docs.rw/docs/install/remnawave-panel Creates the directory for the Remnawave project and navigates into it. ```bash mkdir /opt/remnawave && cd /opt/remnawave ``` -------------------------------- ### GET /api/bandwidth-stats/users/{uuid} Source: https://docs.rw/blog Retrieves bandwidth statistics for a specific user. ```APIDOC ## GET /api/bandwidth-stats/users/{uuid} ### Description Retrieves bandwidth statistics for a specific user. ### Method GET ### Endpoint /api/bandwidth-stats/users/{uuid} ### Parameters #### Path Parameters - **uuid** (string) - Required - The UUID of the user. ``` -------------------------------- ### GET /api/subscription-settings Source: https://docs.rw/blog/api-changelog/v244-v250 Retrieves subscription settings with updated custom remarks. ```APIDOC ## GET /api/subscription-settings ### Description Retrieves subscription settings. Response structure updated to include HWID status properties. ### Method GET ### Endpoint /api/subscription-settings ### Response #### Success Response (200) - **response/customRemarks/HWIDMaxDevicesExceeded** (boolean) - Required - **response/customRemarks/HWIDNotSupported** (boolean) - Required ``` -------------------------------- ### Create docker-compose.yml Source: https://docs.rw/docs/install/reverse-proxies/try-cloudflare Opens the docker-compose.yml file in the nano editor. Paste the provided configuration into this file. ```bash nano docker-compose.yml ``` -------------------------------- ### GET /api/external-squads/{uuid} Source: https://docs.rw/blog/api-changelog/v244-v250 Retrieves a specific external squad by UUID. ```APIDOC ## GET /api/external-squads/{uuid} ### Description Retrieves details for a specific external squad. Response structure updated to include HWID status properties. ### Method GET ### Endpoint /api/external-squads/{uuid} ### Parameters #### Path Parameters - **uuid** (string) - Required - The unique identifier of the squad. ### Response #### Success Response (200) - **response/customRemarks/HWIDMaxDevicesExceeded** (boolean) - Required - **response/customRemarks/HWIDNotSupported** (boolean) - Required ``` -------------------------------- ### GET /api/system/metadata Source: https://docs.rw/blog A new endpoint has been added to retrieve system metadata. ```APIDOC ## GET /api/system/metadata ### Description Retrieves system metadata. ### Method GET ### Endpoint /api/system/metadata ``` -------------------------------- ### Create Subscription Page .env File Source: https://docs.rw/docs/install/subscription-page/bundled Create the .env file for the subscription page in its directory. ```bash mkdir -p /opt/remnawave/subscription && cd /opt/remnawave/subscription && nano .env ``` -------------------------------- ### Enable and Configure Documentation Paths in .env File Source: https://docs.rw/docs/install/environment-variables Use IS_DOCS_ENABLED to control documentation visibility and SWAGGER_PATH/SCALAR_PATH to set the respective UI paths. Set IS_DOCS_ENABLED to true to enable. ```env IS_DOCS_ENABLED=true SWAGGER_PATH=/docs SCALAR_PATH=/scalar ``` -------------------------------- ### GET /api/subscriptions/subpage-config/{shortUuid} Source: https://docs.rw/blog Retrieves subscription subpage configuration by short UUID. ```APIDOC ## GET /api/subscriptions/subpage-config/{shortUuid} ### Description Retrieves the subpage configuration for a subscription using its short UUID. ### Method GET ### Endpoint /api/subscriptions/subpage-config/{shortUuid} ### Parameters #### Path Parameters - **shortUuid** (string) - Required - The short UUID of the subscription. ``` -------------------------------- ### Configure Environment Variables Source: https://docs.rw/docs/security/caddy-with-minimal-setup Set domain, admin credentials, and token lifetime variables. ```text REMNAWAVE_PANEL_DOMAIN=panel.domain.com ``` ```text AUTHP_ADMIN_USER=admin AUTHP_ADMIN_EMAIL=admin@domain.com AUTHP_ADMIN_SECRET=strong_password ``` ```text AUTH_TOKEN_LIFETIME=3600 ``` -------------------------------- ### GET /api/subscription-page-configs/{uuid} Source: https://docs.rw/blog Retrieves a specific subscription page configuration by UUID. ```APIDOC ## GET /api/subscription-page-configs/{uuid} ### Description Retrieves a specific subscription page configuration by its UUID. ### Method GET ### Endpoint /api/subscription-page-configs/{uuid} ### Parameters #### Path Parameters - **uuid** (string) - Required - The UUID of the subscription page configuration. ``` -------------------------------- ### GET /api/external-squads Source: https://docs.rw/blog/api-changelog/v244-v250 Retrieves external squads with updated custom remarks properties. ```APIDOC ## GET /api/external-squads ### Description Retrieves a list of external squads. Updated to remove 'emptyInternalSquads' and add 'HWIDMaxDevicesExceeded' and 'HWIDNotSupported' to the response. ### Method GET ### Endpoint /api/external-squads ### Response #### Success Response (200) - **response/externalSquads/items/customRemarks/HWIDMaxDevicesExceeded** (boolean) - Required - **response/externalSquads/items/customRemarks/HWIDNotSupported** (boolean) - Required ```