ArchMark is a bookmark manager that archives the bookmarked page using Monolith. It consists of the main web proccess as well as a worker that downloads the web page for archival.
- Allows links to be bookmarked and categorized
- Supports local (password-based) login and registration, and reverse-proxy-based authentication (with forwarded headers)
- Caches a local copy of the bookmarked page (available via the 'cached' link below the original)
- Keeps deleted bookmarks in the "deleted" section for a period of time before deleting it (defaults to 48 hours); they can be restored before the timer hits
- Allows searching across content in the bookmarked links (a copy of the linked page is cached for search indexing)
The simplest way to use ArchMark would be to use docker-compose. If you have Docker and Docker Compose installed, you can follow the steps below to get up and running:
mkdir archmark
cd archmark
curl https://raw.githubusercontent.com/sparkymat/archmark/main/docker-compose.prod.yml -o docker-compose.yml
mkdir -p data/db
mkdir -p data/faktory
mkdir -p data/archive
docker-compose pull
docker-compose up
Alternatively, you can build and run from the code with:
git clone https://github.com/sparkymat/archmark
cd archmark
docker-compose build
docker-compose up
P.S: Don't forget to edit the docker-compose.yml
file, and update the value of JWT_SECRET
and SESSION_SECRET
to something more secure. You can generate secrets using openssl like this:
openssl rand -hex 32
N.B: Everything in the download folder (configured using DOWNLOAD_FOLDER
) will be served under /uploads/
sub-path.
Both the app and the worker are configured using environment variables.
Variable | Description |
---|---|
DISABLE_REGISTRATION |
Set to 'true' if you want to disable registrations |
REVERSE_PROXY_AUTHENTICATION |
Enables reverse proxy authentication via forwarded headers |
PROXY_AUTH_USERNAME_HEADER |
The request header where proxy passes the usernamae. Default: Remote-User |
PROXY_AUTH_NAME_HEADER |
The request header where proxy passes the full name. Default: Remote-Name |
DELETE_TIMER_HOURS |
Time (in hours) before deleted items are flushed from the recycle bin (default: 48 hours) |