ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

OneUptime 自托管部署完全指南:用 Docker Compose 在单台服务器上免费搭建完整监控平台

OneUptime 自托管部署完全指南:用 Docker Compose 在单台服务器上免费搭建完整监控平台 OneUptime 自托管部署完全指南用 Docker Compose 在单台服务器上免费搭建完整监控平台【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime本指南以 OneUptime 官方安装文档为主体讲解如何在一台 Debian、Ubuntu 或 RHEL 系服务器上使用 Docker Compose 部署一个完全免费、单机自托管的 OneUptime 实例。读完本文你将掌握从服务器选型、环境变量配置、启动与访问到 TLS/SSL 终结、生产环境加固、日常更新与卸载的完整闭环并理解config.env中每个关键参数背后的实现逻辑含 13.0.0 起 Valkey 取代 Redis 的迁移细节。一、部署方式概览为什么选择 Docker ComposeOneUptime 是一套开源的一体化可观测性平台监控、状态页、告警、日志与链路追踪等。官方提供多种部署形态Docker Compose、KubernetesHelm Chart以及托管云服务。本文对应的官方文档App/FeatureSet/Docs/Content/fa/installation/docker-compose.md英文原版见 App/FeatureSet/Docs/Content/en/installation/docker-compose.md所描述的 Docker Compose 方式适合以下场景希望数据完全保留在自己服务器上追求最大控制权与自定义能力个人、实验或家庭环境homelab使用想先低成本跑起来、后续再平滑迁移到 Kubernetes。需要明确的是该方式需要更多技术技能与运维资源官方在生产环境强烈建议使用 Kubernetes对应 Helm Chart 位于 HelmChart/Public/oneuptimeDocker Compose 更适合中小规模与自托管控制需求。二、服务器规格选型官方文档给出了两档明确的硬件基线可按使用量与预算选择项目推荐规格Recommended家用/最小规格Homelab / Minimal内存16 GB RAM8 GB RAMCPU8 核4 核磁盘400 GB20 GB操作系统Ubuntu 22.04任意受支持的发行版依赖Docker Docker ComposeDocker Docker Compose推荐档适用于持续监控较多目标、保留较长历史数据的场景最小档适用于个人、实验用途官方文档提到甚至有用户将其跑在 Raspberry Pi 上。注意磁盘容量应结合第七节的“日志与磁盘”建议评估因为 probe 与 ingest 容器会产生大量日志。三、部署前置条件开始前请确认服务器具备运行 Debian、Ubuntu 或 RHEL 衍生版的服务器已安装 Docker 与 Docker ComposeCompose v2 插件形式docker compose或独立docker-compose均可。仓库根目录的 configure.sh 是安装阶段的环境检查脚本它会在缺少依赖时自动补齐并校验版本最低 Docker 版本MINIMUM_DOCKER_VERSION20.0.0Docker Compose 目标版本DOCKER_COMPOSE_VERSION2.12.2最低 Node.js 版本MINIMUM_NODE_VERSION14.0.0还会下载模板渲染工具 gomplate用于把Dockerfile.tpl渲染成最终的 Dockerfile。四、一键安装clone、配置密钥、启动官方文档给出的标准安装流程如下# 仅克隆 release 分支浅克隆并进入仓库目录 git clone --depth 1 --single-branch --branch release https://github.com/OneUptime/oneuptime.git cd oneuptime # 复制环境变量模板 cp config.example.env config.env # 重要编辑 config.env务必使用随机生成的密钥 npm start其中关键步骤的底层行为如下git clone --depth 1 --single-branch --branch release只拉取release分支的最近一次提交避免把庞大的开发分支全部下载到服务器。cp config.example.env config.envconfig.env是 Compose 栈读取的唯一环境变量来源仓库根目录的 config.example.env 是官方模板内含全部可调参数与详细注释。编辑config.env模板中所有密钥都带please-change-this-to-random-value占位符必须逐一替换为随机长字符串详见第七节“密钥”。npm start对应 package.json 中的脚本定义start: export $(grep -v ^# config.env | xargs) docker compose up --remove-orphans -d $npm_config_services npm run status-check即读取config.env中所有非注释行导出为环境变量 → 以分离模式启动全部服务--remove-orphans会自动清理不再被编排文件引用的旧容器→ 执行status-check检查各服务健康状态。不依赖 npm 的等价启动方式如果你不想安装 npm或服务器上没有 npm官方文档提供了完全等价的手写命令# 读取 config.env 中的环境变量并执行 docker compose up (export $(grep -v ^# config.env | xargs) docker compose up --remove-orphans -d) # 若因端口绑定遇到权限问题用 sudo 执行 sudo bash -c (export $(grep -v ^# config.env | xargs) docker compose up --remove-orphans -d)这两条命令与npm start的效果一致适合最小化依赖的环境。启动后会拉起哪些服务根目录 docker-compose.yml 定义了单机版的服务拓扑各服务通过extends复用 docker-compose.base.yml 中的完整定义服务镜像默认APP_TAG职责valkeyvalkey/valkey:9.1-alpine缓存与 BullMQ 队列详见第七节clickhouseclickhouse/*遥测数据日志、链路、指标等分析型存储postgrespostgres/*主业务关系型数据库对外映射5400:5432端口用于备份apponeuptime/app核心 API 服务probe-1oneuptime/probe全局监控探针发起 HTTP/TCP 等探测runneroneuptime/runner运行 Runbook 步骤与 AI 代码修复任务的执行器ingressoneuptime/nginx内置 Nginx 网关统一对外入口、处理状态页域名与 TLSpostgres显式映射了5400:5432注释说明这是为备份预留的端口——若不需要备份可注释掉该行以减小攻击面。所有依赖基础存储的服务都通过condition: service_healthy等待postgres、valkey、clickhouse健康检查通过后才启动。五、访问 OneUptime 与创建首个账号启动完成后平台应运行在http://localhost默认ONEUPTIME_HTTP_PORT80见 config.example.env首次访问需要注册一个全新账号。自托管实例的注册是完全独立的与 OneUptime 官方云服务互不相通所有用户、项目与数据都只存在于你这台服务器上。六、TLS/SSL 证书配置OneUptime 不代管证书官方文档明确强调OneUptime 不支持自行签发或托管 SSL/TLS 证书证书必须由你自己解决。这与 config.example.env 中PROVISION_SSLfalse的默认值一致——镜像内 Nginx 默认只监听 HTTP。如果需要 HTTPS官方给出的标准方案是反向代理 Lets Encrypt部署一个反向代理如Nginx或Caddy使用Lets Encrypt签发证书将反向代理指向 OneUptime 服务器修改config.env中以下两项设置HTTP_PROTOCOLhttps让应用内部生成的链接与重定向使用https://前缀HOST你的域名改为反向代理所承载的域名替代默认的localhost。注意 config.example.env 中还有一组与 TLS 相关的可选参数可供参考STATUS_PAGE_HTTPS_PORT443、STATUS_PAGE_CNAME_RECORD、DASHBOARD_CNAME_RECORD它们用于把状态页/公开仪表盘绑定到自定义域名此时 OneUptime 会自动通过 Lets Encrypt 为状态页域名签发证书——但主站点的 TLS 仍应由你的反向代理终结。七、生产环境就绪清单Production Readiness Checklist官方文档的态度很明确理想情况下不要用 docker-compose 跑生产环境强烈推荐 Kubernetes。但若你仍决定用它承载生产流量以下检查项缺一不可1. SSL/TLS必须自行配置同第六节——在生产环境没有 HTTPS 是不可接受的证书、自动续期与代理配置全部由你负责。2. 密钥替换所有默认占位符config.example.env中带有默认值的密钥必须全部替换为随机长字符串包括ONEUPTIME_SECRETplease-change-this-to-random-value REGISTER_PROBE_KEYplease-change-this-to-random-value DATABASE_PASSWORDplease-change-this-to-random-value CLICKHOUSE_PASSWORDplease-change-this-to-random-value VALKEY_PASSWORDplease-change-this-to-random-value ENCRYPTION_SECRETplease-change-this-to-random-value GLOBAL_PROBE_1_KEYprobe-1-please-change-this-to-random-value GLOBAL_PROBE_2_KEYprobe-2-please-change-this-to-random-value ONEUPTIME_RUNNER_KEYplease-change-this-to-random-value这些密钥分别保护数据库、缓存、探针注册、AI Runner 注册与数据加密。尤其注意ONEUPTIME_RUNNER_KEY它负责认证 AI 代码修复协议并参与签发仓库访问令牌绝不能保留公开的占位符。从源码看这些变量会通过 docker-compose.base.yml 的x-common-variables/x-common-runtime-variables锚点注入到各个容器其中ONEUPTIME_SECRET、ENCRYPTION_SECRET等仅注入后端进程不会出现在前端env.js响应里。3. 备份数据库必须定期备份需要备份的是两个持久化数据库Postgres业务数据用户、项目、监控配置、状态页等对应卷postgresClickHouse遥测数据日志、链路、指标等对应卷clickhouse缓存Valkey可安全忽略它是无状态的见下节重启即清空。仓库提供了开箱即用的备份脚本 backup.sh它基于pg_dump --formatcustom生成压缩的自定义格式备份文件保留最近 30 天文件名db-日号.backup。运行前需在config.env中填好DATABASE_BACKUP_*系列变量DATABASE_BACKUP_DIRECTORY/Backups DATABASE_BACKUP_HOSTlocalhost DATABASE_BACKUP_PORT5400 DATABASE_BACKUP_NAMEoneuptimedb DATABASE_BACKUP_USERNAMEpostgres DATABASE_BACKUP_PASSWORD${DATABASE_PASSWORD}注意DATABASE_BACKUP_PORT5400正好对应docker-compose.yml中 postgres 暴露的备份端口。恢复则使用根目录的 restore.sh对应DATABASE_RESTORE_*变量默认连接host.docker.internal。ClickHouse 的备份与运维细节可参考 Clickhouse/Docs/ClickhouseOps.md。4. 缓存与队列Valkey原 Redis的完整说明这是自 13.0.0 起最重要的配置变化也是官方文档花费篇幅最多的部分config.env中的valkey服务运行的是Valkey——Redis 7.2 的 BSD 许可分支兼容 Redis 线协议。任何支持 Redis 协议的服务器都能用如果你更倾向于托管 Redis只需把VALKEY_HOST指向它所有相关配置统一使用VALKEY_*前缀VALKEY_HOST、VALKEY_PORT、VALKEY_DB、VALKEY_USERNAME、VALKEY_PASSWORD、VALKEY_IP_FAMILY、VALKEY_TLS_CA、VALKEY_TLS_SENTINEL_MODE等兼容性保证这些参数在 13.0.0 之前叫REDIS_*旧名称至今仍会被读取详见 App/FeatureSet/Docs/Content/en/installation/upgrading.md 的 12→13 升级章节npm run update不会覆写旧配置容器仍同时响应redis与valkey两个主机名。因此旧版config.env无需任何手工修改即可升级。源码层面可以印证这一兼容设计在 docker-compose.base.yml 中valkey 服务定义如下valkey: image: valkey/valkey:9.1-alpine command: valkey-server --requirepass ${VALKEY_PASSWORD:-${REDIS_PASSWORD}} --save --appendonly no密码读取使用${VALKEY_PASSWORD:-${REDIS_PASSWORD}}的默认值回退语法REDIS_*旧变量依然生效--save --appendonly no表示完全关闭持久化缓存数据不落盘容器重建后冷启动。因此 BullMQ 队列中等待中/延迟/退避中的任务会丢失但可重复执行与 cron 类任务会在重连后自动重新注册——升级时建议选择业务低峰期同一文件中还维护了REDIS_*的“弃用镜像”变量REDIS_HOST: ${VALKEY_HOST:-${REDIS_HOST}}目的是让APP_TAG回退到旧镜像时旧镜像只认REDIS_*依然能工作。5. 更新频率官方每天发布更新生产环境建议至少每周更新一次以持续获得安全修复与功能演进更新流程见下一节。八、日常更新 OneUptime官方标准的更新流程git checkout release # 确保处于 release 分支 git pull # 拉取最新代码与编排文件 npm run update # 执行更新npm run update对应 package.json 中的组合脚本update: npm run prerun export $(grep -v ^# config.env | xargs) docker compose pull npm run start它的执行链路是prerun同步各子包版本号 执行configure.sh补齐环境→ 拉取最新镜像 →npm start带--remove-orphans重新拉起整套栈。--remove-orphans很重要它负责移除旧的redis容器若手工执行docker compose up而不带该参数旧容器会与新的valkey容器同时应答redis主机名导致连接随机落到过期容器上。两个升级期间的易错点详见 upgrading.md大版本必须逐级升级如 11 → 12 → 13不可跨大版本跳跃小版本可以跳级升级前务必完成备份并验证可恢复。12 → 13 升级中缓存会重启一次属于预期行为若你手工管理docker-compose.override.yml且里面设置了缓存变量记得把REDIS_*重命名为VALKEY_*因为应用现在优先读取VALKEY_HOST。九、日志与磁盘限制 probe/ingest 容器的日志体积官方文档特别提醒Docker 编排中使用了local 日志驱动docker-compose.base.yml中为各服务配置的logging配置而 OneUptime 的probe探针与 ingest遥测接收容器会产生大量日志。若不加以限制日志会逐步占满磁盘因此必须对 Docker 日志存储设上限。常见做法包括在daemon.json中为 local 驱动配置max-size/max-file轮转或改用json-file/journald驱动并配置轮转策略。具体参数请查阅 Docker 官方关于 local 日志驱动的文档在 Docker 配置章节下。生产环境还应关注 config.example.env 中的LOG_LEVELERROR——日志级别可取值ERROR、WARN、INFO、DEBUG默认ERROR已是最小化输出排查问题时才应临时调高且 DEBUG 输出应视为敏感信息对待。十、卸载 OneUptimenpm run down它等价于npm run stop即docker compose down --remove-orphans。此命令会停止并删除 OneUptime 创建的所有容器删除其网络删除其卷postgres、clickhouse卷中的数据一并销毁。不会删除config.env文件或已克隆的仓库因此执行前若仍需保留数据务必先完成第七节所述的备份。彻底卸载还可参考根目录的 uninstall.sh。十一、部署相关文件速查以下是本指南涉及的关键仓库文件可对照深入阅读文件作用config.example.env全部环境变量的权威模板与注释含 Valkey/Redis、ClickHouse、Postgres、全局探针、会话回放、出站 Webhook 策略等数百项docker-compose.yml单机版服务编排入口docker-compose.base.yml各服务完整定义、环境变量注入锚点、valkey 服务与健康检查package.jsonstart/update/down/backup等运维脚本定义configure.sh安装期依赖检查与版本校验backup.sh / restore.shPostgres 备份与恢复脚本App/FeatureSet/Docs/Content/en/installation/upgrading.md12→13Valkey 迁移、11→12Runner 合并等升级细则App/FeatureSet/Docs/Content/en/installation/sizing.md服务器容量规划的延伸阅读结语通过 Docker Compose你可以在十几分钟内在一台自有服务器上跑起一整套免费的 OneUptime 监控与可观测性平台。掌握本文的规格选型、密钥管理、TLS 终结、Valkey 兼容语义、备份与更新节奏即可让这套自托管实例稳定运行并安全承载生产流量当规模增长超出单机承载能力时官方提供的 Helm Chart 路线HelmChart/Public/oneuptime可以作为平滑迁移的下一站。【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表