My Computer

Reclaiming our personal devices from big tech

Hello, world!

The goal of this project is to create a personal webserver that can be easily installed and configured to run on everyday machines that people would have lying around their homes or businesses. This page explains some of the high-level functions and plans for the project.

Major Goals

Architecture

The server runs Ubuntu and the fundamental features rely on Caddy as the webserver itself, mariaDB as the database system, and PHP for server-side scripts on the webpages. Of course HTML/CSS are used on the webpages as well, and JavaScript will be used for some of the more advanced or niche functionality that cannot be achieved with HTML, CSS, or PHP. The server will come with docker ready to be used but none of the core features will require it, so it could be uninstalled if desired. The more advanced or secure features, like a password manager or any extra apps a user wants to install, will likely require Docker and since the core features are fairly limited given the large number of web apps people may use on a regular basis it is assumed that most people will want to make use of at least some Docker apps.

Major Features

Additional minor features will exist and more functionality may be added to the major features as the project evolves, but at the moment the following will be the primary apps that run within the server.

Task Lists

Using mainly the database and PHP scripts the user will have the ability to create and use as many task lists as they would like. There will be templates or types of lists for common use cases like grocery lists or for reminders. Future development will include the ability to integrate notifications to the task lists, whether they be email or some other form of notification service - potentially making use of a docker container running something like ntfy.

Events (Calendar)

Users will be able to keep track of their events and plans using the events app, which will also have the ability for events to be exported in formats compatible with the most common calendar apps, like iCal. An optional feature for public event links will be possible in the future where the user can indicate an event should have a public event page and it will automatically pull from the events database to create a public page that guests can be sent. Future development could also include functionality like RSVPs and sending guests email updates about event changes.

Games

Meant to provide a virtual tabletop where basic games, especially card games, can be played with friends and family. There will be solo games but the focus will be on multiplayer games where the user will be able to create a game room and send a link or invitation code to have others join. The games will be simple, most using only text-based resources and will be implemented using mainly the database, PHP, and light javascript.

Archive

Working as a personal website archival system users can save any webpage for later reference, whether it be for something to read later when they have the time or to permanently save for years in case the original site is edited or deleted.

Records

A better name will likely be needed, but this application will serve as a front-end for the user's personal database of personal records. The core of it will include Health Records and allow the user to track health and wellness data in a secure location. This would also include exercise tracking, food intake, menstrual cycle tracking, and many other common types of data that people often have to rely on proprietary apps to keep track of. The user will have the ability to add new datasets and set up dashboards or reports that can provide insights into the data they submit, including preparing reports that could be useful in healthcare appointments.

Notes

A simple note keeping system where, because it all runs on a webserver, users can optionally make notes easily accessible to anyone with an internet connection.

Forms

The user will be able to create simple (and in the future more advanced) forms and collect responses from anyone over the internet. Responses will be stored in the database and the user can view basic insights on the responses or utilize their own custom scripts to perform complex data analysis on the responses.

Websites

Perhaps obvious, but the user will be able to create private or public webpages and host them on the server. The default "homepage" will have a variety of templates that could act as the user's front page of their social media and internet presence.

Advanced Features

While these features may not be considered advanced, some may even seem very basic, these would not be included in the basic setup of the server because they are either very niche (not relevant to most people) or they require a more advanced understanding of server security to ensure user data stays secure.

Email Inbox

The user would have to configure the MX, DMARC, etc. records with their domain registrar first, but the server can serve as a small mail server. The intention would be for personal email with close friends and family as the powers in charge of mail routing over the internet are very unforgiving when it comes to blacklisting any IP address that they suspect is fraudulent or spamming inboxes. In theory it would work as a regular email inbox but until better regulation is implemented on a worldwide level it would be somewhat of a risk to rely solely on this for all your email.

Password Manager

The password manager provides a very valuable target for hackers, so it would require additional configuration to ensure the user has not allowed for any vulnerability in the system with their other apps or settings. It is possible a local-only version could be included in the default apps, but having a password manager that can only be accessed from the home computer somewhat defeats the purpose and more research will need to be done around the security considerations that need to be made. Either way the password manager would utilize an entirely separate database, likely run in a docker container so that the system is self-contained with no way for any other part of the server to gain access.

Other Docker Containers

There is an endless amount of useful Docker containers and the goal of the project as it continues will be to add direct support for popular or common ones that users want to integrate into their servers. Some already being considered are popular Wiki apps like MediaWiki and DokuWiki, social media apps like Mastodon that work with the fediverse, and file-hosting / office suite apps like NextCloud or Syncthing. Since the goal of the project is to make a light-weight server that can support people in migrating essential data away from big tech platforms, as well as run on devices with low range specs the project will not consider media servers (Plex, Jellyfin, Immich, etc.) as a priority. Those who wish to run a media streaming or storage application on their own server will want a dedicated one with higher capacity in most cases. This project will still consider these apps and ways they could be integrated but it will not be a top priority.

Artificial Intelligence

All major generative A.I. tools (ChatGPT, Google Gemini, Microsoft Copilot, etc.) rely on stolen data and harvest an immense amount of data from the people using them. The unethical data harvesting practices of all these A.I. platforms puts them in direct opposition to the goals of this project: data privacy and a free internet. There will be zero usage of generative A.I. tools in the development of the project and these tools will never be integrated into the core features of the project.

In the future if a reliably secure and private generative A.I. tool was released that could be run locally and was trained on an ethical dataset the project developers will consider integrating this type of tool into the project as an advanced feature, only once it can be guaranteed there will be zero sacrifice of user privacy and security.

A potential user of the product would however, be installing the server onto a machine of their own and therefore the project developers will not have any control over what is installed or added to the server by a user. Anyone would be free to find ways to integrate an A.I. tool into their own server instance if they wish to do so, but this will not be supported by the project developers.