参考资料

  1. cremeb 是一个开源的轻量级工具,专注于提供高效的数据处理和分析功能。
  2. ElectronEgg 是一个基于 Electron 框架的开源桌面应用开发工具,旨在简化跨平台桌面应用的开发流程。
  3. Docsify是一个动态生成文档网站的工具
  4. any4any系统是一个通用的跨平台集成解决方案
  5. 网站分析工具 Umami 的详细分析
  6. Codapp是一款低代码开发平台
  7. mtab书签是一款基于Web的个人书签管理工具
  8. AWStats 是一款功能强大的免费工具

YAML 文件中设置 Umami 的 BASE_URL 环境变量

在 YAML 文件中设置 Umami 的 BASE_URL 环境变量时,你需要将其添加到 environment 部分。以下是不同场景下的配置方法:

1. Docker Compose 配置示例

version: '3'
services:
  umami:
    image: ghcr.io/umami-software/umami:latest
    container_name: umami
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgresql://user:password@postgres/umami
      - BASE_URL=https://yourdomain.com  # 必须与访问域名一致
    depends_on:
      - postgres

  postgres:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - umami-db-data:/var/lib/postgresql/data

volumes:
  umami-db-data:

2. Kubernetes Deployment 配置示例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: umami
spec:
  replicas: 1
  selector:
    matchLabels:
      app: umami
  template:
    metadata:
      labels:
        app: umami
    spec:
      containers:
      - name: umami
        image: ghcr.io/umami-software/umami:latest
        ports:
        - containerPort: 3000
        env:
        - name: DATABASE_URL
          value: "postgresql://user:password@postgres/umami"
        - name: BASE_URL
          value: "https://yourdomain.com"  # 必须与访问域名一致

3. Helm Chart values.yaml 配置示例

umami:
  image:
    repository: ghcr.io/umami-software/umami
    tag: latest
  env:
    - name: BASE_URL
      value: "https://yourdomain.com"  # 必须与访问域名一致
    - name: DATABASE_URL
      value: "postgresql://user:password@postgres/umami"

关键注意事项:

  1. 协议匹配:确保与 Nginx 配置的协议一致

    # 如果 Nginx 使用 HTTPS
    - BASE_URL=https://yourdomain.com
    
    # 如果 Nginx 使用 HTTP
    - BASE_URL=http://yourdomain.com
  2. 域名一致性

    • 必须与用户访问的域名完全一致

    • 必须与 Nginx 配置中的 server_name 一致

  3. 特殊字符处理

    - BASE_URL="https://sub.example.com/path?param=value"
    • 如果 URL 包含特殊字符(如 &, # 等),使用引号包裹

  4. 路径支持

    # 如果使用子路径访问
    - BASE_URL=https://yourdomain.com/subpath

验证配置是否生效:

  1. 进入容器检查环境变量:

docker exec -it umami-container env | grep BASE_URL
# 应该输出:BASE_URL=https://yourdomain.com
  1. 检查 Umami 日志:

docker logs umami-container | grep 'BASE_URL'
# 正常启动应显示:Using base url: https://yourdomain.com

完整 Nginx 配置参考:

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://umami:3000;
        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_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

确保 YAML 文件中的缩进正确(使用空格而非制表符),并重启服务使配置生效:

docker-compose down && docker-compose up -d