← All projects

PROJECT 01 / INFRASTRUCTURE

Prime Server.

How a simple Python experiment became my personal server—and what building it taught me about networking, storage, authentication and security.

PYTHONFASTAPILINUXHTTPSLEARNING IN PUBLIC

STATUS: WORKING PROTOTYPE · THIS IS A DEVELOPMENT STORY, NOT A PRODUCTION DEPLOYMENT GUIDE

illustration / prime-server
$ python -m uvicorn main:app --host 127.0.0.1 --port 8000
INFO: Application startup complete.
$ curl http://127.0.0.1:8000/
{"message": "My first server"}

Illustration only. Actual screenshots are not included until reviewed for sensitive information.

01 / THE IDEA

Why I started.

I wanted a personal server I could learn from: a place to experiment with accessing files, connecting my own devices and understanding how network services fit together. I started small instead of trying to build everything at once.

For students: Your first project does not need expensive hardware. Start with a problem you care about and a tiny working version.

02 / THE BUILD

From first request to a working prototype.

01

Learn HTTP and Python

Experimented with simple local services and learned how browsers and clients send requests.

02

Build file operations

Used FastAPI to develop file upload, listing and deletion routes, then tested the responses.

03

Connect devices

Experimented with SFTP and SMB to understand file access across my own devices.

04

Add a dashboard and HTTPS

Developed a dashboard, login flow and a local TLS setup. Network and certificate configuration required additional troubleshooting.

05

Think about permissions

Started designing clearer boundaries for device access and future AI integrations, with file changes reserved for human control.

03 / HOW IT FITS TOGETHER

A simplified architecture.

This is a conceptual diagram, not a disclosure of my real network configuration. The ORVIAN website is hosted separately and does not connect to Prime Server.

04 / REAL LEARNING

What went wrong—and what I learned.

HTTPS didn't work immediately

Certificates, listening addresses, firewall rules and forwarding all affect connectivity. I learned to test each layer rather than changing everything at once.

Storage needs deliberate organization

File uploads are only one part of the problem. Permissions, backups and restore testing matter just as much.

More features create more responsibility

Every new service introduces configuration and access decisions. Keeping permissions narrow makes the system easier to reason about.

Documentation note: Real screenshots, dates and exact code excerpts should be added only after reviewing them for credentials, internal addresses and private file names.

05 / YOUR TURN

Build your first local server.

This beginner exercise uses Python's built-in HTTP server. It runs on your own device only and does not require opening router ports.

  1. Create a folder
    mkdir my-first-server
    cd my-first-server
  2. Create an HTML file

    Save this as index.html in the folder:

    <!doctype html>
    <html lang="en">
    <head><meta charset="utf-8"><title>My server</title></head>
    <body><h1>My first server works!</h1></body>
    </html>
  3. Run the server
    python -m http.server 8080 --bind 127.0.0.1

    Some Linux installations use python3 instead of python.

  4. Open your browser

    Visit http://127.0.0.1:8080 on the same device. You should see your heading. Press Ctrl+C in the terminal to stop the server.

Challenge: Change the heading, refresh the page and explain what the browser requested. Keep this exercise local; this built-in server is not intended for public production hosting.

06 / WHAT'S NEXT

Keep building.

My next documentation goals are to add verified screenshots alongside the concept design, explain the dashboard design, and publish a separate beginner lesson on HTTP requests and FastAPI routes.

Explore beginner lessons ↗Back to projects →