Skip to content

Installation

This page describes installation and first run for the modern MOAS V2 server (moas-server-cli).

Download release packages from the Releases page.

Current package formats:

PlatformPackages
Windowsmoas-win-*.zip
Linuxmoas-linux-x64-*.tar.gz
moas-linux-arm64-*.tar.gz
moas-server_<version>_amd64.deb
moas-server_<version>_arm64.deb
moas-server-<version>-1.*.x86_64.rpm
moas-server-<version>-1.*.aarch64.rpm
FreeBSDmoas-freebsd-x64-*.tar.gz
moas-freebsd-arm64-*.tar.gz
moas-server-freebsd-x64-v<version>.pkg
moas-server-freebsd-arm64-v<version>.pkg
macOSmoas-macos-x64-*.tar.gz
moas-macos-arm64-*.tar.gz

Each package includes sample-config.moas.

For real hardware, edit this file for your station before running. For a safe first test, run with --sim.

  1. Download moas-win-x64-...zip (or win-x86 if needed).
  2. Extract it to a folder, for example C:\MOAS.
  3. Open PowerShell in that folder.
  4. Run:
Terminal window
.\moas-server-cli.exe --version
.\moas-server-cli.exe run .\sample-config.moas info --sim

To validate a config without starting the server:

Terminal window
.\moas-server-cli.exe validate .\sample-config.moas info
  1. Download the matching archive for your CPU.
  2. Extract and enter the folder.
  3. Make the binary executable.
  4. Run:
Terminal window
tar -xzf moas-linux-*.tar.gz
cd moas-linux-*
chmod +x ./moas-server-cli
./moas-server-cli --version
./moas-server-cli run ./sample-config.moas info --sim

To validate only:

Terminal window
./moas-server-cli validate ./sample-config.moas info

You can also install the native Linux package directly.

  1. Download the package matching your CPU:
    • x64: moas-server_<version>_amd64.deb
    • ARM64: moas-server_<version>_arm64.deb
  2. Install the package:
Terminal window
sudo apt install ./moas-server_<version>_<arch>.deb
  1. Verify and run:
Terminal window
moas-server-cli --version
moas-server-cli run /usr/share/moas-server/examples/sample-config.moas info --sim

MOAS also publishes static package repositories on the docs site.

  • APT base URL: https://moas.m1dst.co.uk/server/repos/apt
  • RPM base URL: https://moas.m1dst.co.uk/server/repos/rpm
  • Public key: https://moas.m1dst.co.uk/server/repos/KEY.gpg

Use the repository key and signed-by:

Terminal window
curl -fsSL https://moas.m1dst.co.uk/server/repos/KEY.gpg | \
sudo gpg --dearmor -o /usr/share/keyrings/moas-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/moas-archive-keyring.gpg] https://moas.m1dst.co.uk/server/repos/apt stable main" | \
sudo tee /etc/apt/sources.list.d/moas.list > /dev/null
sudo apt update
sudo apt install moas-server

If repository signing is not enabled yet, fallback to:

Terminal window
echo "deb [arch=$(dpkg --print-architecture) trusted=yes] https://moas.m1dst.co.uk/server/repos/apt stable main" | \
sudo tee /etc/apt/sources.list.d/moas.list > /dev/null
sudo apt update
sudo apt install moas-server
Terminal window
sudo tee /etc/yum.repos.d/moas.repo > /dev/null << 'EOF'
[moas]
name=MOAS
baseurl=https://moas.m1dst.co.uk/server/repos/rpm/$basearch
enabled=1
gpgcheck=0
repo_gpgcheck=1
gpgkey=https://moas.m1dst.co.uk/server/repos/KEY.gpg
EOF
sudo dnf makecache
sudo dnf install moas-server

If repository signing is not enabled yet, set repo_gpgcheck=0.

Terminal window
sudo zypper ar -f https://moas.m1dst.co.uk/server/repos/rpm/x86_64 moas
sudo zypper refresh
sudo zypper install moas-server

Fedora / RHEL / Rocky / Alma / openSUSE (.rpm)

Section titled “Fedora / RHEL / Rocky / Alma / openSUSE (.rpm)”
  1. Download the package matching your CPU:
    • x64: moas-server-<version>-1.*.x86_64.rpm
    • ARM64: moas-server-<version>-1.*.aarch64.rpm
  2. Install the package:
Terminal window
sudo dnf install ./moas-server-<version>-1.<dist>.<arch>.rpm

If your distro uses zypper, use:

Terminal window
sudo zypper install ./moas-server-<version>-1.<dist>.<arch>.rpm
  1. Verify and run:
Terminal window
moas-server-cli --version
moas-server-cli run /usr/share/moas-server/examples/sample-config.moas info --sim
  1. Download the package for your Mac:
    • Intel: moas-macos-x64-...tar.gz
    • Apple Silicon: moas-macos-arm64-...tar.gz
  2. Extract and enter the folder.
  3. Make the binary executable.
  4. Run:
Terminal window
tar -xzf moas-macos-*.tar.gz
cd moas-macos-*
chmod +x ./moas-server-cli
./moas-server-cli --version
./moas-server-cli run ./sample-config.moas info --sim

To validate only:

Terminal window
./moas-server-cli validate ./sample-config.moas info
  1. Download the package matching your CPU:
    • x64: moas-freebsd-x64-...tar.gz
    • ARM64: moas-freebsd-arm64-...tar.gz
  2. Extract and enter the folder.
  3. Make the binary executable.
  4. Run:
Terminal window
tar -xzf moas-freebsd-*.tar.gz
cd moas-freebsd-*
chmod +x ./moas-server-cli
./moas-server-cli --version
./moas-server-cli run ./sample-config.moas info --sim

To validate only:

Terminal window
./moas-server-cli validate ./sample-config.moas info

On FreeBSD, serial devices are typically owned by root and a device-access group. Running MOAS against real hardware as a regular user usually requires group-based device permissions.

If you use the operator model:

  1. Define persistent devfs rules in /etc/devfs.rules:
Terminal window
sudo tee /etc/devfs.rules > /dev/null << 'EOF'
[system=10]
add path 'ttyU*' mode 0660 group operator
add path 'cuaU*' mode 0660 group operator
# optional extras for removable media/camera workflows
add path 'da*' mode 0660 group operator
add path 'usb/*' mode 0660 group operator
EOF
  1. Enable that ruleset in /etc/rc.conf:
Terminal window
echo 'devfs_system_ruleset="system"' | sudo tee -a /etc/rc.conf
  1. Restart devfs to apply rules:
Terminal window
sudo service devfs restart
  1. Add your regular user to operator:
Terminal window
sudo pw groupmod operator -m <your-user>
  1. Log out and back in so new group membership applies.

Example checks:

Terminal window
id
ls -l /dev/cua*
ls -l /dev/ttyu*

Notes:

  • Group and device naming can differ by FreeBSD version and hardware/USB-serial driver.
  • Some systems use dialer or uucp style groups instead of operator; follow your local policy.
  • On systems tested by contributors, MOAS appears as /dev/ttyU0; this is a good default reference for config setup.
  • MOAS only needs access to the specific serial device configured in sample-config.moas.

Troubleshooting: “Permission denied” opening serial port

Section titled “Troubleshooting: “Permission denied” opening serial port”

If MOAS cannot open the configured serial device, run these checks:

  1. Confirm the configured port path in your .moas file is the real FreeBSD device (for example /dev/cuaU0).
  2. Check owner/group/permissions:
Terminal window
ls -l /dev/cua*
ls -l /dev/ttyu*
  1. Verify your user is in the expected device group:
Terminal window
id
groups
  1. If you just changed group membership, log out and back in (or reboot) before testing again.
  2. Check that another process is not already using the same serial device.

Quick isolation test:

Terminal window
sudo moas-server-cli validate ./sample-config.moas info

If sudo works but your regular user fails, it is almost always a device permission/group membership issue.

  1. Download the package matching your CPU:
    • x64: moas-server-freebsd-x64-v<version>.pkg
    • ARM64: moas-server-freebsd-arm64-v<version>.pkg
  2. Install the package:
Terminal window
sudo pkg add ./moas-server-freebsd-<arch>-v<version>.pkg
  1. Verify and run:
Terminal window
moas-server-cli --version
moas-server-cli run /usr/local/share/moas-server/examples/sample-config.moas info --sim

MOAS also publishes static FreeBSD package repositories on the docs site.

  • FreeBSD x64 repo: https://moas.m1dst.co.uk/server/repos/freebsd/amd64
  • FreeBSD ARM64 repo: https://moas.m1dst.co.uk/server/repos/freebsd/aarch64

Choose the repository matching your system architecture.

amd64 example:

Terminal window
sudo mkdir -p /usr/local/etc/pkg/repos
sudo tee /usr/local/etc/pkg/repos/MOAS.conf > /dev/null << 'EOF'
MOAS: {
url: "https://moas.m1dst.co.uk/server/repos/freebsd/amd64",
enabled: yes,
signature_type: "none"
}
FreeBSD: {
enabled: yes
}
EOF

For ARM64, change the URL to /server/repos/freebsd/aarch64.

Terminal window
sudo pkg update
sudo pkg install moas-server

The repository is currently unsigned, so signature_type: "none" is required for now.

If pkg update reports missing metadata (404 on packagesite or meta files), the docs deploy likely did not have FreeBSD .pkg assets to publish for that release tag. In that case, install via direct .pkg download from Releases.

When a new MOAS release is published, use the update path that matches how you installed it.

If you installed from .zip or .tar.gz archives:

  1. Download the new archive from the Releases page.
  2. Extract to a new folder.
  3. Copy your existing config file into the new folder (or update the path you run with).
  4. Stop the old process and start the new binary.

Quick version check:

Terminal window
./moas-server-cli --version
Terminal window
sudo apt update
sudo apt install --only-upgrade moas-server

If you installed using a local .deb file, download the new .deb and reinstall it.

Fedora, RHEL, Rocky, Alma, and openSUSE repository installs

Section titled “Fedora, RHEL, Rocky, Alma, and openSUSE repository installs”
Terminal window
sudo dnf upgrade moas-server

For openSUSE systems using zypper:

Terminal window
sudo zypper update moas-server

If you installed using a local .rpm file, download the new .rpm and reinstall it.

Terminal window
sudo pkg update
sudo pkg upgrade moas-server

If you installed with a local .pkg file, download the new .pkg and install it with pkg add.

After upgrading, validate version and run a safe simulation check:

Terminal window
moas-server-cli --version
moas-server-cli validate /path/to/config.moas info
moas-server-cli run /path/to/config.moas info --sim

If you prefer containers, Docker is also supported. See the dedicated Docker installation and run guide.

  • Start server: run <config> [error|info|debug] [--sim]
  • Validate config only: validate <config> [error|info|debug]
  • Version: --version

Examples:

Terminal window
moas-server-cli run sample-config.moas info --sim
moas-server-cli validate sample-config.moas info