内容
# 日志管理平台 LogDeck
**适用于 Docker 和 Podman 的自主控制面板。** 持久化日志,可在容器重启后存活,完整的容器管理,以及一个 MCP 服务器,让您的 AI 助手可以读取日志并对容器执行操作,所有这些都集成在一个 Go 语言二进制文件中,无需外部依赖。
只需将其指向您的 $5 VPS 或一整fleet的主机,即可从一个地方管理其上运行的所有内容。 一个工具取代通常的“日志 + 度量 + 管理”堆栈,适用于 Docker 和 Podman。


## 快速开始
```bash
docker run -d --name logdeck \
-p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v logdeck-data:/data \
amoabakelvin/logdeck:latest
```
打开 `http://localhost:8080`。`logdeck-data` 卷保存您的配置、存储的日志和警报历史,因此请保留它,否则在重新创建时将丢失所有这些。对于多主机、SSH、身份验证和主机系统统计信息,请使用 [docker-compose.yml](./docker-compose.yml)。
## 为什么选择 LogDeck
大多数自托管用户最终会拼凑一个日志查看器、一个指标工具和一个管理 UI。LogDeck 将所有这些功能集成在一个二进制文件中,并且有三点使其与众不同:
- **您的日志在容器重启后不会消失。** 每个容器都被跟踪到本地存储中,因此历史记录在容器 ID 更改的 `docker compose up --build` 生存下来,并且已删除的容器仍然可读。普通的实时查看器只显示引擎仍持有的内容。
- **内置 AI 副驾驶。** MCP 服务器包含在同一个免费二进制文件中,因此 Claude 或 Cursor 可以读取您的日志并对您的容器执行操作,无需额外安装和外部托管。
- **一个免费、开源的二进制文件。** 日志、容器和 Compose 管理、警报、统计信息以及 Docker 和 Podman 的多主机支持,所有这些都在 GPLv3 下许可,无需付费墙,也无需外部服务。足够小,可以在 $5 VPS 上运行。
## 功能
### AI 和 MCP
`logdeck mcp` 在 stdio 上运行一个 [模型上下文协议](https://modelcontextprotocol.io) 服务器,因此像 Claude Desktop、Cursor 或 Claude Code 这样的助手可以直接与您的容器合作:
- 读取日志,在多个主机上搜索,检查容器,检查事件和统计信息
- 执行操作:启动/停止/重启,运行命令,编辑环境变量,管理设置
- 能力取决于您的 API 令牌:授予读取令牌,它只能查看;授予管理员令牌,它可以执行操作。
参见 [MCP 指南](https://logdeck.dev/docs/mcp)。
### 日志和历史记录
实时流式传输,具备搜索和持久性,而 `tail -f` 无法提供:
- 实时流式传输(类似 `tail -f` 风格),支持播放/暂停、自动滚动、可切换的时间戳和换行,以及 JSON/TXT 下载
- 全文搜索,支持高亮/排除模式和匹配导航,日志级别过滤(TRACE→PANIC),时间范围预设,可折叠的 JSON 行和行固定
- **持久历史记录。** 每个主机上的每个容器都被跟踪到本地 SQLite 存储中,因此历史记录在容器重启和重建后仍然存在(即使容器 ID 更改)。已删除的容器在 **Removed** 过滤器下仍然可读。**实时 | 历史记录** 切换按钮搜索所有存储的日志,支持服务端。保留上限(默认 50 MB/容器,1024 MB 总计)按最旧优先的策略淘汰。
参见 [日志历史记录指南](https://logdeck.dev/docs/log-history)。
### 容器和 Compose 管理
- 启动、停止、重启和删除容器,支持确认操作和健康状态徽章
- 整栈 Compose 控制(从组标题启动/停止/重启)和聚合栈日志按时间戳合并,支持颜色编码的容器徽章,兼容 Docker Compose 和 podman-compose
- 交互式 WebSocket 终端(XTerm.js,10k 行滚动条,支持复制到剪贴板)
- 查看和编辑环境变量,支持从 `.env` 文件批量导入
- 编辑内存限制、CPU 限制和重启策略,支持在线修改,无需重启和停机
- 只读模式适用于仅需监控的部署
### 警报和统计信息
- 容器死亡(非零退出)和 OOM 杀死事件规则;日志规则基于级别、正则表达式或两者
- 速率阈值(“60 秒内 5 次匹配”)支持每个规则的冷却时间,报告被抑制的计数,针对主机、容器名称或 Compose 项目
- 一个 JSON webhook,支持 Slack 和 Discord incoming webhooks 不变,以及警报历史记录和每次交付结果
- 实时 CPU/内存占用情况,支持每容器五分钟的 sparkline 趋势、每主机引擎统计信息和系统运行 LogDeck 的机器的系统统计信息
参见 [警报指南](https://logdeck.dev/docs/alerting)。
### 多主机、Docker 和 Podman
- 连接到本地 Unix 套接字、远程 SSH(密钥认证)或 TCP 端点;支持按主机或所有主机过滤和查看,支持实时状态同步
- 通过 Docker 兼容的 API 支持 Podman:自动检测本地 Docker 和 Podman 套接字(无根和有根);日志、统计信息、生命周期、事件和终端均无缝工作;支持 Docker 和 Podman 主机混合使用
- 只读查看镜像、卷和网络,支持跨所有主机
- 自动容器发现、Compose 项目分组、状态/名称/镜像过滤和可分享的 URL 状态
有关设置,请参见 [多主机](./multi-host.md) 和 [Podman](./podman.md) 指南。(健康徽章仅限 Docker,因为 Podman 的列表 API 不嵌入健康状态。)
### 命令行界面
一个可脚本化的 `logdeck` CLI,基于服务器的 HTTP API,适用于自动化和代理:
- 从终端列出、检查、读取/跟踪/搜索日志和检查统计信息
- `logdeck grep` 在所有主机上搜索所有正在运行的容器的最近日志
- 生命周期操作、资源限制、Compose 控制和警报管理(`logdeck alerts`)
- 表格输出适用于人类,JSON/NDJSON(`-o json`)适用于机器
参见 [CLI 指南](./docs/cli.md)。
### 身份验证和安全
- 可选身份验证:从设置中启用,通过环境变量固定,或运行开放。JWT 会话登录,支持速率限制的端点。
- **范围 API 令牌**(`ldk_...`)适用于 CLI、MCP 和外部工具:`admin`(完全访问)或 `read`(日志、历史记录、统计信息、事件和详细信息,无需修改、终端、环境变量或设置)
- 只读模式阻止容器/堆栈操作、环境变量和资源编辑以及终端
### 配置和存储
LogDeck 读取环境变量和 JSON 配置文件,设置页面会写入这些文件;环境变量优先,固定值后,UI 无法更改。 所有持久化数据都存储在一个目录中(默认为 `/data`,可通过 `CONFIG_PATH` 移动):`config.json`、`logs.db`(SQLite 日志存储)和 `alerts-history.json`。**将其作为卷挂载**,否则在容器重新创建时,所有数据都会丢失。
参见 [配置指南](https://logdeck.dev/docs/configuration),了解所有环境变量。