MYKOS / DOCUMENTATION · Dashboard · API

Signed RHEL 8, RHEL 9 and RHEL 10 packages

Documentation index

The released baseline reviewed here is 1.5.20261024-146. Each supported major has its own signed binary RPM, source RPM and repository. Choose the repository matching the host, not the OS you want to run inside a guest.

Install from the matching repository

Host Repository configuration
RHEL 8 https://mykol.com/mykos-1.5-for-x86_64-el8/mykos-el8.repo
RHEL 9 https://mykol.com/mykos-1.5-for-x86_64-el9/mykos-el9.repo
RHEL 10 https://mykol.com/mykos-1.5-for-x86_64-el10/mykos-el10.repo

For example, on RHEL 9:

sudo curl -fsSL https://mykol.com/mykos-1.5-for-x86_64-el9/mykos-el9.repo -o /etc/yum.repos.d/mykos-el9.repo
sudo dnf install mykos
rpm -q mykos
sudo systemctl status mykos-firstboot.service --no-pager

Use el8 or el10 in both URL and destination filename on those hosts. Keep gpgcheck=1; confirm the signing fingerprint before accepting an imported key: BC14191DE284100A246DD552F4384FD1AD974308. The repository supplies RPM-GPG-KEY-MYKOS. Source and binary RPMs are signed; checksums describe the signed files. Repository-metadata signing is not asserted by gpgcheck=1.

Fresh installation queues mykos-firstboot.service after the RPM transaction. It configures Apache IP access and the application, checks application readiness, then prints MYKOS is running: http://SERVER_IP/mykos/. Check the service journal if the terminal returns before firstboot finishes. It creates no guest, browser password or API key. Existing configured deployments skip automatic firstboot. Create the first browser administrator with:

sudo /usr/local/sbin/mykos-users create NAME --role admin

RHEL BaseOS/AppStream access and a Python package source are needed. EL8 uses python39; EL9/EL10 use distribution python3. The package has distinct host release requirements. KVM checks open /dev/kvm and create an empty VM without starting a guest; unavailable KVM produces a warning and retains native Linux use. See desktop prerequisites before attempting VM lifecycle operations.

Default HTTP and optional HTTPS

Default access is http://SERVER_IP/mykos/; it needs no domain or Certbot. Domain virtual hosts and Certbot are configured only by explicit opt-in:

sudo mykos-setup --configure-https
# Or choose the domain and ACME account email explicitly:
sudo mykos-setup --configure-https --domain example.com --email admin@example.com

Public DNS and incoming TCP 80/443 must be ready for that domain. The URL is printed only after app readiness. --public-origin alone configures the app's origin; it does not request a certificate or provision a domain virtual host. See bootstrap details and renewal/removal behavior.

Upgrade and verify

Back up deployment settings and identity data according to installation recovery, and back up guest disks and customer backup data separately. Then:

sudo dnf upgrade mykos
sudo mykos-setup --enable
sudo python3 /usr/share/mykos/bin/mykos-install verify
# On EL8, use python3.9 instead of python3 for this verification command.
rpm -q mykos

mykos-setup uses the installed interpreter, pinned Python dependencies and existing settings. Rerun it after an upgrade to snapshot/configure deployed files and restart the MYKOS services. It does not select a VPN gateway or create images. Use the existing public origin; do not replace a working domain with an example. If verify reports local edits, reconcile them rather than overwriting them. Kickstarts use %config(noreplace); review .rpmnew alongside operator files.

The package owns code under /usr/share/mykos; setup deploys runtime sources and helpers under /usr/local/share/mykos, /usr/local/sbin and /opt/mykos-web. Configuration, identities, inventory, VM disks, intentional snapshots and saved VPNs are runtime state, outside the RPM payload. Updates preserve existing guests and do not migrate older networking automatically. New guests use the configured private bridge; old pipework/macvlan instances need a separately planned migration.

Install a downloaded signed RPM

Example for the reviewed EL9 baseline, after downloading the RPM and public key from the matching trusted repository and verifying the key fingerprint:

sudo rpm --import ./RPM-GPG-KEY-MYKOS
rpm -Kv ./mykos-1.5.20261024-146.el9.noarch.rpm
sudo dnf --setopt=localpkg_gpgcheck=1 install ./mykos-1.5.20261024-146.el9.noarch.rpm

Use the matching .el8 or .el10 filename on those hosts. A checksum alone does not authenticate the signer. Do not disable signature checks to bypass a failure.

Build and repository maintenance

Build from the released source, excluding runtime identities/disks and unpublished work. With the target's build prerequisites installed:

python3 bin/mykos-package --output /tmp/mykos-1.5.20261024.tar.gz
mkdir -p ~/rpmbuild/{SOURCES,SPECS}
cp /tmp/mykos-1.5.20261024.tar.gz ~/rpmbuild/SOURCES/
cp packaging/rpm/mykos.spec ~/rpmbuild/SPECS/
rpmbuild -ba --define 'mykos_target_el 9' --define 'dist .el9' ~/rpmbuild/SPECS/mykos.spec

Use the appropriate target major and approved signing workflow. A local build is not automatically signed or published. Signing keys are maintained outside source and packages. Keep MYKOS repositories separate from synchronized Red Hat mirrors; refresh only the intended custom repository's metadata after approved publication. Never add arbitrary RPMs to a mirrored upstream tree whose metadata omits them.

Validation scope

Release package/application/login checks on fresh RH9 and RH10 used isolated RHEL UBI init systems with repositories available. These checks cover installation, IP-first setup and authenticated HTTP sessions, not full bare-metal virtualization, physical NIC routing, CRIU compatibility or VM lifecycle validation. The user's vanilla RH9 server testing remains independent. See validation record.