Your Personal Cloud

You can host your own cloud server at home using commodity hardware and open-source software.

Welcome

You may know how to install a program on your computer, but might not even know where to start when asked how the cloud works.  This is to be expected – that's how they were designed!

Home Page V2.png

Modern open-source software can offer familiar online services and put you in complete control. Host a personal website, build a private cloud, or share with an online community.  Connect your server to the World Wide Web with a domain name and modern router, or access all your services while away using a virtual private network.

cloudWhat is the Cloud?

In this five-part series, we will learn about the “cloud” – from the ground up – and use this new knowledge to build our own server.   Aside from your curiosity, all you need to bring is an unused computer system – an excellent reason to explore the low-cost Raspberry Pi or repurpose an old computer.

Table of Contents

Flag

0. Your Personal Cloud

 

Host

1. Hardware

 

Terminal

2. Software

 

Cloud

3. Services

 

Build

4. Monitoring & Maintenance


Language

5. World Wide Web


Through educational do-it-yourself guides we explore the hardware and software requirements for a home server, including quick-start examples. This process uses Debian Linux and Docker to quickly self-host your services through the browser-based interface. 


What is the Cloud?

Computers are machines that can automatically process data based on defined rules – like logic and arithmetic.  Humans have long explored purpose-built "analog" machines that perform specific tasks, such as the Antikythera mechanism from 200 BCE for calculating the position of stars and planets.

1000001428.jpgReconstruction

By the early 1900s, the programmable computer theorized by Charles Babbage and Ada Lovelace was finally demonstrated.  While analog computers could reliably perform a pre-defined task, the Analytical Engine was the first to be "Turing-complete". 

1000001429.jpgAnalytical Engine

This new class of computers was capable of being programmed to perform specific tasks – like multiplication or conditional statements.  This not only made computers more versatile, but ensured similar systems could share their programming.

Digital Systems 

These first computers bear little resemblance to the discrete personal computers we use today. Analog systems used physical properties to perform their computations – such as connecting a circuit to turn on a warning light when the temperature within the room exceeds a certain threshold.

The first "digital" general-purpose computers were created in the early–mid 20th century. These systems transmit and process electrical signals to achieve the desired outcome. Colossus and ENIAC were both digital and programmable – meaning that the hardware could be instructed to perform new tasks even after the computer had been built.

Women were the first "computers" – tasked with maintaining the programming necessary to operate the first general-purpose digital computer systems.

1000006937.webp

ENIAC

1000006947.jpg

Colossus

By the 1960s, digital computers were becoming more commonplace at large institutions, but were still largely inaccessible to many professionals and researchers, let alone everyday consumers.  While hardware advances allowed computers to perform more complex tasks, software revolutionized the number of tasks that could be performed at once.

Local Sharing

Time sharing became a technique that allocated computer resources to multiple users, enabling true multi-tasking for the first time. In the past, programs ran in sequence and completely finished a single task before moving onto the next.  Now, each user could run their own program and the computer would quickly cycle through each user's task, performing a little bit of each at a time. 

People could connect to this shared computer system through a "terminal" – or a keyboard and monitor that transmitted data back and forth over a physical cable.  This maintained the illusion of a personal computer that ran only their task when, in reality, it was a shared computer.  Before the internet was even invented, we had begun our exploration into the concept of the modern "cloud".

1000006938.jpg

ADM-3A

Time sharing was expanded upon to create virtualization – or dividing a single computer into multiple virtual computers.  This allowed the creation of isolated enclaves where each user – whether a person or corporation – could securely run their own programs without worrying about sharing resources.

Interconnection

In 1969, ARPANET (Advanced Research Projects Agency Network) marked the birth of the long-distance Internet.  During this time, the foundations were laid for the same "TCP/IP" standards we still use to this day.  Using these new tools, researchers (and their computers) could share their resources across vast distances. 

Arpanet_in_the_1970s.pngARPANET

By 1991, the World Wide Web as we know it was released to global consumers.  With a subscription to an internet service provider, anyone could connect to the World Wide Web. Before the turn of the century, the first theory of cloud computing defined a foundation for scalable servers. 

This enabled independent computers to be linked together over a network and share their resources towards supporting a unified service. Distributed computing enabled websites to support a hundred thousand users by balancing the work load across multiple computers instead trying to juggle everyone using one system.

Whenever a service was accessed over the internet, the user could be geo-located and directed to the server that was closest to them.  This provided a better connection, split the workload and created more space for data storage.  As a result, data centers quickly proliferated across the globe.  

Data Centers

By the early 2000s, technology companies had invested heavily into data center infrastructure.  Through this model, businesses could forego hosting their own server computers and instead rely on the infrastructure maintained by someone else. 

1000006969.jpgA typical server rack 

These distributed server farms became increasingly integrated into our every day lives – personally and professionally.  Google and Apple both released services targeting corporations and consumers, offering access to cloud-based tools.  Amazon introduced "cloud" computing and storage services, enabling businesses to rent computer resources – like processing power or storage space.

1000006966.jpg

ARSAT Data Center

1000006968.jpg

Google Data Center

Take a look at the data centers located near you – there's more than you'd think!

Contemporary cloud computing combines virtualization, distributed computing, and secure internet connections to build vast server farm infrastructures around the globe.  By dividing up server clusters into isolated software environments, data centers create the digital equivalent of an apartment building housing multiple tenants.

When contracting out digital infrastructure services, corporations may lose physical ownership of data.  Realistically, it can be nearly impossible to keep track of what data is stored where.  Under this paradigm, corporations have the potential to shirk their responsibility for digital stewardship – or how they keep data safe, secure and up-to-date.

Everything as a Service

The decentralized infrastructure of data centers has fomented considerable uncertainty about data privacy, unauthorized access and legal compliance. When digital data exists outside the physical control of a company, can they reliably ensure security? On the other hand, could leaving data storage up to industry professionals improve its baseline security?

Data centers, for better or worse, are the dominant paradigm and currently power much of the internet. They are now a driving force behind the proliferation and expansion of technologies around the globe.  Any digital service can be provided as a paid subscription using this pervasive business practice.

This vast infrastructure has led to a standardized "cloud computing" service model focused on a granular spectrum.  This dictates how much of the service is managed by the client versus the cloud computing service provider:

Dns

Infrastructure as a Service

The practice of a provider renting digital systems to clients to fulfill their needs – such as servers, networks and Internet service.

 

Code_blocks

Platform as a Service

Subscription to service that facilitates the rapid deployment of software – such as platforms like Docker and Kubernetes.

 

Terminal

Software as a Service

Connects people, occasionally on behalf of an intermediary like a corporation or school, to web-based software – such as office and file-hosting services.

 

Function

Function as a Service

Specific functions to be completed and paid per usage – such as automated image or data processing.

 

On one end, the client maintains complete control over how they can utilize their rented hardware.  On the other, everything occurs completely behind-the-scenes without the client ever being aware.

While these technologies were groundbreaking for creating global internet platforms, they have had countless impacts on privacy and technology development.  You may lose access to your data at any point because a service provider decides they don't want to host your content. 

With its current trajectory, cloud computing threatens to completely monopolize and privatize the very infrastructure that powers the Internet.  It is currently estimated that more than 85% of global business are expected to adopt a "cloud-first" approach by 2025.

Large-scale data centers use exponentially more power than a home server – consuming up to 100 times more than a standard office building.  For example, a small data center with 500 servers may require 1 megawatt of power – equivalent to 200 American households

Data Center Scale

Scale Servers Power Capacity
Small 500 – 2,000 1 – 5 MW
Medium 2,000 – 10,000 5 – 20 MW
Large 10,000+ 20 – 100 MW

Describe and illustrate difference between w kilowatt and megawatt 

Similar to personal computers,  data centers can enter idle states where they consumes less power.  Entire server racks will turn on and off depending on how much work needs to be done.  This will result in a data center's power consumption fluctuating

Globally, computer and network technologies are estimated to consume 10% of all energy produced.  Of this, data centers consume about 20% – with this expected to continue rising with the rise of machine learning.  Two broad categories use nearly 80% of this power: hardware and cooling systems. 

1000000321.webp

Power consumption for the ten largest global technology companies outpace entire nations

1000000337.png

Data centers are not necessarily bad, but they must be created with care and compassion for the community and ecosystem.

Self-Hosting

Federation is a foundational – yet still evolving –computing concept that enables services that are shared across multiple autonomous servers. In practice, this means that no one person can be the sole owner – anyone can host their own version of the service at any time.

By decentralizing the ownership of software, we can ensure no one has unilateral control.  The Fediverse – or a federation of social networks – communicate using a standard protocol that allow them to work together while maintaining their individuality.  

By leveraging the same cloud technologies, anyone has the ability to host their own services.  Linux, Docker and all of the necessary software are open-source, available for free to anyone. These softwares are developed by open communities to further both personal and professional interests – like security, privacy and convenience.

Self-hosting is the practice of maintaining a privately owned server that is entirely within your control, instead of a third-party administrator.  When running your own cloud server, you have the power – and responsibility – to act as an infrastructure, platform and software provider. 

The growing momentum of cloud-based technology has made it easier than ever to host a server on your own personal hardware – even from home. The ascent of free and open-source software has created alternative to many of the web-based services – like remote storage, password managers, media streaming and an office suite. 

1000000537.png 1000006268.png

There are many benefits to hosting your own server – like control and cost-savings because you don't rely on third-parties to administer your services. As a result, the responsibility to maintain infrastructure falls squarely on you – including hardware, security, and legal compliance.

While this can seem daunting, there is no better way to start than by trying for yourself.  In a world that rapidly favors the digital, hosting your own server can teach you invaluable skills.  Growing communities – supported by hobbyists, developers and corporations alike – help support each other and the software.

Getting Started

This page will act as a guide through the five books that make up this lesson.  We will be exploring how to self-host your own server from home using Do-It-Yourself guides paired with educational resources exploring the history of computing.  Along the way, we will critically reflect on what it means for our communities to host your own server.

0. Background

info

Table of Contents

Flag

Your Personal Cloud

Before getting started, we should know what we're building.  Running your own server is an excellent avenue to explore what it means to think like a designer and a developer.  By taking ownership of our own digital security and privacy, we can help protect our families and communities. 

1. Hardware

host

Table of Contents

Host

Hardware

Now that we understand our hardware requirements, we need to find a machine that supports them. We can create an open-source server using consumer hardware.  Finally, there are some firmware configuration we should check before installing an operating system.

2. Software

terminal

Table of Contents
Terminal

Software

We need to install Debian Linux onto our computer to form a foundation.  We will use Docker to create secure, self-contained "virtual operating systems" that are easy to monitor and keep up-to-date. Importantly, we need to create a backup solution and setup remote access for our server.

3. Services

cloud_circle

Table of Contents
Cloud

Services

Through Portainer, an intuitive interface for installing Docker services through a browser.  We will be using a simple structured syntax known as Docker Compose to pop-up services from pre-built images.

4. Monitoring & Maintenance 

build_circle

Table of Contents
Build

Monitoring & Maintenance

When running your own server, it's important to have ways to monitor your system and perform any required maintenance. This server will always be operating which makes it even more important to take our system apart to remove dust and dirt.

5. World Wide Web

public

Table of Contents
Language

World Wide Web

We will configure our local network through our router to prepare for connection.  We will use SWAG, a community-driven project to assist everyday people with creating a secure, self-hosted server. This solution uses a reverse proxy server to route traffic from a domain address to your hosted services.  Finally, we will configure your router to connect your server to the internet.

Background

Many people know how to install a computer program, but wouldn’t even know where to begin if asked how the cloud works.  Computers and their networks have been intentionally designed to be abstract – masking inner depths though a shared common language.  These systems are a collective of parts working towards a shared desired outcome.

We leave a mark on the spaces left in our care and our personal decisions have reverberating effects that can be felt by others.  When we create digital spaces, we must not forget the effect we have on our physical world – from the server in our garage to the data center down the street.  

As we increasingly rely on the Cloud (or digital services hosted on someone else's computer), we must consider how this affects our personal privacy and security.  The “Cloud” has taken control over the way corporations handle digital infrastructure.  We have the right to control our digital ecosystem.

cloudWhat is the Cloud?

By 2025, an estimated 96% of corporations will rely on it – with a majority of data stored outside their business.  Everyday consumers have been forced into the “Cloud” alongside them. But, what does this mean and how does it work? 

Open-source software solutions can put us back in control of our digital experiences.  By joining these open collaborative communities, we can add diverse voices throughout their growth process. 

Learning Objectives

Anyone can learn to host their own server, but there are questions we need to ask ourselves before we do.  How does power translate into responsibility?

Hardware

Practical

Be able to assess computer hardware components, install a working operating system and host a simple web server using open-source cloud computing technologies.

 

Engineering

Technical

Understand the historical context, significance, and potential applications for cloud computing.

 

Diversity_1

Social

Explore the role that cloud computing has on mediating the relationships between people, places, communities, and “Technology”.

 

Psychology

Personal

Critically analyze and assess your relationship with "Technology" and the vulnerabilities that can arise through reliance on them.

 

Before you make the decision to build a server, it may be helpful to learn more about me – the author.

What You'll Need 

Aside from curiosity and hardware, you will need to create the space for reflection – about yourself and your relation to others.  While you don't need to know how to write code, you must be comfortable thinking critically and logically. Confidently communicating roadblocks will be a strength and help you succeed.

As for hardware requirements, you can fulfill each at various price points, including free and low-cost options where available.

Desktop_windows

Computer

$50 – $1500

 

You will need computer hardware to host your server.  This can be anything from a Raspberry Pi to a dedicated tower server, new or refurbished.  Create a budget server and upgrade it as the need arises.

 

cable

Accessories

$0 – $300

 

You will need a display, mouse and keyboard to interact with your computer, as well as cables and a USB flash drive.

 

language

Internet Service

$30+/month

 

You will need internet access for your home server. Preferably, it is a hardwired internet connection – such as cable or fiber – as opposed to wireless – like satellite.

 

Router

Router

$50 – $150

 

You will need a router that has Port Forwarding so it can forward traffic from the router to your home server.  While not required, Dynamic DNS allows you to connect to your server without purchasing a domain name. 

 

Vpn_lock

VPN Provider

Free to $9+/month

 

A Virtual Private Network provider is an excellent way to maintain privacy and anonymity on the internet.  While self-hosting services, they can hide personal information like what you're downloading or what websites you're accessing.

 

Domain_verification

Domain Name

Free – $20,000

 

Accessing our server over the internet will generally require a domain name – such as example.com – and there is a wide price variability. 

 

Before you commit yourself to this project, take this opportunity to explore everything you'll need to follow along.  It's also important to reflect on how you will approach this learning experience.

Format

"Your Personal Cloud" will be a five-part series, divided into five books through this digital repository.  These will follow a book metaphor with chapters and pages, progressively leading the way through making your own server.

  1. Hardware
  2. Software
  3. Services
  4. Monitoring & Maintenance
  5. World Wide Web

This will not be just about how to do it, but also a reflection of how and why we arrived where we are.  When we take back responsibility for our digital selves, we also gain the power and community to shape the digital world.  Your perspective is vital for creating equitable technologies.  Together, we can learn how to talk back and forge a new relationship with technology.

This is a self-led learning experience geared towards personal reflection on your own time and in your own space.  Each book will contain do-it-yourself guides that progressively build on the last, standing as tangible milestones for your progress.  We will explore why computers came to be, how we first connected them and what that means for global communities as we continue forward together.

These resources can be exported for your own personal archive.

These books will provide quick links to community-crafted resources – like Wikipedia – to help place ideas within larger concepts.  Links within the text to academic, corporate and community resources will attempt to lend weight to the claims.  Illustrations, digrams and visual resources are heavily leveraged to express and communicate abstract concepts.

A Project Notebook is offered alongside these lessons to keep track of technical notes, as well as to provide a central space for reflection and brainstorming.  This can be printed – or downloaded as a form-fillable PDF – to act as a reference throughout all five books.

Process

We will be the same techniques and technologies used by many companies to host their own websites and cloud services.  Created through community-powered projects, these technologies are robust enough for corporations while still accessible to someone looking to host a small home server.

All of the software you will need is offered free-of-charge by the original developers and can be downloaded from their servers.

Group_work

Debian

This community-maintained Linux operating system is used to power many corporate machines.

 

Group_work

Docker

This open-source software can quickly setup secure "containers" – or applications running within their own isolated "virtual operating system".

 

Group_work

Portainer

This community-supported application makes it easy to create and destroy Docker containers from your web browser through an intuitive graphical interface.

 

Group_work

nginx

This open-source software is a web server that powers a large portion of the modern Internet and offers tools for securely connecting self-hosted applications to the World Wide Web for access remotely.

 

Once the foundation has been laid, there are a wide gamut of open-source applications that can be self-hosted on your server.  These provide services ranging from cloud office suites to personal media management.  We dedicate a book to each unique service, providing a more in-depth examination of the project, it's purpose and how to install it.

Outcome

You will be create a personal home server using available hardware – such as a Raspberry Pi single-board computer or a refurbished desktop computer.  This will host a basic website that is available at a domain name that you own. 

Installation will require physical access to a monitor and keyboard, but the server will be setup for remote desktop and command line access.  This can be available only through your home network or using a browser-based web application to access them while away from home.

image.png

Many self-hosted services offer modern, responsive applications that you control through your browser or platform-specific software. Organizr enables you to  create a personalized homepage to keeps your services in one place – on desktop and mobile. 

Understanding The Requirements

When deciding on what hardware you need for your server, you need to know what you're going to use it for.

Understanding The Requirements

Ourselves

When we approach technology projects – either as an individual or part of a larger community – there are many things we need to take into account.  There is one domain that has the potential to be overlooked in the grand scheme of things, but it is perhaps the most foundational essence of creation:

Who am I and how do I relate?

Our individuality makes it mark through our communities – friends, family, neighbors.  How we envision ourselves within technology informs how we will approach not only the problem at hand, but the ways we navigate ourselves.  We cannot build equitable systems by ourselves through nothing but isolation and grit.  

By grounding ourselves within this time and space, we can build relationships outside of ourselves.  Our continued growth – and our shifting place with our community – depends on the moments we take to reflect.  We connect ourselves to something greater.

Do you already know that your existence — who and how you are — is in and of itself a contribution to the people and place around you? Not after or because you do some particular thing, but simply the miracle of your life. And that the people around you, and the place(s), have contributions as well? Do you understand that your quality of life and your survival are tied to how authentic and generous the connections are between you and the people and place you live with and in?

— adrienne maree brown

Who Am I?

What Am I Doing?

How Do I Navigate?

How Do I Communicate?

Understanding The Requirements

Computer

What you're planning on doing with your server will dictate the hardware you'll need to fulfill those requirements.

1000000274.jpg

Raspberry Pi 4

1000006101.jpgDesktop Computer

When you're running one or two services, a Raspberry Pi would probably suffice, while running your own personal cloud services may require a refurbished desktop computer. 

Running a media server may require a faster processor, a decent graphics card and adequate storage space for digital media.  We provide "Quick-Start" examples to help you make up your mind.

Core Processor

Choosing the type of main processor you will use for your server is a core decision to building a server. 

1000001468.png

There are two primary families of processors designed and developed to meet specific criteria:

Desktop_windows

x86 Processor

Traditional computers – such as desktops, laptops and servers – use an evolution of the same processors first developed in the 1970s.  These x86 processors are named after the Intel 8086 that the architecture is based on.

1000006807.jpg

Traditional x86 processors utilize a Complex Instruction Set that is more equipped to juggle multiple tasks.  They focus on sustained processing power and can handle a larger workload. Traditional computers come with active heat management – such as fans or liquid cooling.

 

These types of computers are great for hosting your own personal cloud with a variety of services, such as OwnCloud, Jellyfin, qBittorrent, or media procurement services.

 

Mobile

ARM Processor

ARM (Advanced RISC Machine) is a new class of processors that are in the same family as the one that power your cellphone.

 

1000000265.webp

 

The Raspberry Pi – and other single-board computers – use this type of processor for their power efficiency.  On the flip side, they can't juggle running multiple programs like an x86 processor.  Without adding fans to cool them, these system-on-a-chip are susceptible to overheating.

 

These extremely cost-effective systems are great hosting a single service – such as a personal website, BitWardenHome Assistant or Grocy.  

Graphics Processor 

When it comes operating a server, graphics cards can be leveraged by certain applications.  Compared to computational processors, graphics cards have the ability to run many processes in parallel.  This is a great advantage for image and video processing, as well as data analysis and number cruching. 

Within modern computer systems, there are two classes of graphics processors.

Memory

Integrated Graphics

Many modern processors come with graphics cards directly embedded into the processor.  This provide enough power for basic operations – such as running a web browser or basic image editor. 

 

Integrated graphics cards share hardware resources with the processor decreasing their overall power.  They may not be robust enough for complex image or video processing tasks.

 

1000001481.jpg

 

Modern desktop systems can be modified to add more graphical processing power.  Most single-board computers – like the Raspberry Pi – cannot be modified to increase their graphic processing.

 

1000000265.webp

 

While Raspberry Pi computers are useful for small computational tasks, they can often lack the graphical processing necessary to do complex image processing tasks. These computers do not dedicated graphics processors and instead rely on a "system-on-a-chip" that shares graphical and computational power. 

 

Developer_board

Dedicated Graphics

Traditional computers have a powerful advantage here because they are so customizable.  Thanks to the extensible PCI-e interface, additional graphics processor – or a graphics cards – with much more dedicated power can be installed. 

 

1000006094.jpg

Dedicated graphics cards have specialized cores that allow them to convert videos more efficiently than a CPU. In addition, they come with their own memory to lessen the strain on the rest of the computer system's hardware.

 

1000001487.jpg

 

These can be helpful for tasks that deal with images and videos – such as Jellyfin processing a movie for streaming through a media server.



Recommended Specs

Acute

Released

2016 or newer

Speed

Processor Speed

1.0GHz or higher

Memory

Memory Capacity

4GB or higher

Developer_board

Expansion Interface

PCI-e 3.0 or newer

Memory 

The amount and speed of Random Access Memory – or RAM – can affect the responsiveness of your server.  Your server will need more memory when it needs to juggle multiple services at once. 

Memory

Integrated Memory

Single-board computers have memory that is built directly into the hardware board and cannot be upgraded after the initial purchase. 

 

1000000265.webp

They often use a "low-powered" variant of memory called LPDDR that can decrease its overall speed and responsiveness during multitasking.

 

Developer_board

Extensible Memory

Traditional computers use the DDR class of RAM that has been progressively updated since the 1990s – currently up to DDR5. Each successor is not backwards compatible, but provides sizable advancements over previous iterations. With these systems, memory can be upgraded by purchasing RAM modules of the same type and speed.

1000006093.jpg

1000000266.jpg

Storage

There are three types of storage hardware that are employed to fulfill server needs:

Hard_drive

Platter Disks

These are based on an older, well-tested technology originating in the 1950s. Modern hard disk drives commonly use the SATA protocol.

1000006088.jpgPlatter Hard Disk Drive

ports-SATA-motherboard.webp

SATA Port

They are slower, but can hold up to 20TB of storage on each drive – making them great for longer-term multimedia or document storage.


Hard_drive

Solid State Disks

These use the newer solid state memory standard popularized by the smart phones.  SSDs are incredibly fast, but spacr comes at a premium. 

 

1000001484.jpg

SATA Solid State Drive

These drives can use the SATA protocol like traditional hard drives, but they are increasingly available using an M.2 port.  These "Non-Volatile Memory express" – or NVMe drives – transport data over the speedy PCIe interface.

 

1000006092.jpgNVMe Solid State Drive

m2mkey.jpg

M.2 Port

Solid state drives, especially NVMe drives, are the best option for storing the operating system and other configuration files.  When hosting a media server – such as Jellyfin, Audiobookshelf or Kavita – storing databases, metadata, and other cache files on an SSD can greatly improve the media server's responsiveness.

 

Hard_drive

Flash Disks

When using a Single-Board computer – such as the Raspberry Pi – the primary operating system is typically stored on a MicroSD flashcard. 

 

 

1000000267.jpg 1000000268.jpg

These use classification systems to gauge their overall speed and performance. These are signified by symbols on the SD card and it's packaging. They are used to ensure performance with certain devices – like cameras or cell phones.

 

Two common certification are:

 

1000000270.png

Speed Class

1000000271.png

UHS Speed Class

For the best performance, Raspberry Pi recommends a Speed Class of C10 – or a UHS Speed Class of U1.  These provide a guaranteed transfer speed of 10MB/second.  

Graph/table of different speeds SD, HDD, SSD, nvme, ram

Type Read Speed Write Speed Capacity
MicroSD C1 10 — 100 MB/s 10 — 100 MB/s 16GB — 1TB
MicroSD U1 10 — 100 MB/s  10 — 100 MB/s  16GB — 1TB
SATA HDD 80 — 160 MB/s 80 — 160 MB/s 250GB — 32TB
SATA SSD 200 — 600 MB/s 200 – 600 MB/s 250GB — 20TB
NVMe SSD 5000 MB/s 6000 MB/s 120GB — 4TB
RAM 40 GB/s 40 GB/s 4GB — 512GB

Depending on the form factor, there is a variability in both the types and quantity of storage connectors. Compact PCs often support one or two drives, while a full computer case can often accommodate more.

1000000275.jpg

Each of these storage drive technologies are also available to be used as an external disk over a USB, Thunderbolt or eSata connection.  This expands storage options beyond what will fit inside of the computer case.  However, external drives can create a "bottleneck" where speed and efficiency become limited, so they should not be used for system files.

When hosting multiple services from a single server – such as a personal Jellyfin media server and a public WordPress site – it can be advantageous to store each of their files on seperate storage drives.  This has security benefits, as well as balances the load across multiple drives to avoid a bottleneck.

Similarly, storing sporadically accessed files – like your multimedia – on traditional platter drives allows them to conserve power by turning off hard disks that haven't been used recently.


Recommended Specs

Terminal

Operating System

SSD 150GB or greater, NVMe or SATA

Manufacturing

Service Files

SSD 150GB or greater, NVMe or SATA

Subscriptions

Multimedia & Documents

HDD 2TB or greater, SATA


Connectivity

A network-connected server should be connected to your router with a hard-wired Cat6 Ethernet cable. 

Settings_ethernet

Wired Connection

Your Network Interface should have a 1Gbit or preferably 2.5Gbit connection speed.  This is the throughput available within your Local Area Network and is separate from your ISP speed.

 

1000001488.jpg

Ethernet cables use a classification system to ensure speed and reliability over certain distances – such as Cat5, Cat6 or Cat8.  When possible, using Cat6 Ethernet cables will provide reliable performance over short distances.


1000000278.jpg 1000000279.jpg


Wifi

Wireless Connection

Wi-Fi should be avoided while running a server where reliability is crucial.  When not in use, disabling the wireless card improves security by decreases unintended means of access.

 

Bluetooth

BlueTooth

This can be used to connect smart devices to Home Assistant, but is not crucial for any server functions.  When not in use, it should be completely disabled because BlueTooth hacking is a common avenue for exploitation when left on.

 

Usb

External Wired Connections

There are many protocols and connectors that can be used to attach additional peripherals – like USB, eSATA, Thunderbolt, USB 3.0, and FireWire. 

 

These can be used to attach hardware peripherals to a computer through a physical, wired connection.  Ranging from hard drive storage to a ZigBee adapter for smart home devices, external connectors are how you can expand your server outside of its case.



Understanding The Requirements

Power

Operating a server requires electricity to power all of the running parts – from the server itself to the electronics that maintain your Internet connection or attach external storage disks.  By choosing to self-host, we not only retain digital autonomy but can consider our effect on the ecosystems around us.

When paying your power bill, wattage is how we quantify how much energy is being used per second.  The power draw of a device is measured over time – typically expressed as kilowatt-hours or kWh.  Utility companies offer consistent access to power by the kilo-watt hour, generated from both renewable and consumable fossil fuels

Energy can comes from many sources and some are harmful.  Learn more about where your energy comes from.

Home electronics are made to work with standard power outlets and do not require much conscious planning – plug a device in and it just works. Despite this, electronics must have information about their power requirements right on them.  This can help estimate how much an always-on computer costs to operate per payment cycle.

Power Consumption 

Power Supply Units – or PSUs – provide electricity to individual components within a computer.  These specify the wattage that the power supply can draw during a heavy work load.  This is only maximum possible power draw and isn't an indication of how much power the computer will consume while idle.

1000000324.jpg

Each component connected to the PSU will need to draw power in order to function and every computer has different parts.  The exact amount fluctuates based on their workload and the function being performed – converting a video requires more power than inputting text into a text editor.  An operating system manages power, putting idle parts to sleep – or a low-power mode that conserves electricity.

Servers can draw a lot of power at once and should be plugged directly into a wall socket, not a power strip or extension cable.

CPUs and GPUs generally require the most power, but parts designed for mobile devices are extremely efficient.  By exploring the average power usage for computer components – both idle and under load –you can estimate how much power the server will consume over the course of a day.

Power Consumption in Watts

Component 
Idle Under Load
Motherboard 15 25 — 100
Desktop CPU 10 — 30 75 – 250
Desktop GPU 10 — 50 200 – 500
Mobile CPU

5 — 15

15 — 65
Mobile GPU 10 — 100 35 — 150
Hard Disk Drive 5 5 — 15
Solid State Drive 1 1 — 5
RAM module 2 2 – 5

These numbers are the instantaneous power usage by the computer – measured in watts.  These are a helpful baseline, but power draw will fluctuate.  When not actively in use, a modern system might consume around 100W. Office tasks like browing the web or writing an email may require 250W, while a graphic-intensive video game could draw up to 800W. 

Want a better idea?  Try out pcpartpicker.com and add your exact components.

When connecting your server to the Internet, the modem and router will also consume electricity.  While this may be a lot less than a server, that power still needs to be accounted for.  These devices will also draw more power when under a heavy load – such as streaming multiple videos.

Graph comparison of device wattage

Power Consumption in Watts

Device Idle Under Load
Raspberry Pi 5 3 3 — 7
Laptop 5 30 — 200
Mini PC 5 — 20 20 — 400
Desktop PC 35 — 100 150 — 300
Workstation 75 — 150 300 — 800
Wi-Fi Router 5 5 — 20
Modem 5 5 — 20

Want to be exact?  Try out a digital power meter to find your exact energy usage.

Cost Estimates

Once we have a better idea how much energy we'll require – in the form of wattage – we can estimate how much power that will consume over the course of an entire day. 

Don't want to do math?  Try out this wattage calculator from EnergyBot.

You calculate this by multiplying the total wattage you estimated by the number of hours a day the server will be drawing power.  This will be 24 hours per day.  We now have our wattage per hour. Finally, we can divide this number by 1000 to achieve our kilowattage per hour.

E(kWh/day) = P(W) × t(h/day) / 1000(W/kW)

A 200 watt Mini PC will use 4.8 kWh per day – or 144 kWh per month – when left running all day, every day.

Knowing the kilowatt hours consumed by the server, you can estimate the monetary cost per day.  Your utility provider will list the exact unit price per kW/h on your account summary or service bill. 

The cost of energy varies widely across the country – depending on a host of factors – and ranges all the way from $0.10 to $0.43 per killowat-hour.  Energy rates for homes and residences are often higher than prices for businesses due to the economy of scale.

1000000322.jpg

With this information, it's simple to calculate a monetary cost.  By multiplying the cost per kilowatt by the quantity of kilowatts, we arrive at the final cost.  When estimating per month, we can see how much our server affects our monthly bill.

Energy costs $0.12 per kWh in Washington State and a 200 watt computer uses 144 kWh over 30 days.  This means that it costs $17.28 per month to run an always-on server.

Understanding The Requirements

Internet

You will need internet access for your home server and the devices connecting to it. Your Internet Service Provider (ISP) is the primary factor leading to the quality and stability of your server connection.

Connection

Outside of your hardware, your internet connection dictates how many people can access your server as well as their connection quality, stability and uptime.  There are many different consumer options for connecting your home to the World Wide Web.

stylus_laser_pointeR

Fiber

One of the fastest connections available, this uses flashing light to transmit data over long distances.

 

Cable

Cable

Fast and cost-effective, this connection uses television infrastructure to transmit data to an internet provider.

 

satellite_alt

Satellite

Available even in remote areas, this connection occurs through satellites in orbit around the planet.

 

Wifi_tethering

Wireless Broadband

This allows devices to connect to a wireless network broadcast over a large area by an service provider.

 

settings_phone

DSL

One of the first consumer options, this connection uses telephone infrastructure to transmit data.

 

Signal_cellular_alt

Mobile Broadband

Quickly gaining in popularity, this internet option uses wireless cellular data infrastructure to create a local area network for your devices.

 

Hardwired internet connection – such as cable or fiber – are preferred because they are more reliable.  Wireless connections – like satellite and mobile broadband – can be heavily reliant on other external factors like congestion and weather.

Exact upload and download speed requirements will depends on what services you're hosting, as well as how many people will be accessing them.  Hosting a home server serving your immediate family, here is a good starting point:

Download

Download

Minimum: 200Mbps

Recommended: 1,000Mbps

 

This will be most important for downloading data from the internet – such as multimedia, metadata and updates.  Internet bandwidth will be shared between every internet-connected device in your home, so it's important to have enough to go around.

 

Upload

Upload

Minimum: 20Mbps

Recommended: 200Mbps

 

This will primarily be used to share multimedia and files outside of your home – like friends, family on the World Wide Web.  Residential internet connections often provide significantly lower upload bandwidth than download under the assumption that you will not be running a personal server.

 

Gigabit connection speeds are recommended for hosting media servers, but low-bandwidth websites that don't serve many images or videos may perform acceptably at slower speeds.

Depending on your Internet service provider and connection type, there may be restrictions on how data can be transmitted outside your network. 

Self-Hosting

You are not breaking any laws by self-hosting a server at home.  However, not all ISPs expressly permit web hosting from residential internet connections.  While a few embrace self-hosting, many others choose not to advertise the feature.  Unfortunately, ISPs are increasingly blocking the ability to host a Web server from home.

Each Internet Service Provider has their own rules and regulations about server hosting on residential contracts.  Business contracts are more costly, but often explicitly allow web-hosting and provide features explicitly to support it.

Your provider may have additional stipulations regarding the nature of the content you can host.  Self-hosting personal services may draw less attention than for-profit commercial storefronts or public discussion forums.  Controversial content may be explicitly censored as a result of your Internet Service Provider contract.

Before proceeding, you must understand the terms of your agreement with your internet service provider. 

Restricted Access

If your ISP blocks web server hosting, there are still options to connect while away from home.  These vary in cost, complexity and contractual concerns:

Contract

Commercial Contract

When feasible, purchasing a business plan with your ISP may expressly permit web hosting.  This may be available at your current residence and would provide added benefits – such as a static IP address.

 

Private_connectivity

CloudFlare Tunnel

This method allows your server to communicate with the CloudFlare service without needing to directly connect it to the World Wide Web.  This circumvents the block by channeling web-based traffic through the CloudFlare remote servers first.  They explicitly forbid using this service for transferring multimedia.

 

Vpn_lock

Virtual Private Network

Hosting your own VPN server – or utilizing the one built into your router – will allow your devices to remotely connect to your Local Area Network.  This means that your devices can interact with your server as if you were at home.

Understanding The Requirements

Router

You will need a relatively modern router to connect your server to the Internet – through the publicly accessible World Wide Web or a Virtual Private Network to securely connect while away from home.

There are open hardware router options like the Turris Omnia and the OpenWRT One, but they can be expensive or require construction.  Consumer routers may work with open firmware like OpenWRT and FreshTomato, but the installation process can be tedious – especially with no prior experience.

1000006831.jpg 1000006832.jpg

Thankfully, most modern routers will fulfill the requirements to host your own home server.  Mainstream manufacturers – such as TP-Link, Netgear, and ASUS – offer routers that cover the gamut between performance and price.

When using a mesh router, connecting your server to the hub closest to the modem will provide the best performance. 

When investigating a router that can be used to host a personal server, these are the features required:

Alt_route

Port Forwarding

You will need a router that supports Port Forwarding to allow traffic from outside the internet to be routed to your server within your Local Area Network.

1000000281.jpg

1000000283.jpg

1000000282.png


Routers provided by your Internet Service Provider – especially leased or rented equipment – do not always support forwarding port 80 and 443.  This is to discourage self-hosting a web server from home.  These ports are required for hosting an accessible web server. 

While it is not illegal to host a server from home, your Internet Service Provider may restrict self-hosting a web server through a residential connection contract.  You may be able to circumvent this by using an aftermarket router, but it may be considered a breach of contract.

 

Diamond_shine

Quality of Service

QoS (Quality of Service) enables you to give bandwidth priority to your server and other computer. Many consumer routers allow you to set the theoretical bandwidth provided by your Internet Service Provider and leverage that information to ensure that specific network devices have a minimum Internet bandwidth.

1000000280.png


 

Vpn_lock

Virtual Private Network 

The option to configure your router as both a VPN Server and VPN Client is becoming more common.  A Virtual Private Network allows devices and networks to securely connect to each other over the open internet.

When acting as a server, your router makes it simple to connect to your Local Area Network, even while away from home.  This will allow you to access your self-hosted services without making them available to the open Internet.

While acting as a VPN server, you can connect to a VPN service you subscribe to – such as Proton VPN, Mullvad, and IVPN.  This will hide all of the traffic on your Local Area Network behind the VPN service.

This can transmit a lot of data through your VPN provider.  Make sure your plan has the monthly bandwidth to accommodate every device in your home.

1000006921.png

1000006922.png

Untitled-1.png



Dns

Dynamic DNS

Many modern routers provide a Dynamic DNS service, such as ASUS, TP-Link and Netgear.  This allows you to connect to your home server as a subdomain of their service instead of buying your own domain.


Understanding The Requirements

Cables & Accessories

Aside from the primary hardware – such as the server computer and a router to connect it to the Internet – we will also need miscellaneous cables and accessories to get everything setup. 

Display

Our server will be "headless" – meaning we will be able to control it remotely over the network without using a keyboard, mouse or display.  However, we will still need a display during the initial installation process or while troubleshooting.

Desktop_windows

Display

You will need a compatible display with a resolution greater than 640x480.

 

Cable

Cables

You will need any applicable power cables or adapters.  Similarly, we will need a compatible cable for connecting the display to our server.

Input Devices

While we will be accessing our server remotely, we need some human interface devices – such as a mouse and keyboard for controlling the computer.

Mouse

Mouse

You will need a compatible USB mouse.

 

Keyboard

Keyboard

You will need a compatible USB keyboard.


Networking

We explored the router as an important piece of networking equipment, but there are other components that we will need to host a server.

Settings_ethernet

Modem

When you pay for access to an Internet Service Provider, they may lease or sell a modem that provides access to their service.  Some ISPs also allow customers to purchase their own modem hardware.

 

Keyboard

Cables

You will need at least two Category 6 Ethernet cables. These can handle blazing fast 2.5Gbit connection speeds over short cables while still maintaining minimum 1GBit speeds over distances of up to 100 meters – or 328 feet.

External Storage

Computer systems are equipped with internal storage drives for storing the operating system, as well as your applications, files and media.  When setting up and running a server, external storage devices are just as important.

These storage devices will be erased and any important data should be backed up.

Security_key

Flash Drive

We will need a USB Flash Drive to install the operating system on our computer and enable us to install server applications.  This will need to be at least 8GB to fit the free Debian Linux image we will be downloading. 

 

Hard_drive

External Storage Drive

Connecting an external hard drive to our server – using USB, eSata or Thunderbolt – can expand your storage beyond what will fit inside your computer case.  

 

Even more importantly, an external hard drive provides an easily accessible option for creating backups in the event there is a systems failure.


Understanding The Requirements

Domain

You will need a domain name – such as example.com – to directly access your services from outside your Local Area Network (LAN).  We will using this domain name to forward traffic to our Public IP address on the Wide Area Network (WAN).

You can also access your services away from home without a domain by using a VPN.  Using a domain name can add a level of convenience for accessing your own services while still restricting access to your local area network.

Web Domain

Domain names are purchased through a domain registrar and there is a wide potential price range. Registrars often algorithmically assign prices for available domains based on expected popularity and ICANN registration fees.  

Dynamic DNS 

There are also free services that allow you to register an account and link your web server to their domain as a subdomain – such as DuckDNS or a similar Dynamic DNS service on your router.  These give you a sub-domain name to use – such as user.duckdns.org – that can be automatically updated to point at your server.

Understanding The Requirements

VPN Provider

Your Internet Service Provider has the power to see information about the websites and data services you access while using their modem. While they cannot see the data being transmitted, they can see the servers you connect to. This is often used to build user profiles for targeted advertising or enforcing copyright law on peer-to-peer traffic.


Aggregation

We can lessen this by creating a private, encrypted tunnel to a VPN server connected elsewhere in the world. This will not provide total anonymity, but it can help obscure your traffic and make it harder to tell your traffic from other clients.

Behind a Virtual Private Network, your ISP can see that you've connected to a remote server but the traffic between is encrypted. Your web data is aggregated with other users to make your traffic less traceable back to you. This can also channel your Internet traffic to a specific geographic region.


If you're looking for additional privacy from your internet service provider – such as downloading files with qBittorrent or obscuring your AdGuard Home lookups – then a VPN service could be an option. Gluetun can connect individual containers to your VPN allowing you to circumvent geo-restrictions by changing your location – such as a MeTube server that can access Swedish internet content.

Learn more about the advantages of using a VPN provider.


Privacy Assurance

Not all VPNs are created equal and they have the same opportunities to snoop on your data just like your ISP. They may store logs and submit them to law enforcement agencies when asked. If they don't follow industry practice, they may have their databases hacked. Some providers have been implicated in data collections for government surveillance purposes. Others use your data to build user profiles they can sell to brokers.

1000006921.png

1000006922.png

Untitled-1.png

VPN providers can, however, volunteer for third-party audits to ensure consumer privacy and build community trust. Privacy Guides is a non-profit that educates about personal privacy and independently reviews service providers. They recommend Proton VPN, Mullvad, and IVPN services.

About the Author

This library was created to advocate for technological freedom, equal access and transformative social justice.  The creator is a designer, developer and information scientist who was shaped by open-source technologies.

Story

Motivation

Teaching Objectives

Philosophy 

Next Steps

Now that we have a better understanding of the project we're undertaking and the hardware that will be required, we can purchase and begin to setup our hardware.

host