主题
home.cong.in 服务导航面板
cong.in 所有服务的统一入口,基于 gethomepage(不是 Homer),Docker 部署在 Server1。 带服务在线探测、两台服务器资源监控、标签页分类、炫彩样式。
一、部署架构
| 项目 | 值 |
|---|---|
| 软件 | gethomepage(ghcr.io/gethomepage/homepage:latest) |
| 部署机 | Server1(myserver,〈Server1-IP〉) |
| 容器 | homepage,端口 127.0.0.1:3088:3000 |
| 配置目录 | Server1: /var/www/homepage/config/ |
| 反代 | Caddy → home.cong.in → 127.0.0.1:3088 |
| 必需环境变量 | HOMEPAGE_ALLOWED_HOSTS=home.cong.in(反代必须,否则空白页) |
配置文件备份见本文件夹 config/(settings/services/widgets/custom.css/docker-compose)。 线上以 Server1 为准,本地是备份。改完线上记得同步回这里。
二、⭐ 加新服务器(两条命令)
第 1 步:在【新服务器】上装 glances(采集资源)
bash
curl -s https://scripts.cong.in/glances.sh | bash自动装 glances 容器 + 防火墙只放行 Server1,最后打印本机公网IP。 (Windows 云电脑:glances 用 docker 不方便,建议本身就是 Linux 服务器才用这套。)
第 2 步:在【Server1】上注册进面板
bash
ssh myserver "bash /var/www/scripts/add-server.sh <新服务器IP> <名字>"
# 例:
ssh myserver "bash /var/www/scripts/add-server.sh 1.2.3.4 Server3"自动往 widgets.yaml 追加一个 glances 框并重启 homepage。刷新面板即可看到新服务器框。
完成。新服务器框会自动带上和 Server1/Server2 一样的彩虹边框样式。
三、加新服务(网站/应用入口)
编辑 services.yaml,在对应分组下加一项:
bash
ssh myserver "nano /var/www/homepage/config/services.yaml"
ssh myserver "docker restart homepage"格式:
yaml
- 服务名:
href: https://xxx.cong.in
description: 简介
icon: xxx.svg # 图标库 https://github.com/walkxcode/dashboard-icons,或 mdi-xxx
siteMonitor: https://xxx.cong.in # 右上角在线状态绿点新分组想进某个标签页,去 settings.yaml 的 layout 里给它加 tab: 标签名。
外部资源用 bookmarks.yaml(不要用 services)
外部站点(数据库/工具)走 bookmarks.yaml,不做在线探测(services 的 siteMonitor 会 ping 外部站,浪费且常误报红点)。siteMonitor 只留给自己的服务。 bookmarks 分组同样在 settings.yaml layout 里用 tab: 归标签页,分组名必须完全一致。
- 「科研」标签 = 干实验 + 湿实验两条腿:
- 干实验·MR/药靶(①-⑦ 圆圈数字流水线):①暴露端pQTL ②结局端GWAS(含东亚/多族裔) ③变量注释 ④分析/共定位(含fine-mapping) ⑤组织落位(含eQTL Catalogue) ⑥可成药性 ⑦通路/机制解释。
- 湿实验·模式动物验证(🐟 独立分组):MGI/IMPC(小鼠) · ZFIN(斑马鱼) · Alliance · Addgene · protocols.io。承接干实验算出的因果蛋白去动物验证。
- 科研与自动化(services,带状态点):RStudio/FreshRSS/n8n/青龙。
- 干/湿视觉分隔用命名法(数字 vs 🐟),不依赖脆弱的 h2:nth-of-type。
四、设计/样式要点(custom.css)
- 背景:6 色极光渐变流动。
- 服务器框:钩子
.information-widget-glances,每台一个框 + 流动彩虹跳动边框(其他地方都没有边框)。 - 服务卡片:钩子
[class~='bg-theme-50'],安静玻璃磨砂,无动画。 - 分组标题:浅色玻璃 + 左侧细彩竖条(
h2:nth-of-type(n)配不同颜色)。 - 标签页:settings.yaml 每个分组加
tab:,标签栏高亮钩子#myTab a/[role='tablist']。
五、两台服务器资源监控(统一 glances 方案)
- 所有服务器统一用 glances
metric: info:单框显示 CPU/内存/负载/在线时长。 - ❌ 磁盘做不到同框:glances 的 info=quicklook 接口天生不含磁盘容量;硬拼很丑,已确认放弃磁盘,不要再尝试。
- 每台都跑 glances 容器(端口 61208,API
/api/4/,glances v4)。 - Server1 的 glances:homepage 容器通过 docker 网关
172.17.0.1:61208访问本机。 - Server2 通过公网
〈Server2-IP〉:61208。 - 防火墙坑:homepage 容器在
172.18网段(不是 172.17!),Server1 的 glances 61208 必须放行172.16.0.0/12(docker 全网段)+ 127.0.0.1,其余 DROP。远程服务器放行 Server1 IP 即可。
六、踩过的坑(别再犯)
- Caddy home.cong.in 块指令必须各占一行,挤成单行会返回 200 空 body → 浏览器显示旧缓存空白页。
- 浏览器缓存顽固(早期 Homer 的 service worker):用无痕窗口,或 F12→Application→Service Workers→Unregister。
- 磁盘同框做不到,别再折腾(见第五节)。
- 分组名必须 settings.yaml 和 services.yaml 完全一致(含空格),否则该组布局/标签失效。
- 标签名别用特殊符号(曾用「·」疑似破坏标签页,已去掉)。
七、待确认(历史遗留)
- n8n 是否在用(面板里暂留)。
- 重复服务:Jellyfin(film.cong.in vs movie.cong.in)、Alist 两套,未定保留哪个。