Files
weircon-random-proxy/lxc/setup-host.md
T
Asger Weirsøe 8652fcfbba
release / release (push) Successful in 1m15s
Initial commit
2026-05-27 15:02:44 +02:00

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 ikke nesting=0: så afviser kernen ip netns add i 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

# WireGuard 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).