Git Product home page Git Product logo

storagebox's Introduction

StorageBox

StorageBox a simple file storage service.

Tech Stack

  • Next.js
  • React Query
  • Uppy with Tus Plugin for resumable file uploads
  • Shadcn-ui and Tailwind CSS for components and styling
  • Go (Gin Framework) for the backend with Tus for resumable file uploads
  • Postgres (primary database) and Redis (rate limiting)
  • Prisma as an ORM
  • Grafana, Prometheus for server statistics with node_exporter
  • Ansible for automating server provisioning
  • Nginx as a reverse proxy
  • Docker and Docker Compose for containerizing all the 7 services required to run this project

Services (docker-compose.yml)

  • postgres: Primary DB, port 5432.
  • redis: Rate limiting, port 6379.
  • server: Backend server responsible for application logic, port 4001.
  • website: Front-end website for user interaction, port 4000.
  • prometheus: Prometheus for storing and monitoring metrics data, port 9090.
  • grafana: Grafana for visualizing and analyzing metrics, port 3000.
  • node_exporter: Node Exporter for collecting system-level metrics, port 9100.

How to Run Locally

Requirements

To run the project locally, follow these steps:

  1. Clone the project: git clone https://github.com/AlandSleman/StorageBox

  2. Change to the server/ directory. Copy the contents of the .env.example file into a new file named .env. Default values will work for running locally.

  3. Change to the website/ directory. Copy the contents of the .env.example file into a new file named .env. Default values will work for running locally.

  4. Run the following command to spawn the Docker containers: docker-compose up

Make sure to visit localhost:3000 login with the default credentalsuser:admin, pass:admin, and configure Grafana by following these steps:

  • Add the Prometheus data source Home > Connections > Data sources The URL would be http://prometheus:9090.

  • Import the Node Exporter dashboard Home > Dashboards > Import dashboard the dashboard ID would be 1860.

How to Run on a VPS

Requirements

To run the project on a VPS, follow these steps:

  1. Clone the project: git clone https://github.com/AlandSleman/StorageBox

  2. Change to the server/ directory. Copy the contents of the .env.example file into a new file named .env.

  3. Change to the website/ directory. Copy the contents of the .env.example file into a new file named .env.

  4. Change to the ansible directory and edit vars.yml to your own values. This file contains the variables used for configuring Nginx with Ansible.

  5. You'll also need to update the Nginx maximum upload limit. The default is 1MB. Refer to this guide to update the limit.

  6. Change to the ansible/ directory and run the following command to run the Ansible playbook: ansible-playbook playbook.yml

This playbook will install the required software, spawn Docker containers, and configure Nginx for you. You may also need to configure your firewall. Please note this playbook has only been tested on Linux(Ubuntu).

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

License

This project is licensed under the MIT License.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.