Matrix 首页推荐 Matrix 是少数派的写作社区，我们主张分享真实的产品体验，有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章，展示来自用户的最真实的体验和观点。 文章代表作者个人观点，少数派仅对标题和排版略作修改。大家好，我是飘雷。在这个全民刷手机的时代，我们看似阅尽天下事，实则很容易被困在信息茧房里。各种资讯 app 每天都在争先恐后地把它们认为用户可能喜欢的内容推送给我们，久而久之，我们获得的信息难免会落入同质化，真正有价值的信息其实不多。想要解决这个问题，就要尝试从被动投喂，变成主动获取。最近 GitHub 上大火的 TrendRadar 项目，恰好击中了这个痛点。项目地址：https://github.com/sansan0/TrendRadar它能根据咱们自己设置的关键词和监控策略，聚合多平台热点和 RSS 订阅，还能将 AI 分析简报直推手机，也支持接入 MCP 架构，利用AI大模型进行自然语言的对话分析、情感洞察与趋势预测。TrendRadar 特别适合投资者、自媒体人、企业公关、关注时事等用户使用，这也使得它在 GitHub 上获得了 4.3 万的超高星收藏。趁着这几天有空，我用手头的威联通 NAS 把这个情报雷达搭建了起来，部署和配置的过程虽然有些繁琐，但成果也是喜人的。我们可以通过网页访问 NAS IP 来查阅自己感兴趣的新闻：也可以让它把热点新闻自动推送到邮箱等平台：还可以在推送信息中看到 AI 分析的简报：这种对信息掌控感真的拉满了情绪价值，个人觉得特别好用，所以本期我就同大家分享 TrendRadar 的手把手部署配置教程。TrendRadar 部署流程这里我们来展示如何在威联通 NAS 上通过 Docker Compose 进行部署，用到的设备是威联通最新的八盘位旗舰新品 Qu805。下载项目文件解压下载的压缩包，会得到一个名为 TrendRadar-master 的文件夹：接下来咱们将上图中这些文件和文件夹全部上传到威联通 NAS 里，这里我放在了 /Container/TrendRadar 目录内，大家可以根据自己的实际情况灵活调整，只需要记住保存位置即可。Docker Compose 部署TrendRadar 自带的 Docker Compose 文件是根据本机访问的默认情况配置的，不太适合 NAS 场景，所以这里我们需要进行一些改动。登录威联通 NAS 后台，打开 Container Station 容器工作站，点击左侧的应用程序，然后点击右侧黑色创建按钮。在弹出的代码输入框中，我们输入以下 YAML 代码。注意里面的注释部分，像推送设置之类的选项可以在 YAML 代码中提前指定，也可以通过修改文件后期进行调整，这里大家需要根据自己的实际情况进行配置：services: trendradar: image: wantcat/trendradar:latest container_name: trendradar restart: unless-stopped # 左边 8848 是你访问 NAS 的端口 (http://nas-ip:8848)，根据需要修改 # 右边 8080 是容器内部端口，不要改 ports: - "8848:8080" # 映射目录，左侧为NAS文件夹路径，这里需要根据实际情况修改，比如我是在NAS的 /share/Container/TrendRadar volumes: - /share/Container/TrendRadar/config:/app/config - /share/Container/TrendRadar/output:/app/output environment: - TZ=Asia/Shanghai # 核心配置 - ENABLE_CRAWLER=${ENABLE_CRAWLER:-} - ENABLE_NOTIFICATION=${ENABLE_NOTIFICATION:-} - REPORT_MODE=${REPORT_MODE:-} - DISPLAY_MODE=${DISPLAY_MODE:-} # Web 服务器，True为强制启用，启用后可以通过网页访问 - ENABLE_WEBSERVER=true - WEBSERVER_PORT=${WEBSERVER_PORT:-8080} # 通知渠道 # 飞书 - FEISHU_WEBHOOK_URL=${FEISHU_WEBHOOK_URL:-} # 电报 - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN:-} - TELEGRAM_CHAT_ID=${TELEGRAM_CHAT_ID:-} # 钉钉 - DINGTALK_WEBHOOK_URL=${DINGTALK_WEBHOOK_URL:-} # 企业微信 - WEWORK_WEBHOOK_URL=${WEWORK_WEBHOOK_URL:-} - WEWORK_MSG_TYPE=${WEWORK_MSG_TYPE:-} # 邮件配置 - EMAIL_FROM=${EMAIL_FROM:-} - EMAIL_PASSWORD=${EMAIL_PASSWORD:-} - EMAIL_TO=${EMAIL_TO:-} - EMAIL_SMTP_SERVER=${EMAIL_SMTP_SERVER:-} - EMAIL_SMTP_PORT=${EMAIL_SMTP_PORT:-} # ntfy配置 - NTFY_SERVER_URL=${NTFY_SERVER_URL:-https://ntfy.sh} - NTFY_TOPIC=${NTFY_TOPIC:-} - NTFY_TOKEN=${NTFY_TOKEN:-} # Bark配置 - BARK_URL=${BARK_URL:-} # Slack配置 - SLACK_WEBHOOK_URL=${SLACK_WEBHOOK_URL:-} # 通用Webhook配置 - GENERIC_WEBHOOK_URL=${GENERIC_WEBHOOK_URL:-} - GENERIC_WEBHOOK_TEMPLATE=${GENERIC_WEBHOOK_TEMPLATE:-} # AI 分析配置，如果你需要开启 AI 分析，可以在这里填，或者去config.yaml填 - AI_ANALYSIS_ENABLED=${AI_ANALYSIS_ENABLED:-false} - AI_API_KEY=${AI_API_KEY:-} - AI_PROVIDER=${AI_PROVIDER:-} - AI_MODEL=${AI_MODEL:-} - AI_BASE_URL=${AI_BASE_URL:-} # 远程存储配置（S3 兼容协议） - S3_ENDPOINT_URL=${S3_ENDPOINT_URL:-} - S3_BUCKET_NAME=${S3_BUCKET_NAME:-} - S3_ACCESS_KEY_ID=${S3_ACCESS_KEY_ID:-} - S3_SECRET_ACCESS_KEY=${S3_SECRET_ACCESS_KEY:-} - S3_REGION=${S3_REGION:-} # 运行模式 - CRON_SCHEDULE=${CRON_SCHEDULE:-*/30 * * * *} - RUN_MODE=${RUN_MODE:-cron} - IMMEDIATE_RUN=${IMMEDIATE_RUN:-true} # MCP 服务：提供接口给 Claude Desktop 等客户端，用不上的话下面这些代码可以删除 trendradar-mcp: image: wantcat/trendradar-mcp:latest container_name: trendradar-mcp restart: unless-stopped ports: - "3333:3333" # 必须挂载与上面相同的路径，否则读取不到数据 volumes: - /share/Container/TrendRadar/config:/app/config:ro - /share/Container/TrendRadar/output:/app/output environment: - TZ=Asia/Shanghai代码粘贴无误后，记得点击下方的验证按钮，确保 YAML 格式正确。最后点击创建按钮，系统就会自动拉取这个非常精简的镜像并启动服务，咱们可以在概览或容器列表中看到 trendradar 和 trendradar-mcp 两个容器正在运行，状态显示为绿色小圆点。常用配置选项解析TrendRadar 的作者在项目页面提供了详细的个性化配置方法，感兴趣的朋友可以去详细阅读下，这里咱们就来看看一些常用的部分。1配置监控平台TrendRadar 的资讯数据来源于 newsnow，默认会抓取11个平台的热点新闻，需要抓取其他平台数据的的朋友可以去 newsnow 网站里查找一下。查询地址：https://newsnow.busiyi.world/需要对监控平台进行修改的话，可以打开 config 文件夹下的 config.yaml 文件，修改 platforms 部分：威联通自带文本编辑器。你可以右键点击该文件，选择「打开方式 -> Text Editor」直接在线编辑，改完保存即可，无需下载到本地再上传。platforms: - id: "toutiao" name: "今日头条" - id: "baidu" name: "百度热搜" - id: "wallstreetcn-hot" name: "华尔街见闻" # 添加更多平台...去 newsnow 添加有点麻烦，图省事儿的话可以去下面的项目复制别人整理的 config.yaml 文件。项目地址：https://github.com/sansan0/TrendRadar/issues/95不过需要注意，监控的平台不是越多越好，建议选择 10 到 15 个核心平台，平台过多会导致信息过载，反而降低使用体验。配置关键词TrendRadar 的关键词设置是决定我们每天看到的是满屏含金量的干货，还是充斥着垃圾信息的关键一步。TrendRadar 的核心过滤逻辑存放在 config 文件夹下的 frequency_words.txt 文件中，需要手动细心配置。这里打开威联通的 File Station，定位到我们部署时映射的路径，比如我使用的是 /share/Container/TrendRadar/config/，找到名为 frequency_words.txt 的文件。TrendRadar 对关键字的配置不仅仅是写几个词那么简单，它支持七种语法，咱们简单举例来介绍下。# --- 核心关注区 --- NAS 威联通 群晖 Docker TrendRadar DeepSeek ChatGPT 显卡 & 降价 # --- 必须屏蔽区 (净化眼球) --- !出轨 !离婚 !绯闻 !男星 !女星 !只有我一个人 !震惊 !拼多多 & 砍一刀 # --- 行业观察 --- 人工智能 开源项目 # --- 这里的每一行代表一个规则，系统会逐行扫描 --- 基础匹配（直接写词）：威联通：只要标题或内容里有「威联通」，就会被抓取。强制屏蔽（使用 ! 表示「非」）；在关键字前面加上感叹号后，包含此关键字的新闻会被直接丢弃。比如不想看娱乐圈的出轨八卦破事，使用「!出轨」，任何包含出轨的新闻就不会被显示出了。组合逻辑（使用 & 表示「与」）：「NAS & 教程」的意思是，只有同时包含「NAS」和「教程」的文章才会被抓取，这能帮你过滤掉单纯的NAS降价广告，只看干货。多选逻辑（使用 | 表示「或」）：「DeepSeek | ChatGPT | Claude」的意思是，只要包含这三个 AI 模型中的任意一个，都抓取。短语匹配（使用英文双引号""）：以"Black Myth"为例，如果你直接写 Black Myth（没引号），系统可能会分别匹配 Black 和 Myth。加上引号后，会强制匹配由于空格隔开的专有名词（如《黑神话》）。权重提升（使用 ^）：「^漏洞」的意思是，给「漏洞」这个词极高的权重，一旦出现，即使它在热榜排名不高，也会被强制推送到显眼位置。正则匹配式（使用 ~，适合硬核玩家）：这部分就有点复杂了，不太适合普通玩家折腾，感兴趣的硬核玩家直接去项目原网页详细研究即可。编辑完成后，点击威联通 Text Editor 右上角的「保存」，最后别忘了，修改关键词后，需要重启容器才能生效。热点权重新调整很多时候我们觉得热搜没啥意思，是因为平台的算法优先推荐短时间内爆发力强的内容，比如什么某明星忘本了道歉了之类的。但很多用户往往更关注那些有持久影响力的大事，比如国家重大政策和科技突破的消息等等。advanced: weight: rank: 0.6 # 排名权重 frequency: 0.3 # 频次权重 hotness: 0.1 # 热度权重在 TrendRadar 的 config/config.yaml 文件中，有一个 advanced -> weight 模块，这里就是控制热点筛选逻辑的地方，包含 rank、frequency、hotness 三个参数，这三个数字相加必须严格等于 1.0，否则程序会报错罢工。在修改之前，咱们需要明白这三个数字代表什么，TrendRadar 默认使用的是较为平衡的配置：rank（排名权重）：代表爆发力，数值越高，越倾向于抓取各大榜单前几名的内容，哪怕它只火了十分钟。frequency（频次权重）：代表持久力，数值越高，越倾向于抓取那些在一天内反复上榜、被不同平台多次讨论的内容。这是过滤标题党的关键。hotness（热度权重）：代表绝对数值，由于不同平台的热度单位不同，有的几百万，有的几万，参考价值较低，通常保持低位即可。一般来说，追求速度和时效性的用户提高排名权重，追求深度和稳定性的用户提高频次权重。建议每次只调整 0.1 到 0.2 的数值，调完后保存文件，并在 Container Station 中重启容器生效。修改后观察一两天的推送效果，如果觉得信息太滞后，就稍微调高 rank；如果觉得垃圾信息还是多，就继续调高 frequency。接下来咱们来看看两个典型的配置案例。抓取实时热点如果你是自媒体博主或者营销人员，不想错过任何稍纵即逝的大瓜，想快速了解当前最火话题，可以使用这个配置，把所有瞬间冲上榜首的内容都推给你：advanced: weight: rank: 0.8 # 拉高排名权重，只要进前三，立刻抓取 frequency: 0.1 # 稍微关注一下持续性，不太在乎 hotness: 0.1 # 保持默认追踪重点话题如果想要多看一些经过时间沉淀的重大新闻，可以使用这个配置：advanced: weight: rank: 0.4 # 降低排名权重，不迷信热度榜首 frequency: 0.5 # 拉高频次权重，更偏向持续热度 hotness: 0.1推送配置TrendRadar v5.0 版本对推送内容进行了大规模重构，现在的推送内容不再是简单的链接堆砌，而是被划分为热榜新闻、RSS 订阅、全新热点（New 标记）、独立展示区、AI 分析五大核心板块。而在推送方式方面，TrendRadar 支持微信、飞书、钉钉、Telegram、邮件、ntfy、bark、Slack 等渠道的智能推送，并且有当日汇总、当前榜单、增量监控三种推送模式。推送相关的配置也是通过 config/config.yaml 文件来修改，同时也可以在 Docker Compose 代码中提前写好，在部署容器时就完整设置。这里我们以邮件推送为例进行展示。开启 HTML 格式很多用户反馈邮件收到的是一堆乱码或者纯文本，没有任何排版，原因就是没开启 HTML 支持。得确保 config/config.yaml，找到 storage -> formats -> html，设置为 true。storage: formats: sqlite: true txt: false html: true # 必须启用，否则邮件推送会失败配置 SMTP 发送服务（以 163 邮箱为例）虽然 TrendRadar 支持多种推送方式（如飞书、钉钉），但邮件依然是阅读长文和 AI 分析报告的最佳载体。国内网络环境下，我自己是选择使用 163 邮箱作为发送方，稳定性非常高。当然 QQ 邮箱也可以，就是容易被系统判定为垃圾邮件。首先登录你的 163 网页版邮箱，点击顶部「设置」 -> 「POP3/SMTP/IMAP」，开启「IMAP/SMTP 服务」或「POP3/SMTP 服务」，然后新增一个授权码。系统会让你发送短信验证，验证成功后会弹出一个只显示一次的授权码，复制这个授权码，这是我们接下来要填的密码。接下来咱们继续编辑 config.yaml，首先找到 notification 通知总开关的位置，将 enabled 设置为 true，开启通知。然后找到 email 相关的配置区域：具体设置方法如下所示： # 邮件发送方配置 (163邮箱) - EMAIL_FROM=你的账号@163.com # 注意：这里填的是刚刚获得的【授权码】，不是邮箱登录密码！ - EMAIL_PASSWORD=填入你刚才获取的授权码 - EMAIL_SMTP_SERVER=smtp.163.com - EMAIL_SMTP_PORT=465 # 邮件接收方配置 # 接收邮箱可以是同一个163邮箱，也可以是QQ邮箱或Gmail - EMAIL_TO=接收通知的邮箱@qq.com如果这里不适用 163 邮箱来推送，可以根据作者提供的表格来修改 SMTP 服务器和端口地址：配置完成后，保存文件并重启容器。如果配置正确，TrendRadar 运行完毕后，你会收到一封标题类似《TrendRadar 每日热点报告》的邮件。如果还想要设置推送频率和推送模式的话，同样可以查看作者给出的详细配置说明，限于篇幅这里不赘述了。AI 分析配置在 5.0 版本之前，TrendRadar 只能算一个勤恳的新闻搬运工；但从 5.0 开始，作者进行了重大升级，通过接入 AI 大模型 API 来对内容进行深度分析，自动生成热点洞察。分析的内容包括：热点趋势概述关键词热度分析跨平台关联分析潜在影响评估值得关注的信号总结与建议这里我们以 DeepSeek 为例，展示如何进行设置。获取 API 的过程这里不再赘述，大家去自己的 API 提供商平台上复制即可，我们主要讲讲本地设置，同样要修改 config/config.yaml 这个配置文件，找到 ai_analysis 部分：以 DeepSeek 官方 API 为例，如下设置：ai_analysis: enabled: true # 是否启用 AI 分析，true为开启 provider: "deepseek" # AI 提供商 api_key: "" # API Key model: "deepseek-reasoner" # 模型名称,deepseek-reasoner为深度思考模式 base_url: "" # 自定义 API 端点（可选） timeout: 120 # 请求超时（秒） push_mode: "both" # 推送模式，both (推送到所有渠道) max_news_for_analysis: 50 # 最多分析多少条新闻 include_rss: true # 是否包含 RSS 内容 prompt_file: "ai_analysis_prompt.txt" # 提示词配置文件另外在 config 文件夹下，还有一个名为 ai_analysis_prompt.txt 的文件。这里存放的是发给 AI 的 Prompt 提示词。作者已经将默认的提示词写好，包含趋势概述、关键词热度、跨平台关联、潜在影响等。但如果你有特殊需求，那可以根据自己需求进行针对性修改。配置并重启容器后，AI 模块会在每次的抓取任务结束后运行，我们能在推送消息的底部看到像这样的分析报告：总结经过这一番折腾，当看到自己想看的新闻躺在邮箱里时，之前所有的复杂的配置都是值得的了。以前，我们是算法的猎物，被锁在各大平台推送算法打造的信息茧房里，免不了被标题党牵着鼻子走。而现在借助 TrendRadar 和 AI 的深度思考，我们终于可以翻身成为信息的主人，可以更清晰的知道这个世界发生了什么，哪些是转瞬即逝的信息泡沫，哪些是真正值得关注的行业暗流。写到这里我又想到，像 TrendRadar 这类应用，或许才是许多公司和工作室采购 NAS 的原因之一。NAS 并非只能在家用环境中保存照片、挂挂 PT，更是能通过持久稳定工作，帮助用户圈出一块清醒的自留地，把实现各种功能的主动权重新握在自己手里。> 关注 少数派小红书，感受精彩数字生活 🍃> 实用、好用的 正版软件，少数派为你呈现 🚀
Traefik 优势与考量：本地部署的理想选择Traefik 是一款功能强大的云原生边缘路由器（Edge Router），它为 Docker 等容器化环境带来了显著的便利和优势：主要优势服务自动发现与配置： Traefik 能够自动检测容器中运行的新服务，并即时自动配置相应的反向代理（Reverse Proxy）和负载均衡规则，无需手动修改配置文件。简化的 SSL/TLS 管理： 它内置了对 Let's Encrypt 的支持，可以实现域名的 SSL 证书自动申请与自动续签，大大减轻了运维负担端口暴露最小化： 极大地提高了安全性。对于宿主机而言，Traefik 只需要对外暴露标准的 80 和 443端口，无需再为每个服务暴露额外的端口。局限与考量尽管 Traefik 优势显著，但在配置灵活性方面，它不如传统反向代理工具（如 Nginx）那样直观和强大：非容器化应用集成复杂： 对于不在 Docker 等容器中部署的传统应用，Traefik 的反向代理配置会相对复杂和繁琐。它主要面向动态的云原生环境，对静态配置的支持不如 Nginx 灵活特定配置的挑战： 在需要进行复杂、细致的反代逻辑配置时，可能会不如 Nginx 的配置文件那样灵活易读。在快速启动前，有必要说明一下，本教程是使用CF 作为域名ns进行申请泛域名证书，如果你想使用其他提供商，可以在 Traefik 的文档 更改 Provider Code和 Environment Variables 这两个值，当然我会在本篇配置文件有注释提醒。另外如果没有额外配置反代的需求（指不跑在docker的服务），需要建立config.yml 文件，当然还需要在traefik.yml 关闭注释。快速启动 Traefik请按照一下文件目录创建文件，其中acme.json只需要创建文件即可（注意必须要交建立哦，config文件根据自己需求建立即可）文件目录：| .env #文件配置 | docker-compose.yaml # docker-compose 文件 | \---data acme.json # SSL 文件 config.yml # 额外配置文件（配置额外反代例如宿主机的） traefik.yml # Traefik 配置文件docker-compose.yaml 文件：services: traefik: # 定义名为 traefik 的服务 image: traefik:v3.0 # 使用 Traefik 的 v3.0 版本镜像 container_name: traefik # 容器名称为 traefik restart: unless-stopped # 容器自动重启，除非手动停止 security_opt: - no-new-privileges:true # 增加安全性，防止提权 networks: - traefik-net # 连接到名为 proxy 的外部网络 ports: - 80:80 # 映射主机的 80 端口到容器的 80 端口 (HTTP) - 443:443 # 映射主机的 443 端口到容器的 443 端口 (HTTPS) - 443:443/tcp # 映射主机的 443 TCP 端口到容器的 443 端口 (TCP 协议) - 443:443/udp # 映射主机的 443 UDP 端口到容器的 443 端口 (UDP 协议) environment: CF_DNS_API_TOKEN_FILE: ${CF_DNS_API_TOKEN} # 设置环境变量，使用 Cloudflare API 令牌，根据Traefik文档 选择你的服务提供商的token TRAEFIK_DASHBOARD_CREDENTIALS: ${TRAEFIK_DASHBOARD_CREDENTIALS} # 设置环境变量，定义 Traefik 仪表板的凭据 env_file: .env # 从 .env 文件中加载环境变量 volumes: - /etc/localtime:/etc/localtime:ro # 挂载主机的时间设置到容器，确保时间同步，且只读 - /var/run/docker.sock:/var/run/docker.sock:ro # 挂载 Docker 的 socket 文件，允许 Traefik 访问 Docker API，只读 - ./data/traefik.yml:/traefik.yml:ro # 挂载本地的 traefik.yml 配置文件到容器内，只读 - ./data/acme.json:/acme.json # 挂载本地的 acme.json 文件，存储 SSL 证书信息 - ./data/config.yml:/config.yml:ro # 可选的配置文件挂载路径，若需要可取消注释 labels: # 设置 Traefik 的相关标签，用于路由和中间件配置 - "traefik.enable=true" # 启用 Traefik 服务 - "traefik.http.routers.traefik.entrypoints=http" # 配置 HTTP 入口点 - "traefik.http.routers.traefik.rule=Host(`${TRAEFIK_DASHBOARD_HOST}`)" # 定义 Traefik 仪表板的访问规则 - "traefik.http.middlewares.traefik-auth.basicauth.users=${TRAEFIK_DASHBOARD_CREDENTIALS}" # 为仪表板配置基本身份验证 - "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https" # 配置 HTTP 到 HTTPS 的重定向 - "traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto=https" # 添加自定义请求头 - "traefik.http.routers.traefik.middlewares=traefik-https-redirect" # 将重定向中间件应用到 HTTP 路由 - "traefik.http.routers.traefik-secure.entrypoints=https" # 配置 HTTPS 入口点 - "traefik.http.routers.traefik-secure.rule=Host(`${TRAEFIK_DASHBOARD_HOST}`)" # 定义 HTTPS 路由的访问规则 - "traefik.http.routers.traefik-secure.middlewares=traefik-auth" # 为 HTTPS 路由应用基本身份验证中间件 - "traefik.http.routers.traefik-secure.tls=true" # 启用 TLS (HTTPS) - "traefik.http.routers.traefik-secure.tls.certresolver=${NS_Domain}" # 使用 DNS服务提供商 code 根据Traefik文档 选择你的服务提供商code - "traefik.http.routers.traefik-secure.tls.domains[0].main=${TLS_MAIN_DOMAIN}" # 定义主域名 - "traefik.http.routers.traefik-secure.tls.domains[0].sans=${TLS_SANS_DOMAIN}" # 定义子域名通配符 - "traefik.http.routers.traefik-secure.service=api@internal" # 使用 Traefik 内部 API 服务 networks: traefik-net: external: false # 使用外部定义的名为 proxy 的网络.env 文件: # .env 文件 # CF API CF_DNS_API_TOKEN= NS_Domain=cloudflare #根据你使用的DNS服务提供商 code 根据Traefik文档 选择你的服务提供商code # 设置环境变量，定义 Traefik 仪表板的凭据 ，默认账户名密码：admin TRAEFIK_DASHBOARD_CREDENTIALS=admin:$$2y$$05$$aOXINGgHfnZ//t.kUs7o9ej3faUbj2yNxc8k3WVrBybFOxxaTsLTe # Traefik Dashboard 域名 TRAEFIK_DASHBOARD_HOST=dash.docker.localhost # TLS 主域名和子域名 TLS_MAIN_DOMAIN=docker.localhost TLS_SANS_DOMAIN=*.docker.localhosttraefik.yml 文件： api: dashboard: true # 启用 Traefik 的仪表板，可以通过指定的路由访问 debug: true # 启用调试模式，输出更多的日志信息 entryPoints: http: address: ":80" # 定义 HTTP 入口点，监听 80 端口 http: redirections: entryPoint: to: https # 重定向 HTTP 请求到 HTTPS scheme: https # 使用 HTTPS 作为重定向的目标协议 https: address: ":443" # 定义 HTTPS 入口点，监听 443 端口 serversTransport: insecureSkipVerify: true # 在与后端服务器通信时，跳过 TLS 证书验证（不推荐在生产环境中使用） providers: docker: endpoint: "unix:///var/run/docker.sock" # 指定 Docker API 的 socket 文件路径，Traefik 使用它来检测和管理 Docker 容器 exposedByDefault: false # 默认情况下，Docker 容器不会自动暴露给 Traefik，必须显式指定 watch: true file: filename: /config.yml # (已注释) 可选的文件提供者配置，用于从外部文件加载配置 watch: true # 允许 Traefik 自动监控和加载配置文件变化 certificatesResolvers: cloudflare: # 使用 DNS服务提供商 code 根据Traefik文档 选择你的服务提供商code acme: email: youremail@email.com # 申请 ACME 证书时使用的电子邮件地址 storage: acme.json # 存储证书信息的文件路径 # caServer: https://acme-v02.api.letsencrypt.org/directory # 正式环境的 Let's Encrypt 服务器 (默认) caServer: https://acme-staging-v02.api.letsencrypt.org/directory # 测试环境的 Let's Encrypt 服务器 (用于调试) dnsChallenge: provider: cloudflare # 使用 DNS服务提供商 code 根据Traefik文档 选择你的服务提供商code 进行 DNS 验证以获取证书 #disablePropagationCheck: true # (已注释) 如果通过 Cloudflare 获取证书有问题，可以取消注释此行以禁用传播检查 #delayBeforeCheck: 60s # (已注释) 如果需要确保 TXT 记录准备就绪，可以取消注释此行并设置检查延迟 resolvers: - "223.5.5.5:53" # AliDNS 解析器 - "119.29.29.29:53" # 备用 DNS 解析器 - "1.1.1.1" # 备用 DNS 解析器config.yml 文件可以选择配置，如果你宿主机有ng反代服务，你使用taerfik 的话会端口冲突，可以配置，但不过要把 docker-compose 和 Traefik的配置文件注释去掉即可： http: #region routers routers: hexo: entryPoints: - "https" # 指定使用 HTTPS 入口点 rule: "Host(`hexo.docker.localhost`)" # 当访问的主机名为 hexo.local.shellscience.top 时，触发此路由 middlewares: - default-headers # 应用默认的安全头中间件 - https-redirectscheme # 应用 HTTPS 重定向中间件 tls: {} # 启用 TLS 加密 service: hexo # 指定将请求转发到名为 hexo 的服务 #region services services: hexo: loadBalancer: servers: - url: "http://127.0.0.1:5000" # 指定 Hexo 服务的后端服务器 URL passHostHeader: true # 传递原始的 Host 头信息到后端服务 #endregion middlewares: https-redirectscheme: redirectScheme: scheme: https # 将 HTTP 请求重定向为 HTTPS permanent: true # 使用永久重定向（HTTP 301） default-headers: headers: frameDeny: true # 禁止网页被嵌入到框架中，防止点击劫持攻击 browserXssFilter: true # 启用浏览器的 XSS 过滤器，增强安全性 contentTypeNosniff: true # 防止浏览器 MIME 类型嗅探 forceSTSHeader: true # 强制启用 HSTS（HTTP 严格传输安全） stsIncludeSubdomains: true # HSTS 规则应用于所有子域 stsPreload: true # 允许将域名加入 HSTS 预加载列表 stsSeconds: 15552000 # HSTS 头的有效期（秒），这里是 180 天 customFrameOptionsValue: SAMEORIGIN # 允许内容在同源的 iframe 中加载 customRequestHeaders: X-Forwarded-Proto: https # 设置 X-Forwarded-Proto 头为 https，用于指示原始请求协议 default-whitelist: ipAllowList: sourceRange: - "10.0.0.0/8" # 允许来自 10.0.0.0/8 网段的 IP 地址 - "192.168.0.0/16" # 允许来自 192.168.0.0/16 网段的 IP 地址 - "172.16.0.0/12" # 允许来自 172.16.0.0/12 网段的 IP 地址 secured: chain: middlewares: - default-whitelist # 应用默认的 IP 白名单中间件 - default-headers # 应用默认的安全头中间件配置完毕我们docker-compose up -d如果配置没有问题你就可以通过你配置的域名成功访问Traefik的面板。反代代理Dcoekr应用这里拿Memos的程序来举例子:下面是我的Memos的docker-compose.yaml 文件，我们只需要把暴露的端口删除，添加labels标签以及下面几个配置（你想访问的域名、容器的端口、开启https、使用tls证书）以及让我们的程序接入Traefik的网络就好了。version: "3.0" services: memos: image: ghcr.io/usememos/memos:latest container_name: memos volumes: - ./data/:/var/opt/memos environment: - driver=sqlite labels: - "traefik.enable=true" - "traefik.http.routers.memos.rule=Host(`memos.local.com`)" - "traefik.http.services.memos.loadbalancer.server.port=<程序的端口>" - "traefik.http.routers.memos.entrypoints=https" - "traefik.http.routers.memos.tls=true" networks: - traefik-net networks: traefik-net: external: trueTraefik DNS服务提供文档：https://doc.traefik.io/traefik/https/acme/#providersTraefik Docker配置文档：https://doc.traefik.io/traefik/routing/providers/docker/总结这个是博主自己在搭建Traefik 时的总结与分享，当然在搭建时也去借鉴了很多的资料。本文原发于我的博客：landonVPS
云服务器做 VPN 体验：Docker 部署 WireGuard（wg-easy）
最近反代很火，所以不少人都买了或者白嫖了服务器，作为反代使用，给服务器只用来做反代肯定有很多的冗余，所以我考虑利用服务器的公网 ip，做成 vpn 使用，下面就是一个详细的教程此方案重点是：只对公网开放 VPN 端口（UDP 51820），管理后台不暴露公网，更安全。web 管理，方便多设备统一管理并导入总体原理WireGuard 是 VPN，本质是服务器上开一个虚拟网卡 wg0，客户端连上后拿到一个虚拟 IP（如 10.66.66.2）。“全局走 VPN / 分流” 主要由客户端配置里的 AllowedIPs 决定： 全局：0.0.0.0/0分流：只填你想走 VPN 的网段（如 10.66.66.0/24 或你家的内网段）wg-easy = WireGuard + Web 管理界面：让你一键创建多个设备配置、二维码导入。A. 部署前检查（确认 Docker/Compose 可用）在服务器执行：docker --version docker compose version 如果 docker compose version 报错，安装 compose 插件：sudo apt update sudo apt install -y docker-compose-plugin 确认 Docker 在运行：sudo systemctl enable --now docker B. 开启 IPv4 转发（否则连上 VPN 也可能无法上网）执行：echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wg.conf sudo sysctl --system 解释：VPN 客户端的流量要 “经过服务器转发到公网”，Linux 默认可能不转发，所以要打开 ip_forward。C. 云安全组 / 防火墙：放行端口你需要在云厂商控制台安全组放行：入站 UDP 51820（WireGuard 连接端口，必须）管理后台端口 51821 不需要放行（我们会只让它监听 127.0.0.1）解释：如果 UDP 51820 没放行，客户端永远握手不上（handshake 失败），这是最常见原因。D. 使用 Docker Compose 部署 wg-easy（安全版：后台不对公网开放）1）创建目录sudo mkdir -p /opt/wg-easy cd /opt/wg-easy 2）创建 docker-compose.yml把下面两处改掉：WG_HOST=你的服务器公网IP或域名PASSWORD_HASH=改成密码的hash值生成 bcrypt 密码哈希，并写入 PASSWORD_HASH在服务器安装生成工具：apt update apt install -y apache2-utils 生成 bcrypt（示例密码用 123，实际请用强密码）：<BASH> htpasswd -bnBC 10 "" "123" | tr -d ':\n' 会输出类似：$2y$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 关键细节：Compose 里必须把 $ 写成 $$Docker Compose 会把 $VAR 当变量替换，所以 bcrypt 中的 $ 必须转义。例如哈希是：$2y$10$ABC... 写入 compose 时必须变成：$$2y$$10$$ABC... 然后执行创建文件：sudo tee /opt/wg-easy/docker-compose.yml >/dev/null <<'EOF' services: wg-easy: image: ghcr.io/wg-easy/wg-easy:latest container_name: wg-easy restart: unless-stopped environment: # 你的服务器公网 IP 或域名（客户端连接时用） - WG_HOST=159.223.37.240 # 管理后台密码（务必设置强密码） # 这里切记（新版不可使用PASSDWORD,需要使用PASSWORD_HASH） - PASSWORD_HASH= 这里填写你密码生成的hash值 # WireGuard 端口（UDP） - WG_PORT=51820 # Web 管理后台端口（TCP） - PORT=51821 # 给客户端分配的 VPN 网段 - WG_DEFAULT_ADDRESS=10.66.66.x # 客户端默认 DNS（全局模式时通常需要） - WG_DEFAULT_DNS=1.1.1.1 # 默认“全局走 VPN”（你优先全局，所以这里这样设） - WG_ALLOWED_IPS=0.0.0.0/0 volumes: # 配置与密钥会保存在宿主机这个目录，容器重建也不丢 - /opt/wg-easy:/etc/wireguard # 让容器能使用宿主机内核模块 - /lib/modules:/lib/modules:ro ports: # 对公网开放 WireGuard - "51820:51820/udp" # 管理后台只监听本机回环地址，不对公网开放（更安全） - "127.0.0.1:51821:51821/tcp" cap_add: - NET_ADMIN - SYS_MODULE sysctls: - net.ipv4.ip_forward=1 - net.ipv4.conf.all.src_valid_mark=1 EOF 解释关键点：WG_HOST：客户端配置里的 Endpoint 会用它，填错会导致连接不上。127.0.0.1:51821:51821/tcp：保证管理后台只能本机访问，公网扫不到。/opt/wg-easy:/etc/wireguard：把配置落地到宿主机，防止容器更新 / 重建后丢配置。3）启动cd /opt/wg-easy sudo docker compose up -d 查看是否启动成功：sudo docker ps sudo docker logs --tail=200 wg-easy E. 访问管理后台（通过 SSH 隧道）因为我们没对公网开放 51821，所以用 SSH 隧道从你电脑访问：在你自己的电脑（Windows/macOS/Linux 都可以）执行：ssh -L 51821:127.0.0.1:51821 root@你的服务器公网IP 然后浏览器打开：http://127.0.0.1:51821输入你设置的 PASSWORD 登录。解释：SSH 隧道相当于 “把服务器的本地端口映射到你本机”，外网无法直接访问后台，但你能安全管理。F. 创建客户端（你的每台设备一个）在 wg-easy 管理页面：点 New Client给设备起名（如 phone, laptop, ipad）直接： 扫二维码（手机 WireGuard App）或下载配置文件（电脑 WireGuard 客户端导入）建议：一台设备对应一个 client，方便你单独禁用 / 删除。G. 连接测试（确认全局模式生效）客户端连上后：访问 https://ipinfo.io 或 https://ifconfig.me看显示的出口 IP 是否变成你的服务器公网 IP（全局模式应当变为服务器 IP）如果你能 SSH 到服务器，也可以在服务器看握手：sudo docker exec -it wg-easy wg show H. 分流怎么实现你现在默认是全局（WG_ALLOWED_IPS=0.0.0.0/0）。如果某些设备想分流：在该设备的配置里把 AllowedIPs 改成你需要的网段即可，例如：只走 VPN 内网（仅访问 VPN 内部资源，不代理全网）：AllowedIPs = 10.66.66.0/24只访问你家 / 公司内网（举例 192.168.1.0/24）：AllowedIPs = 192.168.1.0/24, 10.66.66.0/24做法：你可以在 wg-easy 里把该设备配置下载下来后手动改，或在客户端里编辑配置。I. 结语大家新手一般都是只有一台服务器，wg-easy 很适合作为第一站：先把 VPN 跑起来、把设备接入跑通；等你对需求更明确后，再决定是留在 wg-easy 继续精细化配置，还是迁移到原生 WireGuard、Headscale 这类更强的组网架构。📌 转载信息来源： https://linux.do/t/topic/1494446转载时间： 2026/1/21 22:13:08
【开源】img-router v1.8.9 智能图像生成网关，让生图和对话一样自由
项目地址 GitHub - lianwusuoai/img-router 是一个让你使用对话方式 /v1/chat/completions 进行生图和图片编辑的智能路由。v1.7.3~1.8.9版本升级内容 1.新增webui设置，不用手敲配置文件，直接在webui改即可，可视化改配置 2.新增后端模式，key少的话，直接 客户端-img-router对话即可，key多的话用newapi/gptloat管理 3.增加AI提示词优化引擎，直接中文输出，自动翻译英文，自动扩充美化提示词，言出法随 4.支持文字生图，图片修改（图片编辑），带上下文改图/生图的融合生图 5.支持模型重定向，多渠道一个模型id输出 6.图片画廊，查看生图的提示词和图片 7.本次终于支持多图片生成（会慢，毕竟生成图片多，比较草台） 8.一件修改端口号，点击重启docker就修改，不用去改配置了。 9.输入图片过大自动压缩，减少生图错误。 测试环境 win11+Cherry Studiov 1.7.13，使用/v1/chat/completions 进行中转件/后端模式进行单图/多图生成。 架构图Docker Compose 快速安装git clone https://github.com/lianwusuoai/img-router.git cd老用户最好清除下缓存重建下docker-compose down; docker-compose build --no-cache; docker-compose up -d 我觉得有 bug 按理说应该也有 bug 但是我还没遇到 bug 那就是没 bug 嘻嘻（有问题可以留言 / 提 issue）最后，开启赛博打赏【打赏 1 LDC】【打赏 10 LDC】【打赏 50 LDC】📌 转载信息来源： https://linux.do/t/topic/1496467原作者： lianwusuoai转载时间： 2026/1/21 21:25:13
【开源自荐】可自托管支持 AI 分类的 Github Star 整理工具: Starflow
空闲时间搓了一个可自托管的 GitHub Stars 管理工具，项目大幅使用 vibe codeing，claude opus 贡献了百分之九十五的代码，开源地址：StarflowGithub 自带的 star 功能个人觉得并不好用，尤其是 list，整理起来非常地繁杂，同类项目很多都没有更新，或者是不喜欢这样那样的界面，故有了此项目。我自己在一个小鸡上也部署了这个项目，占用大致一百多 MB，地址 Starflow, 可以在线试试，登录的话默认会读取私库！，介意请勿登录，自行托管即可。功能特性核心功能Lists 分类管理 - 创建自定义 Lists，将仓库按项目、技术栈或用途分类，支持 24 种预设颜色AI 智能分类 - 接入 OpenAI 兼容 API，一键自动分类所有未整理的仓库双向同步 - 与 GitHub 实时同步，取消 Star 也会同步到你的账号README 预览 - 无需跳转即可查看仓库的 README 文档搜索与筛选全文搜索 - 按名称、描述快速搜索仓库多维筛选 - 按语言、List、星标数、更新时间等筛选排序方式 - 支持按 Star 时间、更新时间、星标数等排序数据管理笔记备注 - 为仓库添加个人笔记，记录使用心得和备忘导入导出 - 支持 JSON/CSV 格式导出，便于备份和迁移数据持久化 - PostgreSQL 存储，支持数据目录映射便于备份用户体验主题切换 - 支持亮色 / 暗色模式，偏好自动保存键盘快捷键 - 支持快捷键操作，提升效率响应式设计 - 适配桌面和移动端预览 🌙 暗色模式 ☀️ 亮色模式支持自托管，支持 docker-compose 部署，具体部署比如环境变量配置详情可以查看项目 Github README:services: starflow: gemiluxvii/starflow:latest container_name: starflow restart: unless-stopped ports: - "3000:3000" environment: - DATABASE_URL=postgresql://starflow:starflow@db:5432/starflow - GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID} - GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET} - NEXTAUTH_SECRET=${NEXTAUTH_SECRET} - NEXTAUTH_URL=${NEXTAUTH_URL} depends_on: db: condition: service_healthy db: postgres:16-alpine container_name: starflow-db restart: unless-stopped environment: - POSTGRES_USER=starflow - POSTGRES_PASSWORD=starflow - POSTGRES_DB=starflow volumes: - ./data/postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U starflow"] interval: 5s timeout: 5s retries: 5 AI 分类Starflow 支持接入 OpenAI 兼容的 API 进行智能分类。支持的服务OpenAI 官方 API第三方中转站本地部署的 Ollama、LocalAI 等配置方式进入「设置」页面在「AI 分类」部分填写： API 地址（如 https://api.openai.com 或中转站地址）API Key模型名称（如 gpt-3.5-turbo）点击「测试连接」验证配置启用 AI 分类功能分类说明提供 15 种标准分类：AI 工具、代理工具、CLI 工具、前端、后端、数据库、DevOps、编辑器、开发工具、下载工具、媒体工具、安全工具、学习资源、系统工具、其他支持单个仓库分类和批量一键分类优先匹配已有 Lists，减少重复分类技术栈前端: Next.js 15, React 19, Tailwind CSS 4, Radix UI后端: Next.js API Routes, NextAuth.js 5, Prisma 5数据库: PostgreSQLAI: OpenAI 兼容 API佬友也可以提提建议，喜欢的话点个 star，不胜感激📌 转载信息来源： https://linux.do/t/topic/1469088原作者： GEMILUXVII转载时间： 2026/1/16 18:49:18
各中转站对 RPM 有限制，同时禁止分发，本教程只给出自用模式看到群里不少佬友想在 newapi 中对接中转站，恰好我在用 RightCode，所以以 rightcode 为例，写（水）一篇教程吧。前者要求git (用于克隆仓库）windows docker desktop 或者 linux docker (建议有足够的内存 + 硬盘存储）配置好 docker composewindows docker desktop 建议选择 wsl2 作为 backend安装部署克隆仓库 & 启动先克隆仓库git clone https://github.com/QuantumNous/new-api.git 修改 docker-compose.yml本教程采用 postgresql```diff version: '3.4' # For compatibility with older Docker versions services: new-api: image: calciumion/new-api:latest container_name: new-api restart: always command: --log-dir /app/logs ports: - - "3000:3000" + - "3003:3000" volumes: - ./data:/data - ./logs:/app/logs environment: - - SQL_DSN=postgresql://root:123456@postgres:5432/new-api # ⚠️ IMPORTANT: Change the password in production! + - SQL_DSN=postgresql://root:idkpassword@postgres:5432/new-api # ⚠️ IMPORTANT: Change the password in production! # - SQL_DSN=root:123456@tcp(mysql:3306)/new-api # Point to the mysql service, uncomment if using MySQL - REDIS_CONN_STRING=redis://redis - TZ=Asia/Shanghai - ERROR_LOG_ENABLED=true # 是否启用错误日志记录 (Whether to enable error log recording) - BATCH_UPDATE_ENABLED=true # 是否启用批量更新 (Whether to enable batch update) depends_on: - redis - postgres healthcheck: test: ["CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' || exit 1"] interval: 30s timeout: 10s retries: 3 redis: image: redis:latest container_name: redis restart: always postgres: image: postgres:15 container_name: postgres restart: always environment: POSTGRES_USER: root - POSTGRES_PASSWORD: 123456 # ⚠️ IMPORTANT: Change this password in production! + POSTGRES_PASSWORD: idkpassword # ⚠️ IMPORTANT: Change this password in production! POSTGRES_DB: new-api volumes: - pg_data:/var/lib/postgresql/data volumes: pg_data: # mysql_data: 编辑完保存，继续执行命令docker compose up -d 等待 n 秒（取决于你的网速～）出现以下字样，拉去镜像和启动成功[+] Running 5/5 ✔ Network new-api_default Created 0.1s ✔ Volume "new-api_pg_data" Created 0.0s ✔ Container redis Started 0.7s ✔ Container postgres Started 0.7s ✔ Container new-api Started 1.0s NewAPI 配置打开浏览器，输入 http://localhost:3003/ 后，会出现配置页如果你的数据库检查没有错误，继续下一步，填写管理员账号和密码下一步，选择使用模式最后 初始化系统 即可配置渠道打开 控制台依次点击 渠道管理 添加渠道，并填入 类型 / 名称 / 密钥填入 API 地址为 https://www.right.codes/codex因为 rightcode 支持了模型列表接口，点获取模型列表即可获取可用的模型随后确定，并提交即可模型管理按照图中的内容，切换刀模型管理，依次点击 同步 → 下一步 → 确定配合 CC Switch 使用现在 控制台 -> 令牌管理 生成令牌，并填入刀 cc switch 中最终的 config.tomlmodel_provider = "custom" model = "gpt-5.2" model_reasoning_effort = "xhigh" disable_response_storage = true [model_providers.custom] name = "custom" wire_api = "responses" requires_openai_auth = false base_url = "http://localhost:3003/v1" 保存好以后，切换供应商，可以开始 coding 了📌 转载信息来源： https://linux.do/t/topic/1462465原作者： unsafe转载时间： 2026/1/15 18:30:28
服务openlist一个支持多种存储的文件列表程序分享文件及 webdav Docker Compose services: openlist: openlistteam/openlist:latest container_name: openlist ports: - "自定义端口:5244" user: '0:0' volumes: - /本地存储配置目录/docker/OpenList/data:/opt/openlist/data - /本地存储配置目录/docker/aria2-pro/temp/aria2:/opt/openlist/data/temp/aria2 environment: - UMASK=022 - TZ=Asia/Shanghai restart: unless-stopped networks: - defaultnet mem_limit: 1g cpus: 2 depends_on: - aria2-pro # 单独部署aria2，因为据说后续没有aio后缀的镜像了。 aria2-pro: p3terx/aria2-pro container_name: aria2-pro ports: - "自定义端口:11445" # 不用BT所以注释 # - '6888:6888' # - '6888:6888/udp' volumes: - /本地存储配置目录/docker/aria2-pro/config:/config - /本地存储配置目录/docker/aria2-pro/downloads:/downloads - /本地存储配置目录/docker/aria2-pro/temp/aria2:/opt/openlist/data/temp/aria2 environment: - PUID=0 - PGID=0 - TZ=Asia/Shanghai - UMASK_SET=022 # 设置密码 - RPC_SECRET=123456 - RPC_PORT=11445 - LISTEN_PORT=6888 - IPV6_MODE=true # 由于配置文件是从github拉取的，所以可以通过环境变量设置代理 # - HTTP_PROXY=http://192.168.1.2:7890 # - HTTPS_PROXY=http://192.168.1.2:7890 restart: unless-stopped networks: - defaultnet mem_limit: 1g cpus: 2 ariang: p3terx/ariang container_name: ariang network_mode: host environment: - PUID=0 - PGID=0 - TZ=Asia/Shanghai command: ["--port", "自定义端口", "--ipv6"] restart: unless-stopped mem_limit: 1g cpus: 2 depends_on: - aria2-pro networks: defaultnet: external: true gitea代码仓库 Docker Compose services: gitea: gitea/gitea:latest container_name: gitea ports: - "自定义端口:22" - "自定义端口:3000" volumes: - /本地存储配置目录/docker/gitea/data:/data environment: - USER_UID=1000 - USER_GID=1000 restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true qinglong定时任务，配合 dailycheckin 签到 Docker Compose services: qinglong: whyour/qinglong:debian container_name: qinglong ports: - "自定义端口:5700" volumes: - /本地存储配置目录/docker/qinglong/data:/ql/data restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true vaultwarden密码管理器 Docker Compose services: vaultwarden: vaultwarden/server:latest container_name: vaultwarden ports: - "自定义端口:80" volumes: - /本地存储配置目录/docker/vaultwarden/data:/data environment: - SIGNUPS_ALLOWED=false - INVITATIONS_ALLOWED=false - EXPERIMENTAL_CLIENT_FEATURE_FLAGS=ssh-key-vault-item,ssh-agent restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true authentik用于单点登录各个系统 Docker Compose services: authentik-server: ghcr.io/goauthentik/server:2025.10.3 container_name: authentik-server command: server restart: unless-stopped environment: AUTHENTIK_SECRET_KEY: 密钥 AUTHENTIK_POSTGRESQL__HOST: postgresql地址 AUTHENTIK_POSTGRESQL__PORT: postgresql端口 AUTHENTIK_POSTGRESQL__NAME: authentik AUTHENTIK_POSTGRESQL__USER: authentik AUTHENTIK_POSTGRESQL__PASSWORD: vUhJ5hGFIxvgK0 ports: - 自定义端口:9000 - 自定义端口:9443 volumes: - - /本地存储配置目录/docker/authentik/media:/media - - /本地存储配置目录/docker/authentik/templates:/templates networks: - defaultnet mem_limit: 3g cpus: 3 authentik-worker: ghcr.io/goauthentik/server:2025.10.3 container_name: authentik-worker command: worker restart: unless-stopped user: root environment: AUTHENTIK_SECRET_KEY: 密钥 AUTHENTIK_POSTGRESQL__HOST: postgresql地址 AUTHENTIK_POSTGRESQL__PORT: postgresql端口 AUTHENTIK_POSTGRESQL__NAME: authentik AUTHENTIK_POSTGRESQL__USER: authentik AUTHENTIK_POSTGRESQL__PASSWORD: postgresql密码 volumes: # - /var/run/docker.sock:/var/run/docker.sock - - /本地存储配置目录/docker/authentik/media:/media - - /本地存储配置目录/docker/authentik/certs:/certs - - /本地存储配置目录/docker/authentik/templates:/templates networks: - defaultnet mem_limit: 3g cpus: 3 networks: defaultnet: external: true opengist自部署文本托管，类似 Github Gist Docker Compose services: opengist: thomiceli/opengist:latest container_name: opengist ports: - "自定义端口:6157" volumes: - /本地存储配置目录/docker/Opengist:/opengist environment: - TZ=Asia/Shanghai restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true rustDesk远程桌面 Docker Compose services: hbbs: rustdesk/rustdesk-server:latest container_name: hbbs command: hbbs ports: - "自定义端口:21115" - "自定义端口:21116/tcp" - "自定义端口:21116/udp" volumes: - /本地存储配置目录/docker/rustdesk/data:/root restart: unless-stopped networks: - defaultnet depends_on: - hbbr hbbr: rustdesk/rustdesk-server:latest container_name: hbbr command: hbbr ports: - "自定义端口:21117" volumes: - /本地存储配置目录/docker/rustdesk/data:/root restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true glance主页导航，搭配 sun-panel 的浏览器插件使用 Docker Compose services: glance: glanceapp/glance:latest container_name: glance ports: - 自定义端口:8080 volumes: - /本地存储配置目录/docker/glance/config:/app/config - /本地存储配置目录/docker/glance/assets:/app/assets - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock restart: unless-stopped environment: - TZ=Asia/Shanghai # - HTTP_PROXY=http://192.168.1.2:7890 # - HTTPS_PROXY=http://192.168.1.2:7890 networks: - defaultnet mem_limit: 1g cpus: 2 networks: defaultnet: external: true dailyhot-api各大平台热榜接口 api、rss搭配 glance 使用 Docker Compose services: dailyhot-api: imsyy/dailyhot-api:latest container_name: dailyhot-api ports: - 自定义端口:6688 restart: unless-stopped networks: - defaultnet mem_limit: 1g cpus: 2 networks: defaultnet: external: true HowToCook菜谱 Docker Compose services: how-to-cook: ghcr.io/anduin2017/how-to-cook:latest container_name: how-to-cook ports: - "自定义端口:5000" restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true sun-panel导航页暂时用的是 glance，感觉信息更多一点 Docker Compose services: sun-panel: hslr/sun-panel:latest container_name: sun-panel ports: - "自定义端口:3002" volumes: - /本地存储配置目录/docker/sun-panel/conf:/app/conf restart: unless-stopped networks: - defaultnet sun-panel-helper: madrays/sun-panel-helper:latest container_name: sun-panel-helper ports: - "自定义端口:80" volumes: - /本地存储配置目录/docker/sun-panel/sun-panel-helper/data:/app/backend/data - /本地存储配置目录/docker/sun-panel/sun-panel-helper/backups:/app/backend/backups - /本地存储配置目录/docker/sun-panel/conf/custom:/app/backend/custom environment: - BACKEND_PORT=3001 restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true RSSrsshub万物皆可 RSS Docker Compose services: rsshub: diygod/rsshub:chromium-bundled container_name: rsshub ports: - "自定义端口:1200" environment: - REDIS_URL=redis://192.168.1.2:6379/ - PROXY_URI=http://192.168.1.2:7890 - PUPPETEER_WS_ENDPOINT=ws://browserless:3000 - ACCESS_KEY= #密钥 - CACHE_TYPE=redis depends_on: - redis - browserless restart: unless-stopped networks: - defaultnet browserless: browserless/chrome:latest container_name: browserless ulimits: core: hard: 0 soft: 0 restart: unless-stopped networks: - defaultnet redis: redis:alpine container_name: redis volumes: - /本地存储配置目录/docker/redis/data:/data restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true freshrss一个可自托管的 RSS 和 Atom 源聚合器 Docker Compose services: freshrss: linuxserver/freshrss:latest container_name: freshrss ports: - "自定义端口:80" volumes: - /本地存储配置目录/docker/FreshRSS/config:/config environment: - TZ=Asia/Shanghai - PUID=1000 - PGID=1000 restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true rss-to-telegram将 RSS 推送到 Tg Docker Compose services: rss-to-telegram: rongronggg9/rss-to-telegram:latest container_name: rss-to-telegram volumes: - /本地存储配置目录/docker/rsstt/config:/app/config environment: - TOKEN= #你的机器人token - MANAGER= #你的tgid - T_PROXY=socks5://192.168.1.2:7890 - R_PROXY=socks5://192.168.1.2:7890 - MULTIUSER=0 restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true wewe-rss微信公众号 RSS Docker Compose services: wewe-rss: cooderl/wewe-rss-sqlite:latest container_name: wewe-rss ports: - "自定义端口:4000" volumes: - /本地存储配置目录/docker/wewe-rss/data:/app/data environment: - SERVER_ORIGIN_URL= #你的域名 - MAX_REQUEST_PER_MINUTE=60 - AUTH_CODE= #你的密钥 - DATABASE_URL=file:../data/wewe-rss.db - AUTH_DATABASE_TYPECODE=sqlite - FEED_MODE=fulltext - ENABLE_CLEAN_HTML=true restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true 影视moviepilot媒体库自动化管理 Docker Compose services: moviepilot: jxxghp/moviepilot-v2:latest container_name: moviepilot ports: - "自定义端口:3000" volumes: - /本地存储配置目录/docker/tr/config/torrents:/tr - /本地存储配置目录/docker/qb/qBittorrent/BT_backup:/qb - /本地存储配置目录/docker/MoviePilot-v2/config:/config - /本地存储配置目录/docker/MoviePilot-v2/core:/moviepilot/.cache/ms-playwright - # 剩下的自己加本地存储的映射 environment: - PGID=0 - PUID=0 - UMASK=000 - TZ=Asia/Shanghai - AUTH_SITE= #你的认证方式，现在似乎也可以不填，跑起来直接去网页里填 - # 对应的认证密钥 - PROXY_HOST=http://192.168.6.2:7890 - MOVIEPILOT_AUTO_UPDATE=release - PORT=3001 - NGINX_PORT=3000 restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true jellyfin媒体库 Docker Compose services: jellyfin: jellyfin/jellyfin container_name: jellyfin ports: - "自定义端口:8096" volumes: - /本地存储配置目录/docker/jellyfin/path/to/config:/config - /本地存储配置目录/docker/jellyfin/path/to/cache:/cache # :ro只读模式 - /本地存储配置目录/public/公共下载:/downloads:ro - /本地存储配置目录/public/公共下载1:/downloads1:ro environment: # 外部访问地址 - JELLYFIN_PublishedServerUrl=https://example.com # 为了刮削，添加代理 - HTTP_PROXY=http://192.168.1.2:7890 - HTTPS_PROXY=http://192.168.1.2:7890 # 调用核心显卡 devices: - /dev/dri:/dev/dri restart: unless-stopped networks: - defaultnet mem_limit: 2g cpus: 2 networks: defaultnet: external: true qbittorrent下载器 Docker Compose services: qbittorrent: linuxserver/qbittorrent:4.6.7 container_name: qbittorrent network_mode: host volumes: - /本地存储配置目录/docker/qb:/config - # 剩下的自己加本地存储的映射 environment: - WEBUI_PORT=自定义端口 - PGID=0 - PUID=0 restart: unless-stopped transmission保种 Docker Compose services: transmission: linuxserver/transmission:4.0.4 container_name: transmission network_mode: host volumes: - /本地存储配置目录/docker/tr/watch:/watch - /本地存储配置目录/docker/tr/web:/web #默认不用加，需要单独去下UI仓库的代码 - /本地存储配置目录/docker/tr/config:/config - # 剩下的自己加本地存储的映射 environment: - PGID=0 - PUID=0 - TZ=Asia/Shanghai - PEERPORT=自定义端口 - USER= #账号 - PASS= #密码 - TRANSMISSION_WEB_HOME=/web #默认不用加，有UI才需要 restart: unless-stopped omnibox影视综合管理，集成影视站，网盘搜索，iptv，直播平台，支持 tvbox 订阅 Docker Compose services: omnibox: lampon/omnibox:latest container_name: omnibox ports: - 自定义端口:7023 volumes: - /本地存储配置目录/docker/omnibox/data:/app/data restart: unless-stopped networks: - defaultnet mem_limit: 1g cpus: 2 networks: defaultnet: external: true pansou网盘搜索 api，搭配 OmniBox 使用 Docker Compose services: pansou: ghcr.io/fish2018/pansou:latest container_name: pansou ports: - 自定义端口:8888 environment: - PORT=8888 - CHANNELS=tgsearchers3,Aliyun_4K_Movies,bdbdndn11,yunpanx,bsbdbfjfjff,yp123pan,sbsbsnsqq,yunpanxunlei,tianyifc,BaiduCloudDisk,txtyzy,peccxinpd,gotopan,PanjClub,kkxlzy,baicaoZY,MCPH01,bdwpzhpd,ysxb48,jdjdn1111,yggpan,MCPH086,zaihuayun,Q66Share,ucwpzy,shareAliyun,alyp_1,dianyingshare,Quark_Movies,XiangxiuNBB,ydypzyfx,ucquark,xx123pan,yingshifenxiang123,zyfb123,tyypzhpd,tianyirigeng,cloudtianyi,hdhhd21,Lsp115,oneonefivewpfx,qixingzhenren,taoxgzy,Channel_Shares_115,tyysypzypd,vip115hot,wp123zy,yunpan139,yunpan189,yunpanuc,yydf_hzl,leoziyuan,pikpakpan,Q_dongman,yoyokuakeduanju,TG654TG,WFYSFX02,QukanMovie,yeqingjie_GJG666,movielover8888_film3,Baidu_netdisk,D_wusun,FLMdongtianfudi,KaiPanshare,QQZYDAPP,rjyxfx,PikPak_Share_Channel,btzhi,newproductsourcing,cctv1211,duan_ju,QuarkFree,yunpanNB,kkdj001,xxzlzn,pxyunpanxunlei,jxwpzy,kuakedongman,liangxingzhinan,xiangnikanj,solidsexydoll,guoman4K,zdqxm,kduanju,cilidianying,CBduanju,SharePanFilms,dzsgx,BooksRealm # 必须指定启用的插件，多个插件用逗号分隔 - ENABLED_PLUGINS=labi,zhizhen,shandian,duoduo,muou,wanou,hunhepan,jikepan,panwiki,pansearch,panta,qupansou,hdr4k,pan666,susu,thepiratebay,xuexizhinan,panyq,ouge,huban,cyg,erxiao,miaoso,fox4k,pianku,clmao,wuji,cldi,xiaozhang,libvio,leijing,xb6v,xys,ddys,hdmoli,yuhuage,u3c3,javdb,clxiong,jutoushe,sdso,xiaoji,xdyh,haisou,bixin,djgou,nyaa,xinjuc,aikanzy,qupanshe,xdpan,discourse,yunsou - CACHE_ENABLED=true - CACHE_PATH=/app/cache - CACHE_MAX_SIZE=100 - CACHE_TTL=60 - ASYNC_PLUGIN_ENABLED=true - ASYNC_RESPONSE_TIMEOUT=4 - ASYNC_MAX_BACKGROUND_WORKERS=20 - ASYNC_MAX_BACKGROUND_TASKS=100 - ASYNC_CACHE_TTL_HOURS=1 # 认证配置（可选） # - AUTH_ENABLED=true # - AUTH_USERS=admin:admin123,user:pass456 # - AUTH_TOKEN_EXPIRY=24 # - AUTH_JWT_SECRET=your-secret-key-here # 如果需要代理，取消下面的注释并设置代理地址 # - PROXY=socks5://192.168.1.2:7890 volumes: - /本地存储配置目录/docker/pansou/app/cache.env:/app/cache restart: unless-stopped networks: - defaultnet mem_limit: 1g cpus: 2 networks: defaultnet: external: true danmu-api弹幕 api，搭配 OmniBox 使用 Docker Compose services: danmu-api: logvar/danmu-api:latest container_name: danmu-api ports: - 自定义端口:9321 volumes: - /本地存储配置目录/docker/danmu-api/config.yaml:/app/config.yaml restart: unless-stopped networks: - defaultnet mem_limit: 1g cpus: 2 networks: defaultnet: external: true 管理dockge一个美观、易用且响应迅速的自托管 Docker compose.yaml 堆栈管理器。 Docker Compose services: dockge: louislam/dockge:latest container_name: dockge ports: - "自定义端口:5001" volumes: - /本地存储配置目录/docker/dockge/data:/app/data - /var/run/docker.sock:/var/run/docker.sock - /本地存储配置目录/docker/dockge/opt/stacks:/opt/stacks environment: - DOCKGE_STACKS_DIR=/opt/stacks restart: unless-stopped networks: - defaultnet mem_limit: 1g cpus: 2 networks: defaultnet: external: true portainerdocker 管理面板暂时弃用了，没有遮罩层，web 页面用得很难受 Docker Compose services: portainer: 6053537/portainer-ce:latest container_name: portainer ports: - "自定义端口:9000" volumes: - /本地存储配置目录/docker/portainer/data:/data - /var/run/docker.sock:/var/run/docker.sock environment: - HTTP_PROXY=http://192.168.1.2:7890 - HTTPS_PROXY=http://192.168.1.2:7890 - NO_PROXY=localhost,127.0.0.1,::1,docker.internal restart: unless-stopped networks: - defaultnet mem_limit: 1g cpus: 2 networks: defaultnet: external: true home-assistant智能家居 Docker Compose services: home-assistant: ghcr.io/home-assistant/home-assistant:stable container_name: home-assistant network_mode: host privileged: true volumes: - /本地存储配置目录/docker/HomeAssistant/config:/config - /本地存储配置目录/docker/HomeAssistant/ssh:/root/.ssh environment: - TZ=Asia/Shanghai restart: unless-stopped 备份icloudpdicloud 照片备份 Docker Compose services: icloudpd: boredazfcuk/icloudpd:latest container_name: icloudpd network_mode: host volumes: - /本地存储配置目录/docker/icloudpd/config:/config - /本地存储配置目录/Goalonez/Photos/iCloud:/iCloud environment: - apple_id= #你的appid - download_path=/iCloud - icloud_china=true - auth_china=true - auto_delete=true - skip_check=true #跳过检测，处理全部文件，否则只有在有新的照片的时候才能触发删除 - notification_type=Telegram #默认不需要，通知 - telegram_token= #你的机器人token - telegram_chat_id= #你的tgid - telegram_polling=true - telegram_server= #反代tg api地址。当然你也可以直接HTTP_PROXY去走代理 - telegram_http=false - TZ=Asia/Shanghai restart: unless-stopped duplicati跨盘备份、备份到云盘 Docker Compose services: duplicati: duplicati/duplicati:latest container_name: duplicati ports: - 自定义端口:8200 volumes: - /本地存储配置目录/docker/duplicati/data:/data - /本地存储配置目录/:/sourcessd - /本地存储配置目录/backup:/backup restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true bili-sync哔哩哔哩收藏视频备份 Docker Compose services: bili-sync-rs: amtoaer/bili-sync-rs:latest container_name: bili-sync-rs ports: - 自定义端口:12345 volumes: - /本地存储配置目录/docker/bili-sync-rs/config:/app/.config/bili-sync - /本地存储配置目录/public/videos/Bilibilis:/Bilibilis # - /本地存储配置目录/docker/jellyfin/path/to/config/metadata/People:/app/.config/bili-sync/upper_face restart: unless-stopped networks: - defaultnet mem_limit: 1g cpus: 2 networks: defaultnet: external: true syncthing同步文件 Docker Compose services: syncthing: syncthing/syncthing:latest container_name: syncthing ports: - 自定义端口:8384 # Web UI - 自定义端口:22000/tcp # TCP file transfers - 自定义端口:22000/udp # QUIC file transfers - 自定义端口:21027/udp # Receive local discovery broadcasts volumes: - /本地存储配置目录/docker/syncthing:/var/syncthing environment: - PUID=1000 - PGID=1000 restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true immich照片管理 Docker Compose services: immich-server: ghcr.io/immich-app/immich-server:release container_name: immich_server ports: - '自定义端口:2283' volumes: - /本地存储配置目录/docker/immich/data:/data # 中文地理编码https://github.com/ZingLix/immich-geodata-cn - /本地存储配置目录/docker/immich/geodata:/build/geodata - /本地存储配置目录/docker/immich/i18n-iso-countries/langs:/usr/src/app/server/node_modules/i18n-iso-countries/langs - /本地存储配置目录/Goalonez/Photos:/Photos environment: - DB_HOSTNAME=immich_postgres - DB_PORT=5432 - DB_USERNAME=postgres - DB_PASSWORD=自定义密码 - DB_DATABASE_NAME=immich # 我是复用了rsshub的redis，请自行参考上方rsshub中的redis镜像 - REDIS_HOSTNAME=redis - REDIS_PORT=6379 # 同实例不同库 - REDIS_DBINDEX=1 - TZ=Asia/Shanghai depends_on: - immich_postgres restart: unless-stopped networks: - defaultnet mem_limit: 2g cpus: 3 immich-machine-learning: ghcr.io/immich-app/immich-machine-learning:release container_name: immich_machine_learning volumes: - /本地存储配置目录/docker/immich/model-cache:/cache environment: # 代理 - HTTP_PROXY=http://192.168.5.2:7890 - HTTPS_PROXY=http://192.168.5.2:7890 - NO_PROXY=localhost,127.0.0.1,immich - TZ=Asia/Shanghai restart: unless-stopped networks: - defaultnet mem_limit: 4g cpus: 4 immich_postgres: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a container_name: immich_postgres ports: - '5432:5432' volumes: - /本地存储配置目录/docker/immich/postgresql/data:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=自定义密码 - POSTGRES_USER=postgres - POSTGRES_DB=immich - POSTGRES_INITDB_ARGS=--data-checksums - TZ=Asia/Shanghai restart: unless-stopped networks: - defaultnet shm_size: mem_limit: 3g cpus: 2 networks: defaultnet: external: true 网络lucky自动续 ssl 证书，反代还有一堆功能 Docker Compose services: lucky: gdy666/lucky:latest container_name: lucky network_mode: host volumes: - /本地存储配置目录/docker/lucky/luckyconf:/goodluck restart: unless-stopped mihomo Docker Compose services: mihomo: metacubex/mihomo:latest container_name: mihomo ports: - "自定义端口:7890" - "自定义端口:9090" volumes: - /本地存储配置目录/docker/mihomo/metacubexd:/metacubexd #默认不用，图形化界面需要单独去git拉代码映射 - /本地存储配置目录/docker/mihomo/config:/root/.config/mihomo restart: unless-stopped networks: - defaultnet networks: defaultnet: external: true 📌 转载信息来源： https://linux.do/t/topic/1445582转载时间： 2026/1/14 11:05:30
做了个 Proxmox VE 多集群管理平台，有类似需求的朋友欢迎一起交流学习
最近写一个关于 Proxmox VE 多集群开源项目，第一次整这玩意，各位观众老爷们给评一评，国内会有人用？不知道有木有要入坑欢迎大家一起交流交流项目简介一个开源的 Proxmox VE 多集群 Web 管理平台，解决多集群运维的痛点。解决什么问题如果你运维多个 PVE 集群，应该深有体会： 在多个 Web 界面之间频繁切换 手动同步虚拟机模板费时费力 缺少跨集群的资源全局视图 PveSphere 提供统一的控制面板，让你从单一界面管理所有集群。核心功能 多集群统一管理 虚拟机生命周期管理（创建、迁移、备份等） 自动化模板同步 实时资源监控 VNC 控制台访问 快速体验git clone https://github.com/pvesphere/pvesphere.git cd pvesphere make docker-compose-build 默认账号：[email protected] / Ab123456访问： http://localhost:8080技术栈 后端：Go + Nunu 框架 前端：Vue + vue-pure-admin 部署：Docker Compose 适用场景✅ 管理多个 PVE 集群 ✅ 需要自动化模板分发 ✅ 需要集中监控和管理❌ 单集群用户（原生界面可能更合适）项目地址 GitHub: https://github.com/pvesphere/pvesphere 文档: https://docs.pvesphere.com License: Apache 2.0 联系方式 微信：pvesphere 备注：PveSphere 邮箱： [email protected] Twitter：@PveSphere GitHub： https://github.com/pvesphere/pvesphere 文档： https://docs.pvesphere.com 博客原文https://www.ljohn.cn/posts/91d244ba/欢迎试用和反馈 🙌
分享一个自用的 Certimate docker compose file 配置，一个支持 SSL 证书从申请到部署完全自动化的开源软件。文档 | Certimatehttps://docs.certimate.me/zh-CN/docs/introduction/services: certimate: certimate/certimate:latest container_name: certimate restart: always ports: - "127.0.0.1:8090:8090" volumes: - /etc/localtime:/etc/localtime:ro - ./data:/app/pb_data environment: - TZ=Asia/Shanghai deploy: resources: limits: memory: 512M reservations: memory: 128M security_opt: - no-new-privileges:true read_only: true tmpfs: - /tmp:size=64M,mode=1777 healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://localhost:8090/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 10s logging: driver: json-file options: max-size: "10m" max-file: "3" compress: "true" networks: default: driver: bridge 📌 转载信息来源： https://linux.do/t/topic/1431017原作者： puppetdevz转载时间： 2026/1/12 15:02:10
分享一个自用的 Certimate docker compose file 配置，一个支持 SSL 证书从申请到部署完全自动化的开源软件。文档 | Certimatehttps://docs.certimate.me/zh-CN/docs/introduction/services: certimate: certimate/certimate:latest container_name: certimate restart: always ports: - "127.0.0.1:8090:8090" volumes: - /etc/localtime:/etc/localtime:ro - ./data:/app/pb_data environment: - TZ=Asia/Shanghai deploy: resources: limits: memory: 512M reservations: memory: 128M security_opt: - no-new-privileges:true read_only: true tmpfs: - /tmp:size=64M,mode=1777 healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://localhost:8090/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 10s logging: driver: json-file options: max-size: "10m" max-file: "3" compress: "true" networks: default: driver: bridge 📌 转载信息来源： https://linux.do/t/topic/1431017原作者： puppetdevz转载时间： 2026/1/12 11:38:43