审计发现 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。
60 lines
2.2 KiB
YAML
60 lines
2.2 KiB
YAML
# 试用/单机形态:桥接网络 + 端口映射,适合本机看效果。
|
||
# 统一入口形态(对外 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 重新构建。
|