热门搜索:
ghcr.io/windmill-labs/caddy-l4:latest
ghcr.io
latestghcr.iolinux/amd642026-04-25
用于内部代码的开源开发者平台:API、后台任务、工作流和UI。可自托管的替代方案,适用于Retool、Pipedream、Superblocks以及简化版的Temporal,提供自动生成的UI和自定义UI,可将工作流和脚本作为内部应用触发。
脚本会自动转换为可共享的UI,并且可以组合成工作流,或用于通过低代码构建的更丰富的应用中。支持的语言:Python、TypeScript、Go、Bash、SQL、GraphQL、PowerShell、Rust等。
立即试用 - 网站 - 文档 - Discord - Hub - 贡献者指南
Windmill - 用于API、后台任务、工作流和UI的开发者平台
Windmill 完全开源(AGPLv3 许可),Windmill Labs 提供专用实例以及商业支持和许可。
Windmill - 用于API、后台任务、工作流和UI的开发者平台
核心概念
实际脚本代码示例
本地开发
技术栈
最快的可自托管工作流引擎
安全性
性能
架构
如何自托管
Docker Compose
Kubernetes(Helm 图表)
云服务提供商
OAuth、SSO 和 SMTP
许可
集成
环境变量
运行本地开发环境
仅前端
后端+前端
贡献者
版权
核心概念
脚本参数会被自动解析并生成前端。
创建工作流!您可以将自己的脚本或社区在WindmillHub上共享的脚本串联起来。
在脚本和工作流之上构建复杂UI。
在Windmill之上构建您的整个基础设施!
实际脚本代码示例
本地开发
Windmill 支持多种本地开发方式并与您的实例同步:
| 工具 | 描述 |
|------|------|
| CLI | 从本地文件或GitHub同步脚本,从命令行运行脚本/工作流 |
| VS Code 扩展 | 直接从VS Code / Cursor编辑和测试脚本及工作流,提供完整IDE支持 |
| Git 同步 | Windmill与Git仓库之间的双向同步 |
| Claude Code | 借助Claude进行AI辅助开发,支持脚本、工作流和应用 |
您可以通过传递正确的环境变量,让wmill客户端库从您的实例获取资源和变量,从而在本地运行脚本。请参阅本地开发文档。
云服务提供商
Windmill 可在 AWS (EKS/ECS)、GCP、Azure、Ubicloud、Fly.io、Render.com、Hetzner、Digital Ocean 等平台运行。经验法则:每 1vCPU 和 1-2 GB RAM 配置 1 个 worker。
OAuth、SSO 与 SMTP
可直接从超级管理员界面配置 OAuth 和 SSO(Google Workspace、Microsoft/Azure、Okta)。参见文档。
许可协议
社区版可免费在内部使用。如需商业再分发或提供托管服务,请联系 。详情参见 LICENSE 和 定价。
托管于 ghcr.io/windmill-labs/windmill 的 Docker 镜像及 GitHub 二进制发行版中提供的 Windmill“社区版”包含 AGPLv3 和 Apache 2 许可下的源代码文件,但也包含专有且非公开的代码和功能,这些代码和功能并非开源,其使用条款如下:Windmill Labs, Inc. 授予您免费使用“社区版”所有功能的权利,除软件中设置的限制和配额外无其他限制;同时授予您按原样分发社区版的权利,但未经明确协议,不得销售、转售、将 Windmill 作为托管服务提供、修改或以任何形式包装。
从本仓库源代码(未启用“enterprise”功能标志)编译的二进制文件在 LICENSE-AGPLv3 许可条款下开源。
若要将 Windmill 的任何部分作为您产品的功能直接重新暴露给用户(嵌入的公开 Windmill“应用”除外),或在“Windmill 社区版”基础上构建您商业销售或嵌入可分发产品/二进制文件中的功能,您必须获取商业许可。如有任何问题,请联系 。若要通过本仓库源代码(未启用“enterprise”功能标志)编译的二进制文件执行上述操作,您必须遵守 AGPLv3 许可条款,或从 Windmill Labs, Inc. 获取商业许可。
若要在您的组织内部按原样使用 Windmill“社区版”,或按原样使用其 API,则无需商业许可。
集成
在 Windmill 中,集成被称为资源和资源类型。每个资源都有一个资源类型,该类型定义了资源需要实现的 schema。
在自托管实例上,您可能需要从 WindmillHub 导入所有已批准的资源类型。设置脚本会提示您将其配置为每天自动同步。
环境变量
| 环境变量名称 | 默认值 | 描述 | 适用组件(API服务器/工作节点/全部) |
| ---------------------------- | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
| DATABASEURL | | Postgres数据库URL。 | 全部 |
| WORKERGROUP | default | 工作节点所属的工作组,用于从中拉取配置 | 工作节点 |
| MODE | standalone | 二进制文件的运行模式。可能的值:standalone(独立模式)、worker(工作节点模式)、server(服务器模式)、agent(代理模式) | 全部 |
| METRICSADDR | None | (仅企业版)用于在 /metrics 路径暴露Prometheus指标的套接字地址。设置为 "true" 可在8001端口暴露指标 | 全部 |
| JSONFMT | false | 以JSON格式输出日志,而非logfmt格式 | 全部 |
| BASEURL | http://localhost:8000 | 公开访问实例的基础URL。如有实例设置,将覆盖此值 | 服务器 |
| ZOMBIEJOBTIMEOUT | 30 | 若工作节点未发送作业处理心跳,作业被判定为僵尸任务的超时时间(服务器每30秒检查一次僵尸任务) | 服务器 |
| RESTARTZOMBIEJOBS | true | 若为true,僵尸任务将被重启(使用相同UUID原地重启并保留部分日志);若为false,僵尸任务将标记为失败 | 服务器 |
| NATIVEMODE | false | 启用原生模式:设置 NUMWORKERS=8,拒绝非原生作业(nativets、postgresql、mysql等) | 工作节点 |
| SLEEPQUEUE | 50 | 数据库中上次检查新作业后休眠的毫秒数。该值乘以 NUMWORKERS,使得单个工作节点实例平均每 SLEEPQUEUE 毫秒拉取一次作业 | 工作节点 |
| KEEPJOBDIR | false | 作业完成后保留作业目录。用于调试。 | 工作节点 |
| LICENSEKEY (EE only) | None | Windmill企业版启动时检查的许可证密钥 | 工作节点 |
| SLACKSIGNINGSECRET | None | Slack应用的签名密钥。参见 Slack文档 | 服务器 |
| COOKIEDOMAIN | None | Cookie的域名。若未设置,浏览器将根据完整源自动设置Cookie | 服务器 |
| DENOPATH | /usr/bin/deno | deno二进制文件的路径。 | 工作节点 |
| PYTHONPATH | | 若不使用uv管理Python,需指定Python二进制文件的路径。 | 工作节点 |
| GOPATH | /usr/bin/go | Go二进制文件的路径。 | 工作节点 |
| GOPRIVATE | | 用于私有Go模块的GOPRIVATE环境变量 | 工作节点 |
| GOPROXY | | 要使用的GOPROXY环境变量 | 工作节点 |
| NETRC | | 用于私有Go registry的netrc内容 | 工作节点 |
| PYCONCURRENTDOWNLOADS | 20 | 设置Windmill在任意时刻执行的最大并发Python下载数。 | 工作节点 |
| PATH | None | 路径环境变量,通常继承自系统 | 工作节点 |
| HOME | None | 用于Go和Bash的主目录,通常继承自系统 | 工作节点 |
| DATABASECONNECTIONS | 50 (服务器)/3 (工作节点) | 数据库连接池中的最大连接数 | 全部 |
| SUPERADMINSECRET | None | 允许调用者以虚拟超级管理员 superadmin@windmill.dev 身份操作的令牌 | 服务器 |
| TIMEOUTWAITRESULT | 20 | 'runwaitresult' 端点的超时等待秒数 | 工作节点 |
| QUEUELIMITWAITRESULT | None | 'runwaitresult' 端点在立即拒绝请求前的最大队列作业数。优先级高于查询参数。若未指定,则无限制。 | 工作节点 |
| DENOAUTHTOKENS | None | 传递给工作节点的自定义DENOAUTHTOKENS,用于允许使用私有模块 | 工作节点 |
| DISABLERESPONSELOGS | false | 禁用响应日志 | 服务器 |
| CREATEWORKSPACEREQUIRESUPERADMIN | true | 若为true,仅超级管理员可创建新工作区 | 服务器 |
| MINFREEDISKSPACEMB | 15000 | 工作节点的最小可用磁盘空间(MB)。若工作节点可用空间不足,将发送严重警报。 | 工作节点 |
| RUNUPDATECACERTIFICATEATSTART | false | 若为true,在启动时先运行CA证书更新命令,再进行其他初始化 | 全部 |
| RUNUPDATECACERTIFICATEPATH | /usr/sbin/update-ca-certificates | 当 RUNUPDATECACERTIFICATEATSTART 为true时,运行的CA证书更新命令/脚本路径 | 全部 |
运行本地开发环境
我们建议使用 Nix。有关所有选项,请参见 ./frontend/READMEDEV.md。
仅前端
使用后端配合本地前端(热重载):
Windmill 可通过 http://localhost/ 访问
后端 + 前端
有关所有运行选项,请参见 ./frontend/READMEDEV.md 文件。
使用例如 start-dev-db.sh 脚本启动本地 Postgres 数据库,该脚本将在 postgres://postgres:changeme@localhost:5432/windmill 提供数据库访问。然后使用以下命令运行迁移:
这也将避免 sqlx 的 query! 宏出现编译时问题。
(可选,仅Linux)安装 nsjail 并确保其在 PATH 中可访问
安装 bun、deno 和 python3(以及任何你想使用的语言),确保二进制文件位于 /usr/bin/bun、/usr/bin/deno 和 /usr/local/bin/python3,或设置相应的环境变量。
(可选)安装 lld 链接器
进入 frontend/ 目录:
1. npm install、npm run generate-backend-client,然后 REMOTE=http://localhost:8000 npm run dev
2. 你可能需要为 node 运行时设置额外的堆空间:export NODEOPTIONS="--max-old-space-size=4096"
3. 使用 mkdir frontend/build 创建空的 frontend/build 文件夹
进入 backend/ 目录:
1. env DATABASEURL= RUST_LOG=info cargo run
2. 你可以指定任何想要启用的功能标志,例如 cargo run --features python 以启用 Python 执行器。
Windmill 应可通过 http://localhost:3000 访问
贡献者
版权
© 2023-2026 Windmill Labs, Inc.
ghcr.io/isaced/caddy-cache:otter
ghcr.io
otterghcr.iolinux/amd6489.44MB2025-08-22
ghcr.io/isaced/caddy-cache 是一款为 Caddy 服务器开发的缓存插件,主要功能是通过临时存储频繁访问的资源(如图片、样式表、JavaScript 文件或 API 响应),减少对源服务器的重复请求,从而提升网站访问速度并降低后端服务负载。无论是个人博客还是企业级应用,它都能有效缓解服务器压力,改善用户的访问体验。
该插件的核心优势在于灵活的缓存策略和精细的资源控制能力。它支持按 URL 路径、文件类型(如 .png、.css)或请求头信息设置差异化缓存规则,例如可为图片资源设置 24 小时缓存有效期,而为频繁更新的 API 接口仅保留 5 分钟缓存。存储方式提供内存缓存和磁盘缓存两种选择:内存缓存适合小体积、高频访问的资源(如首页图标),响应速度毫秒级;磁盘缓存则支持大容量存储,可缓存视频片段等大型文件,适应不同场景需求。此外,它还能处理条件请求(如基于 If-None-Match 头的验证),仅在资源实际更新时返回新内容,避免无效数据传输。
在使用场景上,该插件适配多种服务类型:静态网站可通过缓存全部静态资源,让访客二次访问时直接读取本地缓存,加载速度提升明显;API 服务可缓存非实时数据(如商品分类列表),减少数据库查询次数;甚至可作为 CDN 节点的辅助工具,帮助边缘节点快速响应用户请求。
配置方面,它与 Caddyfile 无缝集成,通过简洁指令即可启用。例如 cache { /assets/* ttl 1d } 一行配置,就能为 /assets 路径下的资源设置 1 天缓存。无需编写复杂代码,开发者可根据业务需求灵活调整缓存规则,兼顾易用性与功能性。
作为 Caddy 生态的一部分,这款插件保持了轻量高效的特性,运行时资源占用低,兼容性好,既能满足个人开发者优化博客加载速度的需求,也能支撑企业级服务对缓存策略的精细控制,是提升 Web 服务性能的实用工具。
第 1 页