Hi!
I’m in great need of some assistance. Any help is very much appreciated.
Edit: The host system is Arch Linux with the 5.6 kernel running on a x86-64 system.
The goal:
Run both WireGuard and Transmission in one Alpine-based container simultaneously.
Progress:
Transmission is up and running and torrenting files to the host machine works fine.
WireGuard is not starting up. When running wg-quick up wg0
the script is successfully reading the wg0.conf but at the end of the startup it halts.
Docker run
sudo docker run -d --rm --name wireguard-transmission
–cap-add=NET_ADMIN
–cap-add=SYS_MODULE
–sysctl=“net.ipv4.conf.all.src_valid_mark=1”
-e “USERNAME=”
-e “PASSWORD=”
-p 51820:51820/udp
-p 9091:9091
-v /mnt/lacie/docker/compose_wireguard-transmission/wireguard-config:/etc/wireguard
-v /mnt/lacie/docker/compose_wireguard-transmission/transmission-config:/etc/transmission-daemon
-v /mnt/lacie/docker/compose_wireguard-transmission/complete:/transmission/complete
-v /mnt/lacie/docker/compose_wireguard-transmission/incomplete:/transmission/incomplete
-v /mnt/lacie/docker/compose_wireguard-transmission/watch:/transmission/watch
7ef47f8600d6
Error message
/ # wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.64.79.154/32 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a wg0 -m 0 -x
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
sysctl: error setting key ‘net.ipv4.conf.all.src_valid_mark’: Read-only file system
[#] resolvconf -d wg0 -f
[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip link delete dev wg0
Dockerfile
based on alpine linux
FROM alpine:latest
maintainer
LABEL maintainer “Sebastian Danielsson sebastian.danielsson@protonmail.com”
install wireguard-tools transmission-daemon
RUN apk --no-cache --virtual add wireguard-tools transmission-daemon curl
create necessary folders
RUN mkdir -p /etc/wireguard
&& mkdir -p /etc/transmission-daemon
&& mkdir -p /transmission/complete
&& mkdir -p /transmission/incomplete
&& mkdir -p /transmission/watch
copy placeholder config files and startup script from host
COPY root/ .
create volumes to load config files from host and save downloaded files to host
VOLUME [“/etc/wireguard”]
VOLUME [“/etc/transmission-daemon”]
VOLUME [“/transmission/complete”]
VOLUME [“/transmission/incomplete”]
VOLUME [“/transmission/watch”]
open ports, 51820 for wireguard, 9091 for transmission-rpc, shouldn’t need to open other ports for transmission since all traffic will be routed through the vpn over port 51820
EXPOSE 51820/udp 9091
make the startup script executable and run it
RUN chmod 700 /entrypoint.sh
ENTRYPOINT [ “/entrypoint.sh” ]
entrypoint.sh
#!/bin/sh
cd /etc/wireguard
if [ ! -f wg0.conf ]
then
echo “Could not find wg0.conf.”
fi
if [ -f wg0.conf ]
then
chmod 600 wg0.conf
wg-quick up wg0
fi
exec /usr/bin/transmission-daemon --foreground --config-dir /etc/transmission-daemon