v3.10.0
passteque/gluetunv3.10.0Jan 2, 2021by qdm12
AI Summary
The 'Big December Refactor' introducing Docker secrets support, faster healthchecks, and renaming several environment variables for clarity and compatibility.
Key Highlights
- Introduced Docker secrets support.
- Faster healthcheck implementation.
- Major environment variable renames (UID->PUID, USER->OPENVPN_USER, etc.).
- Removed decommissioned SecureDNS DOT provider.
- Removed undocumented CLIENT_KEY environment variable.
Breaking Changes
- Remove undocumented `CLIENT_KEY` environment variable (for Cyberghost only).
- Remove decommissioned SecureDNS DOT provider.
New Features
- Docker secrets support.
- Use `qmcgaw/gluetun` Docker image name.
- Faster healthcheck, container healthy as soon as it connects.
- Update PIA servers using their `v5` API.
- Two-fold increasing backoff sleep times on crashes.
Full Release Notes
## Features - Docker secrets - `qmcgaw/gluetun` Docker image name - Faster healthcheck, the container should be healthy as soon as it connects almost - Change redundant `dns over tls: DNS over TLS ready` to `dns over tls: ready` - Update PIA servers using their `v5` API - Two-fold increasing backoff sleep times on crashes for every subprocess/thread. - PureVPN server information updated ## Bug fixes - PureVPN updater fixed - Plaintext DNS fix - Privado settings logging fixed - Privado server selection - Healthcheck uses DNS over TLS instead of default resolver (maybe a bug fix) - PublicIP loop exit bug fixed - Updater loop exit bug fixed - Updater loop stop action deadlock fixed - Program exit bug when openvpn crashes - servers.json merging with different versions - DNS SetSettings missing mutex unlocking - Do not fail if servers.json is emty ## Changes ### Breaking - Remove undocumented `CLIENT_KEY` environment variable (for Cyberghost only) - Remove decommissioned SecureDNS DOT provider - ### Non breaking - Rename `UID` and `GID` to `PUID` and `PGID` so that they don't conflict with already set variables (but retrocompatible) - Rename `USER` to `OPENVPN_USER` (but retrocompatiblity maintained) - Rename `PASSWORD` to `OPENVPN_PASSWORD` (but retrocompatiblity maintained) - Rename `HOSTNAME` to `SERVER_HOSTNAME` (but retrocompatiblity maintained) to avoid conflict with OS-set HOSTNAME variable ## Documentation - Most of the readme is moved to the Wiki (running out of the 25KB allowed!) - Remove videos section (outdated) - Add quick links section for help and support - Simplify support section - More badges and metadata - Update Docker image labels ## Code maintenance ### Go code - Updater: Ovpn host extraction reworked - HTTP proxy and Shadowsocks proxy loops reworked to be more resilient and 'REST' oriented - Custom OS package for OS operations: filesystem, environment variables, users, etc. - Stream oriented JSON encoding and decoding for files and HTTP requests/responses. - Use native `http.Client` instead of custom client for better compatibility across repositories / easier reading for new devs - Unix abstraction package (to create the TUN device) - CLI interface abstraction - Remove unneeded defaultInterface in Shadowsocks - Updater loop waitgroup - Params package: use built-in Unset() option instead of os.Unsetenv function - Unit tests: remove unneeded `.Times(1)` and `ctrl.Finish()` - Upgrade dependencies ### Dockerfile - Upgrade golangci-lint to v1.34.1 ### CI - Microbadger hooks use `continue-on-error: true` in CI - Upgrade docker hub readme sync workflow - Upgrade buildx from 1 to v3