Skip to content
All in one plateform for your links, stories and passwords. Built with Laravel and Vue.js.
PHP Vue HTML
Branch: master
Clone or download
Latest commit 5728c1a Oct 13, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app 🔖 1.2.15 Oct 13, 2019
bootstrap 🎉 Aug 22, 2019
config Search can use operators 🐛 Search private content 🐛 Postable scope Oct 11, 2019
database Search can use operators 🐛 Search private content 🐛 Postable scope Oct 11, 2019
public Ability to hide card content Ability to choose the number of colu… Oct 13, 2019
resources 🔖 1.2.15 Oct 13, 2019
routes Non-admin users can't access settings section Oct 10, 2019
storage 🚧 Locale settings Aug 29, 2019
tests Search can use operators 🐛 Search private content 🐛 Postable scope Oct 11, 2019
.editorconfig 🎉 Aug 22, 2019
.env.example 📝 Documentation for configuration, php and js dependencies Oct 4, 2019
.env.testing More tests ! 🔧 Migrations compatible with SQLite 🐛 StoryFactory Oct 10, 2019
.gitattributes 🎉 Aug 22, 2019
.gitignore 🍱 Assets are now staged preventing new compilation on each deployment 🐛 Sep 5, 2019
.styleci.yml 🎉 Aug 22, 2019
artisan 🎉 Aug 22, 2019
changelog.md 🔖 1.2.15 Oct 13, 2019
composer.json 📦 Moved to Sep 30, 2019
composer.lock 📦 Laravel 6.2 Oct 12, 2019
package-lock.json ♻️ Removed and for Oct 13, 2019
package.json ♻️ Removed and for Oct 13, 2019
phpunit.dusk.xml Search can use operators 🐛 Search private content 🐛 Postable scope Oct 11, 2019
readme.md ♻️ Removed and for Oct 13, 2019
server.php 🎉 Aug 22, 2019
webpack.mix.js 🔖 1.2.5 📝 Readme 🍱 Assets versionning Sep 28, 2019
yarn.lock 🎉 Aug 22, 2019

readme.md

Laravel Shaarli

It's a free and open source platform to host by yourself. Shaarli allows you to save your web links (websites, youtube videos, ...), to share your stories and manage your web accounts.

All of your content can be private or public and can be browsed by tags or all-in-one search.

It's ready to use for production. Laravel Shaarli is inspired by Shaarli but built with Laravel and Vue.js.

Summary

Requirements

  • Linux or macOS env
  • PHP >= 7.2
  • MySQL >= 5.7 (or SQLite >= 3)
  • Node.js >= 6
  • (Optional) Redis
  • (Optional) youtube-dl

Features

  • Links : to save a web content such a website or a youtube video
  • Stories : posts with markdown content
  • Chests : to save your web accounts
  • Rapid sharing through bookmark extension
  • Tagging system, search and RSS feeds
  • Private content or entirely private
  • Original Shaarli import
  • Export
  • Dark mode
  • i18n (english and french)
  • Archiving
  • 2-FA with email
  • NEW Multi-users
  • RSS feed

Demo

Homepage

A public demo is available at https://shaarli.mka.ovh. Credentials are admin@example.com and secret. This demo is resetted hourly.

Installation

git clone https://github.com/MarceauKa/laravel-shaarli && cd laravel-shaarli
cp .env.example .env # Then edit it
composer install

Then run php artisan shaarli:install (for interactive installation) or php artisan migrate --seed (with default data). Default user is admin@example.com with password secret.

Additional configuration

Laravel Shaarli is built with Laravel 6. There's many ways to configuration database, session, mail and queue:

Archiving

Each link you share can be archived the way you want:

  • youtube-dl when available on your system, will be used to download media from youtube, soundcloud, vimeo and few more sites.

  • Puppeteer will be used by default to save the webpage as a PDF.

You can adjust archiving configuration in the settings section.

Security

Global privacy

If you don't want your content being publicy accessible, you can update this preference once application is installed from settings section.

2-FA

You're able to active 2-FA (2 factors authentication). By default 2-FA is disabled but you can update it from your app settings. Code length and code expiration are also configurable. Test if you application can send emails before enabling this feature.

Auth monitoring

Shaarli logs all successful and failed auths with their associated devices.

Chests encryption

Since 1.2.9, all chests data are encrypted in your database using AES-256-CBC and your app key.

Multi-users

Others users can be admin or non-admin. Admin users are like the main user and have an access to the entire content. Non-admin users can't access the settings section and can only see their own private content.

Update

Update the application by running:

php artisan down
git reset --hard
git pull origin master
composer install --no-dev -o
php artisan migrate --force -n
php artisan optimize
php artisan view:clear
php artisan queue:restart # if you're using queues
php artisan up

Going live

Check these options before going live.

Composer flags composer install --no-dev -o

.env options

APP_ENV=production
APP_DEBUG=false
APP_URL=https://{your_url}
CACHE_DRIVER=file # or redis
SESSION_DRIVER=file # or redis
QUEUE_CONNECTION=sync # or redis, database
MAIL_DRIVER=smtp
MAIL_FROM_NAME={your_name}
MAIL_FROM_ADDRESS={your_email}

Artisan routines

php artisan optimize
php artisan view:clear

Artisan commands

Install command

php artisan shaarli:install

This command will install default data (seeder) or ask you for the default user.

Encrypt and decrypt

Encryption is made on the fly for your chests, but you can manually encrypt or decrypt them by running php artisan shaarli:chests:encrypt or php artisan shaarli:chests:decrypt.

Dependencies

Our dependencies with link to their documentation and why we use it.

PHP

  • laravel-auth-checker is used to keep a trace of auth attempts
  • scout is used for full-text search in database
  • excel is used to generate exports as xlsx or csv
  • valuestore is used for application settings
  • puphpeteer is used to save your links as PDF using a chrome browser
  • youtube-dl-php is a bridge to youtube-dl to save you links (youtube, soundcloud, ...) as a local copy

JS

Contribute

All contribution are welcome! Please use the dev branch for your pull requests.
If you make changes to JS, don't compile assets in production, I'll manually compile them when merging for security reasons.

Tests

  1. Be sure to have a testing database with touch database/testing.sqlite and have composer require-dev dependencies installer.
  2. Run testing server php artisan serve --env=testing.
  3. Run tests php artisan dusk --env=testing

Licence

MIT

You can’t perform that action at this time.