mirror of https://github.com/h44z/wg-portal.git
				
				
				
			
		
			
				
	
	
		
			57 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| # Backends
 | |
| 
 | |
| WireGuard Portal can manage WireGuard interfaces and peers on different backends. 
 | |
| Each backend represents a system where interfaces actually live. 
 | |
| You can register multiple backends and choose which one to use per interface. 
 | |
| A global default backend determines where newly created interfaces go (unless you explicitly choose another in the UI).
 | |
| 
 | |
| **Supported backends:**
 | |
| - **Local** (default): Manages interfaces on the host running WireGuard Portal (Linux WireGuard via wgctrl). Use this when the portal should directly configure wg devices on the same server.
 | |
| - **MikroTik** RouterOS (_beta_): Manages interfaces and peers on MikroTik devices via the RouterOS REST API. Use this to control WG interfaces on RouterOS v7+.
 | |
| 
 | |
| How backend selection works:
 | |
| - The default backend is configured at `backend.default` (_local_ or the id of a defined MikroTik backend). 
 | |
|   New interfaces created in the UI will use this backend by default.
 | |
| - Each interface stores its backend. You can select a different backend when creating a new interface.
 | |
| 
 | |
| ## Configuring MikroTik backends (RouterOS v7+)
 | |
| 
 | |
| > :warning: The MikroTik backend is currently marked beta. While basic functionality is implemented, some advanced features are not yet implemented or contain bugs. Please test carefully before using in production.
 | |
| 
 | |
| The MikroTik backend uses the [REST API](https://help.mikrotik.com/docs/spaces/ROS/pages/47579162/REST+API) under a base URL ending with /rest. 
 | |
| You can register one or more MikroTik devices as backends for a single WireGuard Portal instance.
 | |
| 
 | |
| ### Prerequisites on MikroTik:
 | |
| - RouterOS v7 with WireGuard support.
 | |
| - REST API enabled and reachable over HTTP(S). A typical base URL is https://<router-address>:8729/rest or https://<router-address>/rest depending on your service setup.
 | |
| - A dedicated RouterOS user with the following group permissions:
 | |
|   - **api** (for logging in via REST API)
 | |
|   - **rest-api** (for logging in via REST API)
 | |
|   - **read** (to read interface and peer data)
 | |
|   - **write** (to create/update interfaces and peers)
 | |
|   - **test** (to perform ping checks)
 | |
|   - **sensitive** (to read private keys)
 | |
| - TLS certificate on the device is recommended. If you use a self-signed certificate during testing, set `api_verify_tls`: _false_ in wg-portal (not recommended for production).
 | |
| 
 | |
| Example WireGuard Portal configuration (config/config.yaml):
 | |
| 
 | |
| ```yaml
 | |
| backend:
 | |
|   # default backend decides where new interfaces are created
 | |
|   default: mikrotik-prod
 | |
| 
 | |
|   mikrotik:
 | |
|     - id: mikrotik-prod              # unique id, not "local"
 | |
|       display_name: RouterOS RB5009  # optional nice name
 | |
|       api_url: https://10.10.10.10/rest
 | |
|       api_user: wgportal
 | |
|       api_password: a-super-secret-password
 | |
|       api_verify_tls: true         # set to false only if using self-signed during testing
 | |
|       api_timeout: 30s             # maximum request duration
 | |
|       concurrency: 5               # limit parallel REST calls to device
 | |
|       debug: false                 # verbose logging for this backend
 | |
| ```
 | |
| 
 | |
| ### Known limitations:
 | |
| - The MikroTik backend is still in beta. Some features may not work as expected.
 | |
| - Not all WireGuard Portal features are supported yet (e.g., no support for interface hooks) |