ShadowBox will be a zero-knowledge open-source web-based file storage & hosting system, featuring full or partial data encryption through cryptographic ciphers. Contributors are welcome to help develop this project.
Warning
This is a developmental repository of ShadowBox. As this software is still being developed, some or all features may not be available as it is currently a work in progress.
-
Copy
.env.example
to.env
and fill in the required fields.MYSQL_DATABASE_HOST
is the hostname of the MariaDB or MySQL server.MYSQL_DATABASE_USER
is the username of the MariaDB or MySQL server.MYSQL_DATABASE_PASSWORD
is the password of the MariaDB or MySQL server.MYSQL_INSTDATA_DATABASE
is the name of the database that contains the instance data of our SB server. Import theschemas/shadowbox-data.sql
file into this database and generate a new Bcrypt hash for theadmin
account.MYSQL_FILETABLES_DATABASE
is the name of the database that contains the file tables of our SB server. Import theschemas/shadowbox-filetables.sql
file into this database.SESSION_SECRET
is the secret key used to sign the session cookies. This can be any secure random string.FILE_BIN_BASEPATH
is the path to the directory where uploaded files will be stored. This directory must be writable by the SB server and is recommended to be stored on a separate partition. This is the default file storage method.
-
Setup a MariaDB instance with the schemas that are provided in the instance. Refer to Step 1 for adding the schemas to the environmental variables file.
-
Run
npm install
to install all dependencies -
Run
npm run a
thennpm run b
concurrently to start the Nodemon development server and Scss compiler respectively. Or, usenode src/server.js
. -
It is recommended to generate your own SSL certificates using the
generateCertificates
scripts. Both a shell and PowerShell script is provided. This will export several certificates which can be added to your browser's certificate store to allow for HTTPS connections to the server. Non-HTTPS connections are not officially supported.
Storing uploaded files are supported on partitions mounted to the computer running the server or a network share. Specify the name of the directory to store these files in the .env
file.
- Create a directory or folder which the SB instance as permissions to write & ready to.
- Specify that directory in the
FILE_BIN_BASEPATH
environmental variable. - Restart the Server
Note
The SB server will not create the directory for you. You must create the directory yourself. NEVER manually attempt to edit any contents of the filebin, as this may cause the server to crash, corrupt the filebin, or misalign the filetable stored on the SQL server.
- User Authentication
- Rendering Login & File Area
- Introspecting files
- File Upload (debug only)
- File Upload (production)
- File Download
- File Deletion
- Searching
For licensing, see LICENSE.md
The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS) may have classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.