diff --git a/hbbr.service b/hbbr.service
new file mode 100644
index 0000000..a01848a
--- /dev/null
+++ b/hbbr.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=RustDesk Relay server
+After=network.target
+
+[Service]
+Type=simple
+WorkingDirectory=/var/lib/rustdesk-server
+ExecStart=/usr/bin/hbbr
+Restart=always
+RestartSec=10
+
+[Install]
+WantedBy=multi-user.target
\ No newline at end of file
diff --git a/hbbr.xml b/hbbr.xml
new file mode 100644
index 0000000..aa465d3
--- /dev/null
+++ b/hbbr.xml
@@ -0,0 +1,7 @@
+
+
+ hbbr
+ RustDesk Relay server
+
+
+
\ No newline at end of file
diff --git a/hbbs.service b/hbbs.service
new file mode 100644
index 0000000..7b9524c
--- /dev/null
+++ b/hbbs.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=RustDesk ID/Rendezvous server
+After=network.target
+
+[Service]
+Type=simple
+WorkingDirectory=/var/lib/rustdesk-server
+ExecStart=/usr/bin/hbbs
+Restart=always
+RestartSec=10
+
+[Install]
+WantedBy=multi-user.target
\ No newline at end of file
diff --git a/hbbs.xml b/hbbs.xml
new file mode 100644
index 0000000..34ab774
--- /dev/null
+++ b/hbbs.xml
@@ -0,0 +1,10 @@
+
+
+ hbbs
+ RustDesk ID/Rendezvous server
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rustdesk-server.spec b/rustdesk-server.spec
new file mode 100644
index 0000000..21fcdc9
--- /dev/null
+++ b/rustdesk-server.spec
@@ -0,0 +1,83 @@
+%global hbb_commit 87b11a7
+
+Name: rustdesk-server
+Version: 1.1.15
+Release: 1%{?dist}
+Summary: RustDesk Server Program
+
+License: AGPL-3.0-only
+URL: https://github.com/rustdesk/rustdesk-server
+Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz
+Source1: https://github.com/rustdesk/hbb_common/archive/%{hbb_commit}/hbb_common-%{hbb_commit}.tar.gz
+Source2: hbbs.xml
+Source3: hbbr.xml
+Source4: hbbs.service
+Source5: hbbr.service
+
+BuildRequires: cargo
+BuildRequires: rust
+BuildRequires: gcc
+BuildRequires: gcc-c++
+BuildRequires: make
+BuildRequires: pkgconfig
+BuildRequires: openssl-devel
+BuildRequires: systemd-rpm-macros
+Requires: firewalld-filesystem
+%{?systemd_requires}
+
+%description
+RustDesk Server Program. Includes the hbbs (RustDesk ID/Rendezvous server)
+and hbbr (RustDesk Relay server) binaries.
+
+%prep
+%autosetup -n %{name}-%{version}
+
+# Replace the empty hbb_common directory with the submodule source
+rm -rf libs/hbb_common/*
+tar -xzf %{SOURCE1} -C libs/hbb_common --strip-components=1
+
+%build
+cargo build --release
+
+%install
+mkdir -p %{buildroot}%{_bindir}
+install -m 0755 target/release/hbbs %{buildroot}%{_bindir}/hbbs
+install -m 0755 target/release/hbbr %{buildroot}%{_bindir}/hbbr
+# Include rustdesk-utils if it exists in the build output
+[ -f target/release/rustdesk-utils ] && install -m 0755 target/release/rustdesk-utils %{buildroot}%{_bindir}/rustdesk-utils || :
+
+# Install firewalld service files
+mkdir -p %{buildroot}%{_prefix}/lib/firewalld/services
+install -m 0644 %{SOURCE2} %{buildroot}%{_prefix}/lib/firewalld/services/hbbs.xml
+install -m 0644 %{SOURCE3} %{buildroot}%{_prefix}/lib/firewalld/services/hbbr.xml
+
+# Install systemd service files
+mkdir -p %{buildroot}%{_unitdir}
+install -m 0644 %{SOURCE4} %{buildroot}%{_unitdir}/hbbs.service
+install -m 0644 %{SOURCE5} %{buildroot}%{_unitdir}/hbbr.service
+
+# Create working directory for keys/database
+mkdir -p %{buildroot}%{_sharedstatedir}/%{name}
+
+%post
+%systemd_post hbbs.service hbbr.service
+
+%preun
+%systemd_preun hbbs.service hbbr.service
+
+%postun
+%systemd_postun_with_restart hbbs.service hbbr.service
+
+%files
+%license LICENSE
+%doc README.md
+%{_bindir}/*
+%{_prefix}/lib/firewalld/services/hbbs.xml
+%{_prefix}/lib/firewalld/services/hbbr.xml
+%{_unitdir}/hbbs.service
+%{_unitdir}/hbbr.service
+%dir %{_sharedstatedir}/%{name}
+
+%changelog
+* Mon Jan 01 2024 RPM Builder - 1.1.15-1
+- Initial package creation for RHEL and Fedora
\ No newline at end of file