Files
projects/Dockers/gluetun-pia-wireguard-rotator
Bram 2b25780f3e
Build and Push Docker Images / build-and-push (push) Successful in 56s
pia wireguard rotator
2026-06-04 18:29:43 +02:00
..
2026-06-04 18:29:43 +02:00
2026-06-04 18:29:43 +02:00
2026-06-04 18:29:43 +02:00
2026-06-04 18:29:43 +02:00
2026-06-04 18:29:43 +02:00

gluetun-pia-wireguard-rotator

Sidecar die dagelijks (en bij container-start) een willekeurige PIA WireGuard-region kiest via pia-wg-config, wg0.conf op het gedeelde gluetun-volume schrijft, en de gluetun-container herstart.

Vereisten

  • Gluetun met VPN_SERVICE_PROVIDER=custom en VPN_TYPE=wireguard
  • Gedeeld volume met gluetun (bijv. /var/dockers/m3u-filter-pia:/gluetun op gluetun, /config op de rotator)
  • Docker socket (alleen voor docker restart van de gluetun-container)
  • Actief PIA-abonnement

Environment variables

Required

Variable Description
PIA_USER PIA-gebruikersnaam
PIA_PASS PIA-wachtwoord
PIA_REGIONS CSV (netherlands,france,belgium) of JSON-array (["netherlands","france"])

Region-codes moeten overeenkomen met pia-wg-config (niet de OpenVPN-namen uit Gluetun's ingebouwde PIA-provider).

Lijst opvragen:

docker run --rm --entrypoint pia-wg-config bramkel/gluetun-pia-wireguard-rotator:latest regions

Optional

Variable Default Description
GLUETUN_CONTAINER m3u-filter-vpn Container name/id om te herstarten
WG_CONFIG_PATH /config/wireguard/wg0.conf Pad waar wg0.conf wordt geschreven
ROTATOR_STATE_PATH /config/rotator-state.json Laatste rotatie-metadata
ROTATE_AT 03:00 Dagelijks rotatietijdstip (HH:MM, in TZ)
TZ Europe/Brussels Tijdzone voor scheduling

Output

  • wireguard/wg0.conf op het gedeelde volume — Gluetun leest dit als /gluetun/wireguard/wg0.conf en dit overschrijft WIREGUARD_* environment variables
  • rotator-state.json — laatste gekozen region en timestamp

Compose-integratie

Zie docker-compose.example.yml voor een volledig voorbeeld met m3u-filter-vpn, m3u-editor en xtream-proxy.

Nieuwe service toevoegen

  gluetun-pia-wireguard-rotator:
    image: bramkel/gluetun-pia-wireguard-rotator:latest
    container_name: gluetun-pia-wireguard-rotator
    restart: unless-stopped
    environment:
      - TZ=Europe/Brussels
      - PIA_USER=${PIA_USER}
      - PIA_PASS=${PIA_PASSWORD}
      - PIA_REGIONS=netherlands,france,belgium
      - GLUETUN_CONTAINER=m3u-filter-vpn
      - ROTATE_AT=03:00
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /var/dockers/m3u-filter-pia:/config
    depends_on:
      - m3u-filter-vpn

Zet PIA_USER en PIA_PASSWORD in een host-.env (niet inline in compose).

Gluetun opschonen (aanbevolen na eerste succesvolle rotatie)

Zodra wg0.conf bestaat, heeft het bestand voorrang op env-vars. Verwijder uit m3u-filter-vpn om verwarring te voorkomen:

  • WIREGUARD_ENDPOINT_IP
  • WIREGUARD_PUBLIC_KEY
  • WIREGUARD_PRIVATE_KEY
  • WIREGUARD_ADDRESSES

Behoud minimaal:

    environment:
      - VPN_SERVICE_PROVIDER=custom
      - VPN_TYPE=wireguard

Optioneel host-.env-keys (WIREGUARD_*) opruimen als die niet meer gebruikt worden.

Deploy

  1. Push/build image (Dockers/gluetun-pia-wireguard-rotator/** triggert Gitea CI → bramkel/gluetun-pia-wireguard-rotator:latest)
  2. docker compose up -d gluetun-pia-wireguard-rotator
  3. Controleer logs: docker logs gluetun-pia-wireguard-rotator en docker logs m3u-filter-vpn

Gedrag

  1. Bij start: direct roteren (nieuwe config + gluetun restart)
  2. Daarna: elke dag om ROTATE_AT opnieuw
  3. Willekeurige region uit PIA_REGIONS

Let op: docker restart op gluetun veroorzaakt kort VPN-verlies voor alle containers met network_mode: service:m3u-filter-vpn.

Security

  • De Docker socket geeft de rotator rechten om containers te herstarten; mount read-only waar mogelijk
  • wg0.conf bevat private keys (chmod 600)
  • Bewaar PIA-credentials in .env, niet in version control