Installing Software on an ARM VPS (Docker, Panels, Game Servers) Print

  • 0

This is a practical companion to ARM VPS Explained: Advantages and Limitations. It covers how to install common software on an ARM64 (aarch64) VPS and how to handle packages that do not ship ARM builds.

Standard Packages: Nothing Changes

Debian, Ubuntu, AlmaLinux, and Rocky all provide full ARM64 package repositories. Day-to-day usage is identical to x86:

apt install nginx mariadb-server php-fpm    # Debian/Ubuntu
dnf install nginx mariadb-server php-fpm    # AlmaLinux/Rocky

If it is in the distro's repositories, it works on ARM. No special steps.

Docker on ARM

Install Docker the usual way (the official install script detects ARM automatically):

curl -fsSL https://get.docker.com | sh

Most official images are multi-arch and pull the arm64 variant automatically. To verify an image supports ARM before pulling:

docker manifest inspect IMAGE_NAME | grep architecture

Look for "architecture": "arm64" in the output, or check the "OS/ARCH" list on the image's Docker Hub page.

If an image is x86-only, your options in order of preference:

  1. Look for a community arm64 build (search Docker Hub for IMAGE_NAME arm64)
  2. Build the image yourself from the project's Dockerfile on your VPS
  3. Run under emulation as a last resort (significant performance penalty):
    docker run --platform linux/amd64 IMAGE_NAME
    (requires qemu binfmt: docker run --privileged --rm tonistiigi/binfmt --install amd64)

Downloading Binaries from Project Release Pages

When a project offers direct downloads, pick the file labeled arm64, aarch64, or armv8, not amd64/x86_64. Example naming you will see:

tool-1.2.3-linux-amd64.tar.gz    <- wrong (x86)
tool-1.2.3-linux-arm64.tar.gz    <- correct (ARM)

If a wrong-architecture binary is run, you will get an error like:

cannot execute binary file: Exec format error

That error almost always means an x86 binary on an ARM system (or vice versa).

Language Runtimes

All major runtimes ship native ARM64 builds and behave identically:

  • Node.js - via NodeSource repo or nvm
  • Python - in distro repos; nearly all pip packages have arm64 wheels (rare scientific packages may compile from source, which just takes longer)
  • Java - OpenJDK/Temurin arm64 builds; Minecraft Java servers run natively
  • Go / Rust - full first-class ARM support; both also cross-compile easily
  • PHP - in distro repos and third-party repos (sury.org, remi) with arm64 packages

Control Panels

Verify current ARM64 support on the panel's website before installing; support changes over time. As a general rule at the time of writing: several modern panels and lightweight panels support ARM, while some legacy commercial panels remain x86-only. If a panel is a hard requirement and only runs on x86, choose an x86_64 plan instead.

Game Servers

  • Minecraft (Java Edition): runs natively and very well on ARM. Use an arm64 JDK.
  • Steam/x86-only dedicated servers: most SteamCMD-based servers are x86-only. Tools like box64 can run some of them, but performance and stability vary widely; for these, an x86_64 plan is the reliable choice.

Quick Compatibility Checklist

  1. uname -m shows aarch64? You are on ARM.
  2. Is the software in your distro's repos? It works.
  3. Docker image lists linux/arm64? It works.
  4. Release page has an arm64/aarch64 download? It works.
  5. None of the above? Consider building from source, or use an x86_64 plan.

Was this answer helpful?

« Back