WWW.YOUINFO.SITE
标签聚合 Tun

/tag/Tun

v2ex · 2026-06-08 13:38:52+08:00 · tech

cfui 是一个用于管理 Cloudflare Tunnel ( cloudflared )的 Web 控制台。它可以运行本地隧道进程,也可以通过 Cloudflare API 管理远程 Tunnel ingress 规则,支持 DDNS 、S3 兼容存储的 WebDAV 挂载,以及供 AI 客户端使用的 MCP 端点。 Web UI 已内置在二进制文件中。配置保存在数据目录下的本地 SQLite 数据库里。 功能 本地 Cloudflare Tunnel 运行管理 在浏览器里粘贴 Cloudflare Tunnel token ,启动或停止本地隧道。 支持自动启动、异常自动重启、协议、区域、重试次数、优雅关闭时间、metrics 、后量子模式、边缘 IP 版本、边缘绑定地址、TLS 校验和额外 cloudflared 参数。 显示隧道状态、当前协议、最近错误和版本构建信息。 远程 Tunnel 管理 可选功能,用于管理 Cloudflare 上托管的 Tunnel ingress 配置。 通过 Account ID 和 Tunnel ID 加载已有 Tunnel 。 添加、编辑和删除 public hostname 规则,支持 hostname 、path 、服务类型、服务地址、Host Header 、Origin Server Name 和 TLS 校验选项。 能在可解析时从本地 Tunnel token 自动带出 Account ID 和 Tunnel ID 。 在执行 Cloudflare 管理操作前,可以校验 API 权限。 DDNS 可选功能,复用远程 Tunnel 管理里的 Cloudflare API 凭据。 从可配置的 IP source URL 检测公网 IPv4 和 IPv6 。 创建和更新 Cloudflare A / AAAA 记录。 支持 Cloudflare 代理状态、TTL 、DNS comment 、重试设置、手动同步和最近同步记录。 S3 WebDAV 把一个或多个 S3 兼容 bucket 路径挂载成 WebDAV 端点。 支持通用 S3 兼容服务和 Cloudflare R2 预设。 每个挂载可以单独设置 endpoint 、region 、bucket 、root prefix 、mount path 、Access Key ID 、Secret Access Key 、WebDAV 账号密码和认证开关。 支持 S3 连接测试和 WebDAV 连接测试。 内置文件面板,可以列表、上传、下载、删除、重命名和创建目录。 WebDAV 可以走主 HTTP 服务,也可以走独立 HTTP 端口;两种模式互斥。 独立 WebDAV 模式支持手动启动/停止、可选自动启动、直连端口、自定义公开 URL ,以及跳转到 Cloudflare Tunnel 规则创建。 浏览器对 WebDAV 路径发起 GET 时,会显示只读文件列表或下载文件; PROPFIND 、 PUT 、 DELETE 、 MKCOL 、 MOVE 、 COPY 、 LOCK 、 UNLOCK 等方法保持 WebDAV 行为。 MCP 访问 可选的 Model Context Protocol 端点,路径为 /mcp 。 使用 UI 中生成的 Bearer Token 认证。 提供隧道状态/配置、隧道启动/停止、最近日志、远程 Tunnel 管理操作,以及启用 DDNS 后的 DDNS 操作工具。 日志和运维 提供最近日志 API 和可选实时日志流。 支持在浏览器里过滤、复制、下载和清空日志。 HTTP 服务包含 panic recovery 和请求日志中间件。 功能开关 远程 Tunnel 管理、DDNS 、MCP 、S3 WebDAV 都是可选功能。 未启用的功能不会显示对应 Tab 。 DDNS 依赖远程 Tunnel 管理,因为它复用同一套 Cloudflare API 凭据。 多语言 UI 内置英文、中文、日文界面翻译。 快速开始 Docker docker run -d \ --name cfui \ -p 14333:14333 \ -v cfui-data:/app/data \ -v cfui-logs:/app/logs \ --restart unless-stopped \ ghcr.io/dockers-x/cfui:latest 打开: http://localhost:14333 Docker Hub 镜像: docker run -d \ --name cfui \ -p 14333:14333 \ -v cfui-data:/app/data \ -v cfui-logs:/app/logs \ --restart unless-stopped \ czyt/cfui:latest Docker Compose services: cfui: image: ghcr.io/dockers-x/cfui:latest container_name: cfui restart: unless-stopped ports: - "14333:14333" # 如果使用独立 S3 WebDAV 端口,可以额外暴露: # - "14334:14334" volumes: - cfui-data:/app/data - cfui-logs:/app/logs environment: BIND_HOST: 0.0.0.0 PORT: 14333 TZ: UTC # 可选:通过环境变量注入 Cloudflare API 凭据,避免保存在 UI 中。 # CFUI_TUNNEL_MGMT_ENABLED: "true" # CLOUDFLARE_ACCOUNT_ID: your-account-id # CLOUDFLARE_TUNNEL_ID: your-tunnel-id # CLOUDFLARE_API_TOKEN: your-api-token healthcheck: test: ["CMD", "sh", "-c", "wget --no-verbose --tries=1 --spider http://localhost:$$PORT/ || exit 1"] interval: 30s timeout: 3s start_period: 5s retries: 3 volumes: cfui-data: cfui-logs: 软件仓库 https://github.com/dockers-x/cfui

LinuxDo 最新话题 · 2026-06-08 07:03:15+08:00 · tech

Fortune Trump stunned as stocks fall on great jobs report. Barclays explains why ‘we... “With a great Jobs Report, like just announced, stocks should go up, not down," Trump posted. "That's the way it was for 200 years. Growth does not mean inflation!” 美国就业市场5月份表现出色,非农就业人数增幅几乎是分析师预期的两倍。尽管经济学家们欢欣鼓舞,但人工智能交易却大幅萎缩,导致纳斯达克指数下跌4%,创一年多来最大单日跌幅,标普500指数也下跌了1.2%。 https://www.bloomberg.com/news/articles/2026-06-07/trump-says-fed-rate-increase-would-be-wrong-again-calls-for-cut NBC News – 7 Jun 26 Trump says Fed chair should ‘do whatever he wants’ but criticizes possible... Trump railed against potential interest rate hikes, arguing rates should instead be lowered. 7 个帖子 - 7 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-07 22:42:03+08:00 · tech

@Limitee 头像是皮卡丘,所以结合了宝可梦画风 pocket-spark.stellafortuna.dpdns.org 网站名字是:pocket-spark [!quote] 口袋里的金色火花w 象征着那个默默给予我们支持、在需要时为我们充能的温暖存在~ 还带音效~ 只因为他很可爱,且有问必回 用的正是那个开源字体 可以这样用: body { font-family: "JiangChengLvDongSong"; font-weight: normal; } 加载完了才会渲染,非常贴心~ 源码: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Adventure Record: Thank You!</title> <!-- 引入超级超级好看的江城律动宋字体~ --> <link href="https://fontsapi.zeoseven.com/147/main/result.css" onload="this.rel='stylesheet'" rel="preload" as="style" crossorigin /> <noscript><link rel="stylesheet" href="https://fontsapi.zeoseven.com/147/main/result.css" /></noscript> <style> * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: "JiangChengLvDongSong", sans-serif; font-weight: normal; min-height: 100vh; display: flex; justify-content: center; align-items: center; /* 经典精灵球红白背景分割 */ background: linear-gradient(to bottom, #E3350D 50%, #F5F5F5 50%); position: relative; overflow: hidden; } /* 精灵球中间的黑色分割线 */ body::before { content: ''; position: absolute; width: 100%; height: 16px; background-color: #222222; top: 50%; transform: translateY(-50%); z-index: 1; box-shadow: 0 4px 10px rgba(0,0,0,0.15); } /* 主体卡片:悬浮在精灵球中央的按钮装置 */ .card-container { position: relative; z-index: 10; background: #FFFFFF; border: 8px solid #222222; border-radius: 24px; width: 90%; max-width: 480px; padding: 40px 30px; box-shadow: 0 20px 0px rgba(0, 0, 0, 0.15); text-align: center; transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); } /* 顶部装饰:致敬血条/等级框 */ .badge-header { display: inline-flex; align-items: center; gap: 8px; background: #222222; color: #FFCB05; /* 电气黄 */ padding: 6px 16px; border-radius: 30px; font-size: 14px; letter-spacing: 1px; margin-bottom: 24px; } .badge-dot { width: 8px; height: 8px; background-color: #FFCB05; border-radius: 50%; animation: pulse 1.5s infinite; } /* 文本展示区 */ .content-box { margin-bottom: 35px; } .main-title { font-size: 32px; color: #222222; line-height: 1.4; margin-bottom: 12px; } .sub-title { font-size: 16px; color: #777777; letter-spacing: 0.5px; } /* 交互按钮 */ .action-btn { background-color: #FFCB05; color: #222222; border: 4px solid #222222; border-radius: 16px; padding: 16px 36px; font-size: 20px; font-family: "JiangChengLvDongSong", sans-serif; cursor: pointer; outline: none; position: relative; overflow: hidden; box-shadow: 0 6px 0 #222222; transition: all 0.1s ease; } .action-btn:hover { background-color: #FFE054; transform: translateY(-2px); box-shadow: 0 8px 0 #222222; } .action-btn:active { transform: translateY(4px); box-shadow: 0 2px 0 #222222; } /* 触发感谢后的彩蛋状态 */ .card-container.unlocked { border-color: #FFCB05; box-shadow: 0 20px 0px rgba(255, 203, 5, 0.2); } .card-container.unlocked .badge-header { background: #FFCB05; color: #222222; } .card-container.unlocked .badge-dot { background-color: #E3350D; } /* 粒子礼花 */ .particle { position: absolute; pointer-events: none; width: 12px; height: 12px; background: #FFCB05; border-radius: 50%; z-index: 100; animation: popOut 0.8s ease-out forwards; } @keyframes pulse { 0% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.3); opacity: 0.5; } 100% { transform: scale(1); opacity: 1; } } @keyframes popOut { 0% { transform: translate(0, 0) scale(1); opacity: 1; } 100% { transform: translate(var(--tx), var(--ty)) scale(0); opacity: 0; } } </style> </head> <body> <div class="card-container" id="card"> <div class="badge-header"> <span class="badge-dot"></span> <span>SYSTEM OVERVIEW</span> </div> <div class="content-box"> <h1 class="main-title" id="title">野生的贡献者出现了!</h1> <p class="sub-title" id="subtitle">冒险之所以能继续,是因为一路上有你</p> </div> <button class="action-btn" id="btn" onclick="triggerGratitude()"> 表达感谢 ! </button> </div> <script> let hasTriggered = false; function triggerGratitude() { if (hasTriggered) return; hasTriggered = true; const card = document.getElementById('card'); const title = document.getElementById('title'); const subtitle = document.getElementById('subtitle'); const btn = document.getElementById('btn'); // 切换为解锁/感谢状态 card.classList.add('unlocked'); title.innerHTML = "使用了「 谢谢你 」!"; subtitle.innerHTML = "效果超群!你的付出我们都收到了喵~"; btn.innerHTML = "MISSION ACCOMPLISHED"; btn.style.backgroundColor = "#EEEEEE"; btn.style.color = "#888888"; btn.style.cursor = "default"; btn.style.transform = "none"; btn.style.boxShadow = "none"; btn.style.borderColor = "#CCCCCC"; // 播放经典宝可梦中心恢复生命值的 8-bit 音效 playPokemonHealSound(); // 喷射黄色小礼花 const rect = btn.getBoundingClientRect(); const startX = rect.left + rect.width / 2; const startY = rect.top + rect.height / 2; for (let i = 0; i < 40; i++) { createParticle(startX, startY); } } // Web Audio API 合成 8-bit 经典音效 (C5 -> D5 -> E5 -> F5 -> G5 -> A5...) function playPokemonHealSound() { const AudioContext = window.AudioContext || window.webkitAudioContext; if (!AudioContext) return; const ctx = new AudioContext(); const now = ctx.currentTime; // 经典宝可梦中心恢复旋律的音高 const notes = [ 392.00, // G4 440.00, // A4 493.88, // B4 523.25, // C5 587.33, // D5 659.25 // E5 ]; notes.forEach((freq, index) => { const osc = ctx.createOscillator(); const gainNode = ctx.createGain(); // 经典的方波模拟 8-bit 复古感 osc.type = 'square'; osc.frequency.setValueAtTime(freq, now + index * 0.12); gainNode.gain.setValueAtTime(0.08, now + index * 0.12); gainNode.gain.exponentialRampToValueAtTime(0.01, now + index * 0.12 + 0.15); osc.connect(gainNode); gainNode.connect(ctx.destination); osc.start(now + index * 0.12); osc.stop(now + index * 0.12 + 0.18); }); } // 纯 CSS 粒子礼花效果 function createParticle(x, y) { const p = document.createElement('div'); p.classList.add('particle'); // 随机颜色(电气黄、红、白) const colors = ['#FFCB05', '#E3350D', '#FFFFFF', '#222222']; p.style.backgroundColor = colors[Math.floor(Math.random() * colors.length)]; // 随机大小 const size = Math.random() * 8 + 6; p.style.width = `${size}px`; p.style.height = `${size}px`; // 随机星形或圆形 if (Math.random() > 0.5) { p.style.borderRadius = '0px'; // 像素风小方块 } p.style.left = `${x}px`; p.style.top = `${y}px`; // 随机散射方向和距离 const angle = Math.random() * Math.PI * 2; const distance = Math.random() * 180 + 80; const tx = Math.cos(angle) * distance; const ty = Math.sin(angle) * distance - 50; // 稍微向上飘一点 p.style.setProperty('--tx', `${tx}px`); p.style.setProperty('--ty', `${ty}px`); document.body.appendChild(p); // 动画结束后移除 setTimeout(() => { p.remove(); }, 800); } </script> </body> </html> 2 个帖子 - 2 位参与者 阅读完整话题

v2ex · 2026-06-07 18:12:37+08:00 · tech

环境 :家宽(电信) + Windows 11 + Fclash (TUN 模式) + mihomo 内核 节点 :Reality (vless + xtls-rprx-vision),服务商给的入口 IP 185.218.x.x ,端口 45579 访问海外网站 几十分钟稳定 → 突然断几分钟 timeout → 不知道啥时候自动恢复的 → 继续外网 → 再断 。已经换了一个 IP 还是这样。。。同一个 IP 几分钟内能从 100% 通变 100% 丢(连续 ping 8 次看到的);关掉 Fclash 几分钟再等个一段时间,就又好了。。。 目前手上有一个比较脏的订阅节点,倒是能一直连,没有断,现在拿来当中转了,勉强苟活着,另外就是开手机移动热点给电脑也是没问题的。有大佬能指点下方向吗🥲🥲🥲

v2ex · 2026-06-07 16:14:04+08:00 · tech

环境 :家宽(电信) + Windows 11 + Fclash (TUN 模式) + mihomo 内核 节点 :Reality (vless + xtls-rprx-vision),服务商给的入口 IP 185.218.x.x ,端口 45579 访问海外网站 几十分钟稳定 → 突然断几分钟 timeout → 不知道啥时候自动恢复的 → 继续外网 → 再断 。已经换了一个 IP 还是这样。。。同一个 IP 几分钟内能从 100% 通变 100% 丢(连续 ping 8 次看到的);关掉 Fclash 几分钟再等个一段时间,就又好了。。。 目前手上有一个比较脏的订阅节点,倒是能一直连,没有断,现在拿来当中转了,勉强苟活着,另外就是开手机移动热点给电脑也是没问题的。有大佬能指点下方向吗🥲🥲🥲

v2ex · 2026-06-07 16:14:04+08:00 · tech

环境 :家宽(电信) + Windows 11 + Fclash (TUN 模式) + mihomo 内核 节点 :Reality (vless + xtls-rprx-vision),服务商给的入口 IP 185.218.x.x ,端口 45579 访问海外网站 几十分钟稳定 → 突然断几分钟 timeout → 不知道啥时候自动恢复的 → 继续外网 → 再断 。已经换了一个 IP 还是这样。。。同一个 IP 几分钟内能从 100% 通变 100% 丢(连续 ping 8 次看到的);关掉 Fclash 几分钟再等个一段时间,就又好了。。。 目前手上有一个比较脏的订阅节点,倒是能一直连,没有断,现在拿来当中转了,勉强苟活着,另外就是开手机移动热点给电脑也是没问题的。有大佬能指点下方向吗🥲🥲🥲

LinuxDo 最新话题 · 2026-06-05 19:56:56+08:00 · tech

目的 想要指定的软件通过代理转发,其他软件直连。 流程 参考: www.lzhpo.com/article/139 下载地址: https://www.proxifier.com/ 注册码: L6Z8A-XY2J4-BTZ3P-ZZ7DF-A2Q9C(Portable Edition) 5EZ8G-C3WL5-B56YG-SCXM9-6QZAP(Standard Edition) P427L-9Y552-5433E-8DSR3-58Z68(MAC) 前置步骤:使用v2rayN进行正常的[自动配置系统代理]; (1)在proxifier软件中添加proxy server:地址就是v2rayN中的入站代理地址,如下图中的127.0.0.1,端口是10808。 点check看是否代理服务正常: (2)在Proxification Rules中设置指定软件是否需要代理: 注意localhost就是入站点,此外也不要把v2rayN软件放到规则中进行代理,否则代理回环。 根据想要代理的软件设置代理即可。 codex额外代理操作步骤: 参考: linux.do/t/topic/2184754 好了,愉快的跟AI大人聊天吧。 10 个帖子 - 8 位参与者 阅读完整话题