mirror of
https://github.com/TencentCloud/Octop.git
synced 2026-09-28 11:23:02 +08:00
根因:应用密码策略(src/octop/infra/users/password.py)的常见弱密码黑名单包含 octop123,
而 FnOS FPK 把初始密码写死为 Octop123,首次启动 octop init 报 "password is too common"
直接退出("Octop process exited early"),全新安装的 native / docker FPK 均无法启动。
修复内容:
- 安装向导(wizard/install,native + docker)提供两种密码方式:
① 自己输入密码:install_init / install_callback 按应用侧策略预校验(≥8 位、
含字母和数字、不在常见弱密码黑名单),无效密码在安装阶段直接拦截并中文提示;
② 自动生成随机密码(推荐):octop_generate_password 生成 16 位强密码。
- 随机/自定义密码双通道送达:
① 应用「设置」窗口(wizard/config)顶部直接显示当前账号与密码(安装/改密时
由回调渲染占位符模板),用户免翻文件;
② 数据目录 octop-login.txt 回落备份,永久保留、随改密同步更新。
- 启动器与容器入口三重兜底:.env 无密码时自动生成;init 因密码策略被拒时
自动改用随机密码重试一次,并回写 .env 保持一致 —— 存量坏 .env(Octop123)
升级后首次启动即被救活,不再依赖用户手工清理。
- 应用「设置」窗口支持改密:保持不变 / 随机生成 / 自定义(config_init 前置校验),
本地版走官方 CLI `octop user passwd` 离线改密(停服→改密→启服防写库冲突),
Docker 版走 `docker exec octop octop user passwd`;凭据三处同步(.env /
octop-login.txt / 设置窗口显示)。
- 官方 CLI 管理保障:安装回调注册 octop / octop-cli 到 PATH 并做 `octop version`
冒烟验证(结果写入安装日志)。
- docker/docker-entrypoint.sh:未设置 OCTOP_DEFAULT_PASSWORD 时自动生成随机密码,
指定密码被策略拒绝时自动回退随机;credential.txt 增加访问地址行。
- compose / .env.example / README / user-guide 移除 Octop123 默认值与宣传文案。
本地验证:19 个 shell 脚本 bash -n 全过;7 个向导 JSON 全部合法;密码生成 300/300
通过字符集/长度/首字母/末位数字断言;octop_validate_password 与官方
validate_password_policy 对拍 19/19 一致、黑名单 14 项逐字一致;渲染链端到端模拟
(生成→校验→回落保存→设置窗口渲染→JSON 复检)通过。
56 lines
2.4 KiB
YAML
56 lines
2.4 KiB
YAML
# =============================================================================
|
|
# Octop — Docker Compose
|
|
#
|
|
# 用法(在仓库根目录执行):
|
|
# docker compose -f docker/docker-compose.yml up -d
|
|
# OCTOP_PORT=9090 docker compose -f docker/docker-compose.yml up -d
|
|
# OCTOP_DEFAULT_PASSWORD=<your-strong-password> docker compose -f docker/docker-compose.yml up -d
|
|
#
|
|
# 可在 docker/ 目录放置 .env 文件,例如:
|
|
# OCTOP_PORT=9090
|
|
# OCTOP_DEFAULT_PASSWORD=<your-strong-password>
|
|
# OCTOP_ADMIN_USERNAME=admin
|
|
# OCTOP_DATABASE_DRIVER=postgresql
|
|
# OCTOP_DATABASE_URL=postgresql://octop:octop@host.docker.internal:5432/octop
|
|
#
|
|
# 注意: docker/.env 仅用于 Compose 插值;变量必须列在下方 environment
|
|
# 才会进入容器。也可写入数据卷内的 ~/.octop/env(宿主机挂载目录下的 env)。
|
|
# 密码须 ≥8 位且同时包含字母与数字(与控制台改密策略一致)。
|
|
# 后续计划:首次启动可改为随机生成密码并写入 credential.txt。
|
|
# =============================================================================
|
|
|
|
services:
|
|
octop:
|
|
build:
|
|
context: ..
|
|
dockerfile: docker/Dockerfile
|
|
image: octop:latest
|
|
container_name: octop
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${OCTOP_PORT:-8088}:${OCTOP_PORT:-8088}"
|
|
volumes:
|
|
- ${OCTOP_DATA:-~/.octop}:/data/.octop
|
|
environment:
|
|
- HOME=/data
|
|
- OCTOP_BIND_HOST=0.0.0.0
|
|
- OCTOP_PORT=${OCTOP_PORT:-8088}
|
|
- OCTOP_LOG_LEVEL=${OCTOP_LOG_LEVEL:-info}
|
|
- OCTOP_DEFAULT_PASSWORD=${OCTOP_DEFAULT_PASSWORD:-}
|
|
- OCTOP_ADMIN_USERNAME=${OCTOP_ADMIN_USERNAME:-admin}
|
|
- OCTOP_ADMIN_DISPLAY_NAME=${OCTOP_ADMIN_DISPLAY_NAME:-Admin}
|
|
- OCTOP_DATABASE_URL=${OCTOP_DATABASE_URL:-}
|
|
- OCTOP_DATABASE_DRIVER=${OCTOP_DATABASE_DRIVER:-}
|
|
- OCTOP_DATABASE_SQLITE_PATH=${OCTOP_DATABASE_SQLITE_PATH:-}
|
|
- OCTOP_DATABASE_HOST=${OCTOP_DATABASE_HOST:-}
|
|
- OCTOP_DATABASE_PORT=${OCTOP_DATABASE_PORT:-}
|
|
- OCTOP_DATABASE_NAME=${OCTOP_DATABASE_NAME:-}
|
|
- OCTOP_DATABASE_USER=${OCTOP_DATABASE_USER:-}
|
|
- OCTOP_DATABASE_PASSWORD=${OCTOP_DATABASE_PASSWORD:-}
|
|
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
|
|
- DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY:-}
|
|
- OCTOP_LANGFUSE_ENABLED=${OCTOP_LANGFUSE_ENABLED:-false}
|
|
- LANGFUSE_PUBLIC_KEY=${LANGFUSE_PUBLIC_KEY:-}
|
|
- LANGFUSE_SECRET_KEY=${LANGFUSE_SECRET_KEY:-}
|
|
- LANGFUSE_BASE_URL=${LANGFUSE_BASE_URL:-}
|