SkillAgentSearch skills...

Jump

Jump is a self-hosted startpage and real-time status page for your server designed to be simple, stylish, fast and secure.

Install / Use

/learn @daledavies/Jump

README

Jump

GitHub release (latest by date) PHP Version Docker Image Size (latest by date)

Jump is a self-hosted startpage and real-time status page for your server designed to be simple, stylish, fast and secure.

screenshot

Features

  • Fast, easy to deploy, secure.
  • Easily add sites and use custom icons, or let Jump fetch their original favicons.
  • Categorise sites with tags across multiple pages.
  • Real-time status monitoring for each site.
  • Use your own background images or get random background images from Unsplash.
  • Fast search by name, tag, url with keyboard shortcut.
  • Custom list of search engines accessed via search box.
  • Open Weather Map integration for local time and weather.
  • Several layout options, including responsive UI for mobile devices.
  • Easily enable/disable all configuration options, tailor Jump to suit your needs.

Demo - jumpdemo.daledavies.co.uk

Note - the demo instance is hosted on a render.com free tier so may take a few seconds to wake up.

Installation

Docker Compose

Get the container image from Docker Hub (https://hub.docker.com/r/daledavies/jump).

The following will start Jump and serve the page at http://localhost:8123 with a custom site name, Open Weather Map support, and volumes to map Jump's "backgrounds", "favicon", "search" and "sites" directories to local directories on your machine. OWMAPIKEY and LATLONG values below are just for example - refer to the environment variables.

version: '3'
services:
    web:
        image: daledavies/jump
        ports:
            - 8123:8080
        volumes:
            - ./backgrounds:/backgrounds
            - ./favicon:/favicon
            - ./search:/search
            - ./sites:/sites
        environment:
            SITENAME: 'Custom site name'
            OWMAPIKEY: '0a1b2c3d4e5f6a7b8c9d0a1b'
            LATLONG: '51.509865,-0.118092'

Volume Mapping

You can map the "backgrounds", "favicon", "search" and "sites" directories to local directories as shown in the Docker Compose example above. Your local directories will be populated with Jump's default files when the container is next started unless the local directories already contain files, in which case the local files will be used by Jump instead.

Docker

The same can be achieved just using Docker CLI...

docker run -d -p 8123:8080 \
--volume <path/to/backgrounds>:/backgrounds \
--volume <path/to/favicon>:/favicon \
--volume <path/to/sites>:/sites \
--volume <path/to/search>:/search \
--env SITENAME='Custom site name' \
--env OWMAPIKEY='<open weather api key>' \
--env LATLONG='<lat,long>' \
--name jump docker.io/daledavies/jump

Kubernetes

There is a Helm chart for Jump, provided by @djjudas21.

Enable the Helm repo:

helm repo add djjudas21 https://djjudas21.github.io/charts/

Check out the default values.yaml and make your own copy, overriding the values are necessary. All the same environment variables are supported.

The key difference is that there is no need to create and mount sites.json and search.json. Enter your sites and search engines config as YAML in values.yaml and Helm will create Kubernetes ConfigMap resources and mount them into the container as virtual files.

Finally, install Jump with Helm:

helm install my-jump djjudas21/jump -f values.yaml

Without Docker

Clone this repository and copy everything within the jumpapp directory to your server, edit config.php accordingly.

Install dependencies via composer by running the following command within the web root...

composer install --no-dev

Make sure you have created a cache directory and given the web user permission to write to it, the cache directory should match your config.php entry for cachedir.

Configuration

Environment variables

You can use the following optional environment variables to configure/customise your Jump site...

  • SITENAME - Custom site name.
  • SHOWCLOCK - Show the clock (default: 'true').
  • AMPMCLOCK - Show 12 hour clock format(default: 'false').
  • SHOWGREETING - If false show the label "#home" instead of "good morning/evening" (default: 'true').
  • CUSTOMGREETING: 'Some other greeting message' - Show a custom greeting message instead.
  • SHOWSEARCH - Show the search button, enable/disable search (default: 'true').
  • ALTLAYOUT - Display list of sites using an alternative layout (default: 'false').
  • CUSTOMWIDTH - Set a custom max width in px for the page container/site list.
  • BGBLUR - Background image blur percentage (e.g. 50).
  • BGBRIGHT - Background image brightness percentage (e.g. 90).
  • UNSPLASHAPIKEY - An API key for Unsplash, enables fetching random background images from Unsplash.
  • UNSPLASHCOLLECTIONS - List of Unsplash collection ID's (separated by commas) to select random images from.
  • ALTBGPROVIDER - An alternative background provider url.
  • OWMAPIKEY - An API key for Open Weather Map, LATLONG (below) must also be defined.
  • LATLONG - A latitude and longitude for the default location (e.g. "51.509865,-0.118092").
  • METRICTEMP: - Metric (C) or imperial (F) temperature units (default: 'true').
  • CHECKSTATUS - Enable/disable checking site availability status (default: 'true').
  • STATUSCACHE - Duration in minutes to cache site availability status.
  • NOINDEX - Include a robots noindex meta tag in site header (default: 'true').
  • WWWURL - Useful if Jump is hosted in a sub-directory (e.g. "/startpage").
  • DISABLEIPV6 - Disable IPV6 if required (default: 'false').
  • DOCKERSOCKET - Mounted docker socket location, for Docker integration without a proxy (e.g "/var/run/docker.sock").
  • DOCKERPROXYURL - Docker proxy URL, for Docker integration with a proxy (e.g. "dockerproxy:2375").
  • DOCKERONLYSITES - Set to true if you want to only use docker integration and not define a sites.json (default: 'false').
  • LANGUAGE - Set to your chosen language code (default: 'en').
  • CACHEBYPASS - Bypass all caches, useful for testing changes (default: 'false').
  • DEBUG - Enable debug mode (default: 'false').

NOTE: The OWMAPIKEY and LATLONG config options must be defined together. DOCKERSOCKET and DOCKERPROXYURL are mutually exclusive.

Open Weather Map

You can configure Jump to get local time and weather updates by adding an Open Weather Map API key to config.php or passing the OWMAPIKEY environment variable to the Docker container (as described above).

You will also need to provide a default LATLONG string (e.g. "51.509865,-0.118092"), Jump will use this until you press the location button and allow permission to get your location from the web browser.

Sites

The sites.json file is where you can define default configuration for sites and add a list of sites manually to the startpage, this is great for adding sites that are hosted anywhere on the web.

Jump can also integrate with Docker to automatically list any sites you have running on the same Docker host.

Site defaults and manual configuration

Edit the /sites/sites.json file to include your own sites on the startpage...

{
    "default": {
        "nofollow": true,
        "icon": "my-default-icon.png",
        "newtab": false
    },
    "sites": [
        {
            "name": "Github",
            "url" : "https://github.com/daledavies/jump",
            "description": "This is an example description",
            "nofollow": false,
            "newtab": true
        },
        {
            "name": "Docker Hub",
            "url" : "https://hub.docker.com/r/daledavies/jump"
        },
        {
            "name": "Bitwarden",
            "url" : "https://bitwarden.example.com",
            "description": "This is another example of a site with a description",
            "icon": "bitwarden.png",
            "tags": ["stuff"]
        },
        {
            "name": "Gitea",
            "url" : "https://git.example.com",
            "icon": "gitea.png",
            "tags": ["stuff"]
        },
        {
            "name": "Nextcloud",
            "url" : "https://cloud.example.com",
            "icon": "nextcloud.png",
            "tags": ["home", "stuff", "things"]
        }
        {
            "name": "Google",
            "url" : "https://www.google.com",
            "nofollow": false
        },
        {
            "name": "Teapot",
            "url" : "https://www.google.com/pagedoesnotexist",
            "status": {
                "allowed_status_codes": [418],
                "request_method": "GET",
                "url": "https://www.google.com/teapot",
                "verify_cert": false
            }
        }
    ]
}
  • name and url are mandatory.
  • description, tags, nofollow, newtab, icon and status are optional.
Tags

Sites can be categorised using tags, for each site in your sites.json file you can list multiple tags as shown in the example above. Sites that have no tags are included on the home screen, however for sites with multiple tags you can specify the "home" tag to include them on the home screen.

The tag selector button will only appear in the top right of the page if you have tagged sites, clicking this will open a popup menu showing all the tags referenced in your sites.json file.

D

Related Skills

View on GitHub
GitHub Stars605
CategoryDevelopment
Updated4d ago
Forks41

Languages

PHP

Security Score

100/100

Audited on Mar 28, 2026

No findings