版本:V01.00 | 撰写:2026-07-27 07:20 | 性质:彩排 / Dry-Run(不改动任何真实环境) 配套主文档:imac-server-plan.md(V02.16)|概览:overview.md
〇、先说清楚:这本手册怎么用
这是"彩排",不是"实战"。 全程你不需要真的去点、去敲命令。目标是让你闭着眼也能照着做——把计划里每一阶段、每一环节,拆成"你点哪里 / 敲什么 / 预期看到什么 / 卡住怎么办"。
图例约定
| 标记 | 含义 |
|---|---|
| 🖱️ | 你在图形界面上的点击/操作 |
| ⌨️ | 你要在终端(Terminal)里敲的命令(本手册里是给你照抄的,彩排时不真敲) |
| 👀 | 你预期会看到的结果 |
| ⚠️ | 容易踩的坑 / 必须注意 |
| 🔌 | 这一步有前置依赖(见下方清单) |
模拟前置依赖(彩排时假设这些都已就位)
- 硬件就位:那台 Apple Silicon iMac 通电、联网(先连家里 WiFi 或有线);你的 MBA 也在手边。
- 域名就位:
sixstars.cn已在腾讯云注册、未备案;stocktrading.sixstars.cn已跑通 EdgeOne 海外区(主文档附录 C 已验证)。 - 凭证在手(敏感,真实执行时才用,彩排不展示):
- EdgeOne API Token(在需求方手里,存在本地 config 里,绝不写进任何文档)
- 腾讯云 DNS 登录权限
- Cloudflare 账号(操作通道用 Tunnel + Access)
- 本环境连接器状态:当前
edgeone-pages连接器是 disconnected,所以真实部署需你在 MBA 本地终端跑 CLI(昨日 stocktrading 已验证),或等连上。彩排时假设你在 MBA 本地终端操作。
一、阶段 0:准备 + 判断网络(模拟耗时 30 分钟)
0.1 确认 iMac 芯片型号
🖱️ 坐到 iMac 前 → 点屏幕左上角苹果图标 🍎 → 点「关于本机」。
👀 弹窗里看「芯片」一行:应该是 Apple M1 / M2 / M3 / M4(某一代)。
📝 记下来。用途:后面装 OrbStack 时确认是 Apple Silicon 版(不是 Intel 版)。
0.2 判断"有没有公网 IP"(这一步只影响动态服务,不卡静态展示)
原理:你家路由器从运营商拿到一个 IP。如果这个 IP 和"外界看到的你家 IP"是同一个 → 有公网 IP;如果不一样 → 没有(被运营商关在"内网"里了)。
- 🖱️ 用 iMac 浏览器打开
https://ip138.com。
- 🖱️ 登录你家路由器管理页(通常是浏览器开
192.168.1.1或192.168.0.1,账号密码在路由器背面)→ 找「网络状态 / WAN 口状态 / 上网信息」。
- 📝 对比两个数字:
操作:
👀 页面中央会显示一串数字,如 113.66.xx.xx——这是外界看到的你家 IP。
👀 看「WAN IP」或「外网地址」那一行,也是一串数字。
- 一样 → 有公网 IP → 动态服务将来走分支 A(DDNS + 端口转发,最快)。
- 不一样 → 无公网 IP → 动态服务将来走分支 B(Cloudflare Tunnel,免费但偏慢)。
- ⚠️ 注意:即使"有公网 IP",很多家宽也封 80/443 端口,所以对外入口用
8443(见第六节的端口规划)。
彩排结论假设:本步骤结果是 X(有/无),但无论哪种,静态展示都走 EdgeOne,不受影响。
0.3 给 iMac 绑固定内网 IP
🖱️ 路由器管理页 → 「DHCP 静态分配 / 地址保留 / 绑定 MAC 与 IP」→ 找到 iMac 的 MAC 地址(在"关于本机→网络"里能看到)→ 把它绑成一个固定内网 IP,比如 192.168.1.50。
👀 之后 iMac 每次联网都拿到 192.168.1.50,不会变。
📝 记下来这个 192.168.1.50——它就是"iMac 在家里的门牌号",后面 Web 管理内网直连带它。
0.4 确认域名托管状态
🖱️ 登录腾讯云 DNS 解析控制台,看 sixstars.cn 的解析记录。
👀 应该能看到 stocktrading 那条 CNAME 指向 EdgeOne 节点(昨日已建)。
📝 确认 sixstars.cn 没有迁出(仍由腾讯云 DNS 管),后面加 projects 的 CNAME 就在这里加。
二、第一优先级 · 操作通道(模拟耗时 1 小时)
目标:让你在外(比如用 MBA 连 4G)也能稳定管 iMac。这条通道不依赖公网 IP,靠 Cloudflare Tunnel 打通。
2.1 装 OrbStack(iMac 上的容器引擎底座)
🖱️ 打开浏览器 → 访问 https://orbstack.dev → 下载 Apple Silicon 版 → 双击 .dmg → 拖进「应用程序」。
🖱️ 首次打开 OrbStack → 按向导点「下一步」→ 同意条款 → 它可能要你输入一次开机密码(授权装底层网络组件)。
👀 菜单栏右上角出现 OrbStack 图标,状态显示「Running」。
⚙️ 设置开机自启:🖱️ 菜单栏 OrbStack 图标 → Settings → 勾选「Start at login」。
📝 以后所有服务(Portainer、NPM、Uptime Kuma)都跑在 OrbStack 里的容器上。
2.2 起 Cloudflare Tunnel(打通"外→iMac"的加密隧道)
先在 Cloudflare 里建一个 Tunnel,再在 iMac 上跑它的客户端 cloudflared。
🖱️ 登录 Cloudflare 控制台 → 选 sixstars.cn → 左侧「Zero Trust」→「Networks → Tunnels」→ 「Create a tunnel」→ 取名比如 imac-tunnel → 选系统 macOS。
👀 页面给你一段安装 + 登录命令。
⌨️ 在 iMac 的「终端」App 里(彩排时照抄,不真敲):
# 1) 装 cloudflared(用 Homebrew;没装就先 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)")
brew install cloudflare/cloudflared/cloudflared
# 2) 把本机连到刚才建的 tunnel(会弹浏览器让你登录 Cloudflare 授权)
cloudflared tunnel login
# 3) 把 tunnel 配置成本机服务,开机自起
cloudflared service install
👀 终端最后显示 Successfully installed cloudflared as a system service 之类。此时 Tunnel 已通。
2.3 配 Cloudflare Access(给管理界面加"邮箱验证码"门)
🖱️ Cloudflare 控制台 → Zero Trust → 「Access → Applications」→ 「Add an application」→ 选「Self-hosted」。
🖱️ 应用名 manage,子域名填 manage,域名 sixstars.cn → 下一步。
🖱️ 访问策略(Policy):加一条「允许某个邮箱」→ 填你自己的邮箱(如 sixstars@qq.com)→ 选「Email」验证方式。
👀 保存后,外界访问 manage.sixstars.cn 会先弹邮箱验证码,不对的邮箱连登录页都进不去(零信任)。
2.4 起 Portainer(Web 管理界面主力)
⌨️ 在 iMac 终端(彩排照抄):
# 建个专放配置的目录
mkdir -p ~/docker/portainer && cd ~/docker/portainer
# 起 Portainer 容器(端口 9001,仅内网/Tunnel 访问,绝不挂公网)
docker run -d --name portainer \
--restart always \
-p 9001:9001 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
👀 终端回一行容器 ID。等 10 秒。
🖱️ 浏览器开 http://192.168.1.50:9001(内网直连)→ 首次设置管理员账号密码(⚠️ 设强密码,别用 123456)。
📝 记下账号密码。以后"在外管服务器"就靠它。
2.5 验证操作通道(关键验收)
🖱️ 拿起 MBA → 关掉家里 WiFi,只连手机 4G 热点(模拟"在外面")。
🖱️ MBA 浏览器开 https://manage.sixstars.cn。
👀 预期:先跳邮箱验证码页 → 输你邮箱、收码、填码 → 才进 Portainer 登录页 → 登进去能看到 iMac 上的容器列表。
✅ 通了 = 操作通道建成。⚠️ 不通:先看 Cloudflared 服务在跑没(cloudflared tunnel info imac-tunnel);再看 Access 策略邮箱写对没。
2.6 远程桌面预案(零成本预留,现在就能做)
🖱️ iMac → 「系统设置 → 通用 → 共享」→ 打开「屏幕共享」。 👀 开关变绿。这一下零成本,需要时直接能用。 📝 向日葵 / ToDesk 客户端现在不装——大概率用不上几次,等真需要(Web 失灵、要动系统层)时再装,5 分钟的事。预案逻辑:Web 管 90%+ 场景;真救场时 5 分钟装好向日葵连上即可。
三、第二优先级 · 展示通道(静态试水 · 分支 C / EdgeOne)
这是当前最该做的"试水"——把projects-prototype那个静态网页,部署成projects.sixstars.cn。 好处:内容在腾讯云,iMac 完全不用开;免费;国内经 CNAME 能稳定访问。 ⚠️ 真实执行时下面 ⌨️ 命令要在你 MBA 本地终端跑(本环境连接器断了)。
3.1 准备静态文件
📂 彩排假设文件已就绪:/Users/sixstars/WorkBuddy/大欣的实践积累/xin_accumulate/2026-07-23/projects-prototype/index.html(含自包含 CSS、留言板、邮箱防爬、实时时钟、落款等,都按附录 B 定稿)。
📝 部署时把这个目录整体交给 EdgeOne。确认目录里至少有一个 index.html(入口页)。
3.2 在 EdgeOne 建「海外区」项目
🖱️ 登录腾讯云 → 「EdgeOne」→「Pages」→「创建项目」→ 项目名填 projects(无连字符,和子域名一致)。
⚠️ 加速区域必须选「全球可用区(不含中国大陆)= 海外区」——国内区绑自定义域名要求 ICP 备案,你的 sixstars.cn 没备案,选国内区会卡住。
👀 建好后,EdgeOne 会给你一个"目标值"(一串 .edgeonepages.com 或类似地址),后面 DNS 的 CNAME 就指向它。记下来。
3.3 部署(两种方式,CLI 优先)
方式 A:CLI 自动部署(推荐,可复用成脚本) ⌨️ MBA 本地终端(彩排照抄,-a overseas 不能漏):
# 进入原型目录
cd "/Users/sixstars/WorkBuddy/大欣的实践积累/xin_accumulate/2026-07-23/projects-prototype"
# 部署到 EdgeOne 海外区项目 projects
edgeone pages deploy . -n projects -t <你的EdgeOne_API_Token> -e production -a overseas
⚠️ 关键坑:漏掉 -a overseas 会默认按 global 区域找项目,找不到已存在的 projects,误判"项目不存在"去新建第二个——白忙活。务必带 -a overseas。
👀 终端跑完回一个线上地址,类似 https://projects.edgeonepages.com 或直接在 projects.sixstars.cn 生效。
方式 B:控制台手动上传(适合首次建站)
🖱️ EdgeOne Pages 项目里点「直接上传」→ 把 projects-prototype 目录里的文件拖进去 → 确认。
👀 同样生成线上地址。
3.4 腾讯云 DNS 加 CNAME
- 主机记录:
projects - 记录类型:
CNAME - 记录值:EdgeOne 给的「目标值」(3.2 记的那个)
🖱️ 腾讯云 DNS 解析 → sixstars.cn → 「添加记录」:
👀 保存。等几分钟 DNS 生效。
3.5 加上访问保护(复用 stocktrading 那套)
<meta name="robots" content="noindex,nofollow,noarchive">+robots.txt→ 禁止搜索引擎收录- JS 禁用右键/选择/复制/保存/打印/开发者工具 → 页面只读
- 访问口令闸门:口令 =
stock+ 当日日期YYYYMMDD(如stock20260727),前端纯 JS 算法,无需服务端
在 projects-prototype 的 HTML 里确认已带:
👀 这些在prototype 里已实现,部署后自动生效。
3.6 验证静态试水
🖱️ 手机切 4G(不用 WiFi)→ 浏览器开 https://projects.sixstars.cn。
👀 预期:先弹口令闸门 → 输对当天口令 → 进 projects 首页(能看到项目列表 + 留言板 + 邮箱 + 实时时钟 + 落款)。
✅ 通了 = 试水成功,计划从"需求定稿"正式跨入"实施验证"。
⚠️ 不通排查:① DNS 没生效(等几分钟 / dig projects.sixstars.cn 看指向对不对);② CNAME 值填错;③ EdgeOne 项目区选成国内区(必须海外区)。
四、第二优先级 · 展示通道(动态服务 · 分支 A/B,挂起模拟)
这部分当前挂起——取决于 0.2 的"有无公网 IP"判断。下面只做彩排演示,真实不执行,等需求方拍板 + 判断结果再动。
4.1 情景一:有公网 IP → 分支 A
- 路由器管理页 → 「端口转发 / 虚拟服务器」→ 外部端口
8443→ 内部 IP192.168.1.50→ 内部端口8443。 - DDNS-GO 容器跑起来,配置
projects.sixstars.cn指向你家公网 IP。
⌨️ 起 DDNS-GO(自动把变化的公网 IP 同步给域名解析)+ 路由器端口转发 8443:
👀 外面访问 https://projects.sixstars.cn:8443 能命中 iMac 上的 NPM。
4.2 情景二:无公网 IP → 分支 B
⌨️ 在 2.2 建好的 Cloudflare Tunnel 里,加一条「公共主机名 projects → 服务 localhost:8443」的路由。
👀 外面访问 https://projects.sixstars.cn 经 Tunnel 命中 iMac,不用开端口转发(但延迟 300~800ms,偏慢)。
4.3 起 NPM + 测试容器(两种情景都通用)
⌨️ 用 Portainer(2.4 起的)起 Nginx Proxy Manager(后台端口 9002)+ 一个 nginx 欢迎页测试容器(内部 5080)。
🖱️ Portainer 里建 docker-compose → 起完 → 在 NPM 后台(http://192.168.1.50:9002)加一条「域名 projects.sixstars.cn → 转发到 测试容器:5080」+ 自动申请 HTTPS 证书。
4.4 验证动态服务
🖱️ 手机 4G 开对应地址 → 看到 nginx 欢迎页 = 动态通道打通。
五、阶段 3:监控(模拟耗时 30 分钟)
⌨️ 用 Portainer 起 Uptime Kuma(端口 9003,仅内网/Tunnel):
docker run -d --name uptime-kuma --restart always -p 9003:3001 louislam/uptime-kuma
- 监控
projects.sixstars.cn(静态试水站) - 监控 Tunnel 在线状态
🖱️ 浏览器开 http://192.168.1.50:9003 → 首次建管理员账号 → 「Add New Monitor」:
🖱️ 告警通知:接「Server 酱」→ 微信收告警(Server 酱给个 Key,填进 Uptime Kuma 的 Notification)。
👀 以后哪个服务挂了,微信立刻弹消息。
六、端口规划(贯穿全程的记忆口诀)
| 区段 | 用途 | 对外? | 举例 |
|---|---|---|---|
| 8xxx | 对外 Web 入口(NPM 监听) | 是 | 8443 HTTPS 主入口(固定用这个) |
| 9xxx | 管理后台 | 否(仅内网/Tunnel) | 9001 Portainer / 9002 NPM / 9003 Uptime Kuma / 9004 DDNS-GO |
| 5xxx | 应用服务(容器内部,NPM 转发) | 否 | 5080 某 Web 应用 |
| 4xxx | 数据库 | 否(绝不对外) | 4001 PostgreSQL / 4002 MySQL / 4003 Redis |
记忆口诀:8 对外、9 管理、5 应用、4 数据库。
对外其实只需记一个端口 8443。数据库(4xxx)永远不转发到公网——这是安全红线。
七、阶段 4:按需上服务(以后 Expansion)
以后想跑什么展示/动态服务:
- 📂 找对应的
docker-compose.yml(或写一个新的)。 - 🖱️ 丢进 Portainer → 起容器(记得设
restart: always开机自恢复)。 - 🖱️ NPM 后台加一条「子域名 → 容器」转发。
- 完事。
八、安全防护 / 运维补课(挂起模拟,不阻塞试水)
这些不影响静态试水,但长期必须补。彩排演示做法:
- 断电恢复开机(重要修正):Apple Silicon iMac 断电后不会自动开机,
pmset autorestart无效(已实测)。故不依赖"断电自启",改为:① UPS 必选——「系统设置 → 电池/能源 → UPS」设"电量低于 X% 时自动干净关机"保护 SSD;② 长停恢复开机靠远程桌面引导/请人按电源键(iMac 不自愈),纳入操作通道远程桌面预案;③ 智能插座只能"远程通电",不能让 Mac 开机,单独不够。详见主文档「十二、电源与容量扩展预案」。 - 服务自动恢复:OrbStack 开机自启(2.1 已设)+ 所有容器
restart: always(2.4/五 已设)。 - 备份:重要数据(数据库、docker-compose 文件)定期打包同步到网盘/另一台机器;macOS 自带 Time Machine 可用。
- 防火墙:🖱️ 「系统设置 → 网络 → 防火墙」开启;路由器防火墙只开 8443 转发。
- 强密码:NPM、Portainer、数据库全设强密码。
- SSH:如开启,关闭密码登录只用密钥;或干脆不开,全走图形界面 + Tunnel。
- 定期更新:OrbStack、容器镜像、macOS 系统更新。
- SSD 寿命:iMac 长期开机,关注 SSD 写入量(用「磁盘工具 / 第三方 SMART 工具」偶尔看一眼健康度)。
九、模拟收尾 · 验收清单(Checklist)
彩排走完一遍,真实执行时你手里应拿到这些"凭证":
- [ ] iMac 芯片型号记下了(0.1)
- [ ] 公网 IP 有无判断结果(0.2)→ 决定动态走 A 还是 B
- [ ] iMac 固定内网 IP(如 192.168.1.50)记下了(0.3)
- [ ] 操作通道:在外 4G 能开
manage.sixstars.cn+ 邮箱验证码进 Portainer(2.5 ✅) - [ ] 远程桌面预案:屏幕共享已开;向日葵等需要时再装(2.6)
- [ ] 静态试水:
projects.sixstars.cn手机 4G 能开、口令能进(3.6 ✅) ← 当前最重要里程碑 - [ ] 监控:Uptime Kuma 起好、微信告警接好(五)
- [ ] 端口口诀烂熟:8 对外 / 9 管理 / 5 应用 / 4 数据库,对外只记 8443
- [ ] 安全/运维补课:断电恢复开机预案(UPS 扛短停 + 远程开机引导,Apple Silicon 不支持断电自启)+ 备份 + 防火墙 + 强密码(八,挂起但建议尽早补)
十、本手册与计划的关系 & 下一步
- 本手册 = 主文档
imac-server-plan.md(V02.16)的操作化彩排,把"阶段 0~4 + 双通道 + 三分支"翻译成傻瓜步骤。 - 当前最该落地的真实动作 = 第三节「静态试水」(V02.09 需求方已拍板"先部署静态站试水")。
- 静态试水前置:① EdgeOne API Token(在手);② 腾讯云 DNS 加
projectsCNAME;③ MBA 本地终端跑 CLI(本环境连接器断开)。 - 动态服务(第四节)+ 安全运维补课(第八节)挂起不阻塞,等公网 IP 判断 + 需求方进一步指令。
- 跑偏分支(主文档第十一节)仍待需求方一个一个确认,与本次彩排并行不冲突。
sixstars.cn ☆ 大欣,欣欣向荣的欣 ☆ 2026.07.27-07:20:01