continuwuity/docs/deploying/fedora.md
Tom Foster fbeb8b1f9e
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Successful in 59s
Release Docker Image / define-variables (pull_request) Successful in 2s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m30s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 6m22s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 9m17s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 9m5s
Release Docker Image / merge (pull_request) Successful in 9s
Build / Fedora RPM / build (push) Successful in 24m19s
feat(ci): Add Fedora RPM package build workflow
Build and publish RPM packages for Fedora using rpkg and official
rust-packaging macros. Packages are automatically signed by Forgejo's
built-in package registry (introduced in v9.0).

Publishes packages to organised groups:
- continuwuity (binary): base group (stable/dev/branch-name)
- continuwuity-debuginfo: GROUP-debug
- continuwuity (source RPM): 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 sanitised branch name versioning.

Uses dnf builddep to install build dependencies directly from the
generated SRPM, ensuring consistency between CI and spec file without
duplication. This also prevents hiding packaging issues that could
occur with --nodeps fallbacks.
2025-09-07 09:59:43 +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