Prerequisites

Before proceeding, it is assumed that you have obtained the following hardware components:

  • A Linux-based computer, such as a simple desktop computer, which will act as the RemoteRF server. We highly recommend Ubuntu 24.04 LTS, but other distributions should also work, though they have not been extensively tested. We recommend a fresh install.
  • At least one supported SDR of your choice. For first-timers, we suggest starting with two ADALM-PLUTO SDRs. You can always add more (and other) SDRs later.

To confirm full functionality of RemoteRF after setup, you will eventually need another computer to act as the client. This can be a simple laptop or desktop computer with Linux, macOS, or Windows, and does not need to be a fresh install.

This guide will assume that the Linux computer satisfies the following:

  • It has been installed with Python 3, ideally managed through conda (or Miniconda).
  • It is reachable on its local network (e.g., university network) via a stable address, usually a static IP. This static IP may need to be obtained from your information technology (IT) department.

Quick Guide: If you need help setting up installing Linux, installing Python, or obtaining a static IP address, please refer to the following guides.

1. Installing Linux (Ubuntu 24.04 LTS)

Below, we provide links to install Ubuntu 24.04 LTS. Those that prefer Kubuntu 24.04 LTS can use it instead, as it should behave similarly, but other Linux distributions may require different steps or package names and have not been extensively tested with RemoteRF. We highly recommend a fresh install of Ubuntu 24.04 LTS.

To install Ubuntu 24.04 LTS (or Kubuntu 24.04 LTS) with a graphical interface (recommended for first-timers), please reference the following download link and installation guides.

If you prefer only using the command line interference (CLI), Ubuntu Server 24.04 LTS is also a good option.

2. Installing Python and Conda

To install Python, open a terminal and execute the following.

sudo apt update
sudo apt install -y python3 python3-pip python3-venv curl bzip2
python3 --version

The overall flow is the same on Intel/AMD and ARM machines. The only part that changes is which Miniconda installer you download.

Then, check which machine architecture your computer is by executing the following in the terminal.

uname -m
  • x86_64 means your machine is Intel or AMD
  • aarch64 means your machine is ARM64

If your machine is x86_64, install Miniconda with:

cd /tmp
curl -fsSLO https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p "$HOME/miniconda3"

If your machine is aarch64, then use:

cd /tmp
curl -fsSLO https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
bash Miniconda3-latest-Linux-aarch64.sh -b -p "$HOME/miniconda3"

Finally, enable conda, accept Conda's terms of service if needed, and create the RemoteRF server environment with the following.

source "$HOME/miniconda3/etc/profile.d/conda.sh"
"$HOME/miniconda3/bin/conda" init bash
source ~/.bashrc
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
conda create -n remoterf-server -y python pip

Here, remoterf-server is the name of the conda envrionment. You should enter this environment essentially anytime you open the terminal of the RemoteRF server by running:

conda activate remoterf-server

3. Obtaining a Static IP Address

The RemoteRF server will need to be accessible via a static IP. Unfortunately, a DHCP address is not currently supported, as it requires more complicated management of certificates, client connections, and firewall rules.

To obtain a static IP address and other necessities, you may need to ask your IT department, network administrator, or ISP for the following:

  • one static IP address
  • two adjacent ports, for example 61005 and 61006
  • confirmation that the static IP address can indeed be reached from over the local network via Wi-Fi, LAN, VPN, etc.
  • any required gateway, subnet mask, DNS, hostname, domain, or firewall details

You can send a short request like this to the relevant :

Hello,

I am setting up a server that needs to be accessible from anywhere on the campus network. 

Can you please provide me with the following?
- one static IP address
- two adjacent open ports (e.g., 61005 and 61006)
- confirmation that this static IP address can be reached over the campus Wi-Fi, LAN, and VPN
- any required or relevant details about the gateway, subnet mask, DNS, hostname, domain, and firewall

Thank you.

Note: After your IT department or network administrator provides the static IP information, you may need to configure the server's network settings to use a static address, along with any required gateway, subnet mask, DNS, hostname, domain, or firewall settings. The exact details will depend on your local IT policies and network environment.

If you need help applying those settings on the Linux machine itself, this third-party guide walks through static IP setup using Netplan and nmcli on Ubuntu 24.04 LTS.

Once you obtain the static IP address and the two ports, write them down. You will need them later when setting up RemoteRF.

Configuration

After the above hardware prerequisites have been met, initial setup of the RemoteRF server can commence by executing the following steps.

To begin, launch a new terminal window and activate the remoterf-server environment using the following conda command.

conda activate remoterf-server

Use this single terminal to execute all of the steps that follow.

Step 1

Installation

The first step is to install the RemoteRF server package in the active terminal, and then make sure the serverrf command is available before proceeding.

Run:
python -m pip install -U pip
python -m pip install remoterf-server
serverrf --help
Expected result: The package install should complete successfully, and serverrf --help should print a detailed list of available commands and options. If the command serverrf cannot be found, reactivate the correct environment and confirm that remoterf-server installed successfully.
Step 2

Generate Certificates

Using the static IP and ports assigned to you by your network administrator, the next step involves generating networking certificates that will be used to establish a connection with clients.

Example values used here:
Static IP: 192.168.1.50
Run:
serverrf --gen-certs 192.168.1.50 --days 3650 --force
serverrf --show-certs
What this does: The generated certificates are what the RemoteRF server presents to clients. The --days 3650 flag makes them long-lived, and --force replaces an older set if you need to regenerate them after changing the outward-facing address.
Step 3

Configure Ports

Using the ports assigned to you by your network administrator, the next step is to set the outward-facing ports the server should use for its main service and certificate service.

Example values used here:
Main port: 61005
Certificate port: 61006
Run:
serverrf --config --main-port 61005 --cert-port 61006
serverrf --config --show
Expected result: Running serverrf --config --show should display the same port values you were provided by your network administrator.
Step 4

Test on the Same Machine

Start the server in one terminal using serverrf --serve, and let it keep running. Then, open a second terminal on the same machine, and test the static IP and configured ports.

Example values used here:
Static IP: 192.168.1.50
Main port: 61005
Certificate port: 61006
In the first Terminal, Run:
serverrf --serve
In the second Terminal, Run:
nc -vz 192.168.1.50 61005
nc -vz 192.168.1.50 61006
Expected result: If both nc -vz commands report that the connection succeeded or that the port is open, then the server is functional and listening on the intended outward-facing address and ports.
Step 5

Test from a Second Machine

Note: The nc command only works on Unix-based machines. To further confirm the server is reachable, use another computer that is on the same network as the server (e.g., connected to your university network). Then, run nc -vz commands like before.

Example values used here:
Static IP: 192.168.1.50
Main port: 61005
Certificate port: 61006
On the second machine, run:
nc -vz 192.168.1.50 61005
nc -vz 192.168.1.50 61006
Expected result: If the checks succeed from this second machine, the service is not only running locally but is also reachable from across the network too.

If each step has been completed up to this point, then the initial setup of the RemoteRF server is complete and it should now be accessible from anywhere on your local network.

Command context: RemoteRF server commands are used in two places. Commands like serverrf --config ..., serverrf --gen-certs ..., and serverrf --serve are run from the normal operating-system terminal. These commands configure the server, inspect setup values, or start the server process.

Once serverrf --serve is running, RemoteRF opens its own server@remoterf: prompt. Commands entered there, such as status, devices list, users list, groups create, and reservations list, are runtime shell commands. Use this runtime shell to inspect and manage live server state while the server is running.

Next Steps

If you only want a reference view of ~/.config/remoterf/, see Advanced Configuration.