Metadata:
Discussion of interesting ways in which the Raspberry Pi can be used. Be it a LAMP server, a Network Interface Card (NIC), or a host for productivity software.
- Initially published on 10-16-2024.
- Parent note: Introductory Post - Workflow
Raspberry Pi Network Interface
Using a Raspberry Pi
Typical use cases for the Raspberry Pi are along the lines of fulfilling the following:
-
Providing video streaming as a home theater center.
-
Providing a hub for video game emulation.
-
Basic GPIO tinkering; anything to putting the Python GPIO library to use.
Personal History - Exposure to server hosting and Linux
My introduction to the machine was through one of my community college instructors suggesting to get a Raspberry Pi to host a LAMP server for development and testing. He was also the instructor to encourage stepping into the realm of using Linux. This was in the context of an Advanced Web Programming course; the college provided Microsoft based services, where the tools used involved notepad++ and interfacing with phpMyAdmin for deploying PHP web apps.
Interestingly, it wasn't suggested that we make use of a virtual environment to develop in a LAMP setting. I would eventually make the leap to leverage a virtual box, but this is something that wouldn't be under the guidance of an instructor. His early suggestion is what eventually allowed me to make this a comfortable transition. Until then, I would act on his suggestion by installing Kubuntu on my primary laptop while also purchasing a Raspberry Pi for deploying my web apps. This served in effort to negate dependence on some cloud provider as a host.
This occurred while the Raspberry Pi 3b was the latest and while Ubuntu 16.04 was the most recent LTS offering. I quickly became comfortable with Kubuntu as a primary driver for my laptop. Naturally, I would to want to use the same operating system for the single board computer. Many will know this was not an option at the time, at least with Canonical's direct offering. Anyone familiar with the flavors of Ubuntu will be able to conclude a of lack of compatibility between the KDE and the Pi 3b; Kubuntu is typically more taxing on hardware than what it's derived from. Fortunately for me, there was one flavor that was both less taxing and compatible with the ARM architecture of the Raspberry Pi: Ubuntu Mate.
I installed Ubuntu Mate. This was along with Apache, MySql, and PHP. The essential services worked out of the box, allowing usage of the network interfaces without configuration. Putting the device on the local network, I had a sandbox test my web apps.
The fact that this was a local development environment was good exposure. This was during a time where the scope of my web development knowledge involved using Filezilla to place files into the default directory designated by Apache. The notion of Apache was abstracted away by phpMyAdmin, and system administration was only lightly touched on due to the server environment being managed by the school. Having this self hosted server exposed me to what the school's system administrators might be looking at.
The only drawback of the setup was that it was local. I had no problem developing within the confines of my home, but how can I view and use my web apps elsewhere? To initially solve this problem is easy - simply forward the relevant port (80) to the Raspberry Pi through my home's router. This rudimentary setup faced another problem - The dynamic IP address assigned by my ISP. What if I want to access my web apps and my IP address had changed?
This question formed the basis of what I considered my first challenge as a system administrator. Luckily, the extra practice I went into understanding programming made it intuitive to devise a solution:
-
Write a bash script to be run on the server that checks what its current external IP address is.
-
This script ended up using an external service. Specifically an API through Ipify: https://api.ipify.org
-
-
Compare the return value of the external API to a value that is saved on file.
-
If there is no change, do nothing
-
If there is a change, update the file with the new value and send myself an email using the Linux mail utility.
-
-
Run this script on an interval using Crontab.
Raspberry Pi as a Network Interface Card (NIC)
I ran the Raspberry Pi as a LAMP server for roughly nine months. I moved onto university where web development started becoming a secondary facet of what I was learning.
Studying at a university took me to a different city. Where I was living did not have easy access to ethernet and my primary desktop did not have a wireless network interface card.
When I first started using Linux on my laptop, I was impressed by how responsive it was. Snappiness wouldn't decline as time progressed, unlike the previous installations of Windows. Furthermore, my laptop came stock with Windows 8, which I had overwrote with an installation of Windows 7. There was no hardware support for the ethernet adapter for the laptop on Windows 7 - no support through both Microsoft and the Hardware vendor. This ethernet port worked right out of the box with Kubuntu 16.04.
These facets had me poking around a lot in the network utilities; an effort to contrast and compare the two operating systems. Lack of a wired internet access had me recall a specific option I remembered seeing within Ubuntu Mate's networking software: Network Sharing.
This utility allows the Raspberry Pi to become a wireless network interface card by piping its wireless traffic through its ethernet adapter. All one needs to do is connect the Raspberry Pi to another device using an ethernet cable and enable network sharing.
For the price of a Wireless NIC, one can instead buy a small board computer that also acts as a wireless bridge!
Using secure shell to sign into the Raspberry Pi. Take note the default gateway.
This is how I continued to use my Raspberry Pi during my time as an undergraduate and graduate student. The only shift here was in purchasing a Raspberry Pi 4 for its improved networking interfaces.

Source - Hackaday
Hosting Productivity Software on a Raspberry Pi
I spun up this website late 2021. The main page reflects my initial intention - a minimal interface to act as a hub for the public-facing online platforms I use. Initially it had a link to an index of my writings and it also housed links to my VSCO, Github, and LinkedIn profiles. It has since expanded to include an index for my project descriptions and includes the notes section that this entry resides.
This website is hosted using Digital Ocean's droplet VPS system, where I've installed Ubuntu Server to once again act is the Linux component for a LAMP server.
I've learned a lot since my initial endeavor with the Raspberry Pi. I've learned a lot in terms of networking and system administration; afforded by my collaborative efforts through the various internships and in pursuing my Bachelor and Master degrees.
As an undergrad, the university I attended used the Google Suite of productivity software. The university I earned my Master's degree used Microsoft's offering of office 365. I appreciated having access to these tools, but graduating from both universities proved the eventuality of severed access to these systems. Luckily I am thorough in backing up my content onto hardware that I own.
The droplet in which my website runs is cheap. Five dollars a month for a virtual server with access to 25gb storage and 1gb of ram. This serves well as a web host, but not as a potential platform to host a suite of productivity software. Especially if I want to ensure I maintain control over my data.
Why not dust off the Raspberry Pi 4 and put it to use for this purpose? Having previously run through a usability test of NextCloud within a virtual box had me sold on the idea on putting the Raspberry Pi's 4gb of ram along with a half-terabyte USB 3.0 hard disk to good use.

The live NextCloud instance.
The small-form server has proven to be adequate for my personal use.
The purpose of this writing has been to share how I've used this versatile computer over the years. It has helped shape me as a developer.
We can now expand its list of utility to be the following:
-
Providing video streaming as a home theater center.
-
Providing a hub for video game emulation.
-
Basic GPIO tinkering; anything to putting the Python GPIO library to use.
-
Host a LAMP server.
-
Use as a wireless network interface card.
-
Host and provide access to productivity software using NextCloud.
The process of deploying this instance of a NextCloud server has presented some interesting challenges and edge cases. I found documentation to be lacking in response. These will be elaborated upon in subsequent entries as I gather up my notes!



