oracle cloud free tier (FRA) + tailscale + magic DNS + pihole in docker-compose

Es gibt ja neben stationären LAN Ad Blockern wie pihole und AdGuard (oder freien DNS Servern wie http://dnsforge.de mehrere mobile Lösungen - die alle darauf basieren ein VPN aufzubauen und dort eigene DNS Server zu verwenden.

Digital souverän hätte ich das aber gerne als "eigenes" VPN mit "eigenem" pihole und zwar möglichst einfach, maintenance free und sicher.

Daher folgende Lösung: Oracle Cloud VM aus dem "always free" Tier (4 x arm64 CPU, 24 GB Hauptspeicher, Server-Standort Frankfurt). Tailscale mit "magic-DNS" Feature als one-shot VPN Lösung und pihole - alles via docker-compose deployed:

---
version: "2.1"
services:
  tailscaled:
   container_name: tailscaled
   cap_add:
     - NET_ADMIN
     - sys_module
   volumes:
    - "/var/lib:/var/lib"
    - "/dev/net/tun:/dev/net/tun"
   network_mode: "host"
   image: tailscale/tailscale
   command:
     - tailscaled
   privileged: true
   restart: unless-stopped

  pihole:
    container_name: pihole
    depends_on:
      - unbound
    image: pihole/pihole:latest
    ports:
      - "5380:80/tcp"
      - "53:53/tcp"
      - "53:53/udp"
    networks:
      default:
        ipv4_address: 172.28.0.3
        aliases:
          - pihole
    environment:
      TZ: "Europe/Berlin"
      PIHOLE_DNS: "172.28.0.2;172.28.0.2"
      WEBPASSWORD: '***' 
      DNSMASQ_LISTENING: 'all'
    volumes:
      - "pihole:/etc/pihole"
      - "dnsmasq:/etc/dnsmasq.d"
    cap_add:
      - NET_ADMIN
      - SYS_NICE
      - IPC_LOCK
    restart: always

  unbound:
    image: klutchell/unbound
    restart: always
    networks:
      default:
        ipv4_address: 172.28.0.2


volumes:
  pihole:
  dnsmasq:

networks:
  default:
    driver: bridge
    ipam:
      config:
      - subnet: 172.28.0.0/24
        gateway: 172.28.0.1

Jetzt bei tailscale als DNS Server für das VPN die tailscale IP der cloud VM eingeben und mobile Clients danach einfach via tailscale verbinden. Über Port 5380 kommt man innerhalb des VPNs jederzeit an die Admin Oberfläche des pihole. Simply works :)