psitransfer

Simple open source self-hosted file sharing solution.

Stars
1.32K
Forks
212
Open issues
70
Closed issues
118
Last release
over 1 year ago
Last commit
5 months ago
Watchers
1.32K
Total releases
13
Total commits
224
Open PRs
15
Closed PRs
34
Repo URL
Platform
Category
Usecase
Offers premium version?
NO
Proprietary?
NO
About

PsiTransfer

Simple open source self-hosted file sharing solution. It's an alternative to paid services like Dropbox, WeTransfer.

  • No accounts, no logins
  • Mobile friendly responsive interface
  • Supports many and very big files (Streams ftw)
  • Resumable up- and downloads (tus.io)
  • Set an expire-time for your upload bucket
  • One-time downloads
  • Download all files as zip/tar.gz archive
  • Modal-style file preview
  • Requires Node >=7.4 or use --harmony-async-await flag
  • Password protected download list (AES)
  • /admin Page lists bucket information, Screenshot (disabled until you set adminPass config value)
  • Lightweight Vue based frontend apps. Gzipped (on by default) less than 100k
  • Explicit named bucket IDs with query param sid=<myBucketID>

See the blog posts about PsiTransfer: https://psi.cx/tags/PsiTransfer/ and checkout the Documentation

Quickstart Docker

$ docker run -p 0.0.0.0:3000:3000 -e PSITRANSFER_ADMIN_PASS=secret -v $PWD/data:/data psitrax/psitransfer

data volume needs UID 1000

$ sudo chown -R 1000 $PWD/data

Specify the version by using image tags e.g.:

  • latest: corresponds to master branch
  • 2: latest stable 2.x.x
  • 1.1: latest stable 1.1.x
  • 1.0.0: exact version

Manual, precompiled

# Be sure to have NodeJS >= 12
$ node -v
v12.4.0

Download and extract latest release package from

https://github.com/psi-4ward/psitransfer/releases

Install dependencies and start the app

$ NODE_ENV=production npm install $ npm start

Manual, from source
# Compile the frontend apps
$ cd app
$ npm install
$ npm run build

Install dependencies

$ cd .. $ npm install $ npm start

Configuration

There are some configs in config.js like port and data-dir. You can:

  • Edit the config.js (not recommend)
  • Add a config.production.js where production is the value from NODE_ENV See config.dev.js
  • Define environment Variables like PSITRANSFER_UPLOAD_DIR to set the upload directory
  • To secure your PsiTransfer if exposed to the internet from unwanted, non authorized uploads use the PSITRANSFER_UPLOAD_PASS environment variable

Customization

public/pug/upload.pug and download.pug are kept simple. You can alter these files and add your logo and styles. Please keep a footnote like Powered by PsiTransfer :)

Debug

Psitransfer uses debug:

DEBUG=psitransfer:* npm start
Side notes

  • There is no (end-to-end) payload encryption (yet).
  • Download all as ZIP does not support resuming the download.

:star2: Contribution is highly welcome :metal:

Want to say thanks and buy me a beer?

License

BSD

Alternative Projects
No projects found

Subscribe to Open Source Businees Newsletter

Twice a month we will interview people behind open source businesses. We will talk about how they are building a business on top of open source projects.

We'll never share your email with anyone else.