Skip to content
A small, selfhosted bookmark manager with advanced features, built with Laravel and Docker.
Branch: master
Clone or download
Latest commit 9c98c8a May 20, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app Fix an issue with title not being parsed in meta helper May 7, 2019
bootstrap Import Laravel 5.6 without the frontend stuff Aug 22, 2018
config Correct the config for automated backups (#20) Mar 22, 2019
database Add a status for links to indicate if they are broken or were moved (#20 Feb 11, 2019
public Add a favicon Jan 30, 2019
resources Add more spacing to notes below links May 20, 2019
routes Check for duplicate links in the link creation form (#46) Apr 27, 2019
storage Add gitignore for debugbar storage Sep 6, 2018
tests Add helper for Wayback Machine (#39) Mar 24, 2019
.babelrc
.dockerignore Added dockerfile for release builds Jan 16, 2019
.editorconfig Code formatting optimization Jan 16, 2019
.env.docker Add option to enable / disable backups Mar 22, 2019
.env.example Add option to enable / disable backups Mar 22, 2019
.gitattributes Import Laravel 5.6 without the frontend stuff Aug 22, 2018
.gitignore Add the Spatie Backup package with configuration (#23) Mar 22, 2019
.node-version Added dockerfile for release builds Jan 16, 2019
.travis.yml Update Travis config to only build master branch Mar 24, 2019
Gruntfile.js Add automatic detection for the dark mode (#14) Apr 24, 2019
LICENSE.md Add license, update readme Jan 17, 2019
README.md Update the docker-compose.production.yml file and the readme Apr 28, 2019
artisan Import Laravel 5.6 without the frontend stuff Aug 22, 2018
composer.json Remove Rememberable package as it causes too much headache right now Mar 22, 2019
composer.lock
docker-compose.production.yml
docker-compose.yml
nginx.conf
package-lock.json 0.0.17 May 20, 2019
package.json 0.0.17 May 20, 2019
phpunit.xml Add example seeding test Sep 3, 2018
server.php Import Laravel 5.6 without the frontend stuff Aug 22, 2018

README.md

 

A small, selfhosted bookmark manager.

⚠️ This application is still in development! ⚠️

Docker Repository Latest Release Build Status License

 

Contents


About LinkAce

@TODO Screenshot(s)

LinkAce is a bookmark manager similar to Shaarli and other tools. I built this tool to have something that fits my actual needs that other bookmark managers couldn't solve, even if most features are almost the same.

Features

  • Bookmark links with automatic title generation
  • Organize bookmarks in categories and tags
  • A bookmarklet to quickly save links from any browser
  • Private or public links so friends or internet stranges can see your collection
  • Add notes to links to add thoughts
  • Advanced search for your bookmarks
  • Import existing bookmarks from HTML exports (other methods planned)

More features are already planned. Take a look at our project board for more information.


Setup

Setup with Docker

Working with Docker is pretty straight forward. The image available on Docker Hub contains the application code, any precompiled assets as well as PHP installed. This means you can use any web server you want, any cache driver you want and any database system you want.

To make things easier, we provide a Docker Compose file (docker-compose.production.yml) in the repository which contains all needed services, perfectly configured to just run the application right away.

1. Copy all needed files

All files you need are docker-compose.production.yml, .env.docker and nginx.conf. Copy both to the directory you want to use for the application.

2. Modify the .env.docker file

Rename the .env.docker file to .env.
Now open the .env file and follow the instructions inside the file. All needed variables you have to configure are marked accordingly.

3. Modify the nginx.conf file (optional)

This step is optional but may depend on your setup. You probably want to run the app standalon on a server. For this I highly recommend providing SSL certificates (Let's Encrypt) and change the nginx.conf as well as the docker-compose.production.yml file:

  • In nginx.conf: replace listen 0.0.0.0:8085 with listen 0.0.0.0:8085 ssl;
  • In nginx.conf: uncomment the lines beginning with ssl_certificate and change the certificate file names
  • In docker-compose.production.yml: replace "127.0.0.1:80:8085" with "127.0.0.1:443:8085".
  • In docker-compose.production.yml: uncommend the /path/to/ssl/certificates:/bitnami/nginx/conf/bitnami/certs line and set the correct path to your certificates before the colon.

4. Run the application

After you completed the above steps, run the following command to start up the container setup:

docker-compose up -d --build

Setup without Docker

The application was developed with being used with Docker in mind. All following steps will try to work around this but cannot be guaranteed to work in every environment.

Requirements

  • PHP > 7.2
  • MySQL compatible database server
  • nginx / Apache web server

1. Get the .zip file

To make things easier I provide a .zip file that contains all precompiled assets and stuff like that so you can use LinkAce right away. Download the package from the latest release.

Extract all files and place them wherever you need them. This obviously depends on how and where you want to run the app.

2. Edit the .env file

Make a copy of the .env.example file and name it .env. Open the file and follow all instructions inside the file. All needed variables you have to configure are marked accordingly.

3. Point your web server to /public

For security reasons the application won't run from the base filder where you extracted the files to. Instead, point your web server to the /public directory in your linkace folder.

If you are using Apache, LinkAce already ships with a proper .htaccess file.

If you are using nginx, please add the following lines to your nginx configuration file:

add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";

location / {
  try_files $uri $uri/ /index.php?$query_string;
}

location ~* \.(?:css|js|map|scss)$ {
  expires 7d;
  access_log off;
  add_header Cache-Control "public";
  try_files $uri @fallback;
}

error_page 404 /index.php;

4. Import a database dump to your Database

To be able to run the app you need to import a database dump into your database.

@TODO


Support and Bugreports

If you need help or want to report a bug within the application, please open a new issue and describe:

  • which version you are using,
  • what your problem is,
  • and what you already done to solve the problem.

Please notice: This is a private side-project mainly developed for myself. Therefore I cannot guarantee that the app will work without any problems and I also won't answer support requests within a short period of time.


Contributions

I will gladly welcome any help with the development of the application. If you want to contribute to the project please open a ticket first and describe what you want to do or what your idea is. Maybe there already is an existing ticket for your or a very similar topic.

Some Contribution Guidelines

  • Always use the dev branch to work on the application. The dev branch will contain the latest version of the app while the master branch may contains the stable version (which may be outdated in terms of development).
  • When opening a pull request, link to your ticket and describe what you did to solve the problem.

Development

Requirements

1. Basic Setup

Simply clone the repository to your machine and run the following command to build the container setup:

docker-compose up -d --build

Now, install all dependencies from inside the PHP container:

docker exec linkace-php bash -c "composer install"

Last step: compile all assets. Node 10 LTS is the minimum version required and recommended to use. You may use either NPM or Yarn for installing the asset dependencies.

npm install
OR
yarn install

./node_modules/.bin/grunt build

2. Working with the Artisan command line

I recommend using the Artisan command line tool in the PHP container only to make sure that the same environment is used. To do so, use the following example command:

docker exec linkace-php bash -c "php artisan migrate"

3. Registering a new user

Currently you can do this by using the command line:

docker exec -it linkace-php bash -c "php artisan registeruser [user name] [user email]"

Tests

You may run some existing tests with the following command:

docker exec -it linkace-php bash -c "./vendor/bin/phpunit"

LinkAce is a project by Kovah | Contributors

You can’t perform that action at this time.