Hotfix release available: 2025-05-14b "Librarian".
upgrade now! [56.2] (what's this?)
project:deployment:domain
Table of Contents
🌐 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其他页面。
project/deployment/domain.txt · Last modified: by 127.0.0.1
