89 lines
2.7 KiB
Markdown
89 lines
2.7 KiB
Markdown
# 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.
|
|
|
|
```sh
|
|
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*:
|
|
|
|
```sh
|
|
modprobe wireguard
|
|
lsmod | grep wireguard
|
|
echo wireguard >> /etc/modules-load.d/wireguard.conf
|
|
```
|
|
|
|
## 3. Start container + indlæs filer
|
|
|
|
```sh
|
|
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:
|
|
|
|
```sh
|
|
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).
|