continuwuity/docs/deploying/fedora.md
Tom Foster 4b78ab39e0 feat(ci): Add Fedora RPM package build workflow
Build and publish RPM packages for Fedora using rpkg and official
rust-packaging macros. GPG sign packages with Ed25519 repository key
and deploy to Forgejo package registry.

Package organisation works around Forgejo's one-file-per-version limit:
- Binary packages: base group (stable/dev/branch-name)
- Debug packages: GROUP-debug
- Source packages: GROUP-src

Workflow triggers on pushes to relevant paths and version tags (v*).
Tagged releases use clean version numbers (v1.2.3 becomes 1.2.3-1)
while branch builds use git SHA versioning.

Include GPG public key for package verification and documentation
for RPM repository configuration and installation methods.
2025-08-31 18:30:39 +01:00

4.6 KiB

RPM Installation Guide

Continuwuity is available as RPM packages for Fedora, RHEL, and compatible distributions.

The RPM packaging files are maintained in the fedora/ directory:

  • continuwuity.spec.rpkg - RPM spec file using rpkg macros for building from git
  • continuwuity.service - Systemd service file for the server
  • RPM-GPG-KEY-continuwuity.asc - GPG public key for verifying signed packages

RPM packages built by CI are signed with our GPG key (Ed25519, ID: 5E0FF73F411AAFCA).

# Import the signing key
sudo rpm --import https://forgejo.ellis.link/continuwuation/continuwuity/raw/branch/main/fedora/RPM-GPG-KEY-continuwuity.asc

# Verify a downloaded package
rpm --checksig continuwuity-*.rpm

Installation methods

Stable releases (recommended)

# Add the repository and install
sudo dnf config-manager addrepo --from-repofile=https://forgejo.ellis.link/api/packages/continuwuation/rpm/stable/continuwuation.repo
sudo dnf install continuwuity

Development builds from main branch

# Add the dev repository and install
sudo dnf config-manager addrepo --from-repofile=https://forgejo.ellis.link/api/packages/continuwuation/rpm/dev/continuwuation.repo
sudo dnf install continuwuity

Feature branch builds (example: tom/new-feature)

# Branch names are sanitized (slashes become hyphens, lowercase only)
sudo dnf config-manager addrepo --from-repofile=https://forgejo.ellis.link/api/packages/continuwuation/rpm/tom-new-feature/continuwuation.repo
sudo dnf install continuwuity

Direct installation without adding repository

# Latest stable release
sudo dnf install https://forgejo.ellis.link/api/packages/continuwuation/rpm/stable/continuwuity

# Latest development build
sudo dnf install https://forgejo.ellis.link/api/packages/continuwuation/rpm/dev/continuwuity

# Specific feature branch
sudo dnf install https://forgejo.ellis.link/api/packages/continuwuation/rpm/branch-name/continuwuity

Manual repository configuration (alternative method)

cat << 'EOF' | sudo tee /etc/yum.repos.d/continuwuity.repo
[continuwuity]
name=Continuwuity - Matrix homeserver
baseurl=https://forgejo.ellis.link/api/packages/continuwuation/rpm/stable
enabled=1
gpgcheck=1
gpgkey=https://forgejo.ellis.link/continuwuation/continuwuity/raw/branch/main/fedora/RPM-GPG-KEY-continuwuity.asc
EOF

sudo dnf install continuwuity

Package management

Automatic updates with DNF Automatic

# Install and configure
sudo dnf install dnf-automatic
sudo nano /etc/dnf/automatic.conf  # Set: apply_updates = yes
sudo systemctl enable --now dnf-automatic.timer

Manual updates

# Check for updates
sudo dnf check-update continuwuity

# Update to latest version
sudo dnf update continuwuity

Switching channels (stable/dev/feature branches)

# List enabled repositories
dnf repolist | grep continuwuation

# Disable current repository
sudo dnf config-manager --set-disabled continuwuation-stable  # or -dev, or branch name

# Enable desired repository
sudo dnf config-manager --set-enabled continuwuation-dev  # or -stable, or branch name

# Update to the new channel's version
sudo dnf update continuwuity

Verifying installation

# Check installed version
rpm -q continuwuity

# View package information
rpm -qi continuwuity

# List installed files
rpm -ql continuwuity

# Verify package integrity
rpm -V continuwuity

Service management and removal

Systemd service commands

# Start the service
sudo systemctl start conduwuit

# Enable on boot
sudo systemctl enable conduwuit

# Check status
sudo systemctl status conduwuit

# View logs
sudo journalctl -u conduwuit -f

Uninstallation

# Stop and disable the service
sudo systemctl stop conduwuit
sudo systemctl disable conduwuit

# Remove the package
sudo dnf remove continuwuity

# Remove the repository (optional)
sudo rm /etc/yum.repos.d/continuwuation-*.repo

Troubleshooting

GPG key errors: Temporarily disable GPG checking

sudo dnf --nogpgcheck install continuwuity

Repository metadata issues: Clear and rebuild cache

sudo dnf clean all
sudo dnf makecache

Finding specific versions

# List all available versions
dnf --showduplicates list continuwuity

# Install a specific version
sudo dnf install continuwuity-<version>

Building locally

Build the RPM locally using rpkg:

# Install dependencies
sudo dnf install rpkg rpm-build cargo-rpm-macros systemd-rpm-macros

# Clone the repository
git clone https://forgejo.ellis.link/continuwuation/continuwuity.git
cd continuwuity

# Build SRPM
rpkg srpm

# Build RPM
rpmbuild --rebuild *.src.rpm