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.
Table of Contents
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.
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.
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.
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.
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.
Resource:
Thanks for stopping by!
Help us to help you:
- Subscribe to our Email Newsletter : Sign Up Now
- Support OSTechNix : Donate Via PayPal
- Download free E-Books and Videos : OSTechNix on TradePub
- Connect with us: Facebook | Twitter | Google Plus | LinkedIn | RSS feeds
Have a Good day!!
2 comments
Thanks for spreading my tool!
PS: You can configure the retention periods 🙂
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 ~]$