Added "yarn migrate" as alias for "node ./database/migration.js". Updated README.md about it. Added a new column to users database: registration. It will be used to store user's registration timestamp. Registration date will be displayed in Dashboard's Manage Users. Since this is a new column, existing users will not have registration dates. Last token change date will now be displayed in Dashboard as well. <code> elements will now properly have relative font size. User ID will now be displayed in Edit user dialog for reference purpose. Bumped v1 version string and rebuilt client assets.
|3 years ago|
|.github||3 years ago|
|controllers||3 years ago|
|database||3 years ago|
|dist||3 years ago|
|pages/error||5 years ago|
|public||3 years ago|
|routes||3 years ago|
|scripts||3 years ago|
|src||3 years ago|
|views||3 years ago|
|.browserslistrc||4 years ago|
|.editorconfig||5 years ago|
|.eslintignore||4 years ago|
|.eslintrc.json||3 years ago|
|.gitignore||4 years ago|
|.stylelintignore||4 years ago|
|.stylelintrc.json||4 years ago|
|AUTHORS||4 years ago|
|Dockerfile||5 years ago|
|LICENSE||5 years ago|
|README.md||3 years ago|
|TODO.md||3 years ago|
|config.sample.js||3 years ago|
|gulpfile.js||3 years ago|
|logger.js||3 years ago|
|lolisafe.js||3 years ago|
|nginx-ssl.sample.conf||5 years ago|
|nginx.sample.conf||5 years ago|
|package.json||3 years ago|
|real-ip-from-cf||5 years ago|
|yarn.lock||3 years ago|
lolisafe, a small safe worth protecting
This fork is the one being used at https://safe.fiery.me. If you are looking for the original, head to WeebDev/lolisafe.
If you want to use an existing lolisafe database with this fork, run
node ./database/migration.js (or
yarn migrate) at least once to create the new columns introduced in this branch (don't forget to make a backup).
Configuration file of lolisafe,
config.js, is also NOT fully compatible with this fork. There are some options that had been renamed and/or restructured. Please make sure your config matches the sample in
config.sample.js before starting.
Running in production mode
- Ensure you have at least Node v10.x installed (v12.x should also work just fine).
- Clone this repo.
- Modify port, domain and privacy options if desired.
yarn install --productionto install all production dependencies (Yes, use yarn).
yarn startto start the service.
Default admin account:
You can also start it with
yarn pm2 if you have PM2.
When running in production mode, the safe will use pre-built client-side CSS/JS files from
dist directory, while the actual source codes are in
The pre-built files were processed with postcss-preset-env, cssnano, bublé, and terser.
Running in development mode
This fork has a separate development mode, with which client-side CSS/JS files in
src directory will be automatically rebuilt using Gulp tasks.
- Follow step 1 to 4 from the production instructions above.
yarn installto install all dependencies (including development ones).
yarn developto start the service in development mode.
You can configure the Gulp tasks through
During development, the rebuilt files will be saved in
dist-dev directory instead of
dist directory. The service will also automatically serve the files from
dist-dev directory instead. This is to avoid your IDE's Git from unnecessarily rebuilding diff of the modified files.
Once you feel like your modifications are ready for production usage, you can then run
yarn build to build production-ready files that will actually go to
Updating when you have modified some files
Try to use git stash.
Basically you'll be doing this:
git stashto stash away your changes.
git pullto pull updates.
yarn install --production) to install dependencies matching the updated
git stash pop(or
git stash apply) to restore your changes.
Be warned that some files may have been updated too heavily that they will require manual merging.
If you only do some small modifications such as editing
views/_globals.njk and not much else, it's generally safe to do this even in a live production environment. But it's still best practice to at least review just what have been updated, and whether you will need to do some manual merging beforehand.
Still, I heavily recommend simply forking this repository and manually merging upstream changes whenever you feel like doing so. Read more about syncing a fork.
Afterwards, you can instead clone your fork in your production server and pull updates from there. You can then choose to only install production dependencies with
yarn install --production there (hint: this is how I setup safe.fiery.me).
Script for missing thumbnails
Thumbnails will not be automatically generated for existing files, that had been uploaded prior to enabling thumbnails in the config file.
To generate thumbnails for those files, you can use
$ yarn thumbs $ node ./scripts/thumbs.js Generate thumbnails. Usage : node scripts/thumbs.js <mode=1|2|3> [force=0|1] [verbose=0|1] [cfcache=0|1] mode : 1 = images only, 2 = videos only, 3 = both images and videos force : 0 = no force (default), 1 = overwrite existing thumbnails verbose: 0 = only print missing thumbs (default), 1 = print all cfcache: 0 = do not clear cloudflare cache (default), 1 = clear cloudflare cache
For example, if you only want to generate thumbnails for image files without overwriting existing ones, you can run
yarn thumbs 1.
Or if you want to generate thumbnails for both image and video files, while also overwriting existsing ones, you can run
yarn thumbs 3 1.
This fork has an optional virus scanning support using ClamAV, through clamdjs library.
It will scan new files right after they are uploaded. It will then alert the uploaders of the virus names in ClamAV's database if their files are dirty.
Unfortunately, this will slow down uploads processing as it has to wait for scan results before responding the uploaders, however it's still highly recommended for public usage (or at least if you find Google Safe Search too annoying).
To enable this, make sure you have ClamAV daemon running, then fill in the daemon's IP and port into your config file.
From the config file you can also choose to exclude certain extensions from being scanned to lessen the burden on your server.