WG Easy


WG Easy
Get Started with Apps!
Get Started with Apps!
App Version: 14
(Changelog)
Keywords: wireguard, network, vpn
Train: Stable
Home Page: https://github.com/wg-easy/wg-easy
Keywords: wireguard, network, vpn
Train: Stable
Home Page: https://github.com/wg-easy/wg-easy
WG Easy Details
Added: 2024-08-07
Last Updated: 2025-04-23
Added: 2024-08-07
Last Updated: 2025-04-23
WG-Easy is the easiest way to install & manage WireGuard!
Run as Context- WG Easy runs as root user.
Group: 0 / root
User: 0 / root
Screenshots

×
Security Capabilities
- WG Easy is able to use raw sockets.
- WG Easy is able to load kernel modules.
- WG Easy is able to perform various network-related operations.
App Metadata (Raw File)
{
"1.1.14": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/stable/wg-easy/1.1.14",
"last_update": "2025-04-23 17:40:39",
"required_features": [],
"human_version": "14_1.1.14",
"version": "1.1.14",
"app_metadata": {
"app_version": "14",
"capabilities": [
{
"description": "WG Easy is able to use raw sockets.",
"name": "NET_RAW"
},
{
"description": "WG Easy is able to load kernel modules.",
"name": "SYS_MODULE"
},
{
"description": "WG Easy is able to perform various network-related operations.",
"name": "NET_ADMIN"
}
],
"categories": [
"networking"
],
"changelog_url": "https://github.com/wg-easy/wg-easy/releases",
"date_added": "2024-08-07",
"description": "WG-Easy is the easiest way to install & manage WireGuard!",
"home": "https://github.com/wg-easy/wg-easy",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/wg-easy/icons/icon.png",
"keywords": [
"wireguard",
"network",
"vpn"
],
"lib_version": "2.1.16",
"lib_version_hash": "dac15686f882b9ce65b8549a3d5c0ed7bafe2df7a9028880d1a99b0ff4af1eff",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "wg-easy",
"run_as_context": [
{
"description": "WG Easy runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/wg-easy/screenshots/screenshot1.png"
],
"sources": [
"https://github.com/wg-easy/wg-easy"
],
"title": "WG Easy",
"train": "stable",
"version": "1.1.14"
},
"schema": {
"groups": [
{
"name": "WG Easy Configuration",
"description": "Configure WG Easy"
},
{
"name": "Network Configuration",
"description": "Configure Network for WG Easy"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for WG Easy"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for WG Easy"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for WG Easy"
}
],
"questions": [
{
"variable": "wg_easy",
"label": "",
"group": "WG Easy Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "external_host",
"label": "External Host",
"description": "The public hostname or IP of your VPN server.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "external_port",
"label": "External Port",
"description": "The port accessible from the clients.</br>\nThis is ONLY used on the client configuration generation in the \"Endpoint\" field.\n",
"schema": {
"type": "int",
"default": 51820,
"required": true
}
},
{
"variable": "password",
"label": "Password",
"description": "When set, requires a password when logging in to the Web UI.",
"schema": {
"type": "string",
"default": "",
"private": true
}
},
{
"variable": "persistent_keepalive",
"label": "Persistent Keepalive",
"description": "Value in seconds to keep the \"connection\" open. If this value is 0, then connections won't be kept alive",
"schema": {
"type": "int",
"default": 0,
"required": true
}
},
{
"variable": "device_name",
"label": "Device Name",
"description": "Ethernet device the wireguard traffic should be forwarded through.",
"schema": {
"type": "string",
"default": "eth0",
"required": true
}
},
{
"variable": "client_mtu",
"label": "Client MTU",
"description": "The MTU the clients will use.",
"schema": {
"type": "int",
"default": 1420,
"required": true
}
},
{
"variable": "client_default_address_range",
"label": "Client Default Address Range",
"description": "The default address range the clients will use.",
"schema": {
"type": "string",
"default": "10.8.0.x",
"required": true
}
},
{
"variable": "client_default_dns",
"label": "Client Default DNS",
"description": "The default DNS the clients will use.",
"schema": {
"type": "string",
"default": "1.1.1.1",
"required": true
}
},
{
"variable": "allowed_ips",
"label": "Allowed IPs",
"description": "Allowed IPs clients will use. If none provided, [0.0.0.0/0,::/0] will be used.",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "entry",
"label": "Allowed IP Entry",
"schema": {
"type": "string",
"required": true
}
}
]
}
},
{
"variable": "additional_envs",
"label": "Additional Environment Variables",
"description": "Configure additional environment variables for WG Easy.",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "env",
"label": "Environment Variable",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "name",
"label": "Name",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "value",
"label": "Value",
"schema": {
"type": "string",
"required": true
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "network",
"label": "",
"group": "Network Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "web_port",
"label": "WebUI Port",
"description": "The port for WG Easy WebUI",
"schema": {
"type": "int",
"default": 30058,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "host_network",
"label": "Host Network",
"description": "Bind to the host network.</br>\nIt is needed if you want to access services on the host network.\n",
"schema": {
"type": "boolean",
"default": true
}
},
{
"variable": "udp_port",
"label": "UDP Port",
"description": "The port for WG Easy UDP",
"schema": {
"type": "int",
"show_if": [
[
"host_network",
"=",
false
]
],
"default": 30057,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "dns_opts",
"label": "DNS Options",
"description": "DNS Options for WG Easy.",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "dns_opt",
"label": "DNS Option",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "name",
"label": "Name",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "value",
"label": "Value",
"schema": {
"type": "string",
"required": true
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "config",
"label": "WG Easy Config Storage",
"description": "The path to store WG Easy Config.",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "type",
"label": "Type",
"description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"default": "ix_volume",
"enum": [
{
"value": "host_path",
"description": "Host Path (Path that already exists on the system)"
},
{
"value": "ix_volume",
"description": "ixVolume (Dataset created automatically by the system)"
}
]
}
},
{
"variable": "ix_volume_config",
"label": "ixVolume Configuration",
"description": "The configuration for the ixVolume dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"ix_volume"
]
],
"$ref": [
"normalize/ix_volume"
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "dataset_name",
"label": "Dataset Name",
"description": "The name of the dataset to use for storage.",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"hidden": true,
"default": "config"
}
},
{
"variable": "acl_entries",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": []
}
}
]
}
},
{
"variable": "host_path_config",
"label": "Host Path Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"host_path"
]
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "acl",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
},
{
"variable": "path",
"label": "Host Path",
"description": "The host path to use for storage.",
"schema": {
"type": "hostpath",
"show_if": [
[
"acl_enable",
"=",
false
]
],
"required": true
}
}
]
}
}
]
}
},
{
"variable": "additional_storage",
"label": "Additional Storage",
"description": "Additional storage for WG Easy.",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "storageEntry",
"label": "Storage Entry",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "type",
"label": "Type",
"description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.</br>\nSMB Share: Is a SMB share that is mounted to as a volume.\n",
"schema": {
"type": "string",
"required": true,
"default": "ix_volume",
"immutable": true,
"enum": [
{
"value": "host_path",
"description": "Host Path (Path that already exists on the system)"
},
{
"value": "ix_volume",
"description": "ixVolume (Dataset created automatically by the system)"
},
{
"value": "cifs",
"description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
}
]
}
},
{
"variable": "read_only",
"label": "Read Only",
"description": "Mount the volume as read only.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "mount_path",
"label": "Mount Path",
"description": "The path inside the container to mount the storage.",
"schema": {
"type": "path",
"required": true
}
},
{
"variable": "host_path_config",
"label": "Host Path Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"host_path"
]
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "acl",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
},
{
"variable": "path",
"label": "Host Path",
"description": "The host path to use for storage.",
"schema": {
"type": "hostpath",
"show_if": [
[
"acl_enable",
"=",
false
]
],
"required": true
}
}
]
}
},
{
"variable": "ix_volume_config",
"label": "ixVolume Configuration",
"description": "The configuration for the ixVolume dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"ix_volume"
]
],
"$ref": [
"normalize/ix_volume"
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "dataset_name",
"label": "Dataset Name",
"description": "The name of the dataset to use for storage.",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"default": "storage_entry"
}
},
{
"variable": "acl_entries",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
}
]
}
},
{
"variable": "cifs_config",
"label": "SMB Configuration",
"description": "The configuration for the SMB dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"cifs"
]
],
"attrs": [
{
"variable": "server",
"label": "Server",
"description": "The server to mount the SMB share.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "path",
"label": "Path",
"description": "The path to mount the SMB share.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "username",
"label": "Username",
"description": "The username to use for the SMB share.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "password",
"label": "Password",
"description": "The password to use for the SMB share.",
"schema": {
"type": "string",
"required": true,
"private": true
}
},
{
"variable": "domain",
"label": "Domain",
"description": "The domain to use for the SMB share.",
"schema": {
"type": "string"
}
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "labels",
"label": "",
"group": "Labels Configuration",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "label",
"label": "Label",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "key",
"label": "Key",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "value",
"label": "Value",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "containers",
"label": "Containers",
"description": "Containers where the label should be applied",
"schema": {
"type": "list",
"items": [
{
"variable": "container",
"label": "Container",
"schema": {
"type": "string",
"required": true,
"enum": [
{
"value": "wg-easy",
"description": "wg-easy"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "resources",
"label": "",
"group": "Resources Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "limits",
"label": "Limits",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "cpus",
"label": "CPUs",
"description": "CPUs limit for WG Easy.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for WG Easy.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>WG-Easy</h1> <p><a href=\"https://github.com/wg-easy/wg-easy\">WG-Easy (WireGuard Easy)</a> is the easiest way to install & manage WireGuard!</p>",
"changelog": null,
"chart_metadata": {
"app_version": "14",
"capabilities": [
{
"description": "WG Easy is able to use raw sockets.",
"name": "NET_RAW"
},
{
"description": "WG Easy is able to load kernel modules.",
"name": "SYS_MODULE"
},
{
"description": "WG Easy is able to perform various network-related operations.",
"name": "NET_ADMIN"
}
],
"categories": [
"networking"
],
"changelog_url": "https://github.com/wg-easy/wg-easy/releases",
"date_added": "2024-08-07",
"description": "WG-Easy is the easiest way to install & manage WireGuard!",
"home": "https://github.com/wg-easy/wg-easy",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/wg-easy/icons/icon.png",
"keywords": [
"wireguard",
"network",
"vpn"
],
"lib_version": "2.1.16",
"lib_version_hash": "dac15686f882b9ce65b8549a3d5c0ed7bafe2df7a9028880d1a99b0ff4af1eff",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "wg-easy",
"run_as_context": [
{
"description": "WG Easy runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/wg-easy/screenshots/screenshot1.png"
],
"sources": [
"https://github.com/wg-easy/wg-easy"
],
"title": "WG Easy",
"train": "stable",
"version": "1.1.14"
}
}
}