Dify + Cloudflare Tunnel 部署指南

本指南详细介绍如何使用 Docker 部署 Dify,并通过 Cloudflare Tunnel 实现安全的外网访问。 前置条件 macOS 系统 已安装 Docker 和 Docker Compose 拥有 Cloudflare 账户 拥有一个域名并托管在 Cloudflare 第一步:部署 Dify 1.1 克隆 Dify 仓库 cd /Users/heyaohua/Server git clone https://github.com/langgenius/dify.git cd dify/docker 1.2 配置环境变量 # 复制环境变量模板 cp .env.example .env # 编辑环境变量文件 vim .env 关键配置项: SECRET_KEY: 生成一个安全的密钥 DB_USERNAME, DB_PASSWORD: 数据库用户名和密码 REDIS_PASSWORD: Redis 密码 1.3 启动 Dify 服务 # 启动所有服务 docker-compose up -d # 检查服务状态 docker-compose ps 确保以下服务正常运行: docker-nginx-1: 端口 80, 443 docker-api-1: 端口 5001 docker-web-1: 端口 3000 docker-plugin_daemon-1: 端口 5003 第二步:安装 Cloudflare Tunnel 2.1 安装 cloudflared # 使用 Homebrew 安装 brew install cloudflared 2.2 登录 Cloudflare cloudflared tunnel login 这会打开浏览器,选择要使用的域名进行授权。 ...

2025-10-09 · 2 分钟 · 399 字 · heyaohua

PostgreSQL Docker 部署常见问题与解决方案

汇总在使用 Docker 部署 PostgreSQL(含 PostGIS、pgvector、TimescaleDB)过程中常见的问题及可操作的解决方案,涵盖构建、扩展、连接、权限、性能与数据等方面。 目录 构建问题 扩展问题 连接问题 权限问题 性能问题 数据问题 调试技巧 预防措施 获取帮助 构建问题 Q1: Docker 构建时出现 “lsb_release: command not found” 问题描述: /bin/sh: 1: lsb_release: command not found /bin/sh: 1: apt-key: command not found 原因分析: 在 Debian/Ubuntu 基础镜像中,lsb_release 和 apt-key 命令可能不存在或已被弃用。 解决方案:改用从源码编译的方式安装 TimescaleDB: # 不使用包管理器安装,改为源码编译 RUN cd /tmp && \ git clone https://github.com/timescale/timescaledb.git && \ cd timescaledb && \ git checkout 2.13.0 && \ ./bootstrap && \ cd build && \ make && \ make install Q2: 编译时出现 “gssapi/gssapi.h: No such file or directory” 问题描述: ...

2025-10-09 · 3 分钟 · 603 字 · heyaohua

PostgreSQL Docker 部署指南

本指南详细介绍如何使用 Docker 部署一个包含 PostGIS、pgvector 和 TimescaleDB 扩展的 PostgreSQL 15 数据库。该方案解决了扩展兼容性问题,特别是 pgvector 的段错误问题。 项目结构 PgSQL/ ├── .env # 环境变量配置 ├── Dockerfile # PostgreSQL 镜像构建文件 ├── docker-compose.yml # Docker Compose 配置 ├── README.md # 项目说明 ├── config/ # 配置文件目录 │ ├── pg_hba.conf # 客户端认证配置 │ └── postgresql.conf # PostgreSQL 主配置 ├── data/ # 数据持久化目录 │ └── pgdata/ # PostgreSQL 数据目录 ├── init-scripts/ # 初始化脚本 │ └── 01-install-extensions.sql # 扩展安装脚本 ├── logs/ # 日志目录 └── test-examples.sql # 测试示例 快速开始 1. 环境准备 确保系统已安装: ...

2025-10-09 · 3 分钟 · 570 字 · heyaohua

Docker Hue 时区修改完整指南

问题描述 使用Docker启动Hue后,发现时区不正确,显示UTC时间而不是中国标准时间(CST)。具体表现为: HDFS文件时间显示为UTC时间(如06:00-06:01) 实际文件创建时间为中国时间(如14:00-14:01) Hue日志时间格式混乱 解决方案概述 需要从多个层面修改时区设置: 容器系统时区设置 Hue配置文件时区设置 Django时区设置 文件浏览器模块时区处理 详细修改步骤 1. 检查当前容器状态 # 查看运行中的Hue容器 docker ps -a | grep hue # 检查容器时区 docker exec <container_name> date # 检查Hue日志时间格式 docker logs <container_name> --tail 10 2. 备份原始配置 # 备份Hue配置文件 cp /data/server/hue-server/config/hue.ini /data/server/hue-server/config/hue.ini.backup.$(date +%Y%m%d_%H%M%S) cp /data/server/hue-server/config/z-hue-overrides.ini /data/server/hue-server/config/z-hue-overrides.ini.backup.$(date +%Y%m%d_%H%M%S) 3. 修改Hue配置文件中的时区设置 3.1 修改主配置文件 # 修改 hue.ini 中的时区设置 sed -i 's/time_zone=America\/Los_Angeles/time_zone=Asia\/Shanghai/g' /data/server/hue-server/config/hue.ini # 添加Django时区设置 sed -i '/time_zone=Asia\/Shanghai/a use_tz=true' /data/server/hue-server/config/hue.ini 3.2 修改覆盖配置文件 # 修改 z-hue-overrides.ini 中的时区设置 sed -i 's/time_zone=America\/Los_Angeles/time_zone=Asia\/Shanghai/g' /data/server/hue-server/config/z-hue-overrides.ini 4. 重新创建容器(包含时区和DNS设置) 4.1 停止并删除旧容器 docker stop <old_container_name> docker rm <old_container_name> 4.2 创建新容器 docker run -d --name hue_new \ -p 8888:8888 \ -e TZ=Asia/Shanghai \ -v /etc/localtime:/etc/localtime:ro \ -v /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone:ro \ -v /data/server/hue-server/config:/usr/share/hue/desktop/conf \ --dns=100.100.2.136 \ --dns=8.8.8.8 \ gethue/hue:latest 5. 修改文件浏览器模块时区处理 5.1 备份原始文件 docker exec hue_new cp /usr/share/hue/apps/filebrowser/src/filebrowser/views.py /usr/share/hue/apps/filebrowser/src/filebrowser/views.py.backup 5.2 修改时区处理代码 # 添加Django时区导入 docker exec hue_new sed -i "s/from datetime import datetime/from datetime import datetime, timezone, timedelta\nfrom django.utils import timezone as django_timezone/g" /usr/share/hue/apps/filebrowser/src/filebrowser/views.py # 修改时间格式化代码 docker exec hue_new sed -i "s/datetime.fromtimestamp(stats.mtime).strftime('%B %d, %Y %I:%M %p')/django_timezone.make_aware(datetime.fromtimestamp(stats.mtime)).strftime('%B %d, %Y %I:%M %p')/g" /usr/share/hue/apps/filebrowser/src/filebrowser/views.py 5.3 清除Python缓存 docker exec hue_new find /usr/share/hue -name "*.pyc" -path "*/filebrowser/*" -delete docker exec hue_new find /usr/share/hue -name "__pycache__" -path "*/filebrowser/*" -exec rm -rf {} \; 2>/dev/null || true 6. 重启容器应用修改 docker restart hue_new 7. 验证修改结果 7.1 检查系统时区 # 检查容器系统时间 docker exec hue_new date # 检查时区环境变量 docker exec hue_new env | grep TZ # 检查时区文件 docker exec hue_new cat /etc/timezone 7.2 检查Hue应用时区 # 查看Hue日志,确认时间格式 docker logs hue_new --tail 10 # 检查Django时区设置 docker exec hue_new /usr/share/hue/build/env/bin/python3 -c "import os; os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'desktop.settings'); import django; django.setup(); from django.utils import timezone; print('Django timezone:', timezone.get_current_timezone())" 7.3 检查文件浏览器时间显示 访问Hue文件浏览器,查看HDFS文件的时间显示是否正确。 ...

2025-09-08 · 4 分钟 · 648 字 · heyaohua

Redis Docker开发环境配置指南

Redis Docker开发环境配置指南 本文档详细介绍如何使用Docker搭建Redis开发环境,包括环境配置、启动方式、维护方法等内容。 目录结构 Redis_Docker/ ├── .env # 环境变量配置文件 ├── README.md # 项目说明文档 ├── config/ # 配置文件目录 │ └── redis.conf # Redis配置文件 ├── data/ # 数据存储目录 └── logs/ # 日志文件目录 配置文件说明 1. docker-compose.yml version: '3.8' services: redis: container_name: redis-server image: redis:7.2 ports: - "${REDIS_PORT}:6379" volumes: - ./data:/data - ./logs:/var/log/redis - ./config/redis.conf:/usr/local/etc/redis/redis.conf command: redis-server /usr/local/etc/redis/redis.conf environment: - TZ=Asia/Shanghai networks: - redis-network healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 start_period: 5s networks: redis-network: driver: bridge 2. .env 环境变量配置 # Redis 配置环境变量 REDIS_PORT=6379 # Redis端口映射 REDIS_PASSWORD=your_password # Redis访问密码 3. redis.conf 主要配置 # 网络设置 bind 0.0.0.0 port 6379 protected-mode yes tcp-keepalive 300 # 基本设置 databases 16 loglevel notice logfile "/var/log/redis/redis.log" # 内存设置 maxmemory 256mb maxmemory-policy allkeys-lru maxmemory-samples 5 # 持久化设置 save 900 1 # 900秒内至少1个键被修改 save 300 10 # 300秒内至少10个键被修改 save 60 10000 # 60秒内至少10000个键被修改 # AOF设置 appendonly yes appendfilename "appendonly.aof" appendfsync everysec 使用说明 1. 启动服务 # 启动服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs redis 2. 连接Redis # 使用容器内的redis-cli docker-compose exec redis redis-cli -a your_password # 使用主机的redis-cli(如果已安装) redis-cli -h localhost -p 6379 -a your_password # 测试连接 redis-cli -h localhost -p 6379 -a your_password ping 3. 停止服务 # 停止服务 docker-compose down 数据持久化 Redis配置了双重持久化机制: ...

2024-03-19 · 2 分钟 · 317 字 · heyaohua

PostgreSQL Docker开发环境配置指南

PostgreSQL Docker开发环境配置指南 本文档详细介绍如何使用Docker搭建PostgreSQL开发环境,包括环境配置、启动方式、维护方法等内容。 目录结构 PgSQL_Docker/ ├── .env # 环境变量配置文件 ├── README.md # 项目说明文档 ├── config/ # 配置文件目录 │ ├── pg_hba.conf # 访问控制配置 │ └── postgresql.conf # PostgreSQL主配置文件 ├── data/ # 数据存储目录 └── logs/ # 日志文件目录 配置文件说明 1. docker-compose.yml version: '3.8' services: postgres: container_name: postgres-server image: postgres:15 environment: - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} ports: - "${POSTGRES_PORT}:5432" volumes: - ./data:/var/lib/postgresql/data - ./logs:/var/log/postgresql - ./config/postgresql.conf:/etc/postgresql/postgresql.conf - ./config/pg_hba.conf:/etc/postgresql/pg_hba.conf command: postgres -c 'config_file=/etc/postgresql/postgresql.conf' networks: - postgres-network healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 10s timeout: 5s retries: 5 start_period: 10s networks: postgres-network: driver: bridge 2. .env 环境变量配置 # PostgreSQL 配置环境变量 POSTGRES_DB=test_db # 数据库名称 POSTGRES_USER=data # 默认超级用户 POSTGRES_PASSWORD=your_password # 用户密码 POSTGRES_PORT=5432 # 端口映射 3. postgresql.conf 主要配置 # 连接设置 listen_addresses = '*' port = 5432 max_connections = 100 # 内存设置 shared_buffers = 128MB work_mem = 4MB maintenance_work_mem = 64MB effective_cache_size = 512MB # 写入设置 wal_level = replica max_wal_size = 1GB min_wal_size = 80MB # 日志设置 log_destination = 'stderr' logging_collector = on log_directory = '/var/log/postgresql' log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_rotation_age = 1d log_rotation_size = 10MB # 区域设置 datestyle = 'iso, mdy' timezone = 'UTC' lc_messages = 'en_US.utf8' 4. pg_hba.conf 访问控制配置 # TYPE DATABASE USER ADDRESS METHOD local all all trust host all all 127.0.0.1/32 scram-sha-256 host all all ::1/128 scram-sha-256 host all all 0.0.0.0/0 scram-sha-256 使用说明 1. 启动服务 # 启动服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs postgres 2. 连接数据库 # 使用超级用户连接 docker-compose exec postgres psql -U data -d test_db # 查看用户列表和权限 \du # 查看数据库列表 \l # 退出psql \q 3. 停止服务 # 停止服务 docker-compose down 用户和权限管理 PostgreSQL使用角色(Role)概念来管理用户权限。在我们的配置中: ...

2024-03-19 · 2 分钟 · 380 字 · heyaohua

MySQL Docker开发环境配置指南

如何使用Docker启动MySQL开发环境 目录结构 MySQL_Docker/ ├── docker-compose.yml # Docker Compose 配置文件 ├── .env # 环境变量配置 ├── config/ │ └── my.cnf # MySQL 配置文件 ├── data/ # MySQL 数据目录 (挂载) └── logs/ # MySQL 日志目录 (挂载) 配置文件说明 1. docker-compose.yml 配置要点 version: '3.8' services: mysql: image: mysql:8.0 container_name: mysql-server restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root123} MYSQL_DATABASE: ${MYSQL_DATABASE:-testdb} MYSQL_USER: ${MYSQL_USER:-testuser} MYSQL_PASSWORD: ${MYSQL_PASSWORD:-testpass} ports: - "${MYSQL_PORT:-3306}:3306" volumes: - ./data:/var/lib/mysql - ./logs:/var/log/mysql - ./config/my.cnf:/etc/mysql/conf.d/my.cnf 重要配置说明: restart: unless-stopped - 容器异常退出时自动重启 environment - 环境变量配置,支持从.env文件读取 volumes - 数据持久化配置,确保数据安全 ports - 端口映射,允许外部访问 2. MySQL配置文件 (my.cnf) 要点 [mysqld] # 基本设置 port = 3306 bind-address = 0.0.0.0 default-storage-engine = InnoDB # 字符集设置(重要) character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci # 连接设置 max_connections = 200 max_connect_errors = 10 # 缓冲区设置 innodb_buffer_pool_size = 256M innodb_log_file_size = 64M innodb_log_buffer_size = 16M # 日志设置 log-error = /var/log/mysql/error.log slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2 配置注意事项: ...

2024-03-19 · 2 分钟 · 258 字 · heyaohua