Bookmarking with website snapshots.
Access & share previously visited pages without worrying about modifications or availability.
Check out our wiki for more information.
- Websites are captured as your browser renders it - saves the displayed content of heavily JS driven dynamic pages
- Self hosted
- Web interface with multiuser support
- Flexible filtering - by date, free text search in content, tags, users, domains, URLs, etc..
- Private & public bookmarks
- Multiple snapshots of the same URL
- Documented API
go >= 1.24
- Checkout the repo and execute
go get -u - Copy
config.yml_sampletoconfig.yml - Execute
go build && ./omnom listenorgo run omnom.go listenin the repo root
Settings can be configured in config.yml config file - don't forget to restart webapp after updating.
Omnom does not store passwords. Login requires one time login token, OAuth, or a remote user header.
Login tokens can be requested via email (this requires a valid SMTP configuration in config.yml) through the web interface or can be generated from command line using the ./omnom create-token [username] login.
If you use Omnom behind a reverse proxy with authentication, you can pass the logged-in username in an HTTP header like Remote-User to automatically log in. Omnom can be configured to trust the header by setting the remote_user_header option in config.yml. Remote user header authentication can't be used with OAuth or open signups.
Basic management actions are available using the command line tool (go run omnom.go or go build; ./omnom)
create-token create new login/addon token for a user
create-user create new user
generate-api-docs-md Generate Markdown API documentation
help Help about any command
listen start server
set-token set new login/addon token for a user
show-user show user details
completion Generate the autocompletion script for the specified shell
Omnom browser addon is available for
Run Omnom with Docker using the following command:
docker run -p 7331:7331/tcp ghcr.io/asciimoo/omnom:masterThe container exposes port 7331. Map it to your host port:
-p <host_port>:7331/tcpPersist your data using these volumes:
| Container Path | Description | Recommended Mount Type |
|---|---|---|
/omnom/config |
Database (SQLite), ActivityPub keys, and configuration files | Bind mount or volume |
/omnom/static/data |
Snapshot data and user-uploaded content | Bind mount or volume |
Example with volumes:
docker run -p 7331:7331/tcp \
-v ./omnom_config:/omnom/config \
-v ./omnom_data:/omnom/static/data \
ghcr.io/asciimoo/omnom:masterYou can modify the default config.yml by mounting your own version:
-v ./custom_config.yml:/omnom/config.ymlRun any Omnom command directly:
docker run ghcr.io/asciimoo/omnom:master /omnom/omnom --help| Variable | Description | Default |
|---|---|---|
UID |
User ID for Omnom process | 1000 |
GID |
Group ID for Omnom process | 1000 |
Bugs or suggestions? Visit the issue tracker or join our discord server
AGPLv3
This project is funded through NGI Zero Core, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program. Learn more at the NLnet project page.
