Sign inSign up

baone/olt-manager

By baone

•Updated 20 days ago

Image
0

1.4K

baone/olt-manager repository overview

⁠OLT Manager · Alpine 单容器版

镜像仓库:baone/olt-manager。Web、SQLite、SNMP、Telnet/SSH、WebSocket 终端、后台任务、授权与设备文件传输运行在同一个容器,运行数据统一持久化到 /data。

默认 Web 登录:admin / Admin@123。 可自行修改 Compose 中的 ADMIN_INITIAL_PASSWORD,不强制先改密码才能部署,无需另建 .env。该初始密码只用于首次建账号;已有数据保留原账号密码,不会被新默认值或环境变量覆盖。

⁠Linux / 飞牛 / NAS:一份 Compose 直接启动

把下列完整 YAML 保存为独立部署目录中的 docker-compose.yml,或粘贴到飞牛 Docker → Compose → 新增项目。镜像使用 baone/olt-manager:latest,Docker 自动选择 linux/amd64、linux/arm64、linux/arm/v7,不要固定 amd64 的 platform。

# 逐项说明见 Compose参数说明.md(源码目录为 docs/Compose参数说明.md)。
services:
  olt-manager:
    image: baone/olt-manager:latest
    restart: unless-stopped
    ports:
      - "18091:80"
      # OLT 的 CFG/DATA 文件传输;OLT 必须能回连本机 UDP/69。
      - "69:69/udp"
    environment:
      TZ: "Asia/Shanghai"
      # 默认账号 admin,默认密码 Admin@123;可自行修改,已有账号密码不会被覆盖。
      ADMIN_INITIAL_PASSWORD: 'Admin@123'
      # 已实现功能默认开启;产品授权、账号权限和设备校验仍须通过。
      # 常规配置写入主开关;保存、校时和交互终端还有独立开关。 1=开/0=关。
      OLT_ALLOW_WRITES: "1"
      # 通用 CLI 配置下发,不替代模板/保存/终端各自的开关。 1=开/0=关。
      OLT_ENABLE_CLI_WRITES: "1"
      # 后台注册、自动注册和 SNMP 注册通道;策略在页面设置。 1=开/0=关。
      OLT_ENABLE_REGISTRATION: "1"
      # 允许发送 save;具体自动保存周期在页面设置。 1=开/0=关。
      OLT_ENABLE_CONFIG_SAVE: "1"
      # VLAN、ONT、业务流、割接/移机、恢复等专用配置下发。 1=开/0=关。
      OLT_ENABLE_CONFIGURATION_WRITES: "1"
      # 允许模板专用下发;被 ONT 引用的模板仍禁止删除。 1=开/0=关。
      OLT_ENABLE_TEMPLATE_WRITES: "1"
      # 允许有权限的账号连接命令终端;关闭其他写入项不替代此项。 1=开/0=关。
      OLT_ENABLE_TERMINAL: "1"
      # 允许按已验证策略执行业务 VLAN 平移。 1=开/0=关。
      OLT_ENABLE_VLAN_SHIFT: "1"
      # VLAN 平移无法原地修改时,允许已验证的删除业务流后重建。 1=开/0=关。
      OLT_ENABLE_SERVICE_REBUILD: "1"
      # 允许向 OLT 校时,还需固件校验、页面开关和宿主机 NTP 状态。 1=开/0=关。
      OLT_ENABLE_CLOCK_SYNC: "1"
      # 默认启用本机 TFTP 接收;需要下面的可回连地址,页面逐台设置优先。 1=开/0=关。
      OLT_FILE_TRANSFER_READY: "1"
      # 在每台 OLT 的服务器/自动备份设置里填写可回连的本机 IPv4;也可在此统一填写。
      OLT_TRANSFER_ADDRESS: ""
      # 保留全部后台业务,减少空载占用;按设备数量和资源调整。
      # 设备任务/同步工作进程数,范围 1–16;同一 OLT 仍互斥。
      OLT_REPLICA_WORKERS: "2"
      # 后台注册工作进程数,范围 1–16;不是页面的单 OLT 并发注册上限。
      OLT_REGISTRATION_WORKERS: "2"
      # 内部 SNMP HTTP 工作线程数,范围 8–256。
      SNMP_HTTP_WORKERS: "8"
      # 设备心跳探测并行数,范围 1–128;不是授权心跳间隔。
      SNMP_HEARTBEAT_PARALLEL: "2"
    # 左侧是宿主机目录;升级必须保留完整 data,右侧 /data 不变。
    volumes:
      - ./data:/data
    # 网络探测所需能力;不是宿主机全部权限。
    cap_add:
      - NET_RAW
    # 只轮转 Docker 输出日志,不限制数据库/应用日志/备份总空间。
    logging:
      driver: json-file
      options:
        max-size: "1m"
        max-file: "3"
    # 升级前先等设备任务结束;35s 是停机宽限,不是同步超时。
    stop_grace_period: 35s

Linux 已安装 Docker 与 Compose 后,在文件目录直接执行:

docker compose up -d
docker compose ps
docker compose logs --tail=100 olt-manager

访问 http://主机地址:18091/,默认账号 / 密码为 admin / Admin@123。若位于还保留旧 compose.yaml 的源码目录,改用 docker compose -f docker-compose.yml up -d,避免自动选中旧编排。新部署仅这一份文件,无需源码、编译或复制环境模板。交付端口 18091 可与开发机的 18090 区分。

飞牛:创建 Compose 项目,选择固定持久项目路径,粘贴或上传完整文件,创建并启动;无需先替换密码。界面以所装版本为准,本次未登录 NAS 实机验收。Web 端口占用时只改 18091:80 左侧;密码可直接修改,含 $ 时在 Compose 中写 $$,已有账号通过 Web 修改密码。

⁠产品授权与数据保留

授权验证联系方式:QQ:349601929。此 QQ 仅用于产品授权联系,不是 Web 登录账号,也不是 QQ/邮箱登录认证;Web 默认账号 / 密码为 admin / Admin@123。

登录后打开“产品授权”,按设备码申请并激活授权码或签发给本设备的离线凭证。在线授权需正确时间、DNS 及到 license.gzgfwl.com.cn 的 HTTPS/443,断网宽限以已签名凭证为准。授权无效时业务进程会暂停,Web 仍可访问;healthy 可能包含 business: paused,不能替代有效授权和 OLT 连接检查。

./data:/data 保存数据库、账号、应用加密密钥、.backend-token、设备备份及 license/identity.json、license/license.json。升级或重建完整保留原目录;不要只备份 .db,不要让两个实例同时写相同数据库或使用同一授权身份。目录须支持启动时的写入、chown/chmod,不覆盖镜像默认入口或用户。

已实现业务的部署开关默认开启,执行仍受产品授权、逐台权限、设备能力、固件校验、预演及任务互斥约束。TFTP 已发布 UDP/69,还需在每台 OLT 的服务器/自动备份页面填写 OLT 可回连的服务器 IPv4,或统一填写 OLT_TRANSFER_ADDRESS;环境值不自动建立 VPN 回程。UDP/69 若与主机已有 TFTP 冲突,须绑定不同本机 IPv4,不能随意改成其它端口。WebSocket 与 Web 共用端口,反向代理须支持 WebSocket。

主机/NAS 自身负责 NTP,OLT 校时虽已开启,应用仍要求可读取的宿主机同步状态和当前固件校验。单份 Compose 不自动安装 Linux/NAS/RouterOS 主机代理,不将此写成已完成集成。TZ 为显示时区的初始/回退值,页面可关闭自动时区并手动选择。

⁠资源和日志

Docker 日志默认 json-file、每份 1m、保留 3 份,仅限制 Docker 输出日志,不限制数据库、应用日志和备份。256 MB 总存储装不下镜像、数据库及必要运行数据;压缩下载大小不等于解包大小。128 MB / 256 MB 内存均不承诺可运行,待目标架构完整容器启动、空载及业务峰值测量。ARM 仿真不能替代 ARM/NAS/RouterOS 真机容量验收。ARMv5、MIPS 不支持。

⁠升级与旧部署

先等待业务任务结束,停止容器并以有权限的管理员完整备份实际数据目录和 Compose,再运行 docker compose pull、docker compose up -d;NAS 在同一项目执行对应拉取与重建,保留原路径。运行中的实例不会自动升级。回退还需旧镜像真实摘要/归档与升级前数据,不编造未发布版本号或标签。

⁠版本与验收范围

版本:alpine-v90-20261020。amd64、arm64、arm/v7 三架构整容器验证已通过,ARM 使用 QEMU。部署入口为 latest,实际发布状态以仓库清单及摘要为准;镜像验证通过不代表仓库上传、清单核对及旧标签清理已经完成。

本轮修复:日志账号的 log_query_context 白名单保留 PON 的 port_display / description,两趟遍历避免 ONT 描述覆盖 PON 备注。源码包收录 tests/pon_log_context.php。68 项新增 PON 上下文回归、170 项 HTTP 权限检查通过;新建真实日志账号 before/after 验证中,17 条 PON 备注的显示数从 0 恢复至 17。验证记录以交付根目录 evidence/ 为准。

Docker Hub 目标只保留当前最新版及架构别名:latest、alpine、alpine-amd64 / alpine-arm64 / alpine-armv7,以及当前固定版本与其 -amd64 / -arm64 / -armv7 标签;成功发布核对后清理旧固定版本标签。以上是待执行的标签保留策略,不是仓库现状声明。回退须私下保留旧镜像归档、摘要和升级前数据,不能依赖旧 Hub 标签长期存在。

私有免授权版 local-offline 仅本地保留,使用 localhost/olt-manager-local:alpine-v90-20261020-ARCH,不发布到 Docker Hub,也不得重新标记后混入公开授权版。

NAS/RouterOS 真机与资源峰值仍需现场验收。MDU 的 VLAN IP/二层业务执行保持实机能力门禁,缺少设备证据时不能下发。ACS 平台不在项目范围。

⁠修改参数后生效

正常部署保留默认即可。布尔参数填带引号的 "1" 或 "0"。修改原项目的 docker-compose.yml 后,等待设备任务结束,执行:

docker compose -f docker-compose.yml config --quiet
docker compose -f docker-compose.yml up -d --force-recreate

只执行 restart 不会采用文件中新改的环境变量。飞牛/NAS 在原 Compose 项目编辑并更新/重建,保留原 data 挂载。并发参数表指当前 Compose 值;删除变量可能回退到较大的镜像默认值。

OLT_TRANSFER_ADDRESS 填 OLT 能主动访问的本系统 TFTP 接收 IPv4,留空时逐台在页面设置。页面逐台值优先;外部 SFTP 服务器到维护页单独配置,不填到这个变量。下面的参数表供查询,完整资料包另有 Compose参数说明.md。

⁠功能开关

参数默认用途及关闭影响
OLT_ALLOW_WRITES"1"常规设备配置下发、SNMP 写入及注册流程的主开关;关闭后相关写入不开放。保存、校时和交互终端另有独立开关,不能只依赖这一项建立只读账号。
OLT_ENABLE_CLI_WRITES"1"通用 CLI 配置下发通道。模板、保存、校时等受各自专门开关约束;关闭它不等于禁用所有设备操作。
OLT_ENABLE_REGISTRATION"1"后台注册/自动注册流程及 SNMP 注册接口。手动注册、自动移机等设备配置操作还受配置下发开关与各自校验约束。
OLT_ENABLE_CONFIG_SAVE"1"允许发送 OLT save 保存指令,供手动保存、保存/同步、相关定时保存流程使用;不会仅因设为 1 就自动保存或自动同步。具体周期在页面设置。
OLT_ENABLE_CONFIGURATION_WRITES"1"网络/VLAN、业务流、ONT 手动操作、割接/移机、设备账号、外部备份设置和恢复等专用配置下发。仍需当前操作具备设备能力证据。
OLT_ENABLE_TEMPLATE_WRITES"1"模板专用下发,包括 DBA、线路、业务、TR069 和流量模板。并不解除被 ONT 引用模板的删除保护;TR069 模板下发不要求本系统提供 ACS 平台。
OLT_ENABLE_TERMINAL"1"允许有终端权限的账号打开命令连接。终端是独立通道,关闭其他写入开关不能替代关闭此项或撤销账号终端权限。
OLT_ENABLE_VLAN_SHIFT"1"业务 VLAN 平移,包括预演后按设备已验证策略执行;仅开此项不能跳过主写入与能力校验。
OLT_ENABLE_SERVICE_REBUILD"1"VLAN 平移不能原地修改时,允许使用已验证的删除 service-port 后重建方案;实际修改方式由程序判断。关闭后需要重建的平移会被拒绝。
OLT_ENABLE_CLOCK_SYNC"1"允许向 OLT 校时。还需页面中该 OLT 的策略、固件校验和有效的宿主机 NTP 同步状态;设为 1 不会给宿主机安装 NTP 服务。
OLT_FILE_TRANSFER_READY"1"本系统 TFTP 接收的默认启用值。需要可回连地址才能使用;页面内逐台 OLT 的启用设置优先,不影响独立外部 SFTP/FTP 备份服务器配置。

普通查询账号应在系统账号管理中设置为“只读”或“仅日志”,再绑定可访问 OLT。此权限由服务器校验,不要靠隐藏按钮或修改单个部署开关代替账号权限。

⁠并发参数

参数Compose 默认有效范围用途
OLT_REPLICA_WORKERS"2"1–16后台设备任务/同步工作进程数,不同 OLT 可由不同进程处理。同一 OLT 仍有互斥和等待机制;增加进程不绕过设备忙状态。
OLT_REGISTRATION_WORKERS"2"1–16后台注册工作进程数;不是单台 OLT 的“并发注册数量”。单台自动注册策略中的并发上限另在页面配置,最大 128。
SNMP_HTTP_WORKERS"8"8–256容器内部 SNMP 服务的 HTTP 请求工作线程数;不是 Web 登录人数,也不是 OLT Telnet 最大会话数。
SNMP_HEARTBEAT_PARALLEL"2"1–128设备后台心跳探测并行数;不是授权心跳的间隔,也不会把保存任务变为并行写同一台 OLT。

数值越大可能增加同时发生的网络请求和资源占用,不保证同步更快。保持默认即可;设备少且资源紧张时,可从 1 / 1 / 8 / 1 开始观察,功能开关保持原值。这不是对任何小内存设备的容量保证。

删除并发变量可能回退到镜像默认值:SNMP_HTTP_WORKERS 为 32,SNMP_HEARTBEAT_PARALLEL 为 4;因此小资源部署建议显式保留 Compose 中的 8、2。范围外的值会让启动入口报错退出,不要填写 0、小数或任意字符串。

⁠其他 Compose 字段

字段当前值说明
imagebaone/olt-manager:latest拉取授权版镜像并按主机选择架构;本地免授权包使用其专用镜像与包内 Compose。
restartunless-stopped容器退出后的重启策略;不代表 OLT 任务失败后会盲目重发命令。
ports / Web"18091:80"左侧为 Linux/NAS 的访问端口;被占用可改为 "18092:80",访问地址随之变化。右侧容器端口 80 保留。
ports / TFTP"69:69/udp"给 OLT 主动传输文件使用,需要网络与防火墙允许。若本机 UDP/69 被其他服务占用,先处理冲突;只查询/经 Telnet 同步配置且不用本系统接收文件时,可去掉此映射,并按页面设置关闭本机文件接收。
TZAsia/Shanghai应用显示时区的初始/回退值;不修改宿主机时钟,不等于启用 NTP。页面可选择自动/手动显示时区。
ADMIN_INITIAL_PASSWORDAdmin@123首次创建 admin 的初始密码。修改此值不重置已有账号;已有账号在 Web 修改。Compose 中密码若含 $,写作 $$。
volumes./data:/data左侧为宿主机数据目录,相对路径基于 Compose 项目;右侧为容器数据目录。可改成 /volume1/docker/olt-manager/data:/data 等实际绝对路径。保留完整目录才能保留账号、设备信息、授权身份和备份。
cap_addNET_RAW给网络探测所需的原始套接字能力;不是开放宿主机全部权限,不能代替网络路由。RouterOS 不直接使用这条 Compose 设置。
logging.driverjson-fileDocker 收集容器标准输出/错误的日志驱动。
logging.options.max-size"1m"单个 Docker 输出日志文件的轮转阈值。
logging.options.max-file"3"最多保留 3 个 Docker 输出日志文件;配合 max-size 形成约 3 MiB 的输出日志预算。不是整个 /data 的空间上限。
stop_grace_period35s停容器时给进程退出的宽限。设备保存/同步可能超过此时间,升级前应先等待业务任务结束。

Docker 输出日志轮转不清理应用数据库、配置缓存或备份文件。界面中的操作日志和现场 OLT 查询结果是另一层内容,不能通过 max-size/max-file 限制数据库总体积;ONT 上下线/历史按需查询 OLT,不作为本地历史采集保存。

⁠MikroTik:独立部署方法

RouterOS 不使用 Compose。以下是新建示例,先按设备实际版本检查命令补全、架构、可用内存和磁盘,替换 disk1 路径及冲突网段。镜像支持 amd64、arm64、arm/v7;MIPS、ARMv5 不适用。安装与 RouterOS 相同版本、架构的 container 包。

/system/resource/print
/system/package/print
/system/device-mode/print
/disk/print
/ip/dns/print

若 container=no,安排维护时间执行 /system/device-mode/update container=yes,按设备提示进行物理确认;普通 reboot 不替代物理确认。启用动作会重启设备,已启用则跳过。

使用独立容器网段与持久数据目录:

/interface/bridge/add name=br-olt-container
/ip/address/add address=172.19.77.1/24 interface=br-olt-container
/interface/veth/add name=veth-olt address=172.19.77.2/24 gateway=172.19.77.1
/interface/bridge/port/add bridge=br-olt-container interface=veth-olt
/container/mounts/add list=OLT_DATA src=disk1/olt-data dst=/data
/container/config/set registry-url=https://registry-1.docker.io tmpdir=disk1/olt-pull

镜像根目录、数据目录、拉取临时目录分别使用 disk1/olt-root、disk1/olt-data、disk1/olt-pull。保持 OLT_DATA,更新镜像不删除数据目录。

/container/envs/add list=OLT_ENV key=TZ value="Asia/Shanghai"
/container/envs/add list=OLT_ENV key=ADMIN_INITIAL_PASSWORD value="Admin@123"
/container/envs/add list=OLT_ENV key=OLT_ALLOW_WRITES value="1"
/container/envs/add list=OLT_ENV key=OLT_ENABLE_CLI_WRITES value="1"
/container/envs/add list=OLT_ENV key=OLT_ENABLE_REGISTRATION value="1"
/container/envs/add list=OLT_ENV key=OLT_ENABLE_CONFIG_SAVE value="1"
/container/envs/add list=OLT_ENV key=OLT_ENABLE_CONFIGURATION_WRITES value="1"
/container/envs/add list=OLT_ENV key=OLT_ENABLE_TEMPLATE_WRITES value="1"
/container/envs/add list=OLT_ENV key=OLT_ENABLE_TERMINAL value="1"
/container/envs/add list=OLT_ENV key=OLT_ENABLE_VLAN_SHIFT value="1"
/container/envs/add list=OLT_ENV key=OLT_ENABLE_SERVICE_REBUILD value="1"
/container/envs/add list=OLT_ENV key=OLT_ENABLE_CLOCK_SYNC value="1"
/container/envs/add list=OLT_ENV key=OLT_FILE_TRANSFER_READY value="1"
/container/envs/add list=OLT_ENV key=OLT_TRANSFER_ADDRESS value="172.19.77.2"
/container/envs/add list=OLT_ENV key=OLT_REPLICA_WORKERS value="2"
/container/envs/add list=OLT_ENV key=OLT_REGISTRATION_WORKERS value="2"
/container/envs/add list=OLT_ENV key=SNMP_HTTP_WORKERS value="8"
/container/envs/add list=OLT_ENV key=SNMP_HEARTBEAT_PARALLEL value="2"

OLT_TRANSFER_ADDRESS=172.19.77.2 要求 OLT 能主动访问该地址;也可在页面为每台设备填写。容器经 RouterOS 路由/VPN 访问 OLT,需要相应回程、防火墙和授权 HTTPS 出网。若既有 WAN NAT 不覆盖容器网段,按真实 WAN 接口列表补充仅出网的 NAT;不要替换现有网络规则。RouterOS 自身须有可用 DNS,缺少时按本机帮助给容器指定现场 DNS。

/container/add remote-image=baone/olt-manager:latest interface=veth-olt root-dir=disk1/olt-root mountlists=OLT_DATA envlists=OLT_ENV name=olt-manager start-on-boot=yes logging=yes
/container/print

等待下载/解包完成,状态 stopped 后启动:

/container/start [find where name="olt-manager"]
/container/print detail
/log/print where topics~"container"

新手册使用 envs/mounts 的 list、envlists 和 mountlists;旧版本可能使用 envlist 或不同挂载参数,以本机帮助为准。首次 start-on-boot 不代替手动启动。管理电脑可路由到容器时访问 http://172.19.77.2/,使用⁠ admin / Admin@123 登录并按设备码激活;QQ:349601929。经路由器 LAN 地址映射 Web 时,须另外配置仅限管理来源的 NAT/防火墙;Compose 的 ports 和 NET_RAW 不会自动应用到 RouterOS。

小内存或离线环境可在 Linux/PC 显式拉取目标架构再导入。例如 ARM64:

docker pull --platform=linux/arm64 baone/olt-manager:latest
docker image save --platform=linux/arm64 -o olt-manager-arm64.tar baone/olt-manager:latest
gzip olt-manager-arm64.tar

save --platform 需要支持该参数的 Docker 客户端/引擎;旧环境使用只装入目标平台镜像的独立存储再 save。上传到外盘,以下命令替代 remote-image 的 add,不重复创建同名容器:

/container/add file=disk1/olt-manager-arm64.tar.gz interface=veth-olt root-dir=disk1/olt-root mountlists=OLT_DATA envlists=OLT_ENV name=olt-manager start-on-boot=yes logging=yes

amd64、ARMv7 相应替换平台和文件名。导入镜像不代替授权,离线激活使用签发给该设备码的凭证。数据库和根目录放持久磁盘,运行内存仍要按真实设备测量。RouterOS 的 NTP、日志与容器权限按该设备配置,本文未作 RouterOS/NAS 真机验收。

完整本地交付资料中有部署-MikroTik.md,包含 LAN 访问、更新、回退和排错步骤。官方参考:Container⁠、CLI container⁠、Device mode⁠、Docker Compose services⁠。

Tag summary

Content type

Image

Digest

sha256:62a35560b…

Size

42.2 MB

Last updated

20 days ago

docker pull baone/olt-manager