Archlinux 下使用 Docker 安装微信和Tim

Mr.R0boter 于 2020-08-24 发布

关于微信和QQ

腾讯作为一个大厂,却没有一个比较好的 linux 产品(linux-qq那个只能是个残废),我着实感到有些费解。而且听说腾讯内部对 linux 的态度不咋样(道听途说,未经求证)。希望国产操作系统这把火能早日燎原吧,让国内的大厂也重视起来 Linux 下的生态环境

我日常很少使用微信和QQ了,因为我本身就不太喜欢和人隔着屏幕交流,微信更多的是作为一个钱包来使用的。奈何现在大多数人都是使用 QQ 和微信作为交流工具,因此日常生活、工作中难免还是要用到。其实我还是比较推荐 TG 和 Singer 这两个加密聊天工具

准备工作

首先要感谢 Peter Wu 先生维护的 docker-qqdocker-wechat这里是他的 Github 主页。如果用的舒服的话可以给他点个星星啊

其实在docker-qq的说明里已经详细写了,安装方法和常见报错解决。我只是做个总结,方便自己以后查看。想自己摸索的可以查看原文档,以下都是我在 Archlinux 的 Dwm 窗口管理器和 KDE 桌面尝试过的,其他系统或桌面仅供参考

  1. 安装xorg-xhost,使用xhost +命令用于允许所有程序都可以访问 X 桌面。否则微信和QQ没有界面显示
  2. 安装gnome-settings-daemon这是 gnome 桌面的设置守护程序,deepin 是基于 gnome 改造的,因此要在非 gnome 桌面运行,必须安装守护程序,否则无法显示界面。启动命令是/usr/lib/gsd-xsettings,让这个在后台跑就行,可以加&或者使用nohup或者setsid都行,自启动可以把命令加到.xinitrc文件中
  3. 安装docker,在systemctl中开启 docker 服务(我在虚拟机里莫名奇妙的报错无法启动服务,等到第二天又正常了,很奇怪)

安装微信和Tim

先修改一下 Docker 的镜像源,sudo vim /etc/docker/daemon.json本身是没有这个文件的,需要自行创建

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

我使用的是中科大的源,你也可以更换为其他镜像源

创建 docker 组sudo groupadd docker

将当前用户加入 docker 组sudo usermod -aG docker ${USER}

这是为了启动 docker 时不用sudo,如果你喜欢用sudo docker来启动也可以不创建不加

将当前用户加入 docker 组后需要重启 docker 服务,但个人建议最好是重启系统,不知道为什么我尝试过程中有时候要重启系统才生效

拉取 docker 镜像

docker pull bestwu/wechat #微信
docker pull bestwu/qq:office    # qq冒号后面跟的是tag,office 指的就是 Tim,im 指 QQ,默认不加是 QQLight

构建容器,如果你要使用 docker-compose 则要先安装 docker-compose 然后编写 yml 文件

如果不是工作要用到 docker 我还是建议使用脚本的方法,反正构建只是第一次,之后就不用了。也不用下载 docker-compose

#!/bin/bash
docker run -d --name qq \
    --device /dev/snd \
    -v $HOME/TencentFiles:/TencentFiles \
	-v /tmp/.X11-unix:/tmp/.X11-unix \
    -e XMODIFIERS=@im=fcitx \
    -e QT_IM_MODULE=fcitx \
    -e GTK_IM_MODULE=fcitx \
    -e DISPLAY=unix$DISPLAY \
    -e AUDIO_GID=`getent group audio | cut -d: -f3` \
    -e VIDEO_GID=`getent group video | cut -d: -f3` \
    -e GID=`id -g` \
    -e UID=`id -u` \
    bestwu/qq:office
docker run -d --name wechat \
    --device /dev/snd \
    -v $HOME/WechatFiles:/WechatFiles \
	-v /tmp/.X11-unix:/tmp/.X11-unix \
    -e XMODIFIERS=@im=fcitx \
    -e QT_IM_MODULE=fcitx \
    -e GTK_IM_MODULE=fcitx \
    -e DISPLAY=unix$DISPLAY \
    -e AUDIO_GID=`getent group audio | cut -d: -f3` \
    -e VIDEO_GID=`getent group video | cut -d: -f3` \
    -e GID=`id -g` \
    -e UID=`id -u` \
    bestwu/wechat

脚本中-name是指定容器名字,后面可以通过此名字对容器进行操作,可自行定义

脚本中-v $HOME后面跟的是你微信和 qq 文件的存储位置,可自行定义

你也可以不写脚本,将上面两段分别复制到终端中运行即可。使用脚本的话,编写完记得给脚本添加可执行权限chmod +x filename

然后运行脚本,这个脚本会启动构建容器并启动 QQ 和 微信。然后你就可以把脚本删除了

docker 常用命令

当你 QQ 和微信都构建好了,你可以使用docker ps -a查看当前构建的容器(如果你没有将当前用户加入 docker 组,请记得加 sudo)

第一列的CONTAINER ID是容器的标识符,通过此标识符可以对容器进行操作,但不方便记忆,所以一般还是用容器名来进行操作

第六列是容器状态,up表示启动,同时会显示在多久之前启动的,Exited表示已经退出,同时会显示在多久之前退出的

docker start name:启动指定容器

docker stop name:停止指定容器

docker [rm|rmi] name:两个命令都是删除指定容器,但删除后你的镜像还是在的,如果你要再次构建容器,就需要使用上面那个脚本了

docker rename oldname newname:修改容器名

docker restart neme:重启容器

如果要清理 docker 占用的磁盘:

可以使用docker system prune,删除关闭的容器、无用的数据、网络和没有构建容器的镜像。使用此命令时你要使用的 QQ 和微信一定要处于运行状态,不然就给你删除了,而且你本机中下载的 docker 镜像,如果没有构建过容器也会被删除

使用docker system prune -a,删除关闭的容器、无用的数据、网络、没有构建容器的镜像和没有容器运行的镜像。如果你 QQ 和微信没有运行,他不仅删除你已经构建好的容器,还会连镜像一起删除

Tips:使用这两个命令一定要考虑清楚

后记

还有一种方法,是搭建的 docker 里微信和 QQ 作为一种消息服务,不会有界面。然后你使用一个irc 客户端来接受传递出来的消息

这样你就可以在命令行里聊微信或 QQ 了

感兴趣的可以去看看项目地址,不过 QQ 好像已经停止维护了,就微信还可以用

这位老哥是用Perl写的,有时间再去折腾折腾

我应该还是会慢慢扔掉微信和 QQ 吧,尽量少在电脑上使用或者不在电脑上使用,闲聊其实占据了日常生活的大半时间,如果把这些时间用来做其他的,对人生更有意义吧