Skip to content

Bug: VPN Stability Issue with ProtonVPN #2997

Description

@KhaledMostafaME

Is this urgent?

Yes

Host OS

Synology Docker

CPU arch

x86_64

VPN service provider

ProtonVPN

What are you using to run the container

docker-compose

What is the version of Gluetun

Running version latest built on 2025-11-19T13:15:30.717Z (commit 3128454)

What's the problem 🤔

Hello Team,

I'm using gluetun with ProtonVPN WireGuard, the VPN tunnel establishes successfully and shows healthy! status initially. However, after approximately 5 minutes of stable operation, the vpn enters a continuous restart loop with health check failures. The pattern repeats indefinitely, making the vpn unsuitable for stable, long-running operations with dependent services (qBittorrent, Jellyfin, etc.).

I have been troubleshooting this issue for the past week with no success. I have tested numerous configurations, environment variables, and workarounds without achieving stable operation.

I would appreciate your support helping me to solve this issue.

Share your logs (at least 10 lines)

========================================
========================================
=============== gluetun ================
========================================
=========== Made with ❤️ by ============
======= https://github.com/qdm12 =======
========================================
========================================
Running version latest built on 2025-11-19T13:15:30.717Z (commit 3128454)
🔧 Need help? ☕ Discussion? https://github.com/qdm12/gluetun/discussions/new/choose
🐛 Bug? ✨ New feature? https://github.com/qdm12/gluetun/issues/new/choose
💻 Email? quentin.mcgaw@gmail.com
💰 Help me? https://www.paypal.me/qmcgaw https://github.com/sponsors/qdm12
2025-11-19T20:22:37+04:00 INFO [routing] default route found: interface eth0, gateway 172.20.0.1, assigned IP 172.20.0.2 and family v4
2025-11-19T20:22:37+04:00 INFO [routing] local ethernet link found: eth0
2025-11-19T20:22:37+04:00 INFO [routing] local ipnet found: 172.20.0.0/16
2025-11-19T20:22:37+04:00 INFO [firewall] enabling...
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --policy INPUT DROP
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --policy OUTPUT DROP
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --policy FORWARD DROP
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/ip6tables-legacy --policy INPUT DROP
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/ip6tables-legacy --policy OUTPUT DROP
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/ip6tables-legacy --policy FORWARD DROP
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --append INPUT -i lo -j ACCEPT
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/ip6tables-legacy --append INPUT -i lo -j ACCEPT
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --append OUTPUT -o lo -j ACCEPT
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/ip6tables-legacy --append OUTPUT -o lo -j ACCEPT
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --append OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/ip6tables-legacy --append OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --append INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/ip6tables-legacy --append INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --append OUTPUT -o eth0 -s 172.20.0.2 -d 172.20.0.0/16 -j ACCEPT
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/ip6tables-legacy --append OUTPUT -o eth0 -d ff02::1:ff00:0/104 -j ACCEPT
2025-11-19T20:22:37+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --append INPUT -i eth0 -d 172.20.0.0/16 -j ACCEPT
2025-11-19T20:22:37+04:00 INFO [firewall] enabled successfully
2025-11-19T20:22:38+04:00 INFO [storage] merging by most recent 20962 hardcoded servers and 20962 servers read from /gluetun/servers.json
2025-11-19T20:22:38+04:00 DEBUG [netlink] IPv6 is not supported after searching 0 routes
2025-11-19T20:22:38+04:00 INFO Alpine version: 3.22.2
2025-11-19T20:22:38+04:00 INFO OpenVPN 2.5 version: 2.5.10
2025-11-19T20:22:38+04:00 INFO OpenVPN 2.6 version: 2.6.14
2025-11-19T20:22:38+04:00 INFO IPtables version: v1.8.11
2025-11-19T20:22:38+04:00 INFO Settings summary:
├── VPN settings:
|   ├── VPN provider settings:
|   |   ├── Name: protonvpn
|   |   ├── Server selection settings:
|   |   |   ├── VPN type: wireguard
|   |   |   ├── Countries: united arab emirates
|   |   |   ├── Port forwarding only servers: yes
|   |   |   └── Wireguard selection settings:
|   |   └── Automatic port forwarding settings:
|   |       ├── Redirection listening port: disabled
|   |       ├── Use code for provider: protonvpn
|   |       ├── Forwarded port file path: /tmp/gluetun/forwarded_port
|   |       ├── Forwarded port up command: /bin/sh -c 'wget -O- --retry-connrefused --post-data "json={\"listen_port\":{{PORTS}}}" http://127.0.0.1:8090/api/v2/app/setPreferences 2>&1'
|   |       └── Forwarded port down command: /bin/sh -c 'wget -O- --retry-connrefused --post-data "json={\"listen_port\":123}" http://127.0.0.1:8090/api/v2/app/setPreferences 2>&1'
|   └── Wireguard settings:
|       ├── Private key: aCg...Hs=
|       ├── Interface addresses:
|       |   └── 10.2.0.2/32
|       ├── Allowed IPs:
|       |   ├── 0.0.0.0/0
|       |   └── ::/0
|       ├── Network interface: tun0
|       |   └── MTU: 1320
|       └── Implementation: kernelspace
├── DNS settings:
|   ├── Keep existing nameserver(s): no
|   ├── DNS server address to use: 8.8.8.8
|   ├── DNS forwarder server enabled: yes
|   ├── Upstream resolver type: dot
|   ├── Upstream resolvers:
|   |   └── cloudflare
|   ├── Caching: yes
|   ├── IPv6: no
|   ├── Update period: every 24h0m0s
|   └── DNS filtering settings:
|       ├── Block malicious: yes
|       ├── Block ads: no
|       └── Block surveillance: no
├── Firewall settings:
|   ├── Enabled: yes
|   └── Outbound subnets:
|       ├── 192.168.1.0/24
|       ├── 172.20.0.0/16
|       ├── 192.168.70.0/24
|       └── 172.19.0.0/24
├── Log settings:
|   └── Log level: debug
├── Health settings:
|   ├── Server listening address: 127.0.0.1:9999
|   ├── Target address: 8.8.8.8:443
|   ├── ICMP target IP: 8.8.8.8
|   └── Restart VPN on healthcheck failure: yes
├── Shadowsocks server settings:
|   └── Enabled: no
├── HTTP proxy settings:
|   └── Enabled: no
├── Control server settings:
|   ├── Listening address: :8000
|   ├── Logging: yes
|   └── Authentication file path: /gluetun/auth/config.toml
├── Storage settings:
|   └── Filepath: /gluetun/servers.json
├── OS Alpine settings:
|   ├── Process UID: 1032
|   ├── Process GID: 65536
|   └── Timezone: asia/dubai
├── Public IP settings:
|   ├── IP file path: /tmp/gluetun/ip
|   ├── Public IP data base API: ipinfo
|   └── Public IP data backup APIs:
|       ├── ifconfigco
|       ├── ip2location
|       └── cloudflare
├── Server data updater settings:
|   ├── Update period: 1h0m0s
|   ├── DNS address: 1.1.1.1:53
|   ├── Minimum ratio: 0.8
|   ├── Providers to update: protonvpn
|   ├── Proton API email: khaledmostafame@gmail.com
|   └── Proton API password: [set]
└── Version settings:
    └── Enabled: yes
2025-11-19T20:22:38+04:00 WARN DNS address is set to 8.8.8.8 so the local forwarding DNS server will not be used. The default value changed to 127.0.0.1 so it uses the internal DNS server. If this server fails to start, the IPv4 address of the first plaintext DNS server corresponding to the first DNS provider chosen is used.
2025-11-19T20:22:38+04:00 INFO [routing] default route found: interface eth0, gateway 172.20.0.1, assigned IP 172.20.0.2 and family v4
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -4 rule list
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -6 rule list
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -f 0 rule add from 172.20.0.2/32 lookup 200 pref 100
2025-11-19T20:22:38+04:00 INFO [routing] adding route for 0.0.0.0/0
2025-11-19T20:22:38+04:00 DEBUG [routing] ip route replace 0.0.0.0/0 via 172.20.0.1 dev eth0 table 200
2025-11-19T20:22:38+04:00 INFO [firewall] setting allowed subnets...
2025-11-19T20:22:38+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --append OUTPUT -o eth0 -s 172.20.0.2 -d 192.168.1.0/24 -j ACCEPT
2025-11-19T20:22:38+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --append OUTPUT -o eth0 -s 172.20.0.2 -d 172.20.0.0/16 -j ACCEPT
2025-11-19T20:22:38+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --append OUTPUT -o eth0 -s 172.20.0.2 -d 192.168.70.0/24 -j ACCEPT
2025-11-19T20:22:38+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --append OUTPUT -o eth0 -s 172.20.0.2 -d 172.19.0.0/24 -j ACCEPT
2025-11-19T20:22:38+04:00 INFO [routing] default route found: interface eth0, gateway 172.20.0.1, assigned IP 172.20.0.2 and family v4
2025-11-19T20:22:38+04:00 INFO [routing] adding route for 192.168.1.0/24
2025-11-19T20:22:38+04:00 DEBUG [routing] ip route replace 192.168.1.0/24 via 172.20.0.1 dev eth0 table 199
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -4 rule list
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -6 rule list
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -f 0 rule add to 192.168.1.0/24 lookup 199 pref 99
2025-11-19T20:22:38+04:00 INFO [routing] adding route for 172.20.0.0/16
2025-11-19T20:22:38+04:00 DEBUG [routing] ip route replace 172.20.0.0/16 via 172.20.0.1 dev eth0 table 199
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -4 rule list
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -6 rule list
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -f 0 rule add to 172.20.0.0/16 lookup 199 pref 99
2025-11-19T20:22:38+04:00 INFO [routing] adding route for 192.168.70.0/24
2025-11-19T20:22:38+04:00 DEBUG [routing] ip route replace 192.168.70.0/24 via 172.20.0.1 dev eth0 table 199
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -4 rule list
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -6 rule list
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -f 0 rule add to 192.168.70.0/24 lookup 199 pref 99
2025-11-19T20:22:38+04:00 INFO [routing] adding route for 172.19.0.0/24
2025-11-19T20:22:38+04:00 DEBUG [routing] ip route replace 172.19.0.0/24 via 172.20.0.1 dev eth0 table 199
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -4 rule list
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -6 rule list
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -f 0 rule add to 172.19.0.0/24 lookup 199 pref 99
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -4 rule list
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -6 rule list
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -f 0 rule add to 172.20.0.0/16 lookup 254 pref 98
2025-11-19T20:22:38+04:00 INFO [dns] filter updated: 0 hostnames, 0 IPs, 0 IP prefixes blocked
2025-11-19T20:22:38+04:00 INFO [dns] using plaintext DNS at address 8.8.8.8
2025-11-19T20:22:38+04:00 INFO [healthcheck] listening on 127.0.0.1:9999
2025-11-19T20:22:38+04:00 INFO [http server] http server listening on [::]:8000
2025-11-19T20:22:38+04:00 DEBUG [wireguard] Wireguard server public key: fHSz7nXioLz6qt+AoapT4ylVEkHTYpafdELZUmg4W3I=
2025-11-19T20:22:38+04:00 DEBUG [wireguard] Wireguard client private key: aCg...Hs=
2025-11-19T20:22:38+04:00 DEBUG [wireguard] Wireguard pre-shared key: [not set]
2025-11-19T20:22:38+04:00 INFO [firewall] allowing VPN connection...
2025-11-19T20:22:38+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --append OUTPUT -d 178.249.212.162 -o eth0 -p udp -m udp --dport 51820 -j ACCEPT
2025-11-19T20:22:38+04:00 DEBUG [firewall] /usr/sbin/iptables-legacy --append OUTPUT -o tun0 -j ACCEPT
2025-11-19T20:22:38+04:00 DEBUG [firewall] /usr/sbin/ip6tables-legacy --append OUTPUT -o tun0 -j ACCEPT
2025-11-19T20:22:38+04:00 INFO [wireguard] Connecting to 178.249.212.162:51820
2025-11-19T20:22:38+04:00 DEBUG [netlink] ip -f inet rule add lookup 51820 pref 101
2025-11-19T20:22:38+04:00 INFO [wireguard] Wireguard setup is complete. Note Wireguard is a silent protocol and it may or may not work, without giving any error message. Typically i/o timeout errors indicate the Wireguard connection is not working.
2025-11-19T20:22:44+04:00 WARN [vpn] restarting VPN because it failed to pass the healthcheck: startup check: dialing: dial tcp4 8.8.8.8:443: i/o timeout
2025-11-19T20:22:44+04:00 INFO [vpn] 👉 See https://github.com/qdm12/gluetun-wiki/blob/main/faq/healthcheck.md
2025-11-19T20:22:44+04:00 INFO [vpn] DO NOT OPEN AN ISSUE UNLESS YOU HAVE READ AND TRIED EVERY POSSIBLE SOLUTION
2025-11-19T20:22:44+04:00 INFO [vpn] stopping
2025-11-19T20:22:44+04:00 DEBUG [wireguard] closing controller client...
2025-11-19T20:22:44+04:00 DEBUG [wireguard] removing IPv4 rule...
2025-11-19T20:22:44+04:00 DEBUG [netlink] ip -f inet rule del lookup 51820 pref 101
2025-11-19T20:22:44+04:00 DEBUG [wireguard] shutting down link...
2025-11-19T20:22:44+04:00 DEBUG [wireguard] deleting link...
2025-11-19T20:22:45+04:00 INFO [vpn] starting
2025-11-19T20:22:45+04:00 DEBUG [wireguard] Wireguard server public key: fHSz7nXioLz6qt+AoapT4ylVEkHTYpafdELZUmg4W3I=
2025-11-19T20:22:45+04:00 DEBUG [wireguard] Wireguard client private key: aCg...Hs=
2025-11-19T20:22:45+04:00 DEBUG [wireguard] Wireguard pre-shared key: [not set]
2025-11-19T20:22:45+04:00 INFO [firewall] allowing VPN connection...
2025-11-19T20:22:45+04:00 INFO [wireguard] Connecting to 178.249.212.162:51820
2025-11-19T20:22:45+04:00 DEBUG [netlink] ip -f inet rule add lookup 51820 pref 101
2025-11-19T20:22:45+04:00 INFO [wireguard] Wireguard setup is complete. Note Wireguard is a silent protocol and it may or may not work, without giving any error message. Typically i/o timeout errors indicate the Wireguard connection is not working.
2025-11-19T20:22:51+04:00 WARN [vpn] restarting VPN because it failed to pass the healthcheck: startup check: dialing: dial tcp4 8.8.8.8:443: i/o timeout
2025-11-19T20:22:51+04:00 INFO [vpn] 👉 See https://github.com/qdm12/gluetun-wiki/blob/main/faq/healthcheck.md
2025-11-19T20:22:51+04:00 INFO [vpn] DO NOT OPEN AN ISSUE UNLESS YOU HAVE READ AND TRIED EVERY POSSIBLE SOLUTION
2025-11-19T20:22:51+04:00 INFO [vpn] stopping
2025-11-19T20:22:51+04:00 DEBUG [wireguard] closing controller client...
2025-11-19T20:22:51+04:00 DEBUG [wireguard] removing IPv4 rule...
2025-11-19T20:22:51+04:00 DEBUG [netlink] ip -f inet rule del lookup 51820 pref 101
2025-11-19T20:22:51+04:00 DEBUG [wireguard] shutting down link...
2025-11-19T20:22:51+04:00 DEBUG [wireguard] deleting link...
2025-11-19T20:22:51+04:00 INFO [vpn] starting
2025-11-19T20:22:51+04:00 DEBUG [wireguard] Wireguard server public key: fHSz7nXioLz6qt+AoapT4ylVEkHTYpafdELZUmg4W3I=
2025-11-19T20:22:51+04:00 DEBUG [wireguard] Wireguard client private key: aCg...Hs=
2025-11-19T20:22:51+04:00 DEBUG [wireguard] Wireguard pre-shared key: [not set]
2025-11-19T20:22:51+04:00 INFO [firewall] allowing VPN connection...
2025-11-19T20:22:51+04:00 INFO [wireguard] Connecting to 178.249.212.162:51820
2025-11-19T20:22:51+04:00 DEBUG [netlink] ip -f inet rule add lookup 51820 pref 101
2025-11-19T20:22:51+04:00 INFO [wireguard] Wireguard setup is complete. Note Wireguard is a silent protocol and it may or may not work, without giving any error message. Typically i/o timeout errors indicate the Wireguard connection is not working.
2025-11-19T20:22:57+04:00 WARN [vpn] restarting VPN because it failed to pass the healthcheck: startup check: dialing: dial tcp4 8.8.8.8:443: i/o timeout
2025-11-19T20:22:57+04:00 INFO [vpn] 👉 See https://github.com/qdm12/gluetun-wiki/blob/main/faq/healthcheck.md
2025-11-19T20:22:57+04:00 INFO [vpn] DO NOT OPEN AN ISSUE UNLESS YOU HAVE READ AND TRIED EVERY POSSIBLE SOLUTION
2025-11-19T20:22:57+04:00 INFO [vpn] stopping
2025-11-19T20:22:57+04:00 DEBUG [wireguard] closing controller client...
2025-11-19T20:22:57+04:00 DEBUG [wireguard] removing IPv4 rule...
2025-11-19T20:22:57+04:00 DEBUG [netlink] ip -f inet rule del lookup 51820 pref 101
2025-11-19T20:22:57+04:00 DEBUG [wireguard] shutting down link...
2025-11-19T20:22:57+04:00 DEBUG [wireguard] deleting link...
2025-11-19T20:22:57+04:00 INFO [vpn] starting
2025-11-19T20:22:57+04:00 DEBUG [wireguard] Wireguard server public key: fHSz7nXioLz6qt+AoapT4ylVEkHTYpafdELZUmg4W3I=
2025-11-19T20:22:57+04:00 DEBUG [wireguard] Wireguard client private key: aCg...Hs=
2025-11-19T20:22:57+04:00 DEBUG [wireguard] Wireguard pre-shared key: [not set]
2025-11-19T20:22:57+04:00 INFO [firewall] allowing VPN connection...
2025-11-19T20:22:57+04:00 INFO [wireguard] Connecting to 178.249.212.162:51820
2025-11-19T20:22:57+04:00 DEBUG [netlink] ip -f inet rule add lookup 51820 pref 101
2025-11-19T20:22:57+04:00 INFO [wireguard] Wireguard setup is complete. Note Wireguard is a silent protocol and it may or may not work, without giving any error message. Typically i/o timeout errors indicate the Wireguard connection is not working.
2025-11-19T20:23:03+04:00 WARN [vpn] restarting VPN because it failed to pass the healthcheck: startup check: dialing: dial tcp4 8.8.8.8:443: i/o timeout
2025-11-19T20:23:03+04:00 INFO [vpn] 👉 See https://github.com/qdm12/gluetun-wiki/blob/main/faq/healthcheck.md
2025-11-19T20:23:03+04:00 INFO [vpn] DO NOT OPEN AN ISSUE UNLESS YOU HAVE READ AND TRIED EVERY POSSIBLE SOLUTION
2025-11-19T20:23:03+04:00 INFO [vpn] stopping
2025-11-19T20:23:03+04:00 DEBUG [wireguard] closing controller client...
2025-11-19T20:23:03+04:00 DEBUG [wireguard] removing IPv4 rule...
2025-11-19T20:23:03+04:00 DEBUG [netlink] ip -f inet rule del lookup 51820 pref 101
2025-11-19T20:23:03+04:00 DEBUG [wireguard] shutting down link...
2025-11-19T20:23:03+04:00 DEBUG [wireguard] deleting link...
2025-11-19T20:23:03+04:00 INFO [vpn] starting
2025-11-19T20:23:03+04:00 DEBUG [wireguard] Wireguard server public key: fHSz7nXioLz6qt+AoapT4ylVEkHTYpafdELZUmg4W3I=
2025-11-19T20:23:03+04:00 DEBUG [wireguard] Wireguard client private key: aCg...Hs=
2025-11-19T20:23:03+04:00 DEBUG [wireguard] Wireguard pre-shared key: [not set]
2025-11-19T20:23:03+04:00 INFO [firewall] allowing VPN connection...
2025-11-19T20:23:03+04:00 INFO [wireguard] Connecting to 178.249.212.162:51820
2025-11-19T20:23:03+04:00 DEBUG [netlink] ip -f inet rule add lookup 51820 pref 101
2025-11-19T20:23:03+04:00 INFO [wireguard] Wireguard setup is complete. Note Wireguard is a silent protocol and it may or may not work, without giving any error message. Typically i/o timeout errors indicate the Wireguard connection is not working.
2025-11-19T20:23:09+04:00 WARN [vpn] restarting VPN because it failed to pass the healthcheck: startup check: dialing: dial tcp4 8.8.8.8:443: i/o timeout
2025-11-19T20:23:09+04:00 INFO [vpn] 👉 See https://github.com/qdm12/gluetun-wiki/blob/main/faq/healthcheck.md
2025-11-19T20:23:09+04:00 INFO [vpn] DO NOT OPEN AN ISSUE UNLESS YOU HAVE READ AND TRIED EVERY POSSIBLE SOLUTION
2025-11-19T20:23:09+04:00 INFO [vpn] stopping
2025-11-19T20:23:09+04:00 DEBUG [wireguard] closing controller client...
2025-11-19T20:23:09+04:00 DEBUG [wireguard] removing IPv4 rule...
2025-11-19T20:23:09+04:00 DEBUG [netlink] ip -f inet rule del lookup 51820 pref 101
2025-11-19T20:23:09+04:00 DEBUG [wireguard] shutting down link...
2025-11-19T20:23:09+04:00 DEBUG [wireguard] deleting link...
2025-11-19T20:23:09+04:00 INFO [vpn] starting
2025-11-19T20:23:09+04:00 DEBUG [wireguard] Wireguard server public key: fHSz7nXioLz6qt+AoapT4ylVEkHTYpafdELZUmg4W3I=
2025-11-19T20:23:09+04:00 DEBUG [wireguard] Wireguard client private key: aCg...Hs=
2025-11-19T20:23:09+04:00 DEBUG [wireguard] Wireguard pre-shared key: [not set]
2025-11-19T20:23:09+04:00 INFO [firewall] allowing VPN connection...
2025-11-19T20:23:09+04:00 INFO [wireguard] Connecting to 178.249.212.162:51820
2025-11-19T20:23:09+04:00 DEBUG [netlink] ip -f inet rule add lookup 51820 pref 101
2025-11-19T20:23:09+04:00 INFO [wireguard] Wireguard setup is complete. Note Wireguard is a silent protocol and it may or may not work, without giving any error message. Typically i/o timeout errors indicate the Wireguard connection is not working.
2025-11-19T20:23:15+04:00 WARN [vpn] restarting VPN because it failed to pass the healthcheck: startup check: dialing: dial tcp4 8.8.8.8:443: i/o timeout
2025-11-19T20:23:15+04:00 INFO [vpn] 👉 See https://github.com/qdm12/gluetun-wiki/blob/main/faq/healthcheck.md

Share your configuration

version: '3.8'

services:
  gluetun:
    image: qmcgaw/gluetun:latest
    container_name: gluetun
    cap_add:
      - SYS_MODULE
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    network_mode: vpn-bridge
    restart: unless-stopped
    labels:
      - com.centurylinklabs.watchtower.enable=false
    security_opt:
      - no-new-privileges:true

    ports:
      - 8090:8090/tcp   # qBittorrent Web UI
      - 8091:8091/tcp   # qBittorrent Private (if used)
      - 8080:80/tcp # Speedtest Tracker
      - 8443:443/tcp # Speedtest Tracker HTTPS 
    environment:
      - PUID=1032
      - PGID=65536
      - TZ=Asia/Dubai

      # VPN config
      - LOG_LEVEL=debug
      - VPN_SERVICE_PROVIDER=protonvpn
      - VPN_TYPE=wireguard
      - VPN_INTERFACE=tun0
      - SERVER_COUNTRIES=United Arab Emirates
      - WIREGUARD_IMPLEMENTATION=kernelspace
      - WIREGUARD_PRIVATE_KEY=xxxxxxxxxxxxxxxx
      - VPN_PORT_FORWARDING=on
      - VPN_PORT_FORWARDING_PROVIDER=protonvpn
      - PORT_FORWARD_ONLY=on
      - VPN_PORT_FORWARDING_UP_COMMAND=/bin/sh -c 'wget -O- --retry-connrefused --post-data "json={\"listen_port\":{{PORTS}}}" http://127.0.0.1:8090/api/v2/app/setPreferences 2>&1'
      - VPN_PORT_FORWARDING_DOWN_COMMAND=/bin/sh -c 'wget -O- --retry-connrefused --post-data "json={\"listen_port\":123}" http://127.0.0.1:8090/api/v2/app/setPreferences 2>&1'

      - DNS_SERVER=on
      - DNS_ADDRESS=8.8.8.8
      - UPDATER_PROTONVPN_EMAIL=xxxxxxxx@gmail.com
      - UPDATER_PROTONVPN_PASSWORD=xxxxxxxxxxxxx

      - HEALTH_TARGET_ADDRESS=8.8.8.8:443
      - HEALTH_ICMP_TARGET_IP=8.8.8.8

      - FIREWALL_OUTBOUND_SUBNETS=192.168.1.0/24,172.20.0.0/16,192.168.70.0/24,172.19.0.0/24

      - UPDATER_PERIOD=1h
    
    volumes:
      - ./gluetun:/gluetun
      - /lib/modules:/lib/modules:ro

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions