Sign inSign up

richardthornton/clickshift

By richardthornton

Updated 3 months ago

A beautifully minimal, self-hosted start page for organising bookmarks into categories.

Image
Content management system
0

1.5K

richardthornton/clickshift repository overview

ClickShift

A minimal, self-hosted bookmark start page.

GitHub

Quick Start

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.

Why ClickShift?

  • Tiny footprint - Under 10MB image, minimal CPU and memory usage
  • No database - Bookmarks stored in a single JSON file
  • Zero dependencies - Single binary, scratch-based container
  • Clean interface - Responsive grid with 6 color themes and light/dark mode
  • Drag-and-drop - Easily reorder bookmarks and categories
  • Simple auth - Password protection with rate limiting
  • Optional read-lock - Set CLICKSHIFT_LOCK to hide bookmarks behind a shared password

Perfect for homelabs, personal servers, or anyone who wants a clean browser start page.

Docker Compose

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:

Configuration

VariableDefaultDescription
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_PORT8080Server port
CLICKSHIFT_DATA_PATH/data/bookmarks.jsonData file location
CLICKSHIFT_SETTINGS_PATH/data/settings.jsonSettings file location
CLICKSHIFT_THEMES_PATH/themesCustom themes folder
CLICKSHIFT_SESSION_HOURS168Session duration (1 week)

Volumes

PathDescription
/dataBookmark data and settings (JSON files)
/themesCustom theme files (optional)

Ports

PortDescription
8080Web interface

Shared Read-Lock

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.

Themes

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"
  }
}

Tags

  • latest - Latest stable release
  • x.y.z - Specific version

Source

GitHub - richardthornton/clickshift

License

MIT

Tag summary

Content type

Image

Digest

sha256:213e73d3f

Size

2.4 MB

Last updated

3 months ago

docker pull richardthornton/clickshift