参考资料

  1. 微信 Markdown 编辑器
  2. Swagger是一套用于设计、构建、文档化和使用RESTful API的开源工具集
  3. AI i18n,两行js实现html全自动翻译。
  4. Apache Druid是一个高性能的实时分析数据库,专为快速查询和摄取大规模数据而设计
  5. OneNav 是一款开源的书签导航工具
  6. Matomo 本地部署教程
  7. Betteryeah 是一款高效的开源工具,专注于优化工作流程和提升生产力。
  8. ElectronEgg 是一个基于 Electron 框架的开源桌面应用开发工具,旨在简化跨平台桌面应用的开发流程。

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