Building Remote Containers For ALUG@UCI
Since my admission to UC Irvine on May 17th, 2025, I had a renewed resolve in doing meaningful work. The thing is, I didn’t really know where to start. I found it when I discovered that UC Irvine didn’t have a Linux user group like other universities I was considering up to my admission. So I worked on founding the Anteater Linux User Group at UCI (ALUG@UCI). I spent around five months on making it an official organization, and it was worth the time and effort. Within the first four months of ALUG@UCI, we’ve seen a growing community of enthusiastic Linux users that are passionate and welcoming to each other.
And as we continue to grow, I have been investing in furthering our club’s mission. And my first step in this is starting a community-oriented service hosting project. This is what I call ALUG@UCI Community VPS Services, a cloud container provisioning service that allows users to deploy and manage servers remotely.
The Development Process
I started working on ALUG@UCI Community VPS Services in January 2026. I choose to use Python for the backend, and Javascript for the frontend. This is because these languages are considered the ‘entry’ languages; it makes contributions to the project easier for people of all skill levels. It may not be as fast or efficient as other languages, but I believe it’s the right choice for a project like this.
For containers, I chose to use LXD because it provides an efficient way of running and managing containers. It’s lightweight, secure, and easy to use, which fits the goals of this project.
For the backend, I chose to use FastAPI because it’s a fast, yet easy-to-use web framework that supports all the needs of this project, such as asynchronous request handling and dependency injection. We use PyJWT for JWT-based authentication and aiosmtp for sending emails. For managing containers, we used PyLXD, a Python interface for LXD.
For the frontend, I chose to use Javascript because while it may be ‘primitive’ in the scope of modern web development, it’s a language most web developers are familiar with, and with a relatively simple frontend, using TypeScript or React is not urgent.
Challenges
One of the primary challenges I faced was handling PyLXD operations asynchronously. Since PyLXD uses blocking I/O, I had to find a way to make it work with FastAPI’s asynchronous request handling. This involved using asyncio and a custom executor to run PyLXD operations in the background.
Otherwise, most of the challenges I faced were not related to the technology stack itself, but rather to the nature of the project. This is perhaps the biggest project I’ve ever worked on. With around 2,180 lines of code, the project was time-consuming and challenging, especially when dealing with outside circumstances, such as school. Nonetheless, I dedicated as much time as I could and have reached a minimal viable product within four months.
But the most frustrating challenge I faced was getting IPv4 addresses to work for the containers I was creating. On my personal VPS, IPv4 address assignment worked fine, but when using the server UCI ICS lended us, this did not work. It took around a week for us to figure out the problem, but it is perhaps the biggest hurdle I’ve ever faced in a project.
What I Aim To Do
I am planning to host a beta on UCI ICS infrastructure that will allow our members to host services open to all UCI students. Despite there still being room for improvements to be made, such as optimizing the FastAPI backend and improving the frontend dashboard, I am committed to delivering a functional product that meets our members’ needs.
And as with all resources in the universe, we have a finite amount of resources to allocate; this means we won’t be able to provide containers to everyone. But I am hoping that if this endeavor takes off, we can expand our reach and provide more containers to UCI students.
However it ends though, I believe I will have at least provided a platform for UCI students to host their own services.