{"id":13806166,"url":"https://github.com/KryptXBSA/StorageBox","last_synced_at":"2025-05-13T21:32:27.797Z","repository":{"id":193920131,"uuid":"686985894","full_name":"KryptXBSA/StorageBox","owner":"KryptXBSA","description":"A Simple File Storage Service","archived":true,"fork":false,"pushed_at":"2023-10-18T09:44:41.000Z","size":25865,"stargazers_count":23,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-01T06:02:32.500Z","etag":null,"topics":["ansible","docker","docker-compose","gin","go","grafana","nextjs","nginx","tus-protocol","typescript","uppy"],"latest_commit_sha":null,"homepage":"https://storagebox.kurdmake.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KryptXBSA.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"License","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-09-04T11:17:22.000Z","updated_at":"2025-04-23T18:54:27.000Z","dependencies_parsed_at":"2023-10-16T04:42:20.662Z","dependency_job_id":"ee1b0393-df2b-4b6a-bdaa-8ca435434453","html_url":"https://github.com/KryptXBSA/StorageBox","commit_stats":null,"previous_names":["alandsleman/storagebox","kryptxbsa/storagebox"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KryptXBSA%2FStorageBox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KryptXBSA%2FStorageBox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KryptXBSA%2FStorageBox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KryptXBSA%2FStorageBox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KryptXBSA","download_url":"https://codeload.github.com/KryptXBSA/StorageBox/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254031308,"owners_count":22002742,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","docker","docker-compose","gin","go","grafana","nextjs","nginx","tus-protocol","typescript","uppy"],"created_at":"2024-08-04T01:01:08.455Z","updated_at":"2025-05-13T21:32:27.200Z","avatar_url":"https://github.com/KryptXBSA.png","language":"TypeScript","readme":"# StorageBox\n\nStorageBox a simple file storage service.\n\n**Tech Stack**\n\n- Next.js\n- React Query\n- Uppy with Tus Plugin for resumable file uploads\n- Shadcn-ui and Tailwind CSS for components and styling\n- Go (Gin Framework) for the backend with Tus for resumable file uploads\n- Postgres (primary database) and Redis (rate limiting)\n- Prisma as an ORM\n- Grafana, Prometheus for server statistics with node_exporter\n- Ansible for automating server provisioning\n- Nginx as a reverse proxy\n- Docker and Docker Compose for containerizing all the 7 services required to run this project\n\n**Services (docker-compose.yml)**\n\n- `postgres`: Primary DB, port 5432.\n- `redis`: Rate limiting, port 6379.\n- `server`: Backend server responsible for application logic, port 4001.\n- `website`: Front-end website for user interaction, port 4000.\n- `prometheus`: Prometheus for storing and monitoring metrics data, port 9090.\n- `grafana`: Grafana for visualizing and analyzing metrics, port 3000.\n- `node_exporter`: Node Exporter for collecting system-level metrics, port 9100.\n\n\n## How to Run Locally\n\n**Requirements**\n\n- Docker and Docker Compose: [Installation Instructions](https://docs.docker.com/get-docker/)\n\nTo run the project locally, follow these steps:\n\n1. Clone the project: `git clone https://github.com/AlandSleman/StorageBox`\n\n2. 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.\n\n3. 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.\n\n4. Run the following command to spawn the Docker containers: `docker-compose up`\n\n\nMake sure to visit `localhost:3000` login with the default credentals`user:admin, pass:admin`, and configure Grafana by following these steps:\n\n- Add the Prometheus data source `Home \u003e Connections \u003e Data sources` The URL would be `http://prometheus:9090`.\n\n- Import the Node Exporter dashboard `Home \u003e Dashboards \u003e Import dashboard` the dashboard ID would be `1860`.\n\n## How to Run on a VPS\n\n**Requirements**\n\n- Ansible: [Installation Instructions](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html)\n\nTo run the project on a VPS, follow these steps:\n\n1. Clone the project: `git clone https://github.com/AlandSleman/StorageBox`\n\n2. Change to the `server/` directory. Copy the contents of the `.env.example` file into a new file named `.env`.\n\n3. Change to the `website/` directory. Copy the contents of the `.env.example` file into a new file named `.env`.\n\n4. Change to the `ansible` directory and edit `vars.yml` to your own values. This file contains the variables used for configuring Nginx with Ansible.\n\n5. You'll also need to update the Nginx maximum upload limit. The default is 1MB. Refer to [this guide](https://stackoverflow.com/questions/26717013/how-to-edit-nginx-conf-to-increase-file-size-upload) to update the limit.\n\n6. Change to the `ansible/` directory and run the following command to run the Ansible playbook: `ansible-playbook playbook.yml`\n   \n  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).\n\n\n## Contributing\n\nContributions are welcome! Please open an issue or submit a pull request.\n\n## License\n\nThis project is licensed under the MIT License.\n\n\n","funding_links":[],"categories":["Apps"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKryptXBSA%2FStorageBox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKryptXBSA%2FStorageBox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKryptXBSA%2FStorageBox/lists"}