Installing MixEngine
This handbook covers MixEngine through the
mixcommand line. If you would rather work in a graphical interface, download the MixDB app at https://lab.mixnz.com/#mixdb. MixDB drives the same MixEngine, so everything in this handbook still applies.
Every build is published on the project's GitHub releases page, with a checksum and a signature beside it. Pick the file for your system below. Installing changes as little as it can: nothing is added to your certificate store, your DNS settings or your firewall until the day you ask for something that needs it — see What MixEngine asks permission for.
No stable release exists yet. Every download link below is a permanent URL that GitHub always
resolves to whichever release is newest and not a pre-release, so once the first one ships these
links go live with no edit to this page. Until then, get the newest pre-release by hand from
the releases page — right now that is
v0.0.1-beta.1.
What you are installing
Four programs, and it is worth knowing what each is before one of them surprises you.
| Program | What it does |
|---|---|
mixengined | The daemon. It owns everything MixEngine knows and supervises everything it runs. |
mix | The command you type. It asks the daemon and prints the answer. |
mixengine-shim | The stand-in for php, node, python and ruby that picks the right version. |
mixengine-elevate | The one program that runs as an administrator, for a few seconds at a time. |
The first three are installed together, as you. The fourth is not placed by the installer at all on most systems — MixEngine installs it itself, the first time something needs an administrator, inside a prompt you were going to see anyway.
Windows
Download the installer · portable zip · Windows ARM: installer, zip
Two files are published, and either is a complete install.
mixengine-<version>-windows-x86_64-setup.exe— a per-user installer. It writes into your own profile and puts its directory on yourPATH, so no administrator prompt is involved and neither is anybody else's account on the machine.mixengine-<version>-windows-x86_64.zip— the same programs in a folder. Extract it wherever you like and runmix.exefrom there.
Windows ARM builds are published beside them, named aarch64.
Expect a SmartScreen warning. MixEngine is not signed with an Authenticode certificate, so Windows shows "Windows protected your PC" and hides the button behind More info → Run anyway. That is a statement about a certificate nobody has bought, not about the file: check the signature below if you want a real answer about what you downloaded. The warning tends to come back with every release, because reputation with no publisher identity accrues to a file rather than to a project.
macOS
mixengine-<version>-macos-universal.pkg, one package for both Intel and Apple silicon.
MixEngine has no Apple Developer ID either, so double-clicking the package in Finder gets you a Gatekeeper dialog and, on macOS 15 and later, a trip through System Settings → Privacy & Security → Open Anyway. Installing from a terminal avoids all of that:
sudo installer -pkg mixengine-*-macos-universal.pkg -target /
That is the instruction to reach for first on a command-line product. The package runs as root, so it also places the privileged helper for you.
Linux
.deb
· .rpm
· .AppImage
· arm64: .deb,
.rpm,
.AppImage
Three files, each a complete install:
.debfor Debian, Ubuntu and their relatives.rpmfor Fedora, RHEL and openSUSE.AppImage, which needs no package manager and no root at all
sudo dpkg -i mixengine_*_amd64.deb
sudo rpm -i mixengine-*.x86_64.rpm
chmod +x mixengine-*-linux-x86_64.AppImage && ./mixengine-*-linux-x86_64.AppImage
Both packages are built against glibc 2.28, so they run on the long-term-support distributions they
are aimed at rather than only on something as new as the machine that built them. aarch64 builds
are published beside the x86_64 ones.
From source
MixEngine is Rust, and nothing else:
git clone https://github.com/mixnz/mixengine.git
cd mixengine
cargo build --release
The binaries land in target/release/. This is the fourth way of installing that runs entirely as
you, which is why placing the privileged helper is never a packager's job.
Checking what you downloaded
Two files sit beside every artifact, and they answer different questions.
sha256sum -c mixengine-*-linux-x86_64.tar.gz.sha256
minisign -Vm mixengine-*-linux-x86_64.tar.gz -P <the key in packaging/updates.pub>
The .sha256 tells you whether two downloads of the same file are the same file. It is not a
signature and is not offered as one: anybody who could replace the artifact could replace the
checksum beside it. The unversioned files the links above point at carry their own .sha256 and
.minisig, named after themselves rather than after the versioned file they are a copy of. The
.minisig is the real answer — an Ed25519 signature MixEngine's own release pipeline makes, against
a public key committed in this project's repository as packaging/updates.pub and compiled into
MixEngine itself. That is the same key mix self-update checks before it replaces anything.
After installing
Open a new terminal — the installer changed your PATH, and a shell that was already running has
not heard about it — and ask:
mix status
The first mix command starts the daemon if it is not already running. What you should see is a
healthy daemon, its version, and nothing being supervised yet.
Then put the runtime commands on your PATH, which is a separate step because it is a separate
directory:
mix path install
That fills <root>/bin with the shims that make php, node, python and ruby resolve to the
version each directory asks for, rather than to one version for the whole machine.
What the installer did not do
Nothing outside your own account, and nothing to the rest of the machine:
- No certificate authority was installed. That happens the first time you ask for HTTPS.
- No DNS or hosts change was made. That happens the first time you create a site.
- No firewall rule and no port grant. Those happen when a site needs them.
- No runtime and no server was downloaded. MixEngine installs PHP, MariaDB and the rest on request, and only the versions you ask for.
- Nothing was registered to start at login.
mix autostart enableis how that becomes true.
Every one of those is described in What MixEngine asks permission for, including what each prompt will literally change before you agree to it.
Ready? Your first site takes about five minutes.
This page as Markdown: https://mixnz.github.io/mixengine/en/install.md