Files
HomeDash/docker-compose.yml
HomeDash Bot c0cbdb5efc feat(deploy): 补首装路径,使他人/AI 可照教程从零部署
审计发现 5 处断点(3 处硬阻断):
1. Dockerfile 的 HTTP_PROXY/HTTPS_PROXY 默认指向内网代理 → 他人构建必失败
2. zd-host.sh 是升级脚本(要求已存在 host 模式 navi 容器)→ 新机器第一句过不去
3. docker-compose.yml 是桥接+端口映射,与'统一入口 host 模式'口径冲突
4. 证书文件名约定未文档化(实际来自 gateway.yml 的 certFile/keyFile)
5. 环境变量表不完整、缺 sshpass 依赖说明

本次:
- Dockerfile:代理默认置空,需要时 --build-arg 传入
- deploy/install-host.sh(新):干净机器首次安装,6 步并在任一步失败即停,
  含端口独占检查、证书检查、初始 gateway.yml 生成、apply、四项自检,
  令牌可自动生成并只打印一次;已存在 navi 容器时拒绝执行(引导去 zd-host.sh)
- docker-compose.yml:标注为试用形态,指向 install-host.sh
- README:新增「从零部署(干净机器)」——两条路径分工表、前置条件表、
  完整环境变量表、证书与初始网关配置说明、装完自检命令;自定义文件表登记新脚本

另修:脚本自检原用 /.navi-ping(该路径已按用户要求删除),改用 /conf.yml。
2026-09-12 09:37:45 +08:00

60 lines
2.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 试用/单机形态:桥接网络 + 端口映射,适合本机看效果。
# 统一入口形态(对外 3080/8443 + 3081 跳转、统一认证)请用 deploy/install-host.sh,
# 它是 host 网络单容器,不能与下面的端口映射共存。
version: "3.8"
services:
navi:
build: .
container_name: jianf-navi
image: jianf-navi:latest
restart: unless-stopped
ports:
# 宿主机端口:容器内 nginx 端口(Dashy/搜索/管理 统一入口)
- "${NAVI_PORT:-3003}:18080"
volumes:
# 持久化:导航配置 conf.yml + 历史 history.json + 图标 item-icons/
- ./data:/app/data
environment:
# ---- 鉴权令牌(强烈建议设置)----
# 浏览器扩展同步历史用
- NAVI_SYNC_TOKEN=${NAVI_SYNC_TOKEN:-}
# 管理后台/API 写操作用
- NAVI_ADMIN_TOKEN=${NAVI_ADMIN_TOKEN:-}
# ---- 对外访问地址(公网域名,影响搜索结果页链接)----
# 例如 https://nav.example.com (不含 /search 子路径)
- SEARXNG_BASE_URL=${SEARXNG_BASE_URL:-http://localhost:3003}
# ---- 历史条目图标抓取(可选)----
# 留空则自动复用 searxng-settings.yml 里 outgoing.proxies 的代理
- NAVI_FAVICON_PROXY=${NAVI_FAVICON_PROXY:-}
# ---- 一体化统一登录(gateway 模式)----
- PORTAL_USERNAME=${PORTAL_USERNAME:-admin}
- PORTAL_PASSWORD=${PORTAL_PASSWORD:-changeme}
- PORTAL_SESSION_SECRET=${PORTAL_SESSION_SECRET:-}
- PORTAL_COOKIE_DOMAIN=${PORTAL_COOKIE_DOMAIN:-.example.com}
healthcheck:
test: ["CMD", "curl", "-fs", "http://localhost:18080/healthz"]
interval: 30s
timeout: 5s
start_period: 30s
retries: 3
deploy:
resources:
limits:
memory: 512M
# ── 使用方式 ──
# 1. cp .env.example .env,编辑令牌与域名
# 2. docker compose up -d --build
# 3. 访问 http://<ip>:<NAVI_PORT>
#
# ── 国内网络注意 ──
# SearXNG 需访问 Google/Bing 等引擎。若服务器出不了外网,
# 编辑 searxng-settings.yml 的 outgoing.proxies 填你的代理:
# proxies:
# all://: http://<proxy-ip>:<port>
# 再 docker compose up -d --build 重新构建。