The Raspberry Pi started out as an inexpensive device to help students learn about computer science, but the Raspberry Pi also makes it a cheap test server. With a server operating system on a Raspberry Pi, you can quickly set up a test server at home.
I recently decided to reinstall my Raspberry Pi 3B + to use it as a test server for new web projects. My production environment is an Intel rack server running Red Hat Enterprise Linux, so it doesn't really match the Raspberry Pi at the hardware level. But on the application layer, Linux on Raspberry Pi is still “Linux”, Apache on Raspberry Pi remains “Apache” y PHP 7 on Raspberry Pi it remains “PHP 7”. As long as my Raspberry Pi is configured as a server, instead of a desktop-centric Linux distribution, my work on the Raspberry Pi will transfer quite easily to my production environment with Red Hat Enterprise Linux on Intel.
Although there is no Red Hat Enterprise Linux for Raspberry Pi, Fedora Server is close enough for my needs. I tried to install Fedora 33 ARM Server in the Raspberry Pi, but I couldn't get the wireless network to work out of the box, despite a note on the Fedora ARM page that wireless networking is supported by default in Fedora 33. The problem seems to be that Fedora 33 ARM Server no incluye wpa_supplicant
. Despite this, I was able to get everything working by installing Fedora 33 ARM Minimal.
Download the Fedora image 33 ARM Minimal from Fedora ARM web portal. You can find the download location on the wiki. Specifically, to install Fedora 33 Minimal en Raspberry Pi 3, you will need to download Fedora-Minimal-33-1.3.aarch64.raw.xz from the Aarch64 compatible image for Raspberry Pi 3.
Once you have the minimal Fedora image 33, you can install it on a microSD card to boot into the Raspberry Pi later. On your Linux workstation or server, plug in your microSD card and run this command:
# arm-image-installer --image=Fedora-Minimal-33-1.3.aarch64.raw.xz --media=/dev/sdb --target=rpi3
That command writes the minimal Fedora image 33 on the microSD card. My Linux desktop PC does not have a built-in microSD slot, therefore I used a microSD USB card reader, that presents the microSD in /dev/sdb
. Depending on your system, you may need to use a different media destination device.
Fedora installation 33 Minimal on the microSD essentially downloads an image pre-installed on the card. You will need to do all the setup later when you start the microSD on the Raspberry Pi for the first time.
Connect your Raspberry Pi to an HDMI display and a USB keyboard, plug in the microSD and turn it on. The first boot will take a while while you do some initial setup tasks, during which Fedora prompts you for local settings, including time zone, root password and user account.
Once my system was up and running, I was able to log in as the root
Username. Since I don't have a long enough network cable to achieve this Raspberry Pi, I needed to set up a wireless network. On the command line, run the Network Manager command line tool nmcli
to list available wireless networks:
# nmcli device wifi list

And nmcli
find your wireless network, then connect to her with this nmcli
Command “connect”. Replace $SSID
with the name of your wireless network:
# nmcli device wifi connect $SSID --ask
Thereafter, Network Manager automatically creates an entry for you under the /etc/NetworkManager/system-connections
directory, so the system will connect to this network every time you start the Raspberry Pi.
Since I run the Raspberry Pi as a server on my home network, furthermore I need to make sure that the Raspberry Pi gets the same IP address every time it connects to the network. On a home network, you can do this through your wireless router. Most routers allow you to recognize a MAC address and assign it a reserved IP address.. My home router issues IP addresses from 10.0.0.100, so I gave Raspberry Pi a reserved IP address below that range, on 10.0.0.11:

I find the easiest way to manage my Linux systems is with the Cockpit tool. Cockpit makes it easy to test your Linux servers through a web browser, allowing you to view logs, manage storage, configure user accounts and install services. Fedora 33 ARM Minimal does not install Cockpit by default, but you can easily install it as a package using dnf
:
# dnf -y install cockpit
Once you have installed Cockpit, you need to make sure the Cockpit service is running and it will restart every time you reboot the system. Fedora uses systemd
, so you have to start the service and enable it for every reboot with these two commands from “system control”:
# systemctl start cockpit # systemctl enable cockpit.socket
Fedora's default firewall will prevent connections to your device, so you also need to open the port on the local firewall to accept connections to the Cockpit. You can add the Cockpit service using the firewall-cmd
command line tool:
# firewall-cmd --add-service=cockpit --permanent # firewall-cmd --reload
You should now be able to navigate your web browser to https://10.0.0.11:9090/ to control your Raspberry Pi remotely.

Con Cockpit, can complete any other system configuration tasks you need. To finish configuring this Raspberry Pi as a web server, i installed apache httpd
web server and PHP 7, then I used Cockpit to configure everything to match my production system as closely as possible:

You don't need an expensive server to set up a robust test server environment. With a server operating system like Fedora 33 ARM Minimal, you can quickly set up an inexpensive test server at home on a Raspberry Pi. And with Cockpit, you can manage everything directly from your browser.