mirror of
https://github.com/ngoduykhanh/wireguard-ui.git
synced 2025-04-18 19:49:30 +03:00
Add docker-compose examples (#339)
This commit is contained in:
parent
7b848c841f
commit
b8341dd36f
7 changed files with 151 additions and 12 deletions
|
@ -25,3 +25,6 @@ docker-compose*
|
||||||
db
|
db
|
||||||
assets
|
assets
|
||||||
wireguard-ui
|
wireguard-ui
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
examples
|
||||||
|
|
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -21,3 +21,7 @@ rice-box.go
|
||||||
# IDEs
|
# IDEs
|
||||||
.vscode
|
.vscode
|
||||||
.idea
|
.idea
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
examples/docker-compose/config
|
||||||
|
examples/docker-compose/db
|
||||||
|
|
14
README.md
14
README.md
|
@ -27,23 +27,13 @@ Download the binary file from the release page and run it directly on the host m
|
||||||
|
|
||||||
### Using docker compose
|
### Using docker compose
|
||||||
|
|
||||||
You can take a look at this example
|
The [examples/docker-compose](examples/docker-compose) folder contains example docker-compose files.
|
||||||
of [docker-compose.yml](https://github.com/ngoduykhanh/wireguard-ui/blob/master/docker-compose.yaml). Please adjust
|
Choose the example which fits you the most, adjust the configuration for your needs, then run it like below:
|
||||||
volume mount points to work with your setup. Then run it like below:
|
|
||||||
|
|
||||||
```
|
```
|
||||||
docker-compose up
|
docker-compose up
|
||||||
```
|
```
|
||||||
|
|
||||||
Note:
|
|
||||||
|
|
||||||
- There is a Status page that needs docker to be able to access the network of the host in order to read the
|
|
||||||
wireguard interface stats. See the `cap_add` and `network_mode` options on the docker-compose.yaml
|
|
||||||
- Similarly, the `WGUI_MANAGE_START` and `WGUI_MANAGE_RESTART` settings need the same access, in order to restart the
|
|
||||||
wireguard interface.
|
|
||||||
- Because the `network_mode` is set to `host`, we don't need to specify the exposed ports. The app will listen on
|
|
||||||
port `5000` by default.
|
|
||||||
|
|
||||||
## Environment Variables
|
## Environment Variables
|
||||||
|
|
||||||
| Variable | Description | Default |
|
| Variable | Description | Default |
|
||||||
|
|
30
examples/docker-compose/README.md
Normal file
30
examples/docker-compose/README.md
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
### Kernel Module
|
||||||
|
|
||||||
|
Depending on if the Wireguard kernel module is available on your system you have more or less choices which example to use.
|
||||||
|
|
||||||
|
You can check if the kernel modules are available via the following command:
|
||||||
|
```shell
|
||||||
|
modprobe wireguard
|
||||||
|
```
|
||||||
|
|
||||||
|
If the command exits successfully and doesn't print an error the kernel modules are available.
|
||||||
|
If it does error, you either have to install them manually (or activate if deactivated) or use an userspace implementation.
|
||||||
|
For an example of an userspace implementation, see _borigtun_.
|
||||||
|
|
||||||
|
### Credentials
|
||||||
|
|
||||||
|
Username and password for all examples is `admin` by default.
|
||||||
|
For security reasons it's highly recommended to change them before the first startup.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
- **[system](system.yml)**
|
||||||
|
|
||||||
|
If you have Wireguard already installed on your system and only want to run the UI in docker this might fit the most.
|
||||||
|
- **[linuxserver](linuxserver.yml)**
|
||||||
|
|
||||||
|
If you have the Wireguard kernel modules installed (included in the mainline kernel since version 5.6) but want it running inside of docker, this might fit the most.
|
||||||
|
- **[boringtun](boringtun.yml)**
|
||||||
|
|
||||||
|
If Wireguard kernel modules are not available, you can switch to an userspace implementation like [boringtun](https://github.com/cloudflare/boringtun).
|
43
examples/docker-compose/boringtun.yml
Normal file
43
examples/docker-compose/boringtun.yml
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
boringtun:
|
||||||
|
image: ghcr.io/ntkme/boringtun:edge
|
||||||
|
command:
|
||||||
|
- wg0
|
||||||
|
container_name: boringtun
|
||||||
|
# use the network of the 'wireguard-ui' service. this enables to show active clients in the status page
|
||||||
|
network_mode: service:wireguard-ui
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
volumes:
|
||||||
|
- /dev/net/tun:/dev/net/tun
|
||||||
|
- ./config:/etc/wireguard
|
||||||
|
|
||||||
|
wireguard-ui:
|
||||||
|
image: ngoduykhanh/wireguard-ui:latest
|
||||||
|
container_name: wireguard-ui
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
environment:
|
||||||
|
- SENDGRID_API_KEY
|
||||||
|
- EMAIL_FROM_ADDRESS
|
||||||
|
- EMAIL_FROM_NAME
|
||||||
|
- SESSION_SECRET
|
||||||
|
- WGUI_USERNAME=admin
|
||||||
|
- WGUI_PASSWORD=admin
|
||||||
|
- WG_CONF_TEMPLATE
|
||||||
|
- WGUI_MANAGE_START=true
|
||||||
|
- WGUI_MANAGE_RESTART=true
|
||||||
|
logging:
|
||||||
|
driver: json-file
|
||||||
|
options:
|
||||||
|
max-size: 50m
|
||||||
|
volumes:
|
||||||
|
- ./db:/app/db
|
||||||
|
- ./config:/etc/wireguard
|
||||||
|
ports:
|
||||||
|
# port for wireguard-ui
|
||||||
|
- "5000:5000"
|
||||||
|
# port of the wireguard server. this must be set here as the `boringtun` container joins the network of this container and hasn't its own network over which it could publish the ports
|
||||||
|
- "51820:51820/udp"
|
42
examples/docker-compose/linuxserver.yml
Normal file
42
examples/docker-compose/linuxserver.yml
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
wireguard:
|
||||||
|
image: linuxserver/wireguard:latest
|
||||||
|
container_name: wireguard
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
volumes:
|
||||||
|
- ./config:/config
|
||||||
|
ports:
|
||||||
|
# port for wireguard-ui. this must be set here as the `wireguard-ui` container joins the network of this container and hasn't its own network over which it could publish the ports
|
||||||
|
- "5000:5000"
|
||||||
|
# port of the wireguard server
|
||||||
|
- "51820:51820/udp"
|
||||||
|
|
||||||
|
wireguard-ui:
|
||||||
|
image: ngoduykhanh/wireguard-ui:latest
|
||||||
|
container_name: wireguard-ui
|
||||||
|
depends_on:
|
||||||
|
- wireguard
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
# use the network of the 'wireguard' service. this enables to show active clients in the status page
|
||||||
|
network_mode: service:wireguard
|
||||||
|
environment:
|
||||||
|
- SENDGRID_API_KEY
|
||||||
|
- EMAIL_FROM_ADDRESS
|
||||||
|
- EMAIL_FROM_NAME
|
||||||
|
- SESSION_SECRET
|
||||||
|
- WGUI_USERNAME=admin
|
||||||
|
- WGUI_PASSWORD=admin
|
||||||
|
- WG_CONF_TEMPLATE
|
||||||
|
- WGUI_MANAGE_START=true
|
||||||
|
- WGUI_MANAGE_RESTART=true
|
||||||
|
logging:
|
||||||
|
driver: json-file
|
||||||
|
options:
|
||||||
|
max-size: 50m
|
||||||
|
volumes:
|
||||||
|
- ./db:/app/db
|
||||||
|
- ./config:/etc/wireguard
|
27
examples/docker-compose/system.yml
Normal file
27
examples/docker-compose/system.yml
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
wireguard-ui:
|
||||||
|
image: ngoduykhanh/wireguard-ui:latest
|
||||||
|
container_name: wireguard-ui
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
# required to show active clients. with this set, you don't need to expose the ui port (5000) anymore
|
||||||
|
network_mode: host
|
||||||
|
environment:
|
||||||
|
- SENDGRID_API_KEY
|
||||||
|
- EMAIL_FROM_ADDRESS
|
||||||
|
- EMAIL_FROM_NAME
|
||||||
|
- SESSION_SECRET
|
||||||
|
- WGUI_USERNAME=admin
|
||||||
|
- WGUI_PASSWORD=admin
|
||||||
|
- WG_CONF_TEMPLATE
|
||||||
|
- WGUI_MANAGE_START=false
|
||||||
|
- WGUI_MANAGE_RESTART=false
|
||||||
|
logging:
|
||||||
|
driver: json-file
|
||||||
|
options:
|
||||||
|
max-size: 50m
|
||||||
|
volumes:
|
||||||
|
- ./db:/app/db
|
||||||
|
- /etc/wireguard:/etc/wireguard
|
Loading…
Add table
Reference in a new issue