xiaohack's Blog - Docker Compose
type: channel
link: https://blog.xiaohack.org/tag/docker-compose/
items: NAS 部署 TrendRadar 手把手教程，AI 加持打造私有情报局
items: Docker 环境中使用 Traefik进行反向代理
items: 云服务器做 VPN 体验：Docker 部署 WireGuard（wg-easy）
items: 【开源】img-router v1.8.9 智能图像生成网关，让生图和对话一样自由
items: 【开源自荐】可自托管支持 AI 分类的 Github Star 整理工具: Starflow
items: [教程] 以 newapi 自用模式对接中转站
items: 分享一些我部署的 NAS 服务
items: 做了个 Proxmox VE 多集群管理平台，有类似需求的朋友欢迎一起交流学习
items: 自用 Certimate Docker Compose 配置分享

NAS 部署 TrendRadar 手把手教程，AI 加持打造私有情报局
type: item
date: 2026-01-26T12:39:06+08:00
description: 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:-} # 钉钉 - DINGT…

Docker 环境中使用 Traefik进行反向代理
type: item
date: 2026-01-23T15:17:54+08:00
description: 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.…

云服务器做 VPN 体验：Docker 部署 WireGuard（wg-easy）
type: item
date: 2026-01-21T22:13:09+08:00
description: 最近反代很火，所以不少人都买了或者白嫖了服务器，作为反代使用，给服务器只用来做反代肯定有很多的冗余，所以我考虑利用服务器的公网 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…

【开源】img-router v1.8.9 智能图像生成网关，让生图和对话一样自由
type: item
date: 2026-01-21T21:25:13+08:00
description: 项目地址 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
type: item
date: 2026-01-16T18:49:19+08:00
description: 空闲时间搓了一个可自托管的 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:1…

[教程] 以 newapi 自用模式对接中转站
type: item
date: 2026-01-15T18:30:29+08:00
description: 各中转站对 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…

分享一些我部署的 NAS 服务
type: item
date: 2026-01-14T11:05:32+08:00
description: 服务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…

做了个 Proxmox VE 多集群管理平台，有类似需求的朋友欢迎一起交流学习
type: item
date: 2026-01-13T11:13:49+08:00
description: 最近写一个关于 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 配置分享
type: item
date: 2026-01-12T15:02:15+08:00
description: 分享一个自用的 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 配置分享
type: item
date: 2026-01-12T11:38:48+08:00
description: 分享一个自用的 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