diff --git a/tailscale/docker-compose_inside_network.yml b/tailscale/docker-compose_inside_network.yml new file mode 100644 index 0000000..2977ee7 --- /dev/null +++ b/tailscale/docker-compose_inside_network.yml @@ -0,0 +1,53 @@ +version: '3.5' + +services: + tailscaled: + container_name: tailscaled + image: tailscale/tailscale:unstable-v1.77.41 + privileged: true # 需要权限访问 TUN 设备 + restart: always + cap_add: + - net_admin + - sys_module + devices: + - /dev/net/tun:/dev/net/tun + volumes: + - ./lib/:/var/lib/tailscale # 使状态路径挂载为 tailscaled 使用的状态目录 + - /dev/net/tun:/dev/net/tun # 访问 TUN 设备 + - shared-tailscale:/var/run/tailscale # 共享 Tailscale 运行时目录 + - /var/run/dbus:/var/run/dbus + environment: + - TS_AUTHKEY=21c768657ba8aa6c0436eba69d28fa8d626da767a44f055d # 使用认证密钥 + - TS_STATE_DIR=/var/lib/tailscale # 状态保存路径 + - TS_USERSPACE=false # 使用内核的 TUN 设备 + - TS_EXTRA_ARGS=--login-server=https://headscale.jmsu.top # 指定 Headscale 登录服务器 + - TS_HOSTNAME=pysi # 指定主机名 + - TS_ACCEPT_DNS=false # 默认不接受来自管理员控制台的 DNS 配置 + - TS_AUTH_ONCE=false # 默认每次启动强制重新登录 + - TS_DEST_IP= # 未指定目标 IP,保持默认 + - TS_KUBE_SECRET=tailscale # Kubernetes 中状态存储的密钥名称,默认值 + - TS_OUTBOUND_HTTP_PROXY_LISTEN= # 未设置 HTTP 代理监听地址,保持默认 + - TS_ROUTES= # 未声明子网路由,保持默认 + - TS_SOCKET=/var/run/tailscale/tailscaled.sock # Unix 套接字路径,默认值 + - TS_SOCKS5_SERVER= # 未设置 SOCKS5 代理地址,保持默认 + command: /bin/sh -c "/usr/local/bin/containerboot && tailscaled && tailscale up --authkey=${TS_AUTHKEY} && tailscale funnel 8980" + networks: + - tailscale-net + + webapp: + container_name: webapp + image: python:3.9-slim # 使用 Python 镜像 + ports: + - "8980:8980" # 本地端口 8980 映射到容器内的 8980 端口 + restart: always + command: python -m http.server 8980 # 启动 Python HTTP 服务器 + networks: + - tailscale-net + +networks: + tailscale-net: + driver: bridge # 自定义桥接网络 + +volumes: + shared-tailscale: + driver: local