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.
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*.
- 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.
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.shHoặc cài từ Git:
git clone https://github.com/duongvanba/zalo-linux.git
cd zalo-linux
./INSTALL.shKhông muốn mở Zalo ngay sau khi cài:
./INSTALL.sh --no-launchFile 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.
- Cài Flatpak và Bottles runtime theo user nếu máy chưa có.
- Tải Kron4ek Wine 11.13 từ GitHub Releases và kiểm tra SHA-256 cố định.
- Tạo prefix Windows 10 32-bit riêng cho Zalo.
- Cài Microsoft core fonts bằng Winetricks.
- Tải Zalo Desktop từ endpoint chính thức
zalo.mebằng Windows User-Agent. - Kiểm tra installer là PE/Windows executable và ghi lại SHA-256.
- Cài hoặc nâng cấp Zalo ở chế độ silent.
- 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.
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ị.
Chạy lại installer:
./INSTALL.shScript 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.
Đó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-linuxKhông cần gỡ Bottles Flatpak nếu đang dùng nó cho ứng dụng Windows khác.
Luôn mở bằng icon Zalo do installer tạo hoặc chạy:
~/.local/bin/zalo-nativeKhông chạy wine Zalo.exe trực tiếp. Kiểm tra log:
tail -n 200 ~/.cache/zalo-linux/zalo-native.logKiểm tra thiết bị Linux:
wpctl status
flatpak info --show-permissions com.usebottles.bottlesBottles 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-outputsLauncher 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.
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.desktopFresh-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-launchTạo archive từ một Git ref:
./scripts/build-release.sh v1.0.0 v1.0.0Kế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.
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.
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.
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.