Update README and rotate script to clarify container restart order and improve handling of additional restart containers
Build and Push Docker Images / build-and-push (push) Successful in 39s
Build and Push Docker Images / build-and-push (push) Successful in 39s
This commit is contained in:
@@ -31,8 +31,8 @@ docker run --rm --entrypoint pia-wg-config bramkel/gluetun-pia-wireguard-rotator
|
|||||||
|
|
||||||
| Variable | Default | Description |
|
| Variable | Default | Description |
|
||||||
|----------|---------|-------------|
|
|----------|---------|-------------|
|
||||||
| `RESTART_CONTAINERS` | — | CSV of JSON-array met containers om te herstarten, **in volgorde** (gluetun eerst, daarna sidecars). Voorbeeld: `m3u-filter-vpn,m3u-editor,xtream-proxy` |
|
| `RESTART_CONTAINERS` | — | CSV of JSON-array met **extra** containers om te herstarten na gluetun (sidecars). Voorbeeld: `SabNZBd,qbittorrent,Spotweb` |
|
||||||
| `GLUETUN_CONTAINER` | `m3u-filter-vpn` | Alleen gebruikt als `RESTART_CONTAINERS` leeg is |
|
| `GLUETUN_CONTAINER` | `m3u-filter-vpn` | Gluetun-container; wordt **altijd als eerste** herstart |
|
||||||
| `WG_CONFIG_PATH` | `/config/wireguard/wg0.conf` | Pad waar `wg0.conf` wordt geschreven |
|
| `WG_CONFIG_PATH` | `/config/wireguard/wg0.conf` | Pad waar `wg0.conf` wordt geschreven |
|
||||||
| `ROTATOR_STATE_PATH` | `/config/rotator-state.json` | Laatste rotatie-metadata |
|
| `ROTATOR_STATE_PATH` | `/config/rotator-state.json` | Laatste rotatie-metadata |
|
||||||
| `ROTATE_AT` | `03:00` | Dagelijks rotatietijdstip (`HH:MM`, in `TZ`) |
|
| `ROTATE_AT` | `03:00` | Dagelijks rotatietijdstip (`HH:MM`, in `TZ`) |
|
||||||
@@ -59,7 +59,8 @@ Zie [`docker-compose.example.yml`](docker-compose.example.yml) voor een volledig
|
|||||||
- PIA_USER=${PIA_USER}
|
- PIA_USER=${PIA_USER}
|
||||||
- PIA_PASS=${PIA_PASSWORD}
|
- PIA_PASS=${PIA_PASSWORD}
|
||||||
- PIA_REGIONS=netherlands,france,belgium
|
- PIA_REGIONS=netherlands,france,belgium
|
||||||
- RESTART_CONTAINERS=m3u-filter-vpn,m3u-editor,xtream-proxy
|
- GLUETUN_CONTAINER=downloaders-vpn
|
||||||
|
- RESTART_CONTAINERS=SabNZBd,qbittorrent,nzbhydra2,Spotweb
|
||||||
- ROTATE_AT=03:00
|
- ROTATE_AT=03:00
|
||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
@@ -100,9 +101,9 @@ Optioneel host-`.env`-keys (`WIREGUARD_*`) opruimen als die niet meer gebruikt w
|
|||||||
1. Bij start: direct roteren (nieuwe config + container-restarts)
|
1. Bij start: direct roteren (nieuwe config + container-restarts)
|
||||||
2. Daarna: elke dag om `ROTATE_AT` opnieuw
|
2. Daarna: elke dag om `ROTATE_AT` opnieuw
|
||||||
3. Willekeurige region uit `PIA_REGIONS`
|
3. Willekeurige region uit `PIA_REGIONS`
|
||||||
4. Containers uit `RESTART_CONTAINERS` worden één voor één herstart in de opgegeven volgorde
|
4. `GLUETUN_CONTAINER` wordt altijd als eerste herstart, daarna containers uit `RESTART_CONTAINERS`
|
||||||
|
|
||||||
**Let op:** zet gluetun altijd als eerste in `RESTART_CONTAINERS`. Sidecars met `network_mode: service:...` herstarten pas daarna, zodat ze opnieuw aan de VPN-namespace koppelen.
|
**Let op:** zet gluetun **niet** in `RESTART_CONTAINERS`; gebruik `GLUETUN_CONTAINER` daarvoor. Sidecars met `network_mode: service:...` horen in `RESTART_CONTAINERS`.
|
||||||
|
|
||||||
**Let op:** elke rotatie veroorzaakt kort downtime voor alle VPN-afhankelijke services.
|
**Let op:** elke rotatie veroorzaakt kort downtime voor alle VPN-afhankelijke services.
|
||||||
|
|
||||||
|
|||||||
@@ -41,14 +41,10 @@ pick_random_region() {
|
|||||||
printf '%s\n' "${regions[@]}" | shuf -n 1
|
printf '%s\n' "${regions[@]}" | shuf -n 1
|
||||||
}
|
}
|
||||||
|
|
||||||
parse_restart_containers() {
|
parse_additional_restart_containers() {
|
||||||
# CSV: "m3u-filter-vpn,m3u-editor,xtream-proxy" or JSON array.
|
# Sidecars to restart after gluetun. CSV or JSON array.
|
||||||
# Falls back to GLUETUN_CONTAINER when unset.
|
|
||||||
local raw="${RESTART_CONTAINERS:-}"
|
local raw="${RESTART_CONTAINERS:-}"
|
||||||
if [[ -z "$raw" ]]; then
|
[[ -z "$raw" ]] && return 0
|
||||||
echo "${GLUETUN_CONTAINER:-m3u-filter-vpn}"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$raw" =~ ^\[.*\]$ ]]; then
|
if [[ "$raw" =~ ^\[.*\]$ ]]; then
|
||||||
jq -r '.[]' <<<"$raw"
|
jq -r '.[]' <<<"$raw"
|
||||||
@@ -58,6 +54,23 @@ parse_restart_containers() {
|
|||||||
tr ',' '\n' <<<"$raw" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | awk 'NF'
|
tr ',' '\n' <<<"$raw" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | awk 'NF'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parse_restart_containers() {
|
||||||
|
# Gluetun is always restarted first, then any RESTART_CONTAINERS (deduplicated).
|
||||||
|
local gluetun="${GLUETUN_CONTAINER:-m3u-filter-vpn}"
|
||||||
|
local -A seen=()
|
||||||
|
local container
|
||||||
|
|
||||||
|
echo "$gluetun"
|
||||||
|
seen["$gluetun"]=1
|
||||||
|
|
||||||
|
while IFS= read -r container; do
|
||||||
|
[[ -z "$container" ]] && continue
|
||||||
|
[[ -n "${seen[$container]+x}" ]] && continue
|
||||||
|
echo "$container"
|
||||||
|
seen["$container"]=1
|
||||||
|
done < <(parse_additional_restart_containers)
|
||||||
|
}
|
||||||
|
|
||||||
restart_containers() {
|
restart_containers() {
|
||||||
local container restarted=()
|
local container restarted=()
|
||||||
while IFS= read -r container; do
|
while IFS= read -r container; do
|
||||||
|
|||||||
Reference in New Issue
Block a user