Files
ljwx-harbor/SYSTEM-CONFIG.md
gaoandClaude fc9371e443 feat: 完成企业级 DevOps 基础设施部署
## 🏗️ 新增功能
- **shared/**: 完整的基础组件部署方案
  - docker-compose.yml: 统一编排所有基础服务
  - .env.example: 标准化环境变量配置
  - prometheus/prometheus.yml: 监控配置
  - bin/up.sh & down.sh: 一键部署脚本
  - README.md: 完整的使用文档

## 🛠️ 核心服务
- **数据库层**: PostgreSQL 16 + MySQL 8 (统一密码: 123456)
- **缓存层**: Redis 7 (密码: 123456)
- **代码管理**: GitLab CE + Gitea (双代码仓库)
- **镜像仓库**: Harbor (Docker Registry)
- **监控层**: Prometheus + Grafana + cAdvisor
- **网关反代**: Traefik v3.1

## 🔧 技术优化
- 所有端口统一使用 2xx80 系列,避免端口冲突
- 统一网络架构 (core network),支持多项目接入
- 完善的健康检查和服务依赖配置
- 支持 ARM64 架构 (MySQL 8 兼容性修复)

## 📚 文档更新
- SYSTEM-CONFIG.md: 系统配置文档完善
- harbor/README.md: Harbor 模块使用说明
- docs/: 完整的部署和运维文档

## 🚀 部署说明
所有服务已成功启动并通过验证:
- GitLab: http://localhost:28082 (root/SecurePass2024!)
- Gitea: http://localhost:23000
- Harbor: http://localhost:28081
- Grafana: http://localhost:23001 (admin/123456)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
2025-10-22 00:19:41 +08:00

15 KiB

系统配置概览

概述

本文档提供了 macOS 工具集中各组件的简明配置信息,便于 Claude 快速了解系统架构和配置参数,为 CI/CD 自动化部署提供参考。

系统架构

IP: 192.168.1.83
平台: macOS
容器运行时: Docker Desktop / OrbStack (轻量级替代)

组件配置

🐙 Gitea - Git 服务器

基本信息:

  • 版本: 1.21
  • 类型: 轻量级 Git 服务器
  • 端口: 33000 (HTTP), 32222 (SSH)
  • 数据库: SQLite3
  • 访问地址: http://192.168.1.83:33000

核心配置:

services:
  gitea:
    image: docker.m.daocloud.io/gitea/gitea:1.21
    ports:
      - "33000:3000"    # HTTP
      - "32222:32222"   # SSH
    environment:
      GITEA__server__DOMAIN: 192.168.1.83
      GITEA__server__ROOT_URL: http://192.168.1.83:33000/
      GITEA__server__SSH_PORT: 32222
      GITEA__database__DB_TYPE: sqlite3
      GITEA__actions__ENABLED: true  # 启用 Actions

备份配置:

  • 备份间隔: 6小时
  • 保留天数: 30天
  • 备份目录: ~/ops/backups/gitea/
  • 数据目录: gitea-data (Docker volume)

健康检查:

curl -f http://localhost:3000/api/healthz

🦊 GitLab - 代码托管平台

基本信息:

  • 版本: 16.9.1-ce.0
  • 类型: 企业级代码托管平台
  • 端口: 8890 (HTTP), 8929 (SSH)
  • 访问地址: http://192.168.1.83:8890
  • 初始密码: admin123

核心配置:

services:
  gitlab:
    image: gitlab/gitlab-ce:16.9.1-ce.0
    ports:
      - "8890:80"      # HTTP Web UI
      - "8929:22"      # SSH
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.1.83:8890'
        gitlab_rails['gitlab_shell_ssh_port'] = 8929
    shm_size: '1g'     # 共享内存

GitLab Runner:

  • 镜像: gitlab/gitlab-runner:latest
  • 执行器: Docker
  • 配置目录: ./gitlab-runner-config

备份配置:

  • 备份间隔: 6小时
  • 保留天数: 30天
  • 备份目录: ~/ops/backups/gitlab/
  • 数据目录: ~/ops/data/gitlab/

健康检查:

curl -f http://localhost:80/-/health

🏭 Harbor - 容器镜像仓库

基本信息:

  • 版本: v2.11.1
  • 类型: 企业级容器镜像仓库
  • 端口: 8080 (HTTP), 8443 (HTTPS), 8081 (Notary)
  • 访问地址: http://192.168.1.83:8080
  • 默认管理员: admin / admin

核心服务组件:

services:
  proxy:        # Nginx 反向代理
    image: goharbor/nginx-photon:v2.11.1
    ports:
      - 8080:8080
      - 8081:8081
      - 8443:8443

  core:         # 核心服务
    image: goharbor/harbor-core:v2.11.1

  registry:     # 镜像存储
    image: goharbor/registry-photon:v2.11.1

  database:     # PostgreSQL 数据库
    image: goharbor/harbor-db:v2.11.1

  redis:        # 缓存服务
    image: goharbor/redis-photon:v2.11.1

  jobservice:   # 任务服务
    image: goharbor/harbor-jobservice:v2.11.1

  portal:       # Web 门户
    image: goharbor/harbor-portal:v2.11.1

  log:          # 日志服务
    image: goharbor/harbor-log:v2.11.1

备份配置:

  • 备份间隔: 12小时
  • 保留天数: 30天
  • 备份目录: ~/ops/backups/harbor/
  • 数据目录: /Users/brunogao/ops/data/harbor/

🐳 OrbStack - Docker 替代方案

基本信息:

  • 版本: 最新版 (通过 Homebrew 安装)
  • 类型: 容器和 Linux 虚拟机运行时
  • 安装方式: Homebrew Cask
  • 状态: 替代 Docker Desktop 的轻量级方案

核心特性:

主要功能:
  - Docker 容器管理: 完全兼容 Docker API
  - Linux 虚拟机: 快速启动轻量级 Linux 环境
  - 文件系统挂载: 高性能文件共享
  - 网络转发: 自动端口映射和服务发现
  - 资源占用: 相比 Docker Desktop 显著降低内存和 CPU 使用

安装配置:

# 通过 Homebrew 安装
brew install --cask orbstack

# 启动 OrbStack 服务
open -a OrbStack

# 检查服务状态
orbctl status

容器管理:

# Docker 命令完全兼容
docker ps
docker images
docker-compose up -d

# OrbStack 特有命令
orbctl list           # 列出所有容器和虚拟机
orbctl shell <vm>     # 进入虚拟机 shell
orbctl mount <path>   # 挂载目录到虚拟机

网络配置:

  • Docker 网络: 标准的 bridge, host, none 网络模式
  • 端口映射: 自动从容器端口映射到主机
  • DNS 解析: 内置 DNS 服务器,支持容器名解析
  • 服务发现: 支持 Docker Compose 服务名访问

性能优势:

指标 OrbStack Docker Desktop
内存占用 200-500MB 1-2GB
启动时间 2-5秒 10-30秒
CPU 使用 低 中等
磁盘 I/O 高效 标准虚拟化

与现有服务集成:

  • Gitea: 可通过 OrbStack 运行,配置相同
  • GitLab: 建议使用 Docker Desktop (资源需求高)
  • Harbor: 完全兼容,性能更佳
  • Ollama: 支持 GPU 直通和容器化部署

🤖 Ollama - AI 模型服务

基本信息:

  • 版本: Ollama App (macOS)
  • 类型: 本地 AI 模型推理服务
  • 端口: 11434 (API)
  • 访问地址: http://localhost:11434
  • 服务状态: 运行中

核心配置:

# 服务进程
/usr/local/bin/ollama serve

# 模型运行器
/Applications/Ollama.app/Contents/Resources/ollama runner

已安装模型:

模型名称 参数规模 大小 类型
deepseek-r1:70b 70.6B 42GB 推理模型
llama3.3:latest 70.6B 42GB 推理模型
qwen2.5-coder:32b 32.8B 19GB 编程模型
qwen3:32b 32.8B 20GB 推理模型
qwen3:latest 8.2B 5.2GB 推理模型
ljwx-stock:latest 6.9B 4.0GB 股票模型
deepseek-llm:latest 7B 4.0GB 推理模型
llama2:latest 7B 3.8GB 推理模型
ljwx-health:latest 6.7B 3.8GB 健康模型

嵌入模型:

模型名称 参数规模 大小 用途
bge-m3:latest 566.70M 1.2GB 文本嵌入
bge-large:latest 334.09M 670MB 文本嵌入
snowflake-arctic-embed2:latest 566.70M 1.2GB 文本嵌入

API 端点:

# 获取模型列表
GET http://localhost:11434/api/tags

# 生成对话
POST http://localhost:11434/api/generate
{
  "model": "qwen3:latest",
  "prompt": "Hello, how are you?"
}

# 嵌入生成
POST http://localhost:11434/api/embeddings
{
  "model": "bge-m3:latest",
  "prompt": "Your text here"
}

🗄️ 数据库服务

MySQL 数据库:

基本信息:
  版本: 8.x
  端口: 3306
  用户名: root
  密码: 123456
  数据目录: /var/lib/mysql (容器内)
  配置文件: /etc/mysql/my.cnf

PostgreSQL 数据库:

基本信息:
  版本: 15.x
  端口: 5432
  用户名: postgres
  密码: 123456
  数据目录: /var/lib/postgresql/data (容器内)
  配置文件: /etc/postgresql/postgresql.conf

Redis 缓存:

基本信息:
  版本: 7.x (Homebrew)
  端口: 6379 (默认端口)
  密码: 123456
  数据目录: /usr/local/var/db/redis (本地)
  配置文件: /usr/local/etc/redis.conf
  持久化: RDB + AOF
  安装方式: Homebrew

数据库连接验证:

# MySQL 连接测试
mysql -h 127.0.0.1 -P 3306 -u root -p123456 -e "SELECT VERSION();"

# PostgreSQL 连接测试
psql -h 127.0.0.1 -p 5432 -U postgres -c "SELECT version();"

# Redis 连接测试
redis-cli -h 127.0.0.1 -p 6379 -a 123456 ping

Docker Compose 配置示例:

version: '3.8'
services:
  mysql:
    image: mysql:8.0
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: app_db
    volumes:
      - mysql_data:/var/lib/mysql
    restart: unless-stopped

  postgres:
    image: postgres:15
    ports:
      - "5432:5432"
    environment:
      POSTGRES_PASSWORD: 123456
      POSTGRES_DB: app_db
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"
    command: redis-server --requirepass 123456
    volumes:
      - redis_data:/data
    restart: unless-stopped

volumes:
  mysql_data:
  postgres_data:
  redis_data:

常用管理命令:

# MySQL 管理
mysql -h 127.0.0.1 -P 3306 -u root -p123456
# 查看数据库
SHOW DATABASES;
# 查看用户
SELECT User, Host FROM mysql.user;

# PostgreSQL 管理
psql -h 127.0.0.1 -p 5432 -U postgres
# 查看数据库
\l
# 查看用户
\du

# Redis 管理
redis-cli -h 127.0.0.1 -p 6379 -a 123456
# 查看信息
INFO server
# 查看所有键
KEYS *

备份策略:

# MySQL 备份
mysqldump -h 127.0.0.1 -P 3306 -u root -p123456 --all-databases > mysql_backup.sql

# PostgreSQL 备份
pg_dump -h 127.0.0.1 -p 5432 -U postgres > postgres_backup.sql

# Redis 备份
redis-cli -h 127.0.0.1 -p 6379 -a 123456 BGSAVE

🍎 Apple 系统信息

硬件配置:

系统信息:
  型号: MacBook Pro (14-inch, 2023)
  处理器: Apple M3 Pro (12核CPU + 18核GPU)
  内存: 18GB 统一内存
  存储: 512GB SSD
  序列号: [需要系统查询]

macOS 系统:

操作系统:
  版本: macOS 15.0.1 Sequoia
  内核版本: Darwin 24.6.0
  系统架构: arm64 (Apple Silicon)
  主机名: MacBook-Pro.local
  用户名: brunogao

系统性能监控:

# CPU 和内存使用情况
top -l 1 | head -10

# 磁盘使用情况
df -h

# 系统负载
uptime

# 内存详情
vm_stat

# 温度监控 (需要第三方工具)
sudo powermetrics --samplers cpu_power -i 1 -n 1

开发环境配置:

# Xcode Command Line Tools
xcode-select --version

# Homebrew 路径
which brew
brew --version

# Shell 环境
echo $SHELL
zsh --version

# Git 配置
git --version
git config --list

系统服务状态:

关键服务:
  - SSH 服务: 默认启用,端口 22
  - 屏幕共享: 可选择性启用
  - 文件共享: SMB/AFP 服务
  - 时间机器: 自动备份服务
  - Siri: 语音助手服务
  - SpotLight: 搜索索引服务

网络配置:

网络接口:
  以太网: 192.168.1.83 (主要服务接口)
  Wi-Fi: [根据连接状态动态分配]
  本地回环: 127.0.0.1

DNS 配置:
  主DNS: 192.168.1.1 (路由器)
  备用DNS: 8.8.8.8, 1.1.1.1

安全和隐私:

安全特性:
  - Gatekeeper: 应用程序验证
  - XProtect: 恶意软件防护
  - FileVault: 磁盘加密 (可选)
  - 防火墙: 网络连接控制
  - 系统完整性保护 (SIP): 启用
  - App Notarization: 应用公证

系统优化建议:

# 清理系统缓存
sudo rm -rf /Library/Caches/*
sudo rm -rf ~/Library/Caches/*

# 重建 Spotlight 索引
sudo mdutil -E /

# 重置 NVRAM/PRAM (启动时)
# 关机,按住 Option+Command+P+R 启动

# 重置 SMC (针对电源相关问题)
# 关机,按住 Control+Shift+Option+电源键 10秒

故障诊断工具:

# 系统信息报告
system_profiler SPSoftwareDataType

# 硬件诊断 (启动时)
# 关机,按住 D 键启动进行 Apple 诊断

# 控制台日志
open /Applications/Utilities/Console.app

# 活动监视器
open /Applications/Utilities/Activity\ Monitor.app

🗂️ 目录结构

~/ops/
├── logs/                      # 统一日志目录
│   ├── gitea-protection.log
│   ├── gitlab-protection.log
│   ├── harbor-protection.log
│   └── brew_maintain.log
├── backups/                   # 统一备份目录
│   ├── gitea/                # Gitea 备份
│   ├── gitlab/               # GitLab 备份
│   ├── harbor/               # Harbor 备份
│   └── brew/                 # Homebrew 备份
├── data/                      # 运行时数据目录
│   ├── gitea/                # Gitea 运行时数据
│   ├── gitlab/               # GitLab 运行时数据
│   └── harbor/               # Harbor 运行时数据
└── {各模块目录}/

🚀 快速部署命令

一键部署

./deploy.sh

各组件独立启动

# Gitea
cd ~/ops/gitea
./gitea-data-protection.sh start

# GitLab
cd ~/ops/gitlab
./gitlab-data-protection.sh start

# Harbor
cd ~/ops/harbor
./harbor-data-protection.sh start

# Ollama (独立运行)
ollama serve

# OrbStack (替代 Docker Desktop)
open -a OrbStack

🔧 常用管理命令

健康检查

# Gitea
./gitea-data-protection.sh health

# GitLab
./gitlab-data-protection.sh health

# Harbor
./harbor-data-protection.sh health

# Ollama
curl -s http://localhost:11434/api/tags | jq '.models | length'

# MySQL
mysql -h 127.0.0.1 -P 3306 -u root -p123456 -e "SELECT 1" >/dev/null 2>&1 && echo "MySQL OK"

# PostgreSQL
pg_isready -h 127.0.0.1 -p 5432 -U postgres

# Redis
redis-cli -h 127.0.0.1 -p 6379 -a 123456 ping

备份操作

# Gitea
./gitea-backup.sh

# GitLab
./gitlab-backup.sh

# Harbor
./harbor-backup.sh

服务状态检查

# Docker 容器状态
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

# 端口占用检查
lsof -i :33000,32222,8890,8929,8080,8443,11434,3306,5432,6379

# 日志查看
tail -f ~/ops/logs/*-protection.log

🔐 安全配置

防火墙端口

  • Gitea: 33000, 32222
  • GitLab: 8890, 8929
  • Harbor: 8080, 8443, 8081
  • Ollama: 11434 (本地访问)
  • MySQL: 3306
  • PostgreSQL: 5432
  • Redis: 6379

访问控制

  • 所有服务都配置在内网环境 (192.168.1.83)
  • 建议配置 VPN 或防火墙规则限制外部访问
  • 生产环境建议使用 HTTPS 和 SSL 证书

📊 监控指标

系统监控

# Docker 资源使用
docker stats

# 磁盘使用
df -h ~/ops/

# 内存使用
free -h

服务监控

  • 自动健康检查: 每 30 秒检查一次
  • 定时备份: 按配置间隔自动执行
  • 日志轮转: 自动管理日志文件大小

🔄 CI/CD 集成

环境变量配置

export GITEA_URL="http://192.168.1.83:33000"
export GITLAB_URL="http://192.168.1.83:8890"
export HARBOR_URL="http://192.168.1.83:8080"
export OLLAMA_URL="http://localhost:11434"

API 访问令牌

  • Gitea: 通过 Web 界面生成 Personal Access Token
  • GitLab: 通过 User Settings > Access Tokens 生成
  • Harbor: 通过管理员账户生成 API Token
  • Ollama: 无需认证,本地访问

Docker Registry 配置

# 登录 Harbor
docker login 192.168.1.83:8080 -u admin -p admin

# 推送镜像
docker tag myapp:latest 192.168.1.83:8080/library/myapp:latest
docker push 192.168.1.83:8080/library/myapp:latest

📝 故障排除

常见问题

  1. Docker 服务未启动: 启动 Docker Desktop
  2. 端口冲突: 检查端口占用情况
  3. 权限问题: 设置脚本执行权限
  4. 服务启动慢: GitLab 首次启动需要 5-15 分钟

恢复流程

  1. 停止相关服务
  2. 创建安全备份
  3. 从备份恢复数据
  4. 重启服务验证
  5. 检查数据完整性

📞 技术支持

文档更新: 2025-01-20 版本: v1.0 维护者: 灵境万象智能科技有限公司

如需技术支持,请查看:

  1. 各模块的 README.md 文档
  2. 日志文件排查问题
  3. GitHub Issues 或 Pull Request