Files
wechat-selkies/README.md

340 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WeChat Selkies
[![GitHub Stars](https://img.shields.io/github/stars/nickrunning/wechat-selkies?style=flat-square&logo=github&color=yellow)](https://github.com/nickrunning/wechat-selkies/stargazers)
[![GitHub Forks](https://img.shields.io/github/forks/nickrunning/wechat-selkies?style=flat-square&logo=github&color=blue)](https://github.com/nickrunning/wechat-selkies/network/members)
[![GitHub Issues](https://img.shields.io/github/issues/nickrunning/wechat-selkies?style=flat-square&logo=github&color=red)](https://github.com/nickrunning/wechat-selkies/issues)
[![GitHub License](https://img.shields.io/github/license/nickrunning/wechat-selkies?style=flat-square&color=green)](https://github.com/nickrunning/wechat-selkies/blob/master/LICENSE)
[![Docker Pulls](https://img.shields.io/docker/pulls/nickrunning/wechat-selkies?style=flat-square&logo=docker&color=blue)](https://hub.docker.com/r/nickrunning/wechat-selkies)
[![Docker Image Size](https://img.shields.io/docker/image-size/nickrunning/wechat-selkies?style=flat-square&logo=docker&color=orange)](https://hub.docker.com/r/nickrunning/wechat-selkies)
[![GitHub Release](https://img.shields.io/github/v/release/nickrunning/wechat-selkies?style=flat-square&logo=github&include_prereleases)](https://github.com/nickrunning/wechat-selkies/releases)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/nickrunning/wechat-selkies/docker.yml?style=flat-square&logo=github-actions&label=build)](https://github.com/nickrunning/wechat-selkies/actions)
[![GitHub Last Commit](https://img.shields.io/github/last-commit/nickrunning/wechat-selkies?style=flat-square&logo=github&color=purple)](https://github.com/nickrunning/wechat-selkies/commits)
中文 | [English](README_en.md)
基于 Docker 的微信/QQ Linux 客户端,使用 Selkies WebRTC 技术提供浏览器访问支持。
## 项目简介
本项目将官方微信/QQ Linux 客户端封装在 Docker 容器中,通过 Selkies 技术实现在浏览器中直接使用微信/QQ无需在本地安装微信/QQ 客户端。适用于服务器部署、远程办公等场景。
## 升级注意事项
> 如果升级后部分功能缺失请先清空本地挂载目录下的openbox目录(如`./config/.config/openbox`)。
> 仓库内置了上游微信版本自动检测机制GitHub Actions 会定时检查官方 `.deb` 包版本,检测到变化后自动更新 `versions/upstream.env` 并触发镜像构建。
## 功能特性
- 🌐 **浏览器访问**:通过 Web 浏览器直接使用微信,无需本地安装
- 🐳 **Docker化部署**:简单的容器化部署,环境隔离
- 🔒 **数据持久化**:支持配置和聊天记录持久化存储
- 🎨 **中文支持**:完整的中文字体和本地化支持,支持本地中文输入法
- 🖼️ **图片复制**:支持通过侧边栏面板开启图片复制
- 📁 **文件传输**:支持通过侧边栏面板进行文件传输
- 🖥️ **AMD64和ARM64架构支持**兼容主流CPU架构
- 🔧 **硬件加速**:可选的 GPU 硬件加速支持
- 🪟 **窗口切换器**:左上角增加切换悬浮窗,方便切换到后台窗口,为后续添加其它功能做基础
- 🤖 **自动启动**可配置自动启动微信和QQ客户端可选
- 📋 **桌面快捷方式集成**:自动扫描 `~/Desktop/` 下的 `.desktop` 文件并添加到右键菜单,方便启动第三方应用(如通过 proot-apps 安装的应用)
- 📂 **文件管理器**:内置 PCManFM 轻量文件管理器,右键菜单即可启动,方便管理容器内文件
## 截图展示
![微信截图](./docs/images/wechat-selkies-1.jpg)
![QQ截图](./docs/images/wechat-selkies-2.jpg)
## 快速开始
### 环境要求
- Docker
- Docker Compose
- 支持WebRTC的现代浏览器Chrome、Firefox、Safari等
### 快速部署
1. **直接使用已构建的镜像进行快速部署**
GitHub Container Registry镜像
```bash
docker run -it -p 3001:3001 -v ./config:/config --device /dev/dri:/dev/dri ghcr.io/nickrunning/wechat-selkies:latest
```
Docker Hub镜像
```bash
docker run -it -p 3001:3001 -v ./config:/config --device /dev/dri:/dev/dri nickrunning/wechat-selkies:latest
```
> **精简版镜像**:如果只需要微信(不含 QQ 和文件管理器),可使用 `minimal` 标签,镜像体积更小:
> ```bash
> docker run -it -p 3001:3001 -v ./config:/config --device /dev/dri:/dev/dri ghcr.io/nickrunning/wechat-selkies:minimal
> ```
> 精简版也支持版本号标签,如 `:1.2.3-minimal`、`:1.2-minimal`,方便锁定特定版本。
2. **访问微信**
在浏览器中访问:`https://localhost:3001``https://<服务器IP>:3001`
> **注意:** 映射3000端口用于HTTP访问3001端口用于HTTPS访问建议使用HTTPS。
### Docker Compose 部署
1. **创建项目目录并进入**
```bash
mkdir wechat-selkies
cd wechat-selkies
```
2. **创建 docker-compose.yml 文件**
```yaml
services:
wechat-selkies:
image: nickrunning/wechat-selkies:latest # or ghcr.io/nickrunning/wechat-selkies:latest
container_name: wechat-selkies
ports:
- "${HTTP_PORT:-3000}:3000"
- "${HTTPS_PORT:-3001}:3001"
restart: unless-stopped
volumes:
- ./config:/config
devices:
- /dev/dri:/dev/dri
environment:
- PUID=${PUID:-1000}
- PGID=${PGID:-100}
- TZ=Asia/Shanghai
- LC_ALL=zh_CN.UTF-8
- AUTO_START_WECHAT=true
- AUTO_START_QQ=false
- CUSTOM_USER=${CUSTOM_USER:-}
- PASSWORD=${PASSWORD:-}
shm_size: "${SHM_SIZE:-1gb}"
```
3. **创建 `.env` 文件(可选)**
复制 `.env.example` 并按需修改,未设置的变量将使用默认值:
```bash
cp .env.example .env
```
`.env` 文件示例:
```env
HTTP_PORT=3000
HTTPS_PORT=3001
PUID=1000
PGID=100
# CUSTOM_USER=
# PASSWORD=
SHM_SIZE=1gb
```
4. **启动服务**
```bash
docker compose up -d
```
### 源码部署
1. **克隆项目**
```bash
git clone https://github.com/nickrunning/wechat-selkies.git
cd wechat-selkies
```
2. **启动服务**
```bash
docker compose up -d
```
3. **访问微信**
在浏览器中访问:`https://localhost:3001` 或 `https://<服务器IP>:3001`
> **构建精简版**:源码部署时可通过 build-arg 构建仅含微信的精简镜像:
> ```bash
> docker build --build-arg INSTALL_QQ=false --build-arg INSTALL_PCMANFM=false -t wechat-selkies:minimal .
> ```
### 配置说明
更多自定义配置请参考 [Selkies Base Images from LinuxServer](https://github.com/linuxserver/docker-baseimage-selkies)。
#### Docker Hub 推送配置
本项目支持同时推送到 GitHub Container Registry 和 Docker Hub。如需启用 Docker Hub 推送功能请在仓库下添加Environment Secrets和Environment Variables:
**Environment Secrets:**
* DOCKERHUB_USERNAME: 你的 Docker Hub 用户名
* DOCKERHUB_TOKEN: 你的 Docker Hub Access Token
**Environment Variables:**
* ENABLE_DOCKERHUB: 设置为 `true` 来启用 Docker Hub 推送
#### 环境变量配置
在 `docker-compose.yml` 中可以配置以下环境变量,支持通过 `.env` 文件覆盖带有 `${VAR:-default}` 的配置项:
| 变量名 | 默认值 | 说明 |
|--------|--------|------|
| `TITLE` | `WeChat Selkies` | Web UI 标题 |
| `PUID` | `1000` | 用户 ID |
| `PGID` | `100` | 组 ID |
| `TZ` | `Asia/Shanghai` | 时区设置 |
| `LC_ALL` | `zh_CN.UTF-8` | 语言环境 |
| `CUSTOM_USER` | - | 自定义用户名(推荐设置) |
| `PASSWORD` | - | Web UI 访问密码(推荐设置) |
| `AUTO_START_WECHAT` | `true` | 是否自动启动微信客户端 |
| `AUTO_START_QQ` | `false` | 是否自动启动 QQ 客户端 |
#### 端口配置
- `3001`: Web UI 访问端口
#### 数据卷挂载
- `./config:/config`: 微信配置和数据持久化目录
> **注意:** 如果升级后右键菜单缺少 `WeChat` 相关选项请先清空本地挂载目录下的openbox目录(如`./config/.config/openbox`)。
## 安装第三方应用(如 Telegram
本项目支持通过 [proot-apps](https://github.com/linuxserver/proot-apps) 安装第三方 Linux 应用。以 Telegram 为例:
1. 在浏览器中打开容器桌面
2. 点击左侧 **侧边栏** → **应用程序**Applications
3. 在应用列表中找到 **Telegram**
4. 点击 **安装**Install按钮等待安装完成
安装完成后,应用快捷方式会自动出现在 `~/Desktop/` 目录下,**右键菜单会自动刷新**,无需重启容器即可从菜单中启动该应用。
> **提示:** 如需卸载应用,同样通过侧边栏 → 应用程序,选中对应应用后点击 **卸载**Uninstall即可右键菜单会自动更新。
## 高级配置
### 硬件加速
如果您的系统支持 GPU 硬件加速Docker Compose 配置中已包含相关设备映射:
```yaml
devices:
- /dev/dri:/dev/dri
```
## 目录结构
```
wechat-selkies/
├── docker-compose.yml # Docker Compose 配置文件
├── .env.example # 环境变量示例文件
├── Dockerfile # Docker 镜像构建文件
├── LICENSE # License
├── README.md # 项目说明文档
├── config/ # 配置和数据持久化目录
└── root/ # 容器初始化文件
├── defaults/
│ └── autostart # 自动启动配置
└── wechat.png # 微信图标
```
## 故障排除
### 更新微信/QQ版本
当微信或QQ提示"版本过期"时,只需重新拉取最新镜像并重建容器即可,聊天记录和配置不受影响:
```bash
# 使用预构建镜像
docker compose pull && docker compose up -d
# 使用源码构建
git pull && docker compose up -d --build
```
> **注意:** 微信和QQ的安装包 URL 指向官方最新版本,重新构建镜像时会自动下载最新版。
对于仓库维护者,当前自动化流程如下:
1. `Detect Upstream Package Updates` 每 6 小时检查一次微信官方安装包版本,也支持手动触发
2. 如果检测到版本号或安装包哈希变化,工作流会更新 `versions/upstream.env`
3. 该文件变更提交到 `master` 后,会自动触发 `Build and Publish Docker Image`
版本状态文件位于 `versions/upstream.env`,当前记录了:
- 微信 amd64/arm64 下载地址
- 微信 amd64/arm64 解析出的版本号
- 微信 amd64/arm64 安装包 SHA256
- 最近一次发生变更的检测时间
### 常见问题
1. **无法访问 Web UI**
- 检查端口 3001 是否被占用
- 确认 Docker 容器正常运行:`docker ps`
### 日志查看
查看容器运行日志:
```bash
docker compose logs -f wechat-selkies
```
## 技术架构
- **基础镜像**`ghcr.io/linuxserver/baseimage-selkies:ubuntunoble`
- **微信客户端**:官方微信 Linux 版本
- **Web 技术**Selkies WebRTC
- **容器化**Docker + Docker Compose
## 贡献指南
欢迎提交 Issue 和 Pull Request
1. Fork 本项目
2. 创建特性分支:`git checkout -b feature/your-feature`
3. 提交更改:`git commit -am 'Add some feature'`
4. 推送分支:`git push origin feature/your-feature`
5. 提交 Pull Request
## 许可证
本项目采用 **MIT License** 开源协议。详见 [LICENSE](LICENSE) 文件。
### 📜 许可证说明
- **项目许可证**: MIT License - 宽松的开源许可证
- **依赖项说明**: 本项目使用 [LinuxServer.io baseimage-selkies](https://github.com/linuxserver/docker-baseimage-selkies) 作为基础镜像
- **许可证兼容性**: 由于本项目仅使用基础镜像而未修改其源码根据容器化软件的许可证实践可以采用MIT许可证
- **源码开放**: 完整项目源代码在 GitHub 上公开https://github.com/nickrunning/wechat-selkies
## 免责声明与版权声明
### 🚨 重要声明
**本项目与腾讯公司无任何关联,属于独立的第三方开源项目。**
### 📋 版权声明
- **微信®** 是 **腾讯公司** 的注册商标和版权作品
- 本项目中使用的微信相关图标、logo 等视觉元素的版权归腾讯公司所有
- 本项目仅为技术展示和学习目的,不用于商业用途
- **如有版权争议,将立即移除相关内容**
### ⚖️ 法律合规
- 本项目严格遵守相关法律法规和用户协议
- 用户使用本项目时应遵守当地法律法规
- 本项目不对用户的使用行为承担法律责任
- **如腾讯公司认为存在侵权行为,请联系我们立即处理**
### 🎯 使用条款
- 本项目仅供学习、研究和个人使用
- 禁止用于任何商业目的或盈利活动
- 用户应自行承担使用风险和法律责任
- 请遵守微信用户协议和相关服务条款
## 相关链接
- [微信官方网站](https://weixin.qq.com/)
- [Selkies WebRTC](https://github.com/selkies-project)
- [LinuxServer.io](https://github.com/linuxserver)
- [xiaoheiCat/docker-wechat-sogou-pinyin](https://github.com/xiaoheiCat/docker-wechat-sogou-pinyin)
## Star History
[![Star History Chart](https://api.star-history.com/svg?repos=nickrunning/wechat-selkies&type=Date)](https://www.star-history.com/#nickrunning/wechat-selkies&Date)