commite8c2bc7e4aAuthor: Justin Hawkins <justin@hawkins.id.au> Date: Sat May 3 12:36:18 2025 +0930 Clean up menu/version commit1993533a46Author: Justin Hawkins <justin@hawkins.id.au> Date: Sat May 3 12:31:50 2025 +0930 Update README commit044cc830dcAuthor: Justin Hawkins <justin@hawkins.id.au> Date: Sat May 3 12:22:33 2025 +0930 No longer needed commita7c37ad7c5Author: Justin Hawkins <justin@hawkins.id.au> Date: Sat May 3 12:14:59 2025 +0930 Fixup version handling commitade0b748e9Author: Justin Hawkins <justin@hawkins.id.au> Date: Sat May 3 11:58:15 2025 +0930 Use the correct analyser for searches commite5a65cf5cfAuthor: Justin Hawkins <justin@hawkins.id.au> Date: Fri May 2 19:51:54 2025 +0930 Fix version in template commit0171be0ee4Author: Justin Hawkins <justin@hawkins.id.au> Date: Fri May 2 19:51:41 2025 +0930 Rescrape all links if needed on startup commitae654998f7Author: Justin Hawkins <justin@hawkins.id.au> Date: Fri May 2 19:51:25 2025 +0930 Spelling commitbfe9bbee02Author: Justin Hawkins <justin@hawkins.id.au> Date: Fri May 2 19:34:06 2025 +0930 Make goreleaser set the version commit4436313413Author: Justin Hawkins <justin@hawkins.id.au> Date: Fri May 2 11:43:58 2025 +0930 Make release matrix sane commit7b467ecee7Author: Justin Hawkins <justin@hawkins.id.au> Date: Fri May 2 11:40:07 2025 +0930 I hate YAML, so much. commitb578e0f044Author: Justin Hawkins <justin@hawkins.id.au> Date: Thu May 1 23:47:07 2025 +0930 Update goreleaser commitfba84f0827Author: Justin Hawkins <justin@hawkins.id.au> Date: Thu May 1 23:45:46 2025 +0930 Update version commite4edb08bd1Author: Justin Hawkins <justin@hawkins.id.au> Date: Thu May 1 23:42:59 2025 +0930 Deps commit58b6692d1bAuthor: Justin Hawkins <justin@hawkins.id.au> Date: Thu May 1 23:39:51 2025 +0930 Mostly done, first cut commitbadbe5e92fAuthor: Justin Hawkins <justin@hawkins.id.au> Date: Sun Apr 27 20:28:37 2025 +0930 Remove unused code commit903240dd18Author: Justin Hawkins <justin@hawkins.id.au> Date: Sun Apr 27 20:26:19 2025 +0930 Update deps commitde90b9951aAuthor: Justin Hawkins <justin@hawkins.id.au> Date: Sun Apr 27 20:21:33 2025 +0930 Keep on bleving commit9b15528510Author: Justin Hawkins <justin@hawkins.id.au> Date: Fri Apr 25 23:57:04 2025 +0930 Start of blevification
linkwallet
A self-hosted bookmark database with full-text page content search.
linkwallet uses the Bleve indexing library, providing excellent support for free-text queries over the content of all your bookmarked pages.
linkwallet indexes the page content, and automatically re-scrapes the pages periodically. Tags can be applied (though with the full-text search they are often not needed). Bookmarks can be easily managed, and can be imported or exported in bulk.
Bookmarks can be added with two clicks via the bookmarklet.
Feature list
- Simple cross-platform single binary deployment
- or docker if you prefer
- Bookmarklet, single click to add a bookmark from any webpage
- Full-text search
- Bookmark content is scraped and indexed locally
- Page content periodically refreshed automatically
- Interactively search across titles and content
- Rippingly fast results, as you type
- full text search ~30ms (over full text content of 600 bookmarks)
- No need to remember how you filed something, you just need a keyword or two to discover it again
- Embedded database, no separate database required
- Extremely light on resources
- Easily export your bookmarks to a plain text file - your data is yours
Installation
Docker
- Copy the
docker-compose.yml-sampleto a directory somewhere - Rename to
docker-compose.ymland edit to your needs- In most cases, you only need to change the path to the
/datamountpoint.
- In most cases, you only need to change the path to the
- Run
docker-compose up -d
To upgrade:
docker-compose pulldocker-compose up -d
Packages (deb/rpm)
[not yet migrated to new goreleaser - please message me if you need packages]
Binary
- Download the appropriate binary from the releases page
- Install somewhere on your system
- Run
./linkwallet -db-path /some/path/xxxx.dbwhere/some/path/xxxx.dbis the location of your bookmarks database (will be created if it does not yet exist)
Source
- Checkout the code
go build cmd/linkwallet/linkwallet.go
Using
linkwallet is a 100% web-driven app. After running, hit the web interface on port 8109 (docker using the sample docker-compose.yml) or 8080 (default on binary).
Change the port number by setting the PORT environment variable.
If you put linkwallet on a separate machine, or behind a reverse proxy,
go into the config page and set the correct BaseURL parameter, or the bookmarklets
will not work.
Roadmap
- More options when managing links
- sorting
- More tag options
- bookmarklet with pre-filled tags
- search/filter on tags


