Komari 轻量级服务器监控系统部署指南

部署 Komari 监控系统,从 Docker 到 Nginx 反向代理

在这里插入图片描述

前言

Komari 一款轻量级、自托管的服务器监控工具的完整部署过程。从 Docker Compose 部署到 Nginx 反向代理配置。

项目简介

什么是 Komari?

Komari 是一款专为简单高效设计的服务器监控解决方案,具有以下特点:

  • 🚀 轻量高效 - 资源消耗低,适用于各种规模的服务器
  • 🔒 自托管设计 - 完全控制数据隐私,易于部署
  • 🎨 现代化 Web 界面 - 直观的监控仪表板
  • 🐳 容器化友好 - 支持 Docker 一键部署
  • 🌐 多语言支持 - 包含完整的中文文档

技术栈

  • 后端: Go 1.18+
  • 前端: Node.js 20+
  • 部署: Docker & Docker Compose
  • 反向代理: Nginx
  • 默认端口: 25774

环境准备

系统要求

  • Ubuntu 20.04+ / Debian 11+ / CentOS 8+
  • Docker & Docker Compose
  • Nginx
  • 域名和 SSL 证书(可选,用于 HTTPS 访问)

安装依赖

# 更新系统包
sudo apt update && sudo apt upgrade -y

# 安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 安装 Docker Compose
sudo apt install docker-compose-plugin -y

# 安装 Nginx
# nginx 安装
https://nginx.org/en/linux_packages.html#Ubuntu
# 或者
sudo apt install nginx -y

# 启动服务
sudo systemctl enable docker nginx
sudo systemctl start docker nginx

Docker Compose 部署

1. 创建项目目录

# 创建 Komari 部署目录
mkdir -p /opt/komari
cd /opt/komari

# 创建数据存储目录
mkdir data

2. 编写 Docker Compose 配置

创建 docker-compose.yml 文件:

# 注意:新版本 Docker Compose 不再需要 version 字段
services:
  komari:
    image: ghcr.io/komari-monitor/komari:latest
    container_name: komari
    ports:
      - "127.0.0.1:25774:25774"  # 只绑定本地,通过 Nginx 代理
    volumes:
      - ./data:/app/data
    restart: unless-stopped
    networks:
      - komari-network

networks:
  komari-network:
    driver: bridge

3. 启动服务

# 启动 Komari 服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看启动日志 登录用户名 密码
docker-compose logs komari

预期输出:

NAME      IMAGE                                  COMMAND                SERVICE   CREATED          STATUS          PORTS
komari    ghcr.io/komari-monitor/komari:latest   "/app/komari server"   komari    32 seconds ago   Up 32 seconds   127.0.0.1:25774->25774/tcp

Nginx 反向代理配置

1. 检查 Nginx 配置结构

# 查看 Nginx 版本和配置目录
nginx -v
ls -la /etc/nginx/

# 查看配置目录结构
ls -la /etc/nginx/conf.d/

2. 创建 Komari 站点配置

创建 /etc/nginx/conf.d/komari.conf:

# HTTP 重定向到 HTTPS
server {
    listen 80;
    server_name komari.yourdomain.com;
    
    return 301 https://$server_name$request_uri;
}

# HTTPS 服务器配置
server {
    listen 443 ssl;
    http2 on;  # 新版 Nginx 语法
    server_name komari.yourdomain.com;
    
    # SSL 证书配置
    ssl_certificate /path/to/your/fullchain.crt;
    ssl_certificate_key /path/to/your/private.key;
    
    # SSL 安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    
    # 安全头部
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    
    # 反向代理到 Komari
    location / {
        proxy_pass http://127.0.0.1:25774;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
        
        # WebSocket 支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        
        # 超时配置
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
        
        # 缓冲配置
        proxy_buffering on;
        proxy_buffer_size 64k;
        proxy_buffers 8 64k;
    }
    
    # 访问日志
    access_log /var/log/nginx/komari_access.log;
    error_log /var/log/nginx/komari_error.log;
}

3. 验证并应用配置

# 测试 Nginx 配置语法
nginx -t

# 重载 Nginx 配置
sudo systemctl reload nginx

# 检查服务状态
sudo systemctl status nginx

实际部署案例

部署中,使用了以下实际配置:

服务器环境

  • 操作系统: Ubuntu 22.04 LTS
  • Docker: Docker Compose v2
  • Nginx: 1.28.0
  • 域名: ***.xyz
  • SSL证书路径: /root/panel/cert/***.xyz/

实际配置文件

# 部署目录
/opt/komari/
├── docker-compose.yml
├── data/

端口监听验证

# 验证端口监听状态
$ netstat -tlnp | grep :25774
tcp 0 0 127.0.0.1:25774 0.0.0.0:* LISTEN 103122/docker-proxy

$ netstat -tlnp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 18893/nginx
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 18893/nginx

常见问题与解决方案

1. Docker Compose 版本警告

问题:

WARN[0000] the attribute `version` is obsolete, it will be ignored

解决: 删除 docker-compose.yml 中的 version: '3.8' 行

2. Nginx HTTP/2 配置警告

问题:

nginx: [warn] the "listen ... http2" directive is deprecated

解决: 使用新语法

# 旧语法
listen 443 ssl http2;

# 新语法
listen 443 ssl;
http2 on;

3. SSL 证书权限问题

问题: Nginx 无法读取证书文件

解决:

# 设置正确的文件权限
chmod 755 /path/to/cert/directory/
chmod 644 /path/to/fullchain.crt
chmod 600 /path/to/private.key

4. 防火墙配置

# 确保防火墙允许相关端口
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status

管理和维护

日常操作命令

# 查看服务状态
docker-compose ps

# 查看实时日志
docker-compose logs -f komari

# 重启服务
docker-compose restart

# 更新到最新版本
docker-compose pull
docker-compose up -d

# 备份数据
tar -czf komari-backup-$(date +%Y%m%d).tar.gz data/

监控和日志

# 查看 Nginx 访问日志
tail -f /var/log/nginx/komari_access.log

# 查看 Nginx 错误日志
tail -f /var/log/nginx/komari_error.log

# 查看系统资源使用
docker stats komari

性能优化建议

1. 系统级优化

# 调整文件描述符限制
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf

# 优化内核参数
echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 65535" >> /etc/sysctl.conf
sysctl -p

2. Nginx 优化

# 在 nginx.conf 中添加
worker_processes auto;
worker_connections 1024;

# 启用 gzip 压缩
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/json;

3. Docker 资源限制

services:
  komari:
    # ... 其他配置
    deploy:
      resources:
        limits:
          memory: 512M
          cpus: '0.5'
        reservations:
          memory: 128M
          cpus: '0.1'

安全加固

1. 网络安全

# 限制访问来源(可选)
location / {
    # 允许特定 IP 段
    allow 192.168.1.0/24;
    allow 10.0.0.0/8;
    deny all;
    
    proxy_pass http://127.0.0.1:25774;
    # ... 其他配置
}

2. 定期更新

# 创建更新脚本
cat > /opt/komari/update.sh << 'EOF'
#!/bin/bash
cd /opt/komari
docker-compose pull
docker-compose up -d
docker image prune -f
EOF

chmod +x /opt/komari/update.sh

# 添加到 crontab(每周日凌晨 2 点更新)
echo "0 2 * * 0 /opt/komari/update.sh" | crontab -

结语

成功搭建了一个生产就绪的 Komari 监控系统。这套方案具有以下优势:

  • ✅ 容器化部署 - 环境隔离,易于管理
  • ✅ HTTPS 安全访问 - SSL/TLS 加密传输
  • ✅ 反向代理 - 隐藏内部端口,提高安全性
  • ✅ 自动重启 - 服务异常自动恢复
  • ✅ 日志监控 - 完整的访问和错误日志

Komari 作为一款轻量级监控解决方案,特别适合中小型团队和个人开发者使用。


参考资源

更多推荐