114 lines
4.3 KiB
Markdown
114 lines
4.3 KiB
Markdown
# gluetun-pia-wireguard-rotator
|
|
|
|
Sidecar die dagelijks (en bij container-start) een willekeurige PIA WireGuard-region kiest via [pia-wg-config](https://github.com/kylegrantlucas/pia-wg-config), `wg0.conf` op het gedeelde gluetun-volume schrijft, en een configureerbare lijst containers 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 (voor `docker restart` van gluetun en eventuele sidecar-containers)
|
|
- 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:
|
|
|
|
```bash
|
|
docker run --rm --entrypoint pia-wg-config bramkel/gluetun-pia-wireguard-rotator:latest regions
|
|
```
|
|
|
|
### Optional
|
|
|
|
| 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` |
|
|
| `GLUETUN_CONTAINER` | `m3u-filter-vpn` | Alleen gebruikt als `RESTART_CONTAINERS` leeg is |
|
|
| `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, timestamp en herstartte containers
|
|
|
|
## Compose-integratie
|
|
|
|
Zie [`docker-compose.example.yml`](docker-compose.example.yml) voor een volledig voorbeeld met `m3u-filter-vpn`, m3u-editor en xtream-proxy.
|
|
|
|
### Nieuwe service toevoegen
|
|
|
|
```yaml
|
|
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
|
|
- RESTART_CONTAINERS=m3u-filter-vpn,m3u-editor,xtream-proxy
|
|
- 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:
|
|
|
|
```yaml
|
|
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 + container-restarts)
|
|
2. Daarna: elke dag om `ROTATE_AT` opnieuw
|
|
3. Willekeurige region uit `PIA_REGIONS`
|
|
4. Containers uit `RESTART_CONTAINERS` worden één voor één herstart in de opgegeven volgorde
|
|
|
|
**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:** elke rotatie veroorzaakt kort downtime voor alle VPN-afhankelijke services.
|
|
|
|
## 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
|