2.7 KiB
2.7 KiB
Proxmox host setup (one-time)
Alt herfra køres på Proxmox-hosten som root. Når LXC'en er oppe, skip videre til setup-container.sh.
1. Opret unprivileged container
Brug Debian 12 (eller nyere). Tilpas 200 (CTID), storage og bridge til din opsætning.
pveam download local debian-12-standard_12.7-1_amd64.tar.zst # hvis ikke allerede til stede
pct create 200 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst \
--hostname weircon-random-proxy \
--unprivileged 1 \
--features nesting=1,keyctl=1 \
--memory 1024 \
--swap 512 \
--cores 2 \
--rootfs local-lvm:8 \
--net0 name=eth0,bridge=vmbr0,ip=dhcp \
--onboot 1
Hvorfor
nesting=1: WireGuard inde i en netns inde i en unprivileged LXC kræver at flere user-/mount-namespaces kan stables. Hvorfor ikkenesting=0: så afviser kernenip netns addi containeren.
2. TUN passthrough
Tilføj til /etc/pve/lxc/200.conf:
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
Kernel-WireGuard bruger som regel en wireguard-netdev og kræver strengt taget ikke /dev/net/tun — men wg-quick og enkelte VPN-værktøjer rører ved den, og det skader ikke at have den tilgængelig.
Tjek at WireGuard-modulet er loaded på hosten:
modprobe wireguard
lsmod | grep wireguard
echo wireguard >> /etc/modules-load.d/wireguard.conf
3. Start container + indlæs filer
pct start 200
# Byg fetch-service binæren på din dev-maskine (Arch eller hvor):
# cd random_proxy/service && make build
# Push den + setup-scriptet ind:
pct push 200 ./service/weircon-random-proxy /usr/local/bin/weircon-random-proxy --perms 0755
pct push 200 ./lxc/setup-container.sh /root/setup-container.sh --perms 0755
pct push 200 ./lxc/netns-up.sh /root/netns-up.sh --perms 0755
pct push 200 ./lxc/netns-down.sh /root/netns-down.sh --perms 0755
pct push 200 ./lxc/systemd/weircon-proxies.target /root/weircon-proxies.target
pct push 200 ./lxc/systemd/weircon-proxy@.service /root/weircon-proxy@.service
pct push 200 ./lxc/systemd/weircon-fetch.service /root/weircon-fetch.service
pct push 200 ./lxc/fetch.env.example /root/fetch.env.example
# Proton WG-configs (én pr. tunnel)
for i in 0 1 2 3 4 5 6 7 8 9; do
pct push 200 ./wg-configs/proxy${i}.conf /etc/weircon-random-proxy/wg/proxy${i}.conf --perms 0600
done
# Hop ind og kør resten
pct enter 200
bash /root/setup-container.sh
4. Health check fra hosten
Hvis LXC'ens IP er fx 10.0.0.50:
curl http://10.0.0.50:8080/health
# {"ok":true,"proxies":10}
5. Peg NPM på containeren
I NginxProxyManager:
- Forward Hostname / IP:
10.0.0.50 - Forward Port:
8080 - Tab "Advanced": indsæt indholdet af
npm/advanced.conf(husk at udskifte placeholder API-key).