this post was submitted on 16 Aug 2025
31 points (91.9% liked)

Selfhosted

50575 readers
156 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

Hello there,

Just want to preface that this is for selfhosted purposes, I may be routing my network in other way later.

I wanted to be able to setup a wireguard docker container with gluetun such that I can connect multiple devices to it at home, in order to minimize my "five device limit" with mullvad. I have the following docker compose:

  gluetun:
    image: qmcgaw/gluetun
    container_name: gluetun-wireguard
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    volumes:
      - ./gluetun:/gluetun
    environment:
      - VPN_SERVICE_PROVIDER=#
      - VPN_TYPE=wireguard
      - WIREGUARD_PRIVATE_KEY=#
      - WIREGUARD_ADDRESSES=#
      - SERVER_CITIES=#setup#setup
      # Timezone for accurate log times
      - TZ=#
      # Server list updater
      # See https://github.com/qdm12/gluetun-wiki/blob/main/setup/servers.md#update-the-vpn-servers-list
      - UPDATER_PERIOD=24h
    ports:
      - 51820:51820/udp
  wireguard-server:
    image: linuxserver/wireguard
    container_name: wireguard-server
    network_mode: service:gluetun # << important
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - PUID=1000
      - PGID=1000
      - SERVERPORT=51820
      - PEERS=iphone
      - PEERDNS=auto
    volumes:
      - ./config:/config
      - /lib/modules:/lib/modules
    restart: unless-stopped

Whenever I try connecting to it by iphone, which is my first attempt for the peer, it doesn't quite work out. The packets are received by the container, and querying cloudflare as such works:

$ sudo docker exec -it wireguard-server ping -c 3 1.1.1.1

Is there any obvious error I've made?

If I'm making the XY Problem, please let me know. If there is a more apt community, please let me know.

top 16 comments
sorted by: hot top controversial new old
[–] rearview@lemmy.zip 1 points 1 day ago* (last edited 1 day ago) (1 children)

If you have the WireGuard config from Mullvad already, just edit your wg.conf files on client devices to route all traffic via the Mullvad servers. Basically replace all the values of the [Peer] block with Mullvad values.

If you can share your Mullvad wg config file and your wireguard-server config file here, we can sort this out together

Edit: actually since your only goal is to increase the Mullvad device limits, why not just use Mullvad-provided confs directly in your client WireGuard apps? Should be straightforward to do

[–] LemmyPlay@lemmings.world 1 points 21 hours ago

I'm trying to do something similar. I am using Wireguard to VPN to my home network. Then I want to route all home internet traffic through one Mullvad instance. How would I do this? So far all my attempts have failed, I was trying to set routes but I don't have an expert understanding of both VPN settings in regards to Linux networking.

Gluetun is a great example of "I changed nothing and it suddenly works". I've had to set up this exact docker container several times, and it usually takes me a week of retries until it chooses to work. I wish I had better advice for you

[–] Tinkerer@lemmy.ca 9 points 1 day ago

I've just setup headscale in docker and it worked right away. It's even faster than when I was using tailscale. It was very easy to setup and I've been using it for about a month with no issues. Doesn't really help but I haven't used gluetun myself.

[–] thirdBreakfast@lemmy.world 8 points 1 day ago (2 children)

Is there a reason not to use Tailscale for this?

[–] NaiP@lemmy.world 5 points 1 day ago

I wanted to do it with pure wireguard. I like the headscale idea though. Might give that a shot.

[–] frongt@lemmy.zip 4 points 1 day ago (1 children)

I don't think you want two VPN services, I think you want one VPN service and plain network routing. Use the VPN server as the local gateway, and the VPN server routes that traffic up the tunnel.

[–] NaiP@lemmy.world 1 points 1 day ago (1 children)

How does one do this? Is there an article I could read up on?

[–] chaospatterns@lemmy.world 1 points 1 day ago

I use a variant of this: https://github.com/linuxserver/docker-wireguard

You don't need two different containers for this. They're going to either fight each other for control over the networking tables or run wireguard in wireguard

[–] illusionist@lemmy.zip 1 points 1 day ago* (last edited 1 day ago) (1 children)

The network_mode: service: gluetun looks off to me but I can't check.

Does each one their own?

[–] NaiP@lemmy.world 1 points 1 day ago (1 children)

Not sure what you mean here, but I am quite sure I need to set the network mode like that to route the network through the VPN.

[–] undefined@lemmy.hogru.ch 1 points 1 day ago (1 children)

Is doing this in Docker necessary? I like containerization too but a VPN server seems a little intense — why not install it directly?

[–] NaiP@lemmy.world 1 points 1 day ago

I prefer docker because I can plop it in elsewhere if needed.

[–] ZummiGummi@lemmy.nz 0 points 1 day ago

Have you confirmed that port forwarding to gluetun is working?