A lightweight self-hosted backup web application built using Node.js, Express, and Multer, deployed on a personal Ubuntu home server (old laptop).
This project allows file uploads to a local server directory and provides HTTP access to uploaded files.
This application was built as part of a home server setup project to:
- Practice backend development
- Learn Linux server management
- Implement file upload handling
- Understand static file serving
- Deploy and manage applications on Ubuntu
- Node.js
- Express.js
- Multer (File Upload Handling)
- dotenv (Environment Variables)
- Ubuntu Desktop (Home Server)
- CORS
- Files are uploaded using
multipart/form-data - Files are stored inside a configured server directory
- Uploaded files are accessible via:
🧪 Running the Project
-
Install dependencies npm install
-
Start the server node server.js
Server runs at: http://localhost:5000
This is a personal learning project. If exposed to the internet, improvements should include:
-
Authentication (JWT or sessions)
-
File type validation
-
Rate limiting
-
HTTPS (Nginx + Let's Encrypt)
-
Private file access control
This app is deployed on a home server using Docker Compose and a self-hosted GitHub Actions runner.
Mark Lester Laroya
