Install docker

See reference.computers.setup.docker-install

Docker Compose

 1version: '3'
 4  shaarli:
 5    image: shaarli/shaarli:latest
 6    container_name: shaarli
 7    restart: unless-stopped
 8#    ports:
 9#      - 8093:80
10    environment:
11      PUID: 1000
12      PGID: 1000
13    volumes:
14      - ./cache:/var/www/shaarli/cache
15      - ./data:/var/www/shaarli/data
16    networks:
17      - shaarli-npm
19  shaarli-npm:

NOTE: The permissions of the ./cache and ./data folders is especially important in Shaarli. They should have the same owner as the Shaarli process in the docker container or alternatively set chmod og+rwx -R cache data but this is insecure.

Configure Nginx Proxy Manager

Basic NPM setup instructions: reference.computers.setup.npm-docker

Add to docker-compose.yaml

2    app:
3    networks:
4        - shaarli_shaarli-npm
6    shaarli_shaarli-npm:
7        external: true

Make Shaarli bookmarklet working

When the + Shaare link bookmarklet is dragged to the bookmarks toolbar to quickly add a link, it does not work by default. Clicking on that button opens a window for https:///admir/post? ... something like that. To fix this, right-click on the bookmarklet and edit the bookmark URL so that the function begins with https://your.domain.tld/admin/ instead of the default https:///admin/

The full value for the URL in my case is:

1javascript:(          function(){            var%20url%20=%20location.href;            var%20title%20=%20document.title%20||%20url;            var%20desc=document.getSelection().toString();            if(desc.length>4000){              desc=desc.substr(0,4000)+'...';              alert('The%20selected%20text%20is%20too%20long,%20it%20will%20be%20truncated.');            }                ''%20+%20encodeURIComponent(url)+              '&title='%20+%20encodeURIComponent(title)+              '&description='%20+%20encodeURIComponent(desc)+              '&source=bookmarklet','_blank','menubar=no,height=800,width=600,toolbar=no,scrollbars=yes,status=no,dialog=1'            );          }        )();