====== 🌐 DV IT Infrastructure Platform - 域名配置示例 ====== **更新日期**: 2025年1月 **主域名**: oasisvape.co.nz **目标**: 通过二级域名实现服务分流和灵活切换 ----- ===== 🎯 域名配置策略 ===== ==== 核心原则 ==== * **主站独立**: www.oasisvape.co.nz 继续指向现有Web Host * **服务分流**: 所有IT基础设施服务使用二级域名 * **SSL自动化**: 通过Traefik自动申请和续期Let's Encrypt证书 * **灵活切换**: 二级域名可随时切换指向不同服务器 ==== 优势分析 ==== * **架构清晰**: 每个服务独立域名,便于管理和监控 * **上线无缝**: 本地调试完成后,仅需修改DNS记录即可上线 * **SSL自动化**: 无需手动管理证书,Traefik自动处理 * **后期维护**: 服务升级、迁移、故障隔离更加简单 ----- ===== 📋 Cloudflare DNS 配置示例 ===== ==== A记录配置 ==== 在Cloudflare DNS管理界面添加以下A记录: ^ 类型 ^ 名称 ^ 内容 ^ TTL ^ 代理状态 ^ | A | erp | 156.67.214.225 | Auto | 已代理 | | A | strapi | 156.67.214.225 | Auto | 已代理 | | A | n8n | 156.67.214.225 | Auto | 已代理 | | A | docs | 156.67.214.225 | Auto | 已代理 | | A | grafana | 156.67.214.225 | Auto | 已代理 | | A | prometheus | 156.67.214.225 | Auto | 已代理 | ==== CNAME记录配置(可选) ==== 如需更灵活的域名管理,可以使用CNAME记录: ^ 类型 ^ 名称 ^ 内容 ^ TTL ^ 代理状态 ^ | CNAME | erp | srv878756.hstgr.cloud | Auto | 已代理 | | CNAME | strapi | srv878756.hstgr.cloud | Auto | 已代理 | | CNAME | n8n | srv878756.hstgr.cloud | Auto | 已代理 | | CNAME | docs | srv878756.hstgr.cloud | Auto | 已代理 | ----- ===== 🐳 Traefik 多域名配置示例 ===== ==== 1. 共享PostgreSQL数据库配置 ==== # infra/shared-database/docker-compose.yml version: '3.8' services: shared-postgres: image: postgres:16.0-alpine container_name: shared-postgres restart: unless-stopped environment: POSTGRES_DB: shared_postgres_db POSTGRES_USER: postgres_admin POSTGRES_PASSWORD: ${POSTGRES_ROOT_PASSWORD} volumes: - shared_postgres_data:/var/lib/postgresql/data - ./init-scripts:/docker-entrypoint-initdb.d networks: - traefik ports: - "5432:5432" volumes: shared_postgres_data: networks: traefik: external: true ==== 2. ERPNext 配置 ==== # infra/erpnext/docker-compose.yml services: erpnext-frontend: image: frappe/erpnext:v15 container_name: erpnext-frontend restart: unless-stopped environment: - SITE_NAME=erp.oasisvape.co.nz volumes: - erpnext_sites:/home/frappe/frappe-bench/sites networks: - traefik labels: - "traefik.enable=true" - "traefik.http.routers.erpnext.rule=Host(`erp.oasisvape.co.nz`)" - "traefik.http.routers.erpnext.entrypoints=websecure" - "traefik.http.routers.erpnext.tls.certresolver=mytlschallenge" - "traefik.http.services.erpnext.loadbalancer.server.port=80" - "traefik.docker.network=traefik" ==== 3. Strapi 电商版配置 ==== # infra/strapi-ecommerce/docker-compose.yml services: strapi: image: strapi/strapi:latest container_name: dv-strapi-v5-ecommerce restart: unless-stopped environment: - DATABASE_CLIENT=postgres - DATABASE_HOST=shared-postgres - DATABASE_PORT=5432 - DATABASE_NAME=shared_postgres_db - DATABASE_USERNAME=strapi_user - DATABASE_PASSWORD=${DATABASE_PASSWORD} - DATABASE_SCHEMA=strapi_ecommerce - JWT_SECRET=${JWT_SECRET} - ADMIN_JWT_SECRET=${ADMIN_JWT_SECRET} - APP_KEYS=${APP_KEYS} - NODE_ENV=production volumes: - ./config:/opt/app/config - ./src:/opt/app/src - ./package.json:/opt/app/package.json - strapi_uploads:/opt/app/public/uploads networks: - traefik depends_on: - shared-postgres labels: - "traefik.enable=true" - "traefik.http.routers.strapi.rule=Host(`strapi.oasisvape.co.nz`)" - "traefik.http.routers.strapi.entrypoints=websecure" - "traefik.http.routers.strapi.tls.certresolver=mytlschallenge" - "traefik.http.services.strapi.loadbalancer.server.port=1337" - "traefik.docker.network=traefik" volumes: strapi_uploads: networks: traefik: external: true ==== 4. n8n 工作流自动化配置 ==== # infra/n8n/docker-compose.yml services: n8n: image: docker.n8n.io/n8nio/n8n:latest container_name: n8n-automation restart: unless-stopped environment: - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=shared-postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=shared_postgres_db - DB_POSTGRESDB_USER=n8n_user - DB_POSTGRESDB_PASSWORD=${N8N_DB_PASSWORD} - DB_POSTGRESDB_SCHEMA=n8n_workflows - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} - GENERIC_TIMEZONE=Pacific/Auckland - TZ=Pacific/Auckland volumes: - n8n_data:/home/node/.n8n networks: - traefik depends_on: - shared-postgres labels: - "traefik.enable=true" - "traefik.http.routers.n8n.rule=Host(`n8n.oasisvape.co.nz`)" - "traefik.http.routers.n8n.entrypoints=websecure" - "traefik.http.routers.n8n.tls.certresolver=mytlschallenge" - "traefik.http.services.n8n.loadbalancer.server.port=5678" - "traefik.docker.network=traefik" volumes: n8n_data: networks: traefik: external: true ==== 5. DokuWiki 文档系统配置 ==== # infra/dokuwiki/docker-compose.yml services: dokuwiki: image: bitnami/dokuwiki:latest container_name: dokuwiki restart: unless-stopped environment: - TZ=Pacific/Auckland volumes: - dokuwiki_data:/bitnami/dokuwiki networks: - traefik labels: - "traefik.enable=true" - "traefik.http.routers.dokuwiki.rule=Host(`docs.oasisvape.co.nz`)" - "traefik.http.routers.dokuwiki.entrypoints=websecure" - "traefik.http.routers.dokuwiki.tls.certresolver=mytlschallenge" - "traefik.http.services.dokuwiki.loadbalancer.server.port=8080" - "traefik.docker.network=traefik" volumes: dokuwiki_data: networks: traefik: external: true ----- 如需更多配置示例和故障排查,请参考Wiki其他页面。