用 Docker 在飞牛 OS 上部署微信 Linux 桌面版,手机、电脑都能远程打开,跟用本地软件一样顺手。
先看效果
说真的,在 NAS 上跑微信这个想法,我之前也觉得有点折腾。但实际搞完发现,也就几步的事,关键是弄好了是真的方便——手机上、公司电脑上,打开浏览器就能用微信,不需要在每台设备上都装一遍。
今天就把完整过程捋一遍,照着操作就行。
准备工作
- 一台飞牛 OS(或其他 Linux 系统的 NAS)
- 有个 SSH 工具能连上去(我用的是 FinalShell 或直接网页终端)
第一步:拉取镜像
我用的是 nickrunning/wechat-selkies 这个镜像,好处是浏览器直接访问,不用额外装 RDP 客户端。
`ash
SSH 连上飞牛后执行
docker pull nickrunning/wechat-selkies:latest
第二步:创建配置文件夹
微信的数据要持久化保存,不然容器重启聊天记录就没了。
ash sudo mkdir -p /vol1/1000/docker/wechat1/config
这个路径你可以自己定,记着放哪就行。后面启动容器会用到。
第三步:启动容器
执行下面这条命令:
ash sudo docker run -d \ --name=wechat-selkies \ --hostname=wechat-selkies \ --restart=always \ -p 3000:3000 \ -v /vol1/1000/docker/wechat1/config:/config \ -e LC_ALL=zh_CN.UTF-8 \ -e LANG=zh_CN.UTF-8 \ -e TZ=Asia/Shanghai \ -e PUID=1000 \ -e PGID=100 \ -e AUTO_START_WECHAT=true \ -e TITLE=WeChat \ nickrunning/wechat-selkies:latest
看不懂没关系,拆开说明一下:
| |
|---|
| |
| |
| |
| |
| -e AUTO_START_WECHAT=true | |
| |
小提示: PUID=1000 和 PGID=100 是容器里的用户 ID,保持默认就行。如果要和飞牛的文件权限一致,可以用 id -u 和 id -g 查看你当前用户的 ID。
(这里放一张 Docker run 执行成功的截图)
第四步:打开微信
启动完成后,在浏览器里打开:
比如你的飞牛 IP 是 192.168.100.96,那就访问:
http://192.168.100.96:3000
第一次打开会等几秒钟,画面就出来了。微信应该已经自动启动,扫码登录就行。
登录后就能正常聊天、看朋友圈、用文件传输助手,体验和电脑版微信一样。
第五步:搭建桌面和任务栏
容器启动后,你会看到一个 Linux 桌面环境(用的是 Openbox 窗口管理器 + lxpanel 任务栏)。
但有个小坑——用了一段时间后,底部的 任务栏可能会消失,这是因为 lxpanel 不太稳定,微信频繁创建关闭窗口容易把它搞崩。
解决办法是换一个更稳的任务栏 tint2,操作如下:
1. 进入容器
ash sudo docker exec -it wechat-selkies bash
2. 安装 tint2
ash apt-get update apt-get install -y tint2
(这里放一张安装 tint2 的截图)
3. 编写配置文件
配置文件路径是 /config/.config/tint2/tint2rc,你可以直接用下面这条命令写进去:
(这里放一张把配置代码复制过去的截图)
配置内容如下(深色毛玻璃风格,放底部):
inirounded = 0border_width = 0background_color = #000000 0border_color = #000000 0rounded = 0border_width = 0background_color = #1a1a2e 75border_color = #16213e 75rounded = 2border_width = 1background_color = #0f3460 80border_color = #e94560 80rounded = 0border_width = 0background_color = #16213e 0border_color = #16213e 0panel_items = LTSBCpanel_size = 100% 34panel_margin = 0 0panel_padding = 0 4 0panel_background_id = 1panel_layer = toppanel_position = bottom centerlauncher_icon_size = 22launcher_item_app = /usr/share/applications/wechat.desktoptaskbar_mode = single_desktoptaskbar_padding = 2 4 4taskbar_background_id = 0taskbar_active_background_id = 2taskbar_name = 1taskbar_font_color = #a0a0b0taskbar_active_font_color = #fffffffont_size = 11systray_padding = 2 4 4systray_background_id = 3systray_icon_size = 20time1_format = %H:%Mtime1_font_color = #fffffftime1_padding = 8 0 4time2_format = %m/%d %atime2_font_color = #a0a0b0
4. 启动 tint2
杀掉原来的 lxpanel
killall lxpanel 2>/dev/null
启动 tint2
export DISPLAY=:1tint2 -c /config/.config/tint2/tint2rc &
5. 设置开机自动启动
编辑 /config/.config/openbox/autostart,加上两行:
ash export DISPLAY=:1 tint2 -c /config/.config/tint2/tint2rc &
修改完之后的 autostart 文件看起来是这样的:
ash /scripts/start.sh export DISPLAY=:1 tint2 -c /config/.config/tint2/tint2rc &
(这里放一张修改 autostart 文件的截图)
任务栏美化前后对比
(这里放一张美化前后对比的截图,比如左边是原来顶部任务栏,右边是美化后的底部任务栏)
日常管理
查看容器状态
重启微信容器(窗口卡死时用)
sudo docker restart wechat-selkies
查看日志(排查问题)
sudo docker logs wechat-selkies
进入容器内部
sudo docker exec -it wechat-selkies bash
几点提醒
- 容器 --restart=always 已经设好了,飞牛重启时会自动启动微信,不用手动再去点。
- 微信配置和聊天记录都存在 /vol1/1000/docker/wechat1/config 里,重装容器也不会丢。
- 浏览器访问用的是 WebRTC 流传输,画面很流畅,基本感觉不到延迟。
- 如果打开浏览器黑屏,可以先看下容器日志有没有报错:
ash sudo docker logs wechat-selkies | grep -E XShm|Stream
如果能看到 XShm setup complete 和 Stream settings active,说明画面在正常跑。
彩蛋?:其实我不会编程,内容都是我驱动codex搞定的,我下达任务,他负责完成。全程不用一行代码,就是需要频繁的测试。如果你看到这里,别研究这个文章了,快去研究codex吧!!!!就连这篇文章也是让codex依据踩坑记录写的!!!
最后
Nas 跑微信这个用法,其实就是一个思路——把本来在电脑上跑的软件,搬到 NAS 上,随时随地都能用。不只微信,QQ、迅雷、网盘、下载器都可以这么搞。
你目前飞牛上跑了哪些 Docker 服务?评论区聊聊~