百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
M

myDrive

> 编程语言
开源

Node.js 和 MongoDB Google 云端盘克隆

4.2K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

Node.js 和 MongoDB Google 云端盘克隆

# ## Index - [Features](#features) - [Tech stack](#tech-stack) - [Running](#running) - [Docker](#docker) - [Non-Docker](#non-docker) - [Common installation issues](#common-installation-issues) - [Screenshots](#screenshots) - [Video](#video) - [Live demo](#live-demo) - [Feature requests/bug reports](#bugs) - [Updating from a previous version of myDrive](#updating) - [Known issues and future improvments](#known-issues) ## ⭐️ Features - Upload Files - Download Files - Upload Folders - Download Folders (Automatically converts to zip) - Multiple DB Support (Amazon S3, Filesystem) - Photo, Video Viewer and Media Gallery - Generated Photo And Video Thumbnails - File Sharing - PWA Support - AES256 Encryption - Service Worker - Mobile Support - Docker - Email Verification - JWT (Access and Refresh Tokens) ## ‍ Tech Stack - React - Typescript - Node.js - Express - MongoDB - Vite - Jest ## Running ### Docker > [!IMPORTANT] > Requirements > - Docker > - MongoDB (optional, comes with `docker-compose.yml`) #### **Docker Compose** 1. Make folder for docker-compose.yml and env file. 2. Copy [`docker-compose.yml`](./docker-compose.yml) and [`.env.example`](./.env.example) to your directory. 3. Rename `.env.example` to `.env` and fill in / change the values. 4. Run the following command: ```sh docker compose up -d ``` 5. Access the app at `http://localhost:3000` --- #### **Docker Run** 1. Pull the image ```sh docker pull kylehoell/mydrive:latest ``` 2. Run the image Using `.env` file. Copy the `.env.example` file and fill in the values. ```sh docker run -d \ -p 3000:3000 \ --env-file ./.env \ -v /path/example/mydrive/data/:/data/ \ -v /path/example/mydrive/temp/:/temp/ \ --name mydrive \ kylehoell/mydrive:latest ``` Or directly pass in the environment variables ```sh docker run -d \ -p 3000:3000 \ -e MONGODB_URL=mongodb://127.0.0.1:27017/mydrive \ -e DB_TYPE=fs \ -e PASSWORD_ACCESS=secretaccesspassword \ -e PASSWORD_REFRESH=secretrefreshpassword \ -e PASSWORD_COOKIE=secretcookiepassword \ -e KEY=encryptionkey \ -e VIDEO_THUMBNAILS_ENABLED=true \ -e TEMP_VIDEO_THUMBNAIL_LIMIT=5000000000 \ -v /path/example/mydrive/data/:/data/ \ -v /path/example/mydrive/temp/:/temp/ \ --name mydrive \ kylehoell/mydrive:latest ``` 3. Access the app at `http://localhost:3000` ### Non - Docker > [!IMPORTANT] > Requirements > - Node.js (20 Recommended) > - MongoDB (Unless using a service like Atlas) > - FFMPEG (Optional, used for video thumbnails) > - build-essential package (If using linux) 1. Install dependencies ```sh npm install ``` 2. Create Environment Variables You can find enviroment variable examples under:
[`backend/config`](backend/config) -> Backend Enviroment Variables [`src/config`](src/config) -> Frontend Enviroment Variables Simply remove the .example from the end of the filename, and fill in the values. > Note: In most cases you will only have to change FE enviroment variables for development purposes. 3. Run the build command ```sh npm run build ``` 4. Start the server ```sh npm run start ``` #### Possible installation issues Make issue ```sh npm error gyp ERR! stack Error: not found: make ``` This is because you do not have the build essentials installed which is required for Linux. You can install them by running the following command: ```sh sudo apt-get install build-essential ``` Memory issue ```sh Aborted (core dumped) ``` When running the `npm run build` command it may take more memory than node allows by default. You will get the above error in such a case. To fix this, you can run the following command instead when building: ```sh NODE_OPTIONS="--max-old-space-size=4096" npm run build ``` You can read more about this issue [here](https://stackoverflow.com/questions/38558989/node-js-heap-out-of-memory). ## Screenshots Modern and colorful design Upload Files Download Files Image Viewer Video Viewer Media Gallery Share Files Search For Files/Folders Move File/Folders Multi-select Custom context menu Trash ## Video I created a short YouTube video, showing off myDrives design and features: - UI and feature overview ") ## ️ Live demo [Demo](http://143.244.181.219:3000/) Note: Creating, deleting and other features are disabled in the demo. Also the service worker is not enabled in the demo, images thumbnails are not cached because of this. Also this is just a 512mb RAM droplet go easy on her. ## Bug reports and feature requests Please only open issues for actual bugs, feature requests or discussions should happen in Discussions or via my email. Contact Email: [email protected] ## ⬆️ Updating from a previous version of myDrive If you are upgrading from myDrive 3 there is some data migration and scripts you must run for myDrive 4 to work properly. > Run the migration script
> Note: Make sure you have env variables set ```sh npm run migrate-to-mydrive4 ``` Also, if you are updating from myDrive 3, or if you did not have video thumbnails enabled and would like to enable them now you can do so by running the following command:
Note: Make sure you have video thumbnails enabled in your env variables and FFMPEG installed. ```sh npm run create-video-thumbnails ``` ## Known issues and future improvments #### Issues - Video streaming does not always work, especially on Safari. - PWA downloads does not work on iOS (This may be a current iOS limitation and not a myDrive issue). - Upload folder will sometimes fail on complex folder structures. - Generating video thumbnails with the default method will often fail, requiring the whole file to be downloaded to temporary storage and then the thumbnail generated from that. #### Future improvments - OIDC Support (Top priority) - Option to disable encryption - File sync from a local device - An alternative to using mongoDB - Dark mode - Enhance service worker, currently only caches thumbnails. This includes potentially adding offline support. - Typescript type cleanup - Better error handling - Logging - More test coverage (currently only basic backend tests) - Some tailwind classes still need some slight tweaking

GitHub Issues· 0 开放

在 GitHub 查看全部

暂无开放 Issues,或尚未同步最近议题。

核心特点

  • •Features
  • •Tech stack
  • •Non-Docker
  • •Common installation issues
  • •Screenshots
  • •Live demo
  • •Feature requests/bug reports
  • •Updating from a previous version of myDrive
  • •Known issues and future improvments
  • •Upload Files

> 标签

TypeScript

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言