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
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)
Share your configuration