LoginSignup
7
3

More than 3 years have passed since last update.

Ubuntu上のDocker環境でWeChat/微信を使う

Last updated at Posted at 2020-03-01

概要

WeChat/微信とは中国大陸で広く使われているLINEのようなチャットサービスです.WeChatはスマートフォン向けアプリの他に,PC環境においても使用でき,それらはWeb版とアプリ版に大別できます.しかし,Windows/MacOS向けにはアプリ版がありますが,Ubuntu等のLinux向けにはそのようなアプリはリリースされておりません.そのため,多くのLinuxユーザはWeb版を使用しています.ところが,人によってはWeb版にログインできないことがあります.1

本稿では,Ubuntu上でWeChatを使用するために,Wineを使用しWindow版アプリを使う方法について記述します.ただし,Wineのインストールは多少やっかいであるため,Dockerを用いてその環境を作ろうと思います.しかし,調べているうちに,そもそもWeChatをDockerで使えるようにしてくれているものを見つけましたので,それを使用することとしました.

真新しい情報はありませんが,この話題について日本語で書かれたものはあまりありませんので,必要な方の手助けになると幸いです.

環境

  • HOST OS: Ubuntu 19.10 2
  • Docker version 19.03.6, build 369ce74a3c
  • docker-compose version 1.25.1, build a82fef07

Docker, docker-composeのインストール方法は参考文献をご参照ください.

以下では,すでにdocker, docker-composeは導入されているものとして進めます.

手順

  1. Docker hub で公開されているimageをpullしてくる.
$ docker pull bestwu/wechat
  1. 作成者のGithub上のレポジトリ にかかれている内容を参考にして,docker_compose_wechat.yml を作成.
docker_compose_wechat.yml
version: '2'
services:
  wechat:
    image: bestwu/wechat
    container_name: wechat
    devices:
      - /dev/snd
    volumes:
      - /tmp/.X11-unix:/tmp/.X11-unix
      - $HOME/WeChatFiles:/WeChat Files
    command: apt update && apt install tzdata # (Optional) Set the timezone
    environment:
      - DISPLAY=unix$DISPLAY
      - QT_IM_MODULE=fcitx
      - XMODIFIERS=@im=fcitx
      - GTK_IM_MODULE=fcitx
      - AUDIO_GID=29 # (Optional) Default 29(ubuntu)host audio gid. Solve access permission of sound device.
      - GID=1000 # (Optional) Default 1000 Host current user gid. Solve access permission of mounted directory.
      - UID=1000 # (Optional) Default 1000 Host current user uid. Solve access permission of mounted directory.
      - TZ=Asia/Tokyo # (Optional) Set the timezone to Asia/Tokyo.
    ipc: "host"
  1. docker のコンテナを立ち上げる.
$ docker-compose -f docker_compose_wechat.yml up

これでWechatのGUIが起動されます.お疲れ様でした.

トラブルシューティング

基本的には以上の手順で終了のはずですが,環境によっては以下の問題が発生するかもしれません.私の環境で実際に発生した問題とその解決方法を共有します.

言語設定が中国語

言語設定の変更は,Window版WeChatと同様設定画面から行うことができます.
画面左下の $\equiv$ から「设置」を開き,「通用设置」タブを選択し,「语言」から言語を選択できます.選択可能な言語は,英語,簡体中文,繁体中文の3種類でした.

日本語入力ができない

このdocker_compose_wechat.ymlでは,入力法フレームワークが Fcitx となっています.iBus を使っている人は,次のように書き換えます. 3

-      - QT_IM_MODULE=fcitx
-      - XMODIFIERS=@im=fcitx
-      - GTK_IM_MODULE=fcitx
+      - QT_IM_MODULE=ibus
+      - XMODIFIERS=@im=ibus
+      - GTK_IM_MODULE=ibus

モバイル端末での認証後に画面が消える

PCでのWeChatのログイン時にモバイル端末での認証を求められますが,認証を行うと次のようなエラーが出力されウィンドウが消えることがあります.

wechat    | [0326/093138:ERROR:network_change_notifier_win.cc(156)] WSALookupServiceBegin failed with: 8
wechat    | X Error of failed request:  BadValue (integer parameter out of range for operation)
wechat    |   Major opcode of failed request:  130 (MIT-SHM)
wechat    |   Minor opcode of failed request:  3 (X_ShmPutImage)
wechat    |   Value in failed request:  0x360
wechat    |   Serial number of failed request:  xxxx
wechat    |   Current serial number in output stream:  xxxx

アプリがXから共有メモリにアクセスしようとし,失敗したため.通常ホストとコンテナはメモリを共有していないため,このような問題が起きるようです.
したがって,コンテナがホストのメモリにアクセスできるようになればよいので,docker_compose.ymlipc: "host" を追加することで解決できました.456

時刻設定が中国標準時

tzdataを用いて,タイムゾーンをAsia/Tokyoに変更します.

参考文献

Docker Installation

公式ドキュメンテーションに沿ってインストールしました.

WeChat on WINE

Wineのインストールが結構大変な感じがします.

おまけ

WeChat Work版作った.https://github.com/Abemii/docker-wechat


  1. ログインを試みても, "To protect your account, logging in to WeChat via the web has been suspended. Use WeChat for Windows or WeChat for Mac to log in on a computer. Download WeChat for Windows or Mac at http://wechat.com." というメッセージが表示され,ログインできない.この問題については,https://github.com/wechaty/wechaty/issues/872#issuecomment-336015830 において指摘されているとおり,Tencentのポリシー変更により,2017年6月以降に作られたアカウントはWeb Clientを使えなくなったことに起因するようです. 

  2. Linuxであれば他の環境でも動作すると思います.実際,このdocker imageを提供してくれている方はFedoraを使用しているようです. 

  3. 参考: https://github.com/bestwu/docker-wechat/issues/10 

  4. https://github.com/bestwu/docker-wechat/issues/5#issuecomment-542476237  

  5. https://github.com/webanck/docker-wine-steam/issues/13#issuecomment-340247020 

  6. https://github.com/suchja/wine/issues/8#issuecomment-283151227 

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3