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