Greetings everyone! Daniel here, I’ve been working on Linkwarden part-time over the past few months.
Linkwarden is a self-hosted, open-source collaborative bookmark manager to collect, organize and archive webpages.
Key features:
- 📸 Preserve webpages as Screenshot, PDF, etc. So you can access them even if they are taken down.
- 👥 Collaborative, so you can share your collections with your friends and colleagues. You can also make them public and share them with the world.
- 📱 Designed for every screen size, from widescreen monitors down to smartphones.
- ⚡️ Open source and fully self-hostable!
- ✨ And so many more features! (Literally, just didn’t want to make this post too long. Check out the Github repo and Website for more info…)
If you like what we’re doing, you can support the project by either starring ⭐️ the repo to make it more visible to others or by subscribing to the Cloud plan (which helps the project, a lot).
Things like mobile app (PWA) are already on the project roadmap and I’m so excited to share them with you in the future.
Feedback is always welcome, so feel free to share your thoughts!
Website: https://linkwarden.app
Using it since 2 months now and I really like it. Was totally worth a donation👍
Thanks!
Archivebox is in my obsidian workflow, it grabs every link in my vault and archives it. I didn’t see an API in linkwarden, perhaps I missed it.
Do you have any particular way of organizing the links themselves? I’ve moved to hosting all my bookmarks in Obsidian as well and am curious as to how others go about it
I treat links like atomic notes. I add as much detail as I feel like to each link, sometimes I go back and add tags and notes. Then I have an exceptionally poor process that attempts to go back to each link, get the archivebox archive and uses python to attempt to grab the article text (I tried using newspaper3k at first, but it’s unmaintained, so moved to readability). Then sticks the resulting link text into the note.
Honestly It’s a mess, and I really haven’t figured out how to do link things together very well, but, for now, it’s my little disaster of a solution.
I’ve been using ArchiveBox, this looks a bit more feature-full than ArchiveBox although it seems like ArchiveBox has been pretty stable. Anyone have experience with both, can vouch for the pros and cons?
This sounds very cool and I’d definitely use it.
Thank you for including oAuth options for sign on. Makes a big difference being able to use the same account for all the things like freshRSS, seafile, immich etc.
I’m intrigued. How does it work? Do you have a link or an article to point me to?
The general principle is called single sign on (sso).
The idea is that instead of each all keeping track of users itself, there is another app (sometimes called an identity provider) that does this. Then when you try to log into an app, it takes to the to login of your identity provider instead. When the IP says you are the correct user, it sends a token to the app saying to let you access your account.
The huge benefits are if you are already logged into the IP on a browser for example, the other apps will login automatically without having to put in your password again.
Also for me the biggest benefit is not having to manage passwords for a large number of apps so family that uses my server have 1 account which gives them access to jellyfin, seafile, immich, freshrss etc. If they change that password it changes it for everything. You can enforce minimum password requirements. You can also add 2FA to any app now immediately.
I use Authentik as my identity provider: https://goauthentik.io/https://goauthentik.io/
There’s good guides to settings it up with traefik so that you get let encrypt certificates and can use traefik for proxy authentication on web based apps like sonarr. There are many different authentication methods an app can choose to use and Authentik essentially supports everything.
SSO should really be the standard for self hosted apps because this way they don’t have to worry about ensuring they have the latest security for user management etc. The app just allows a dedicated identity provider to worry about user management security so the app devs can focus on just the app.
Authentik is pretty good. Authelia is good too, and lighter weight.
You can combine Authelia with LLDAP to get a web UI for user management and LDAP for apps that don’t support OpenID Connect (like Home Assistant).
If you have to add a whole other app the match what authentik can do, is authelia really lighter weight?
Im joking because authentik does takes a decent chunk of ram but having all protocols together is nice. You can actually make ldap authentication 2FA if you want.
Interesting… How does Authentik do 2FA for LDAP?
I’m going to try it out and see how it compares to Authelia. My home server has 64GB RAM and I have VPSes with 16GB and 48GB RAM so RAM isn’t much of an issue :D
Because authentik uses flows, you can insert the 2FA part into any login flow (proxy, oauth, ldap etc)
LDAP sends username and password over the network though… It doesn’t use regular web-based authentication. How would it add 2FA to that?
Here is an alternative Piped link(s):
https://piped.video/whSBD8YbVlc
Piped is a privacy-respecting open-source alternative frontend to YouTube.
I’m open-source; check me out at GitHub.
It seems so much nicer than my nextcloud bookmarks!
looks very nice, thanks. would appreciate better documenting of SMTP options (login & password) and support for Authelia.
What value can this bring me over features available using a Mozilla (Firefox) account and the Official Wayback Machine Browser Extension?
Collaboration, making your collections public, better organization, self-hostedness (idk if that’s a word), better UI and so on…
Thank you for responding quickly
No prob!
So is this like a self-hosted equivalent to pinboard.in? Can I import all my existing Pinboard bookmarks including their tags?
Is it possible for you to make it mobile friendly? How does it compare with raindrop?
My question is: what’s wrong with browser bookmarks and something SIMPLE to sync them between like devices like floccus (+ webdav server)?
Content changes or disappear.
For fun, I booted up a old 2005 laptop with windows xp on it. The bookmarks were all dead. And most weren’t archived in any way.
There’s were many browser games I used to play that is completely lost in time.
How would browser games survive with that solution tho? They most likely require some server…
Games from that time were actually running mostly in your browser. Meaning that the host, for example Miniclip served you the JavaScript and other files of the game which were then executed locally. So technically you could archive those games as long as you can load them up at least once initially.
Potentially yes, but for instance I’ve been looking for a way to have the following players offline and it seems harder than expected:
- https://weather.ambient-mixer.com/the-perfect-storm
- https://mynoise.net/NoiseMachines/rainNoiseGenerator.php
- https://mynoise.net/NoiseMachines/thunderNoiseGenerator.php
- https://mynoise.net/NoiseMachines/fireNoiseGenerator.php
Any tips?
If you logged and saved all the files the first one requested you could potentially make it work. You could manually change of the file paths in the html if you only doing a few of them. There’s only like 10 or so paths that would need to be modified. The PHP ones are likely harder to make work as php is a server side language and you don’t likely have easy access to PHP server and everything that goes with it.
Anyway thanks for the link to to mynoise.net. It looks like a well designed, carefully crafted website.
Yes yes, but what about magic / automated solutions? Wasn’t that the great advantage of Linkwarden?
It’s an open source solution designed to scale to what the web was originally designed for and excels at. Documents. Specifically hyperlinked documents or webpages. You can’t reasonably expect an archival service to archive something that is by definition not static like an interactive web app.
Most browser games are quite simple and aren’t running on a remote server.
Oh you mean the ones here: https://flashpointarchive.org/ and http://www.flashgamearchive.com/
Lmao funny that this comes up… i just downloaded the full 1.5TB data set a couple days ago… took nearly 10 hours to unpack. I’m going to be that any flash game you can remember has been backed up and is playable.
Yeah, flashpoint is great.
no image/text previews, only small part of the title visible, no sharing, no automatic archiving
Is there the potential for SingleFile html archives rather than pdf & screenshots? I’d imagine it’d be a fair bit smaller file.
Or other standard archiving formats like WARC.
There also is https://github.com/ArchiveBox/ArchiveBox which looks a bit similar.
I actually tried to build Raindrop.io-clone like this one one day, but never got the time to work fully on it… Congrats OP!
FYI, if you have a synology NAS and want to self-host using the docker install, these instructions work: https://mariushosting.com/how-to-install-linkwarden-on-your-synology-nas/
Has anyone been able to get the Firefox extension to work with a self-hosted installation? It’s not accepting my login address.
Works without issues here. Keep in mind to add http(s):// in front of your address.
Yeah, I’m doing that and it isn’t working on ff for windows or android.
I can log into the same address on my browser no problem.
Strange 🤔
I have no problems with Firefox on Fedora 39 or FF on Windows 11.
Extension is not available on FF in Android. How did you try that?
Extension is not available on FF in Android. How did you try that?
I’m using Iceraven, but if you visit the FF Add-on website and to to desktop mode, I can install pretty much any extension.
I’m not sure why it’s not working. I’ll continue to investigate why it’s not connecting.
Good luck, maybe you find a clue in the docs, if not ask on github ☺️
Fixed it!
So, there was a closed issue on github: https://github.com/linkwarden/browser-extension/issues/44
And the solution was to reconfigure the pull command to use “ghcr.io/linkwarden/linkwarden:latest” instead of “ghcr.io/linkwarden/linkwarden:main”
It loaded a more recent version of Linkwarded (totally different from the one it had originally) and the extension is working now :)
Thanks for sharing the solution ☺️