From 0020c539ea8645e38cca60ad53c06f1b443f3f00 Mon Sep 17 00:00:00 2001 From: alexz Date: Mon, 29 Dec 2025 01:27:12 +0000 Subject: [PATCH] rego-tunnel: share APP_DATA_DIR via /hostshare + fix compose.json env --- apps/rego-tunnel/build/setup-network.sh | 18 ++++++++++-------- apps/rego-tunnel/build/start-vm.sh | 4 ++-- apps/rego-tunnel/config.json | 9 --------- apps/rego-tunnel/docker-compose.json | 24 ++++++++++-------------- apps/rego-tunnel/docker-compose.yml | 3 +-- 5 files changed, 23 insertions(+), 35 deletions(-) diff --git a/apps/rego-tunnel/build/setup-network.sh b/apps/rego-tunnel/build/setup-network.sh index 4aee9ff..bba4070 100755 --- a/apps/rego-tunnel/build/setup-network.sh +++ b/apps/rego-tunnel/build/setup-network.sh @@ -31,22 +31,24 @@ if [ -z "${WAN_IF}" ]; then WAN_IF="eth1" fi -# Create bridge if not exists +# Ensure bridge exists if ! ip link show "$BRIDGE_NAME" &>/dev/null; then ip link add "$BRIDGE_NAME" type bridge - ip addr add "$BRIDGE_CIDR" dev "$BRIDGE_NAME" - ip link set "$BRIDGE_NAME" up - echo "Bridge $BRIDGE_NAME created with IP $BRIDGE_CIDR" fi -# Create TAP device if not exists +# Ensure bridge has address and is up +ip addr show dev "$BRIDGE_NAME" | grep -qF "$BRIDGE_CIDR" || ip addr add "$BRIDGE_CIDR" dev "$BRIDGE_NAME" 2>/dev/null || true +ip link set "$BRIDGE_NAME" up + +# Ensure TAP exists if ! ip link show "$TAP_NAME" &>/dev/null; then ip tuntap add "$TAP_NAME" mode tap - ip link set "$TAP_NAME" master "$BRIDGE_NAME" - ip link set "$TAP_NAME" up - echo "TAP device $TAP_NAME created and attached to $BRIDGE_NAME" fi +# Ensure TAP is attached and up +ip link set "$TAP_NAME" master "$BRIDGE_NAME" 2>/dev/null || true +ip link set "$TAP_NAME" up + # Enable IP forwarding echo 1 > /proc/sys/net/ipv4/ip_forward diff --git a/apps/rego-tunnel/build/start-vm.sh b/apps/rego-tunnel/build/start-vm.sh index 4c87775..bc0624a 100755 --- a/apps/rego-tunnel/build/start-vm.sh +++ b/apps/rego-tunnel/build/start-vm.sh @@ -61,12 +61,12 @@ if [ "$AUTO_MOUNT_9P" = "1" ]; then if [ -n "$ROOT_PART" ]; then # already mounted from loop above - mkdir -p "$VMROOT_MNT/shared" "$VMROOT_MNT/mnt/TSCLIENT" + mkdir -p "$VMROOT_MNT/shared" "$VMROOT_MNT/hostshare" FSTAB="$VMROOT_MNT/etc/fstab" # Add entries only if missing grep -qE "^[[:space:]]*${SHARED_TAG}[[:space:]]+" "$FSTAB" || echo "${SHARED_TAG} /shared 9p trans=virtio,version=9p2000.L,msize=262144,_netdev,nofail,x-systemd.automount 0 0" >> "$FSTAB" - grep -qE "^[[:space:]]*${TSCLIENT_TAG}[[:space:]]+" "$FSTAB" || echo "${TSCLIENT_TAG} /mnt/TSCLIENT 9p trans=virtio,version=9p2000.L,msize=262144,_netdev,nofail,x-systemd.automount 0 0" >> "$FSTAB" + grep -qE "^[[:space:]]*${TSCLIENT_TAG}[[:space:]]+" "$FSTAB" || echo "${TSCLIENT_TAG} /hostshare 9p trans=virtio,version=9p2000.L,msize=262144,_netdev,nofail,x-systemd.automount 0 0" >> "$FSTAB" umount "$VMROOT_MNT" >/dev/null 2>&1 || true else diff --git a/apps/rego-tunnel/config.json b/apps/rego-tunnel/config.json index a6416f3..78d7727 100755 --- a/apps/rego-tunnel/config.json +++ b/apps/rego-tunnel/config.json @@ -111,15 +111,6 @@ "required": true, "env_variable": "LEASE_TIME", "default": "12h" - }, - { - "type": "text", - "label": "Host share directory", - "hint": "Directory on the host to share with the VM (exported to the VM as 9p tag TSCLIENT)", - "placeholder": "${APP_DATA_DIR}", - "required": false, - "env_variable": "TSCLIENT", - "default": "${APP_DATA_DIR}" } ], "supported_architectures": ["amd64"] diff --git a/apps/rego-tunnel/docker-compose.json b/apps/rego-tunnel/docker-compose.json index 98d17b8..fad74f2 100755 --- a/apps/rego-tunnel/docker-compose.json +++ b/apps/rego-tunnel/docker-compose.json @@ -15,43 +15,39 @@ }, { "key": "BRIDGE_NAME", - "value": "${BRIDGE_NAME:-br-rego-vpn}" + "value": "${BRIDGE_NAME}" }, { "key": "TAP_NAME", - "value": "${TAP_NAME:-tap0}" + "value": "${TAP_NAME}" }, { "key": "BRIDGE_CIDR", - "value": "${BRIDGE_CIDR:-100.100.0.1}" + "value": "${BRIDGE_CIDR}" }, { "key": "VM_NET_IP", - "value": "${VM_NET_IP:-100.100.0.2}" + "value": "${VM_NET_IP}" }, { "key": "VM_SUBNET", - "value": "${VM_SUBNET:-100.100.0.0}" + "value": "${VM_SUBNET}" }, { "key": "TARGET_IP", - "value": "${TARGET_IP:-10.35.33.230}" + "value": "${TARGET_IP}" }, { "key": "VM_MAC", - "value": "${VM_MAC:-52:54:00:12:34:56}" + "value": "${VM_MAC}" }, { "key": "DNS_SERVERS", - "value": "${DNS_SERVERS:-1.1.1.1,8.8.8.8}" + "value": "${DNS_SERVERS}" }, { "key": "LEASE_TIME", - "value": "${LEASE_TIME:-12h}" - }, - { - "key": "TSCLIENT", - "value": "${TSCLIENT:-${APP_DATA_DIR}}" + "value": "${LEASE_TIME}" } ], "internalPort": 8006, @@ -71,7 +67,7 @@ "private": false }, { - "hostPath": "${TSCLIENT:-${APP_DATA_DIR}}", + "hostPath": "${APP_DATA_DIR}", "containerPath": "/hostshare", "readOnly": false, "shared": false, diff --git a/apps/rego-tunnel/docker-compose.yml b/apps/rego-tunnel/docker-compose.yml index 980c55a..a862938 100755 --- a/apps/rego-tunnel/docker-compose.yml +++ b/apps/rego-tunnel/docker-compose.yml @@ -24,11 +24,10 @@ services: - VM_MAC=${VM_MAC:-52:54:00:12:34:56} - DNS_SERVERS=${DNS_SERVERS:-1.1.1.1,8.8.8.8} - LEASE_TIME=${LEASE_TIME:-12h} - - TSCLIENT=${TSCLIENT:-${APP_DATA_DIR}} volumes: - /etc/runtipi/user-config/runtipi/rego-tunnel/storage/linux-vm.qcow2:/vm/linux-vm.qcow2 - /etc/runtipi/user-config/runtipi/rego-tunnel/shared:/shared - - ${TSCLIENT:-${APP_DATA_DIR}}:/hostshare + - ${APP_DATA_DIR}:/hostshare networks: - tipi_main_network sysctls: