跳转到内容

打不开界面或登录不了

按现象查找。命令都在运行 nSIM 的主机上执行,路径以 /opt/nsim 为例。

先在主机上执行:

终端窗口
curl -fsS http://127.0.0.1:7575/ready

可能的原因与处理:

  • 命令没有任何响应:nSIM 没在运行。用 docker compose logs --tail 50 或 journalctl -u nsim -n 50 看最后几行的报错。
  • 返回 503:nSIM 在运行,但还没就绪。见/ready 一直返回 503。
  • 主机上返回 ok,别的电脑打不开:主机防火墙没放行端口,默认是 TCP 7575。
  • 改过端口:Docker 部署用的是 host 网络,端口只认配置文件里的 server.port。compose 里写的 ports: 不起作用。
  • server.port 写成了 "127.0.0.1:7575":这时只能从主机本机访问。别的电脑要经反向代理,见放到 HTTPS 反向代理后面。

响应里的 checks 写着每一项的状态,不是 ok 的那项就是原因。

项 值 原因与处理
startup in_progress 还在启动,要枚举模组、建立 VoWiFi 连接。模组多时要一两分钟,稍等再试。
shutdown in_progress 正在退出或重启,等它重新起来。
database failing 数据库打不开。看日志里的报错,常见原因是磁盘满了。
data_dir failing 数据目录不可写。检查磁盘空间,以及 data 目录的权限和挂载。

改了端口后容器一直显示 unhealthy

Section titled “改了端口后容器一直显示 unhealthy”

镜像自带的健康检查固定访问 7575 端口,改了 server.port 后就一直失败。nSIM 本身不受影响,Docker 也不会因此重启容器。

要让状态正确,在 docker-compose.yml 的 nsim 下加一段,把 8080 换成你的端口:

healthcheck:
test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1:8080/ready"]

然后执行 docker compose up -d。

可能的原因:用户名或口令和配置文件里的不一致。在界面改过口令后,配置文件里的 password 会变成一串加密后的哈希,不再是明文。

怎么处理:不要反复尝试,从第 5 次失败起账号会被锁定。确实忘了口令时,按忘记口令重设。

提示「登录尝试过于频繁,请稍后再试」

Section titled “提示「登录尝试过于频繁,请稍后再试」”

可能的原因:

  • 账号被锁定。从第 5 次失败起锁定,先锁 1 分钟,之后每次翻倍,最长 30 分钟。锁定期间输入正确的口令也会被拒,重启 nSIM 也不会解锁。哪些算失败、何时清零,见登录失败锁定。
  • 同一个来源地址 2 分钟内尝试登录超过 10 次。这道限流重启 nSIM 后清零。

怎么处理:

  1. 有另一台设备还登录着时,在那台设备上打开「设置 › 账号与安全」。在「登录中的设备」里的「登录失败」一行,点「解除锁定」。
  2. 没有的话,等锁定到期,期间不要再试。锁定后再输错,下一次锁定时间会翻倍。最后一次失败后 24 小时内没有新的失败,失败次数清零。

自己没输错过却总被锁定,说明有人在试你的口令。不要把 nSIM 直接暴露在公网,见放到 HTTPS 反向代理后面。

登录后只能改口令,别的都用不了

Section titled “登录后只能改口令,别的都用不了”

原因:用出厂口令 admin 或示例配置里的 change-me 登录了。这时 nSIM 只允许改口令。

怎么处理:在「设置新密码」页设一个新口令,见第一次登录与初始设置。

nSIM 只有一个账号,没有「找回密码」。口令在主机上的配置文件里重设:

  1. 编辑配置文件,把 web 段的 password 改成新的明文口令。
  2. 重启 nSIM:docker compose restart 或 systemctl restart nsim。
  3. 用新口令登录。

怎么处理:

  • 有恢复码:在登录的验证码一栏输入一个恢复码,每个只能用一次。登录后重新绑定身份验证器,见开启两步验证。

  • 同时开了通知渠道验证码:在验证码页点「改用通知渠道验证码」。

  • 两样都没有:只能在主机上删掉身份验证器的绑定。主机上要有 sqlite3 命令。

    终端窗口
    cd /opt/nsim
    docker compose stop # 二进制部署:systemctl stop nsim
    cp data/nsim.db data/nsim.db.bak
    sqlite3 data/nsim.db "DELETE FROM user_totp;"
    docker compose start # 二进制部署:systemctl start nsim

    之后登录只要输入口令。进去后重新绑定身份验证器。

可能的原因:开了通知渠道验证码,但那个渠道发不出消息,例如 token 过期或网络不通。

怎么处理:

  1. 编辑配置文件,把 web.two_factor.enabled 改成 false。
  2. 重启 nSIM,只用口令登录。
  3. 在「设置 › 通知」里修好那个渠道,测试能收到后,再重新开启验证码。

经反向代理打开后,界面不自动更新

Section titled “经反向代理打开后,界面不自动更新”

现象:页面能打开,但设备状态、新短信、日志都不自动出现,来电不弹出。

原因:反向代理缓冲了实时推送用的长连接,或者过早断开了它。

怎么处理:在代理配置里关闭缓冲、加长读超时。nginx 的写法见放到 HTTPS 反向代理后面。