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

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

A while ago, I 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, a simple and open source file sharing utility. Using PSiTransfer, we can either share our files locally or globally. 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.

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.

In this brief guide, I will show you how to deploy a local file sharing solution using PSiTransfer in Unix-like operating systems.

Installing PSiTransfer

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:

> [email protected] 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

Usage

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

This is how PSiTransfer web dashboard looks like.

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, just and drag and drop the files over the Files section. You can upload 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 in order to unlock and download the shared files.

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

Now, you will get the download link of the uploaded files. You can pass it on to your friends, colleagues or whoever wants to download and use your stuff.

Also, you can 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.

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

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

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.

And, that’s all. I hope this helps. We will be posting simple and useful guides every day. Subscribe to our Newsletter and follow our social media links to get updates as soon as possible. If you find our guides useful, please share them on your social, professional networks and support OSTechNix.

More good stuffs to come. Stay tuned!

Cheers!

Resource:

Thanks for stopping by!

Help us to help you:

Have a Good day!!

You may also like...

2 Responses

  1. Christoph Psi says:

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

  2. William says:

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

    [[email protected] ~]$ 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]

    [[email protected] ~]$ 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
    [[email protected] ~]$ cd psitransfer-1/
    [[email protected] psitransfer-1]$ NODE_ENV=production npm install

    [[email protected] ~]$ 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…
    [[email protected] ~]$ cd psitransfer-1/
    [[email protected] psitransfer-1]$ NODE_ENV=production npm install
    npm WARN deprecated [email protected]: 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
    [[email protected] psitransfer-1]$ cd
    [[email protected] ~]$ 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
    [[email protected] ~]$

Leave a Reply

Your email address will not be published. Required fields are marked *

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