十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Neko 使用持久化配置后 Brave 因 SingletonLock 残留无法启动如何排查?

Neko 使用持久化配置后 Brave 因 SingletonLock 残留无法启动如何排查? Neko 使用持久化配置后 Brave 因 SingletonLock 残留无法启动如何排查【免费下载链接】nekoA self hosted virtual browser that runs in docker and uses WebRTC.项目地址: https://gitcode.com/GitHub_Trending/ne/neko当你使用 Neko 的 Brave 镜像并按浏览器定制文档把宿主机目录挂载到容器内的浏览器 profile 目录实现书签、登录状态等持久化之后可能会遇到这样的故障容器某次没有正常停止被强杀、宿主机断电等之后再次启动时浏览器不启动Neko 屏幕上只剩一片黑屏。Neko 的故障排查文档给出了原因Brave 等 Chromium 系浏览器启动时会向 profile 目录写入SingletonLock、SingletonCookie、SingletonSocket三个单例锁文件。容器非正常停止后这些文件会残留在持久化目录里下次启动时 Brave 认为已有另一个实例在运行于是拒绝启动。本文按官方文档说明如何定位这个现象并用文档给出的两种方法恢复启动。先确认故障现象与残留锁文件官方文档描述的故障现象是浏览器不启动你看到黑屏the browser is not starting, you see a black screen。确认 profile 目录中是否有残留锁文件可用文档中给出的检查命令模式文档以 google-chrome 为例Brave 对应路径为/home/neko/.config/brave# container-id 替换为实际容器 ID可通过 docker ps 查看 docker exec -it container-id ls -la /home/neko/.config/brave如果目录里出现SingletonLock、SingletonCookie、SingletonSocket这三个文件就可以按下面的方法处理。动手之前先排除持久化配置本身的两个前置问题它们同样会导致黑屏、浏览器不启动挂载路径是否正确Brave 在容器内的 profile 目录是/home/neko/.config/brave见 browsers.json 中的profileDirvolumes的右侧路径必须与它一致。目录属主是否正确profile 必须属于容器内的neko用户文档给出的检查与修正命令为同样把 google-chrome 路径换成 Brave 路径# 检查属主 docker exec -it container-id ls -la /home/neko/.config/brave # 修正属主 docker exec -it container-id chown -R neko:neko /home/neko/.config/brave另外提醒一点定制文档说明容器内 Neko 用户的 UID 是1000在宿主机上准备持久化目录时建议执行sudo chown -R 1000:1000 ./profile./profile替换为你的实际目录保证容器可写。方法一容器启动时先删除残留锁文件官方文档的主修复方法是覆盖容器的command在启动 supervisord 之前先删掉三个过期的锁文件再交接给正常的服务进程services: neko: image: ghcr.io/m1k1o/neko/brave:latest restart: unless-stopped shm_size: 2gb ports: - 8080:8080 - 52000-52100:52000-52100/udp volumes: - /data:/home/neko/.config/brave environment: NEKO_DESKTOP_SCREEN: 1920x108030 NEKO_MEMBER_MULTIUSER_USER_PASSWORD: neko NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: admin NEKO_WEBRTC_EPR: 52000-52100 command: sh -c rm -f /home/neko/.config/brave/SingletonLock /home/neko/.config/brave/SingletonCookie /home/neko/.config/brave/SingletonSocket exec /usr/bin/supervisord -c /etc/neko/supervisord.conf这条命令的副作用范围是明确的每次容器启动时只删除上述三个锁文件随后用exec启动/usr/bin/supervisord即镜像原本的启动方式不会触碰 profile 里的书签、历史等其它数据。/data是文档示例中存放 profile 的宿主机目录可以换成你实际使用的路径。修改docker-compose.yaml后重新创建容器使新的command生效command属于容器创建参数重启进程不够需要重建容器例如docker compose up -d。方法二固定容器 hostname文档给出的第二种修复针对另一个诱因Chromium 系浏览器还会把 hostname 写进单例锁里。Docker 的默认行为是每次创建容器都生成随机 hostname重启后 hostname 变化Brave 就可能拒绝复用该 profile。设置一个固定 hostname 可以避免这一点services: neko: image: ghcr.io/m1k1o/neko/brave:latest hostname: neko volumes: - /data:/home/neko/.config/brave # 其余配置保持不变两种方法针对的成因不同前者清除残留锁文件后者消除 hostname 变化文档没有要求二选一可以按你的部署情况同时应用。验证与后续排查修改配置并重建容器后打开 Neko 的 UI8080端口检查屏幕之前黑屏的位置应显示 Brave 窗口即修复生效——这正是文档对故障现象黑屏、浏览器不启动的反面。如果仍有异常可以借助容器内日志进一步判断根据镜像的 supervisord 配置Brave 的标准输出和错误输出写入容器内的/var/log/neko/brave.logstdout_logfile指定可用docker exec进入容器查看该文件。若锁文件已删除、hostname 已固定浏览器仍不启动则回到持久化 profile 一节排查其余原因profile 本身可能已损坏文档指出容器未正常停止时可能发生浏览器通常能自行恢复但某些情况下可能不行或挂载路径与属主仍不正确。【免费下载链接】nekoA self hosted virtual browser that runs in docker and uses WebRTC.项目地址: https://gitcode.com/GitHub_Trending/ne/neko创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表