A small, selfhosted bookmark manager.
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.
- Bookmark links with automatic title and description generation
- Organize bookmarks in categories and tags
- A bookmarklet to quickly save links from any browser
- Private or public links, so friends or internet strangers can see your collection
- Add notes to links to add thoughts
- Advanced search for your bookmarks
- A built-in light and dark color theme
- Import existing bookmarks from HTML exports (other methods planned)
- Automated link checks to make sure your bookmarks stay available
- Automated “backups” of your bookmarks via the Waybackmachine
- Implemented support for complete database and app backups to Amazon AWS S3
More features are already planned. Take a look at our project board for more information.
Any further information about all the available features and how to install the app, can be found on the LinkAce Website. Additionally, you may visit the community forums to share your ideas, talk with other users or find help for specific problems.
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.
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.
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.
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
: replacelisten 0.0.0.0:8085
withlisten 0.0.0.0:8085 ssl;
- In
nginx.conf
: uncomment the lines beginning withssl_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.
After you completed the above steps, run the following command to start up the container setup:
docker-compose up -d --build
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.
- PHP > 7.2
- MySQL compatible database server
- nginx / Apache web server
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.
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.
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;
To be able to run the app you need to import a database dump into your database. The latest database dump can be found in the wiki.
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 exact problem is,
- and what you already did 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 for you, and I may won't answer support requests within a short period of time.
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.
- Always use the
dev
branch to work on the application. The dev branch will contain the latest version of the app while themaster
branch may contains the stable version (which may be outdated in terms of development). - Consider using a separate branch if you are working on a larger feature.
- When opening a pull request, link to your ticket and describe what you did to solve the problem.
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
npm run dev
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"
Currently you can do this by using the command line:
docker exec -it linkace-php bash -c "php artisan registeruser [user name] [user email]"
You can run existing tests with the following command:
docker exec -it linkace-php bash -c "./vendor/bin/phpunit"
LinkAce is a project by Kovah | Contributors