Home Self-host PSiTransfer – A Simple Open Source Self-hosted File Sharing Solution

PSiTransfer – A Simple Open Source Self-hosted File Sharing Solution

By sk
Published: Last Updated on 6.7K views

A while ago, we have described an easy and fast way to transfer and share files over Internet using Trasnfer.sh web service. Today, we are going to discuss a similar tool called PSiTransfer. It is a simple and open source file sharing utility used to share our files locally or globally from Linux. It's an alternative to paid services like Dropbox and WeTransfer. Unlike transfer.sh, it is not a website. It is actually a self-hosted file sharing platform. You can deploy it on your home system to share files over local area network. Or, you can deploy it on a VPS or Cloud, so that you can access or share your files from anywhere, using any Internet-enabled device. Since it comes with built-in web server, you don't need to deploy any other extra software. All you need is just a web browser to access or share your stuffs.

PSiTransfer Features

Concerning about features, we can list the following:

  • No account or login required.
  • Upload single or multiple files at once.
  • Upload very big files.
  • Resume upload or download.
  • Download files as zip/tar.gz archive.
  • Set an expire-time for your upload bucket.
  • One-time downloads.
  • Password protected download list.
  • Mobile friendly responsive interface.
  • Free and Open Source.
  • And more.

Now let me show you how to deploy a local file sharing solution using PSiTransfer in Unix-like operating systems.

Install PSiTransfer On Linux

PSiTransfer requires Node >=7.4 or later version in order to function properly. To install Nodejs on your Linux box, refer the following guide.

Once Nodejs, installed, go to PSiTransfer download page, and download the latest version. As of writing this, the latest version was 1.2.0.

$ wget https://github.com/psi-4ward/psitransfer/releases/download/1.2.0/psitransfer-1.2.0.tar.gz

Extract it using command:

$ tar zxvf psitransfer-1.2.0.tar.gz

It will extract all contents in a folder called "psitransfer-1" in your current working directory. Go to the folder:

$ cd psitransfer-1/

And, Install PSiTransfer using command:

$ NODE_ENV=production npm install

Finally, run the following command to start PSiTransfer:

$ npm start

Sample output:

> psitransfer@1.0.0 start /home/sk/psitransfer-1
> NODE_ENV=production node app.js

PsiTransfer listening on http://0.0.0.0:3000

Allow the port 3000 via your firewall or router in order to access the PSiTransfer dashboard from a remote system.

On RPM based systems, use the following command to allow port 3000.

$ sudo firewall-cmd --permanent --add-port=3000/tcp

Restart firewalld to apply the changes.

$ sudo firewall-cmd --reload

If you use UFW firewall, then run the following command as sudo user to allow the port 3000.

$ sudo ufw allow 3000

How To use PSiTransfer file sharing solution in Linux

Open your web browser and navigate to http://IP-address:3000 or http://domain-name:3000.

This is how PSiTransfer web dashboard looks like.

PSiTransfer file sharing platform

PSiTransfer file sharing platform

As you can see, PSiTransfer web interface is fairly simple to use. Click on the + (plus) sign to upload the files of your choice. Alternatively, you can simply drag and drop the files over the Files section to upload them. PSiTransfer allows us to upload single or multiple files at once. Also, you can upload files of any size.

Once the files has been selected, choose the retention period in the Settings section.

Retention period has many options, such as,

  • 1 hour
  • 6 hours
  • 1 day
  • 3 days
  • 1 week
  • 2 weeks
  • 4 weeks
  • 8 weeks
  • one time download

The uploaded files will be kept in the Server depending upon the retention period you chose.

Also, you can set the password to the uploaded files. It will add a bit security to the shared files. The users should enter the password to unlock and download the shared files.

Finally, click Upload button to upload your files to your server.

Upload files via PSiTransfer dashboard

Upload files via PSiTransfer dashboard

Once the file upload is completed, you will get the download link of the uploaded files. Just pass this URL to your friends, colleagues or whoever wants to download and use your stuff.

File download links in PSiTransfer dashboard

File download links in PSiTransfer dashboard

You can also mail the download link from the PSiTransfer dashboard itself or just copy/paste it to your mail ID or any other preferred medium (Whatsapp, messenger)  and send it to your recipients.

When the recipients click the Download link, they will be asked to enter the password to unlock the download link.

Enter password to unlock file download links in PSiTransfer dashboard

Enter password to unlock file download links in PSiTransfer dashboard

If they entered the correct password, they can have the download links for all shared files.

Download files via PSiTransfer dashboard

Download files via PSiTransfer dashboard

Very simple, isn't it? You don't need to be a Linux ninja to deploy a moderate secure file sharing server for your home network. Any one can setup a simple file sharing environment within few minutes using PSiTransfer.

Resource:

Thanks for stopping by!

Help us to help you:

Have a Good day!!

You May Also Like

2 comments

Christoph Psi May 5, 2017 - 11:55 pm

Thanks for spreading my tool!
PS: You can configure the retention periods 🙂

Reply
William May 1, 2018 - 11:20 am

This did not work for me on ArchLinux what I did in my terminal is posted below.

[wgparch@archlinux ~]$ wget https://github.com/psi-4ward/psitransfer/releases/download/1.2.0/psitransfer-1.2.0.tar.gz
–2018-05-01 07:32:28– https://github.com/psi-4ward/psitransfer/releases/download/1.2.0/psitransfer-1.2.0.tar.gz
Loaded CA certificate ‘/etc/ssl/certs/ca-certificates.crt’
Resolving github.com (github.com)… 192.30.253.112, 192.30.253.113
Connecting to github.com (github.com)|192.30.253.112|:443… connected.
HTTP request sent, awaiting response… 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/89137502/dee393f4-6fde-11e7-8cda-11f36cc6f010?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20180501%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20180501T053232Z&X-Amz-Expires=300&X-Amz-Signature=0ba45894d4b1166db66de4e221ffc0a048314659e1ff858b308c0dbdc674eae3&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dpsitransfer-1.2.0.tar.gz&response-content-type=application%2Foctet-stream [following]
–2018-05-01 07:32:32– https://github-production-release-asset-2e65be.s3.amazonaws.com/89137502/dee393f4-6fde-11e7-8cda-11f36cc6f010?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20180501%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20180501T053232Z&X-Amz-Expires=300&X-Amz-Signature=0ba45894d4b1166db66de4e221ffc0a048314659e1ff858b308c0dbdc674eae3&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dpsitransfer-1.2.0.tar.gz&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)… 52.216.21.211
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.21.211|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 1386452 (1.3M) [application/octet-stream]
Saving to: ‘psitransfer-1.2.0.tar.gz’

psitransfer-1.2.0.t 100%[===================>] 1.32M 321KB/s in 4.8s

2018-05-01 07:32:39 (282 KB/s) – ‘psitransfer-1.2.0.tar.gz’ saved [1386452/1386452]

[wgparch@archlinux ~]$ tar zxvf psitransfer-1.2.0.tar.gz
psitransfer-1/LICENSE
psitransfer-1/README.md
psitransfer-1/Dockerfile
psitransfer-1/.dockerignore
psitransfer-1/app.js
psitransfer-1/config.js
psitransfer-1/package.json
psitransfer-1/docs/
psitransfer-1/docs/layout-customization.md
psitransfer-1/docs/psitransfer.service
psitransfer-1/docs/PsiTransfer-Admin.png
psitransfer-1/docs/configuration.md
psitransfer-1/docs/psitransfer.gif
psitransfer-1/docs/deployment-systemd.md
psitransfer-1/docs/nginx-ssl-example.conf
psitransfer-1/docs/deployment-docker.md
psitransfer-1/lib/
psitransfer-1/lib/endpoints.js
psitransfer-1/lib/store.js
psitransfer-1/lib/db.js
psitransfer-1/public/
psitransfer-1/public/assets/
psitransfer-1/public/assets/styles.css
psitransfer-1/public/assets/favicon.ico
psitransfer-1/public/assets/babel-polyfill.js
psitransfer-1/public/assets/polyfill.js
psitransfer-1/public/app/
psitransfer-1/public/app/admin.js.map
psitransfer-1/public/app/common.js
psitransfer-1/public/app/admin.js
psitransfer-1/public/app/download.js
psitransfer-1/public/app/download.js.map
psitransfer-1/public/app/.gitignore
psitransfer-1/public/app/common.js.map
psitransfer-1/public/app/upload.js.map
psitransfer-1/public/app/upload.js
psitransfer-1/public/robots.txt
psitransfer-1/public/html/
psitransfer-1/public/html/download.html
psitransfer-1/public/html/admin.html
psitransfer-1/public/html/error.htmlbash: npm: command not found

psitransfer-1/public/html/upload.html
[wgparch@archlinux ~]$ cd psitransfer-1/
[wgparch@archlinux psitransfer-1]$ NODE_ENV=production npm install

[wgparch@archlinux ~]$ sudo pacman -S npm
[sudo] password for wgparch:
resolving dependencies…
looking for conflicting packages…

Packages (6) c-ares-1.13.0-1 http-parser-2.8.1-1 node-gyp-3.6.2-1
nodejs-10.0.0-1 semver-5.5.0-1 npm-6.0.0-1

Total Download Size: 9.63 MiB
Total Installed Size: 52.70 MiB

:: Proceed with installation? [Y/n] y
:: Retrieving packages…
c-ares-1.13.0-1-x86_64 103.2 KiB 202K/s 00:01 [######################] 100%
http-parser-2.8.1-1… 19.1 KiB 1910K/s 00:00 [######################] 100%
nodejs-10.0.0-1-x86_64 4.9 MiB 485K/s 00:10 [######################] 100%
semver-5.5.0-1-any 17.2 KiB 1321K/s 00:00 [######################] 100%
node-gyp-3.6.2-1-any 1339.1 KiB 363K/s 00:04 [######################] 100%
npm-6.0.0-1-any 3.2 MiB 473K/s 00:07 [######################] 100%
(6/6) checking keys in keyring [######################] 100%
(6/6) checking package integrity [######################] 100%
(6/6) loading package files [######################] 100%
(6/6) checking for file conflicts [######################] 100%
(6/6) checking available disk space [######################] 100%
:: Processing package changes…
(1/6) installing http-parser [######################] 100%
(2/6) installing c-ares [######################] 100%
(3/6) installing nodejs [######################] 100%
Optional dependencies for nodejs
npm: nodejs package manager [pending]
(4/6) installing semver [######################] 100%
(5/6) installing node-gyp [######################] 100%
(6/6) installing npm [######################] 100%
:: Running post-transaction hooks…
(1/1) Arming ConditionNeedsUpdate…
[wgparch@archlinux ~]$ cd psitransfer-1/
[wgparch@archlinux psitransfer-1]$ NODE_ENV=production npm install
npm WARN deprecated fs-promise@2.0.3: Use mz or fs-extra^3.0 with Promise Support
npm notice created a lockfile as package-lock.json. You should commit this file.
added 146 packages from 92 contributors in 13.919s
[wgparch@archlinux psitransfer-1]$ cd
[wgparch@archlinux ~]$ npm start
npm ERR! path /home/wgparch/package.json
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open ‘/home/wgparch/package.json’
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in:
npm ERR! /home/wgparch/.npm/_logs/2018-05-01T05_42_11_567Z-debug.log
[wgparch@archlinux ~]$

Reply

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This website uses cookies to improve your experience. By using this site, we will assume that you're OK with it. Accept Read More