A staging repository for Linkwarden improvements. A following changes were done here:
- Docker image is run with node:node user (default user for official nodejs images). By default it's
1000:1000
however it may be adjusted usingPUID
andPGID
args. - It's possible to run contained with
-u UID:GID
params. Please note it is not the same asPUID:PGID
args and it is not recommended at all (see description below) Experimental build with node.js 20 (✓)- Images were optimized for Docker BuildX toolset (reorder docker layers, use cache mount points etc)
Why: to not run process with under privileged user, to avoid creation file with root:root chown and to make possibility to run image(s) from predefined (non root) host user.
Problem:
8000
PostgresSQL images are ready for rootless run. Just use -u
arg or user:
compose directive. However official Linkwarden image have multiple file permissions related problems.
How to fix:
Option 1: The custom images run under node:node (1000:1000) user by default. No any process with privileged user context anymore. Just run Docker/Docker Compose as usual without any extra parameters. All internal files are ready for this, all new files will be created with 1000:1000
owner.
Option 2. The custom images support PUID
and PGID
environment arguments to specify desired UID and GID. Please make sure that shared mount points has right permissions, all new files will be created with PUID:PGID
owner.
An example of docker compose file:
name: linkwarden
services:
postgres:
image: postgres:16-alpine
env_file: .env
restart: always
volumes:
- ./pgdata:/var/lib/postgresql/data
user: "${UID}:${GID}" # UID and GID must be specified in .env file, otherwise put the values here
linkwarden:
image: ghcr.io/linkwarden/linkwarden:latest
env_file: .env
environment:
- DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres
- PUID=${UID:-1000} # UID and GID must be specified in .env file, otherwise put the values here
- PGID=${UID:-1000} # UID and GID must be specified in .env file, otherwise put the values here
restart: always
ports:
- 3000:3000
volumes:
- ./data:/data/data
depends_on:
- postgres
Node.js 22 (Debian Bookworm based):
latest
1-beta
,1.2-beta
,1.2.3-beta
1.2.3-beta.13.g15da68da8
where the13.g15da68da8
part points to the git commit where the images have been built from.- tags with a
-node22
suffix.
Node.js 20 (Debian Bookworm based): same as nodejs 18 but with -node20
suffix.
Linkwarden is a self-hosted, open-source collaborative bookmark manager to collect, organize and archive webpages.
The objective is to organize useful webpages and articles you find across the web in one place, and since useful webpages can go away (see the inevitability of Link Rot), Linkwarden also saves a copy of each webpage as a Screenshot and PDF, ensuring accessibility even if the original content is no longer available.
Additionally, Linkwarden is designed with collaboration in mind, sharing links with the public and/or allowing multiple users to work together seamlessly.
Tip
Our official Cloud offering provides the simplest way to begin using Linkwarden and it's the preferred choice for many due to its time-saving benefits.
Your subscription supports our hosting infrastructure and ongoing development.
Alternatively, if you prefer self-hosting Linkwarden, you can do so by following our Installation documentation.
- 📸 Auto capture a screenshot, PDF, single html file, and readable view of each webpage.
- 🏛️ Send your webpage to Wayback Machine (archive.org) for a snapshot. (Optional)
- ✨ Local AI Tagging to automatically tag your links based on their content (Optional).
- 📂 Organize links by collection, sub-collection, name, description and multiple tags.
- 👥 Collaborate on gathering links in a collection.
- 🎛️ Customize the permissions of each member.
- 🌐 Share your collected links and preserved formats with the world.
- 📌 Pin your favorite links to dashboard.
- 🔍 Full text search, filter and sort for easy retrieval.
- 📱 Responsive design and supports most modern browsers.
- 🌓 Dark/Light mode support.
- 🧩 Browser extension. Star it here!
- 🔄 Browser Synchronization (using Floccus!)
- ⬇️ Import and export your bookmarks.
- 🔐 SSO integration. (Enterprise and Self-hosted users only)
- 📦 Installable Progressive Web App (PWA).
- 🍎 iOS Shortcut to save Links to Linkwarden.
- 🔑 API keys.
- ✅ Bulk actions.
- 👥 User administration.
- 🌐 Support for Other Languages (i18n).
- 📁 Image and PDF Uploads.
- 🎨 Custom Icons for Links and Collections.
- 🔔 RSS Feed Subscription.
- ✨ And many more features. (Literally!)
Join and follow us in the following platforms to stay up to date about the most recent features and for support:
We usually go after the popular suggestions. Feel free to open a new issue to suggest one - others might be interested too! :)
Make sure to check out our public roadmap.
Here are some community-maintained projects that are built around Linkwarden:
- My Links - iOS and MacOS Apps, maintained by JGeek00.
- LinkDroid - Android App with share sheet integration, source code.
- LinkGuardian - An Android client for Linkwarden. Built with Kotlin and Jetpack compose.
- StarWarden - A browser extension to save your starred GitHub repositories to Linkwarden.
If you want to contribute, Thanks! Start by checking our public roadmap, there you'll see a README for contributers for the rest of the info on how to contribute and the main tech stack.
If you found a security vulnerability, please do not create a public issue, instead send an email to security@linkwarden.app stating the vulnerability. Thanks!
Other than using our official Cloud offering, any donations are highly appreciated as well!
Here are the other ways to support/cheer this project:
- Starring this repository.
- Joining us on Discord.
- Referring Linkwarden to a friend.
If you did any of the above, Thanksss! Otherwise thanks.
Huge thanks to these guys for spending their time helping Linkwarden grow. They rock! ⚡️