Skip to content

digital-enterprise-projects/zalo-linux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zalo Linux

CI

Trình cài đặt cộng đồng giúp chạy bản Zalo Desktop chính thức dành cho Windows trên Linux thông qua Bottles/Wine.

Đây không phải Zalo Web và cũng không phải bản port mã nguồn native Linux. Dự án chỉ thiết lập một Wine prefix riêng, tải Zalo trực tiếp từ nguồn chính thức và tạo launcher tích hợp với desktop Linux.

Trạng thái kiểm thử

Cấu hình đã kiểm thử thực tế:

  • Ubuntu 24.04.3 LTS x86_64, GNOME/Wayland và PipeWire
  • Bottles Flatpak 64.1 dùng làm runtime
  • Kron4ek Wine 11.13, prefix Windows 10 32-bit
  • Zalo Desktop 26.6.20
  • Đăng nhập, đồng bộ tin nhắn và giao diện desktop
  • Gọi thoại hai chiều qua tai nghe/micro Bluetooth EDIFIER W820NB

ZaloCall.exe được khởi chạy và cuộc gọi thoại đã nghe/nói được trên máy thử nghiệm. Camera và video call chưa được xác nhận vì máy thử nghiệm không có thiết bị /dev/video*.

Yêu cầu

  • Linux x86_64
  • Ubuntu/Debian có apt, hoặc distro khác đã cài sẵn Flatpak, curl, tar và xz
  • Phiên desktop X11 hoặc Wayland đang hoạt động
  • Khoảng 2 GB dung lượng trống
  • Loa/micro được PipeWire hoặc PulseAudio nhận diện nếu cần gọi thoại

Không chạy toàn bộ installer bằng sudo. Script chỉ dùng sudo khi cần cài dependency hệ thống; Bottles, Wine prefix và Zalo luôn được cài theo user hiện tại.

Cài nhanh từ release

Tải hai asset của release mới nhất từ trang Releases:

sha256sum -c zalo-linux-installer-v1.0.0.tar.gz.sha256
tar -xzf zalo-linux-installer-v1.0.0.tar.gz
cd zalo-linux-1.0.0
./INSTALL.sh

Hoặc cài từ Git:

git clone https://github.com/duongvanba/zalo-linux.git
cd zalo-linux
./INSTALL.sh

Không muốn mở Zalo ngay sau khi cài:

./INSTALL.sh --no-launch

File INSATLL.sh được giữ làm alias tương thích cho lỗi chính tả thường gặp; tên đúng là INSTALL.sh.

Installer làm gì?

  1. Cài Flatpak và Bottles runtime theo user nếu máy chưa có.
  2. Tải Kron4ek Wine 11.13 từ GitHub Releases và kiểm tra SHA-256 cố định.
  3. Tạo prefix Windows 10 32-bit riêng cho Zalo.
  4. Cài Microsoft core fonts bằng Winetricks.
  5. Tải Zalo Desktop từ endpoint chính thức zalo.me bằng Windows User-Agent.
  6. Kiểm tra installer là PE/Windows executable và ghi lại SHA-256.
  7. Cài hoặc nâng cấp Zalo ở chế độ silent.
  8. Tạo launcher trong application menu và, nếu có, ngoài Desktop.

Dữ liệu được lưu tại:

~/.var/app/com.usebottles.bottles/data/zalo-linux/

Log cài đặt và log chạy ứng dụng:

~/.var/app/com.usebottles.bottles/cache/zalo-linux/install.log
~/.cache/zalo-linux/zalo-native.log

Repo và release không chứa ZaloSetup.exe, Wine prefix, cookie, mã QR hay dữ liệu đăng nhập. Zalo được tải từ nguồn chính thức tại thời điểm cài đặt.

Vì sao launcher riêng là bắt buộc?

Chạy Electron trực tiếp qua bottles-cli run có thể làm stdout/stderr trở thành pipe không tương thích và gây lỗi:

EINVAL: invalid argument, uv_pipe_open

Launcher của dự án dùng wine start /unix, ghi output vào file thường, ép D3D về WineD3D và thêm --no-sandbox. Cấu hình này vượt qua splash, mở giao diện Zalo và khởi chạy ZaloCall.exe trên máy đã kiểm thử.

--no-sandbox làm giảm một lớp bảo vệ của Electron. Vì vậy Zalo được giữ trong prefix tách biệt, còn Flatpak chỉ cấp các quyền mà Bottles cần cho hiển thị, âm thanh và thiết bị.

Nâng cấp hoặc sửa cài đặt

Chạy lại installer:

./INSTALL.sh

Script giữ nguyên prefix và dữ liệu đăng nhập, tải installer Zalo mới nhất rồi cập nhật launcher. Wine runner được pin ở 11.13 thay vì tự động chạy theo bản Wine mới nhất, vì khả năng gọi thoại phụ thuộc đáng kể vào runner.

Gỡ cài đặt

Đóng Zalo trước, sau đó xóa launcher:

rm -f ~/.local/bin/zalo-native
rm -f ~/.local/share/applications/zalo-native.desktop
rm -f ~/.local/share/icons/hicolor/scalable/apps/zalo-native.svg
rm -f "$(xdg-user-dir DESKTOP 2>/dev/null)/Zalo.desktop"

Muốn xóa cả Zalo, dữ liệu đăng nhập và Wine prefix:

rm -rf ~/.var/app/com.usebottles.bottles/data/zalo-linux
rm -rf ~/.var/app/com.usebottles.bottles/cache/zalo-linux
rm -rf ~/.cache/zalo-linux

Không cần gỡ Bottles Flatpak nếu đang dùng nó cho ứng dụng Windows khác.

Xử lý lỗi

Treo ở logo hoặc cửa sổ trắng

Luôn mở bằng icon Zalo do installer tạo hoặc chạy:

~/.local/bin/zalo-native

Không chạy wine Zalo.exe trực tiếp. Kiểm tra log:

tail -n 200 ~/.cache/zalo-linux/zalo-native.log

Không có loa hoặc micro

Kiểm tra thiết bị Linux:

wpctl status
flatpak info --show-permissions com.usebottles.bottles

Bottles cần socket PulseAudio và quyền thiết bị. Sau khi bắt đầu cuộc gọi, có thể kiểm tra helper và stream âm thanh:

pgrep -af ZaloCall.exe
pactl list short sink-inputs
pactl list short source-outputs

Zalo tự cập nhật rồi launcher không mở

Launcher tự chọn Zalo-* mới nhất bằng version sort. Nếu cấu trúc thư mục của Zalo thay đổi trong một bản cập nhật tương lai, hãy chạy lại INSTALL.sh và mở issue kèm log đã loại bỏ thông tin cá nhân.

Build gói installer

Repo không build lại hoặc sửa binary Zalo. “Build” ở đây là đóng gói script, desktop entry, runtime wrapper và tài liệu thành release asset.

Kiểm tra tĩnh:

bash -n INSTALL.sh INSATLL.sh bin/zalo-native libexec/run-in-bottle \
  libexec/bootstrap-prefix scripts/build-release.sh
sed 's|@ZALO_NATIVE_EXEC@|/home/test/.local/bin/zalo-native|g' \
  share/applications/zalo-native.desktop.in >/tmp/zalo-native.desktop
desktop-file-validate /tmp/zalo-native.desktop

Fresh-install smoke test mà không thay launcher đang dùng:

ZALO_LINUX_STATE_ROOT="$HOME/.var/app/com.usebottles.bottles/data/zalo-linux-test" \
ZALO_LINUX_CACHE_ROOT="$HOME/.var/app/com.usebottles.bottles/cache/zalo-linux-test" \
ZALO_LINUX_SKIP_LAUNCHER=1 \
  ./INSTALL.sh --no-launch

Tạo archive từ một Git ref:

./scripts/build-release.sh v1.0.0 v1.0.0

Kết quả:

dist/zalo-linux-installer-v1.0.0.tar.gz
dist/zalo-linux-installer-v1.0.0.tar.gz.sha256

git archive chỉ đóng gói file đã commit, vì vậy binary Zalo, EXE tải về và Wine prefix không thể vô tình lọt vào release.

Security and privacy

Script không thu thập mật khẩu, mã QR, cookie hay thông tin đăng nhập Zalo. Dữ liệu tài khoản được Zalo lưu cục bộ trong Wine prefix của user.

Không chia sẻ prefix, thư mục ZaloData hoặc log còn thông tin cá nhân. Hãy tải release từ repo chính thức và kiểm tra SHA-256 trước khi chạy. Báo cáo lỗ hổng của script qua GitHub Security Advisories thay vì issue công khai.

Disclaimer

Zalo là sản phẩm và nhãn hiệu của chủ sở hữu tương ứng. Đây là dự án cộng đồng độc lập, không được Zalo hoặc VNG tài trợ, xác nhận hay liên kết chính thức.

Kho lưu trữ không chứa và không phân phối lại chương trình Zalo, mã nguồn Zalo, logo hoặc tài sản độc quyền của Zalo. Người dùng tự chịu trách nhiệm tuân thủ điều khoản sử dụng của Zalo và đánh giá tính phù hợp trong môi trường của mình.

License

Script và tài liệu do dự án tạo ra được phát hành theo giấy phép MIT. Phần mềm Zalo và mọi tài sản liên quan không thuộc phạm vi giấy phép này.

About

Unofficial Zalo Desktop installer for Linux using Bottles/Wine. Downloads Zalo from the official source at install time; voice calls tested on Ubuntu 24.04 x86_64.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages