A beautifully minimal, self-hosted start page for organising bookmarks into categories.
1.5K
A minimal, self-hosted bookmark start page.
docker run -d \
-p 8080:8080 \
-v clickshift-data:/data \
-e CLICKSHIFT_USER=admin \
-e CLICKSHIFT_PASS=your-secure-password \
richardthornton/clickshift
Open http://localhost:8080 and login with admin / your-secure-password.
CLICKSHIFT_LOCK to hide bookmarks behind a shared passwordPerfect for homelabs, personal servers, or anyone who wants a clean browser start page.
services:
clickshift:
image: richardthornton/clickshift
ports:
- "8080:8080"
environment:
- CLICKSHIFT_USER=admin
- CLICKSHIFT_PASS=your-secure-password
volumes:
- clickshift-data:/data
restart: unless-stopped
volumes:
clickshift-data:
| Variable | Default | Description |
|---|---|---|
CLICKSHIFT_USER | (required) | Admin username |
CLICKSHIFT_PASS | (required) | Admin password |
CLICKSHIFT_LOCK | (optional) | Shared read-lock password. When set, all visitors must enter it before bookmarks are shown. |
CLICKSHIFT_PORT | 8080 | Server port |
CLICKSHIFT_DATA_PATH | /data/bookmarks.json | Data file location |
CLICKSHIFT_SETTINGS_PATH | /data/settings.json | Settings file location |
CLICKSHIFT_THEMES_PATH | /themes | Custom themes folder |
CLICKSHIFT_SESSION_HOURS | 168 | Session duration (1 week) |
| Path | Description |
|---|---|
/data | Bookmark data and settings (JSON files) |
/themes | Custom theme files (optional) |
| Port | Description |
|---|---|
| 8080 | Web interface |
Set CLICKSHIFT_LOCK to gate all read access behind a password:
environment:
- CLICKSHIFT_USER=admin
- CLICKSHIFT_PASS=your-secure-password
- CLICKSHIFT_LOCK=shared-family-password
Visitors see only a password field on first load — bookmarks and the admin login are never sent to the browser until the correct password is entered. The unlock is stored in an HttpOnly cookie for the session duration. A lock icon in the bottom-right lets anyone re-lock on demand. Unlock attempts are rate-limited (5 per IP per 15 minutes). Leave the variable unset to disable.
6 built-in color themes included: Default, Solarized, Dracula, Nord, Tokyo Night, and Matcha. Each theme has light and dark variants.
To add custom themes, mount a folder containing JSON theme files:
volumes:
- ./my-themes:/themes
Theme JSON format (e.g., ocean.json):
{
"id": "ocean",
"name": "Ocean",
"light": {
"background": "#f0f5f9",
"text": "#3d5a6c",
"heading": "#1a3a4a"
},
"dark": {
"background": "#0d1b2a",
"text": "#7eb8da",
"heading": "#00d4ff"
}
}
latest - Latest stable releasex.y.z - Specific versionGitHub - richardthornton/clickshift
MIT
Content type
Image
Digest
sha256:213e73d3f…
Size
2.4 MB
Last updated
3 months ago
docker pull richardthornton/clickshift