Simple open source self-hosted file sharing solution with keycloak support.
5.2K
Simple open source self-hosted file sharing solution.
It's an alternative to paid services like Dropbox, WeTransfer.
--harmony-async-await flag/admin Page lists bucket information, Screenshot (disabled until you set adminPass config value)sid=<myBucketID>See the blog posts about PsiTransfer: https://psi.cx/tags/PsiTransfer/ and checkout the Documentation

Demo: https://transfer.psi.cx
# data volume needs UID 1000
$ sudo chown -R 1000 $PWD/data
$ docker run -p 0.0.0.0:3000:3000 -e PSITRANSFER_ADMIN_PASS=secret -v $PWD/data:/data psitrax/psitransfer
Specify the version by using image tags e.g.:
latest: corresponds to master branch1: latest stable 1.x.x1.1: latest stable 1.1.x1.0.0: exact version# data volume needs UID 1000
$ sudo chown -R 1000 $PWD/data
$ docker run -p 0.0.0.0:3000:3000 -e PSITRANSFER_ADMIN_PASS=secret -e PSITRANSFER_KEYCLOAK='{"front":{"realm":"PsiTransfer","auth-server-url":"http://192.168.5.4:8080/auth","ssl-required":"external","resource":"PsiTransfer_FrontEnd","public-client":true,"confidential-port":0},"back":{"realm":"PsiTransfer","bearer-only":true,"auth-server-url":"http://192.168.5.4:8080/auth","ssl-required":"external","resource":"PsiTransfer_BackEnd","confidential-port":0}}' -v $PWD/data:/data smartblug/psitransfer
# Be sure to have NodeJS >= 7.4
$ node -v
v7.4.0
# Download and extract latest release package from
# https://github.com/SmartBlug/psitransfer/releases
# Install dependencies and start the app
$ NODE_ENV=production npm install
$ npm start
# Compile the frontend apps
$ cd app
$ npm install
$ npm run build
# Install dependencies
$ cd ..
$ npm install
$ npm start
There are some configs in config.js like port and data-dir.
You can:
config.js (not recommend)config.production.js where production is the value from NODE_ENVconfig.dev.jsPSITRANSFER_UPLOAD_DIR{
"front": {
"realm": "PsiTransfer",
"auth-server-url": "https://iam.mydomain.com/auth",
"ssl-required": "external",
"resource": "PsiTransfer_FrontEnd",
"public-client": true,
"confidential-port": 0
},
"back": {
"realm": "PsiTransfer",
"bearer-only": true,
"auth-server-url": "https://iam.mydomain.com/auth",
"ssl-required": "external",
"resource": "PsiTransfer_BackEnd",
"confidential-port": 0
}
}
{
"transporter":{
"service": "gmail",
"auth": {
"user": "<[email protected]>",
"pass": "<password>"
}
},
"from":"[email protected]",
"subject":"PsiTransfer Usage - %%TYPE%%",
"body": {
"Access":"Your Shared link %%URL%% has been used",
"Guest Access":"Your Shared link %%URL%% has been used by your guest",
"Download":"Your Shared file \"%%FILENAME%%\" from %%URL%% has been downloaded",
"Download Compressed":"Your Shared files %%URL%% have been downloaded"
}
}
Keywords TYPE, URL and FILENAME will be remplaced with relevant content
You can disabled specific notifications with false like this :
{
"transporter":{
"service": "gmail",
"auth": {
"user": "<[email protected]>",
"pass": "<password>"
}
},
"from":"[email protected]",
"subject":"PsiTransfer Usage - %%TYPE%%",
"body": {
"Access": false,
"Guest Access":"Your Shared link %%URL%% has been used by your guest",
"Download": false,
"Download Compressed":"Your Shared files %%URL%% have been downloaded"
}
}
public/upload.html and download.html are kept simple.
You can alter these files and add your logo and styles.
The following elements are mandatory:
common.js and respectively upload.js, download.js as well as <div id="upload">, <div id="download">
Please keep a footnote like Powered by PsiTransfer :)
Psitransfer uses debug:
DEBUG=psitransfer:* npm start
Download all as ZIP does not support resuming the download.:star2: Contribution is highly welcome :metal:
Want to say thanks and buy creator a beer?
Content type
Image
Digest
Size
145.6 MB
Last updated
about 6 years ago
docker pull smartblug/psitransfer