Building from Source
This method is not recommended for regular users. Manual compilation requires programming knowledge. You can download prebuilt releases from Versions.
This page describes compilation on Windows.
Requirements
Make sure the following tools are available in your command line:
- Git
- 7z
- .NET 10.0 SDK
- Bun
- Docker Desktop or Docker installed inside WSL (only for Docker images)
Build Steps
Open a terminal.
Clone the repository:
git clone https://github.com/GalensGan/UzonMailand switch to themasterbranch.Go to the
scriptsdirectory and use the unified entry point. Outputs are written to the repository-rootbuilddirectory.Target Command Output choose targets interactively ./build.ps1Use arrow keys to move, Space to select, and Enter to confirm desktop ./build.ps1 -Target Desktopbuild/uzonmail-desktop-win-x64-version.zipWindows server ./build.ps1 -Target WindowsServerbuild/uzonmail-service-win-x64-version.zipLinux server ./build.ps1 -Target Linuxbuild/uzonmail-service-linux-x64-version.zipDocker from a local Linux build ./build.ps1 -Target DockerDocker image all packages and image ./build.ps1 -Target AllAll ZIP files and Docker images Docker from an existing Linux ZIP ./build.ps1 -Target Docker -LinuxPackageUrl <URL>Docker image Docker images are pushed only with
-PushDockerImage;./build.ps1 -Target All -PushDockerImagebuilds all packages and pushes the Docker images. ZIP files are uploaded through an installedodcommand only with-UploadArtifacts.-UpdateSourcefast-forwards the current branch only when the working tree is clean; it never switches branches. Use-WslDistribution <name>to select a non-default WSL distribution.Build success screenshot:

build screenshot
Tips
The script validates prerequisites for the selected target. Docker builds prefer a local Docker daemon and fall back to Docker in WSL. A plugin is published automatically when its direct child directory under src/api/Plugins contains one project file.