-
Notifications
You must be signed in to change notification settings - Fork 54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to get information from wireguard container #115
Comments
Here is an example of wg-easy + wireguard_exporter: |
Thanks, I ended up mapping wg-exporter binary to linuxserver/wireguard container. |
What do you mean? Can you explain the steps you took? Edit: I solved the issue myself, by "mapping" @a-camacho meant attaching to the wireguard container network. wireguard:
container_name: wireguard
image: lscr.io/linuxserver/wireguard:latest
restart: unless-stopped
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
cap_add:
- NET_ADMIN
- SYS_MODULE
env_file:
- wireguard-peers.env
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- SERVERURL=...
- SERVERPORT=${WIREGUARD_PORT}
- INTERNAL_SUBNET=...
- ALLOWEDIPS=...
- PERSISTENTKEEPALIVE_PEERS=all
- LOG_CONFS=false
ports:
- ${WIREGUARD_PORT}:${WIREGUARD_PORT}/udp
# Exposes the exporter port here, since it uses the wireguard network stack
- ${WIREGUARD_EXPORTER_PORT}:${WIREGUARD_EXPORTER_PORT}
volumes:
- /lib/modules:/lib/modules
- wireguard-config:/config
wireguard-exporter:
image: mindflavor/prometheus-wireguard-exporter
restart: unless-stopped
container_name: wireguard-exporter
command: -a true
# This is what makes the exporter see the wireguard interfaces
network_mode: "service:wireguard"
cap_add:
- NET_ADMIN
volumes:
- wireguard-config:/config:ro
environment:
- PROMETHEUS_WIREGUARD_EXPORTER_PORT=${WIREGUARD_EXPORTER_PORT}
- PROMETHEUS_WIREGUARD_EXPORTER_CONFIG_FILE_NAMES=/config/wg_confs/wg0.conf |
Here is an example using docker compose for wg-easy. To get this to work I had to run the exporter container as root, and disable the sudo prepend. Not ideal but it worked. compose.yaml file: services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:latest
container_name: wg-easy
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1 # forward requests
- net.ipv4.conf.all.src_valid_mark=1 # Permits rp_filter to function when the fwmark is used for routing traffic in both directions
ports:
- "${CONTAINER_PORT1}:${WG_PORT}/udp" # wireguard tunnel
- "${CONTAINER_PORT2}:${PORT}/tcp" # web ui
- "${CONTAINER_PORT3}:${PROMETHEUS_WIREGUARD_EXPORTER_PORT}/tcp" # metrics
env_file:
- .env
volumes:
- ${DIRECTORY_CONFIG}:/etc/wireguard
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
wireguard-exporter:
image: mindflavor/prometheus-wireguard-exporter:latest
container_name: wireguard-exporter
network_mode: service:wg-easy
user: root:root
cap_add:
- NET_ADMIN
command: -a false
env_file:
- .env
volumes:
- ${DIRECTORY_CONFIG}:/etc/wireguard:ro
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped .env.example file:
Steps to test:
There we go. |
Hi everyone,
I am using Wireguard as a docker container on my server machine.
Is there any way to be able to deploy this container, and still get information from the containerized server ?
Or should I build a server container image, containing wireguard-exporter ?
Do you know if there is an existing image already ?
Thanks a lot.
The text was updated successfully, but these errors were encountered: