{"id":13764434,"url":"https://github.com/daledavies/jump","last_synced_at":"2026-01-12T06:50:11.621Z","repository":{"id":37945880,"uuid":"455481266","full_name":"daledavies/jump","owner":"daledavies","description":"Jump is a self-hosted startpage and real-time status page for your server designed to be simple, stylish, fast and secure.","archived":false,"fork":false,"pushed_at":"2024-05-15T05:02:51.000Z","size":30227,"stargazers_count":502,"open_issues_count":12,"forks_count":35,"subscribers_count":9,"default_branch":"main","last_synced_at":"2024-08-03T16:08:20.892Z","etag":null,"topics":["dashboard","directory","docker","home","homepage","javascript","links","php","portal","self-hosted","selfhosted","selfhosted-apps","start","startpage","status-page","unsplash","weather"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/daledavies.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-04T09:01:41.000Z","updated_at":"2024-07-30T02:43:18.000Z","dependencies_parsed_at":"2024-01-18T21:40:55.701Z","dependency_job_id":"db0dbd1c-95bc-42c9-bc31-d03851c8faaf","html_url":"https://github.com/daledavies/jump","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daledavies%2Fjump","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daledavies%2Fjump/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daledavies%2Fjump/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daledavies%2Fjump/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daledavies","download_url":"https://codeload.github.com/daledavies/jump/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224986031,"owners_count":17402935,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dashboard","directory","docker","home","homepage","javascript","links","php","portal","self-hosted","selfhosted","selfhosted-apps","start","startpage","status-page","unsplash","weather"],"created_at":"2024-08-03T16:00:20.545Z","updated_at":"2026-01-12T06:50:11.615Z","avatar_url":"https://github.com/daledavies.png","language":"PHP","readme":"# Jump\n\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/daledavies/jump)\n![PHP Version](https://img.shields.io/badge/PHP-%3E%3D8.1-blue?style=flat)\n![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/daledavies/jump?sort=date)\n\nJump is a self-hosted startpage and real-time status page for your server designed to be simple, stylish, fast and secure.\n\n![screenshot](screenshots/screenshot-demo.webp)\n\n### Features\n\n- Fast, easy to deploy, secure.\n- Easily add sites and use custom icons, or let Jump fetch their original favicons.\n- Categorise sites with tags across multiple pages.\n- Real-time status monitoring for each site.\n- Use your own background images or get random background images from Unsplash.\n- Fast search by name, tag, url with keyboard shortcut.\n- Custom list of search engines accessed via search box.\n- Open Weather Map integration for local time and weather.\n- Several layout options, including responsive UI for mobile devices.\n- Easily enable/disable all configuration options, tailor Jump to suit your needs.\n\n### Demo - [jumpdemo.daledavies.co.uk](https://jumpdemo.daledavies.co.uk)\n\nNote - the demo instance is hosted on a render.com free tier so may take a few seconds to wake up.\n\n## Installation\n\n### Docker Compose\n\nGet the container image from Docker Hub (https://hub.docker.com/r/daledavies/jump).\n\nThe 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.\n`OWMAPIKEY` and `LATLONG` values below are just for example - refer to the [environment variables](https://github.com/daledavies/jump?tab=readme-ov-file#environment-variables).\n\n```yaml\nversion: '3'\nservices:\n    web:\n        image: daledavies/jump\n        ports:\n            - 8123:8080\n        volumes:\n            - ./backgrounds:/backgrounds\n            - ./favicon:/favicon\n            - ./search:/search\n            - ./sites:/sites\n        environment:\n            SITENAME: 'Custom site name'\n            OWMAPIKEY: '0a1b2c3d4e5f6a7b8c9d0a1b'\n            LATLONG: '51.509865,-0.118092'\n```\n\n#### Volume Mapping\n\nYou 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.\n\n#### Docker\n\nThe same can be achieved just using Docker CLI...\n\n```bash\ndocker run -d -p 8123:8080 \\\n--volume \u003cpath/to/backgrounds\u003e:/backgrounds \\\n--volume \u003cpath/to/favicon\u003e:/favicon \\\n--volume \u003cpath/to/sites\u003e:/sites \\\n--volume \u003cpath/to/search\u003e:/search \\\n--env SITENAME='Custom site name' \\\n--env OWMAPIKEY='\u003copen weather api key\u003e' \\\n--env LATLONG='\u003clat,long\u003e' \\\n--name jump docker.io/daledavies/jump\n```\n\n### Kubernetes\n\nThere is a [Helm chart for Jump](https://artifacthub.io/packages/helm/djjudas21/jump), provided by @djjudas21.\n\nEnable the Helm repo:\n\n```sh\nhelm repo add djjudas21 https://djjudas21.github.io/charts/\n```\n\nCheck out the default [values.yaml](https://github.com/djjudas21/charts/blob/main/charts/jump/values.yaml) and make your own copy,\noverriding the values are necessary. All the same [environment variables](https://github.com/daledavies/jump?tab=readme-ov-file#environment-variables)\nare supported.\n\nThe key difference is that there is no need to create and mount `sites.json` and `search.json`. Enter your sites and search engines config\nas YAML in `values.yaml` and Helm will create Kubernetes [ConfigMap](https://kubernetes.io/docs/concepts/configuration/configmap/) resources\nand mount them into the container as virtual files.\n\nFinally, install Jump with Helm:\n\n```sh\nhelm install my-jump djjudas21/jump -f values.yaml\n```\n\n### Without Docker\n\nClone this repository and copy everything within the `jumpapp` directory to your server, edit `config.php` accordingly.\n\nInstall dependencies via composer by running the following command within the web root...\n\n```bash\ncomposer install --no-dev\n```\n\nMake 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`.\n\n## Configuration\n\n### Environment variables\n\nYou can use the following optional environment variables to configure/customise your Jump site...\n\n- `SITENAME` - Custom site name.\n- `SHOWCLOCK` - Show the clock (default: 'true').\n- `AMPMCLOCK` - Show 12 hour clock format(default: 'false').\n- `SHOWGREETING` - If false show the label \"#home\" instead of \"good morning/evening\" (default: 'true').\n- `CUSTOMGREETING: 'Some other greeting message'` - Show a custom greeting message instead.\n- `SHOWSEARCH` - Show the search button, enable/disable search (default: 'true').\n- `ALTLAYOUT` - Display list of sites using an [alternative layout](/screenshots/screenshot-altlayout.png) (default: 'false').\n- `CUSTOMWIDTH` - Set a custom max width in px for the page container/site list.\n- `BGBLUR` - Background image blur percentage (e.g. 50).\n- `BGBRIGHT` - Background image brightness percentage (e.g. 90).\n- `UNSPLASHAPIKEY` - An API key for Unsplash, enables fetching random background images from Unsplash.\n- `UNSPLASHCOLLECTIONS` - List of Unsplash collection ID's (separated by commas) to select random images from.\n- `ALTBGPROVIDER` - An alternative background provider url.\n- `OWMAPIKEY` - An API key for Open Weather Map, LATLONG (below) must also be defined.\n- `LATLONG` - A latitude and longitude for the default location (e.g. \"51.509865,-0.118092\").\n- `METRICTEMP:` - Metric (C) or imperial (F) temperature units (default: 'true').\n- `CHECKSTATUS` - Enable/disable checking site availability status (default: 'true').\n- `STATUSCACHE` - Duration in minutes to cache site availability status.\n- `NOINDEX` - Include a robots noindex meta tag in site header (default: 'true').\n- `WWWURL` - Useful if Jump is hosted in a sub-directory (e.g. \"/startpage\").\n- `DISABLEIPV6` - Disable IPV6 if required (default: 'false').\n- `DOCKERSOCKET` -  Mounted docker socket location, for Docker integration without a proxy (e.g \"/var/run/docker.sock\").\n- `DOCKERPROXYURL` - Docker proxy URL, for Docker integration with a proxy (e.g. \"dockerproxy:2375\").\n- `DOCKERONLYSITES`  - Set to true if you want to only use docker integration and not define a `sites.json` (default: 'false').\n- `LANGUAGE` - Set to your chosen [language code](#language) (default: 'en').\n- `CACHEBYPASS` - Bypass all caches, useful for testing changes (default: 'false').\n- `DEBUG` - Enable debug mode (default: 'false').\n\n**NOTE:** The `OWMAPIKEY` and `LATLONG` config options must be defined together. `DOCKERSOCKET` and `DOCKERPROXYURL` are mutually exclusive.\n\n### Open Weather Map\n\nYou 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).\n\nYou 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.\n\n### Sites\n\nThe `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. \n\nJump can also integrate with Docker to automatically list any sites you have running on the same Docker host.\n\n#### Site defaults and manual configuration\n\nEdit the `/sites/sites.json` file to include your own sites on the startpage...\n\n```json\n{\n    \"default\": {\n        \"nofollow\": true,\n        \"icon\": \"my-default-icon.png\",\n        \"newtab\": false\n    },\n    \"sites\": [\n        {\n            \"name\": \"Github\",\n            \"url\" : \"https://github.com/daledavies/jump\",\n            \"description\": \"This is an example description\",\n            \"nofollow\": false,\n            \"newtab\": true\n        },\n        {\n            \"name\": \"Docker Hub\",\n            \"url\" : \"https://hub.docker.com/r/daledavies/jump\"\n        },\n        {\n            \"name\": \"Bitwarden\",\n            \"url\" : \"https://bitwarden.example.com\",\n            \"description\": \"This is another example of a site with a description\",\n            \"icon\": \"bitwarden.png\",\n            \"tags\": [\"stuff\"]\n        },\n        {\n            \"name\": \"Gitea\",\n            \"url\" : \"https://git.example.com\",\n            \"icon\": \"gitea.png\",\n            \"tags\": [\"stuff\"]\n        },\n        {\n            \"name\": \"Nextcloud\",\n            \"url\" : \"https://cloud.example.com\",\n            \"icon\": \"nextcloud.png\",\n            \"tags\": [\"home\", \"stuff\", \"things\"]\n        }\n        {\n            \"name\": \"Google\",\n            \"url\" : \"https://www.google.com\",\n            \"nofollow\": false\n        },\n        {\n            \"name\": \"Teapot\",\n            \"url\" : \"https://www.google.com/pagedoesnotexist\",\n            \"status\": {\n                \"allowed_status_codes\": [418],\n                \"request_method\": \"GET\",\n                \"url\": \"https://www.google.com/teapot\",\n                \"verify_cert\": false\n            }\n        }\n    ]\n}\n```\n\n* `name` and `url` are mandatory.\n* `description`, `tags`, `nofollow`, `newtab`, `icon` and `status` are optional.\n\n##### Tags\n\nSites 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.\n\nThe 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.\n\n##### Default Options\n\nJump has a built-in default icon for sites that do not specify their own although you can override this and specify your own as shown above in the `default` section.\n\nYou can also override `nofollow` and `newtab` to be `true` for all sites.\n\n##### Icons\n\nYou can provide custom icons for your sites by placing them in the `/sites/icons/` directory and referencing the filename in `sites.json` using the `icon` option. If you do not provide a custom icon for a site then Jump will attempt to retrieve that site's favicon, if it can't find one then the default icon will be shown.\n\nJump also supports [Dashboard Icons](https://github.com/walkxcode/dashboard-icons). To use these pick the icon you wish to use from the [Dashboard Icons repository](https://github.com/walkxcode/dashboard-icons/tree/main/svg) and add it's file name using the `icon` option, removing the file extension. For example... `adguard-home`.\n\n##### nofollow\n\nOn a per-site basis use `\"nofollow\": true` to include `rel=\"nofollow\"` on specific site links, if this is set as a global default then `\"nofollow\": false` can be used to remove `rel=\"nofollow\"` for individual sites.\n\n##### newtab\n\nOn a per-site basis use `\"newtab\": true` to open specific site links in a new browser tab.\n\n##### status\n\nOptions to control how status checking works can be defined for each site...\n\n- `allowed_status_codes`: A list of additional status codes (in the 4XX and 5XX ranges) that could represent the site is online, for example if the site responds with \"418 I'm a teapot\".\n- `request_method`: By default Jump will make a HEAD request when checking a site's status, you can use this option to specify `GET` instead.\n- `url`: An alternate status URL to check instead of the main site URL.\n- `verify_cert`: Disable SSL certificate verification, useful for sites with self-signed certs.\n\n#### Docker Integration\n\nIt is highly recommended to use a [docker socket proxy](https://github.com/Tecnativa/docker-socket-proxy) when setting up Docker integration, this does not directly expose your host's docker API to Jump.\n\n##### Using a proxy\n\n```yaml\n# Configure docker socket proxy container\ndockerproxy:\n    image: tecnativa/docker-socket-proxy:latest\n    environment:\n        - CONTAINERS=1 # Allow access to view containers\n        - POST=0 # Make the connection read only\n    volumes:\n        - /var/run/docker.sock:/var/run/docker.sock:ro # Read only mount for local socket\n\n# Configure Jump to use docker socket proxy\nweb:\n    image: daledavies/jump\n    ports:\n        - 8123:8080\n    volumes:\n        - ./backgrounds:/backgrounds\n        - ./favicon:/favicon\n        - ./search:/search\n        - ./sites:/sites\n    environment:\n        SITENAME: 'Custom site name'\n        DOCKERPROXYURL: 'dockerproxy:2375' # Matches proxy hostname and ports from above\n    depends_on:\n        - dockerproxy # Ensure dockerproxy is available before starting jump\n```\n\n##### Configuring docker sites for Jump\n\nThen each for each docker service you with to list on your startpage, configure labels as follows. Each label below matches the options found in the  manual configuration section above...\n\n```yaml\nsomesite:\n    image: dockerimage\n    labels:\n        jump.name: 'Test Site'\n        jump.url: 'https://test.site'\n        jump.description: 'This is a site for testing'\n        jump.tags: 'home, stuff, things'\n        jump.status.allowed_status_codes: '418, 500'\n        jump.status.request_method: 'GET'\n        jump.status.verify_cert: false\n```\n\n### Search\n\nEdit the `/search/searchengines.json` file to customise the list of search engines available from the search dropdown, the first search engine in the list will be the default...\n\n```json\n[\n    {\n        \"name\": \"Google\",\n        \"url\": \"https://www.google.co.uk/search?q=\"\n    },\n    {\n        \"name\": \"DuckDuckGo\",\n        \"url\": \"https://duckduckgo.com/?q=\"\n    },\n    {\n        \"name\": \"Bing\",\n        \"url\": \"https://www.bing.com/search?q=\"\n    }\n]\n```\n\nFor quick access to the search from the keyboard you can open the search bar using the `ctrl-shift-/` keyboard shortcut and start typing straight away.\n\n### Background Images\n\nTo use your own background images just copy them to the `/backgrounds/` directory, Jump will pick up on them automatically ans show a random image every time the page loads.\n\nIf instead you want to use Unsplash for random background images add an Unsplash API key to `config.php` or pass the `UNSPLASHAPIKEY ` environment variable to the Docker container. You can provide a comma separated list of collection ID's using the `unsplashcollections` option in `config.php` or by passing them to the Docker container via the `UNSPLASHCOLLECTIONS` environment variable.\n\n### Favicon\n\nAfter mapping the `favicon` directory as shown in the Docker Compose or Docker examples above, replace the default `icon.png` file with whatever PNG icon image you want (ensuring that the filename is always `icon.png`).\n\n### Language\n\nJump has been translated into the following languages so far, to use one of these languages just pass the appropriate language code from the list below via the `language` option in `config.php` or the `LANGUAGE` environment variable...\n\n- `cs` - Czech\n- `de` - German\n- `es` - Spanish\n- `it` - Italian\n- `nl` - Dutch\n- `pt` - Portuguese\n- `ru` - Russian\n- `ua` - Ukrainian\n\nMore translations are always welcome! If you'd like to contribute please see the existing [examples](https://github.com/daledavies/jump/tree/main/jumpapp/translations) and create a pull request.\n\n### Debugging\n\nOccasionally things don't work out as expected! If you get an error and want to find out a bit more information you can use the built in debug option.  To enable this set `debug` to `true` in `config.php` or via the `DEBUG` environment variable.\n\nWhen resolving problems it can also help to use the `cachebypass` option, this will disable all caching in Jump.\n\n## Development\n\nPatches, improvements and feature requests are welcomed although I want to avoid anything that requires an admin interface or user accounts.\n\nFor development you will need to install composer dependencies by running `composer install` from within the `jumpapp` directory.\n\nJavascript is bundled using Webpack, so you will need to have installed Node.js. Then within the root project directory (the same level as webpack.config.js) you should run `npm install`.\n\nBefore starting development you can run `npm run dev`, this will watch for changes to files within the `/jumpapp/assets/js/src/`, `/jumpapp/assets/css/src/` and `/jumpapp/templates/src/` directories and bundle them on the fly. Javascript and CSS bundles created in development mode will not be minified and will contain source maps for debugging.\n\nYou can test a production build using `npm run build` which will bundle and minify the javascript and CSS source files without source maps, header and footer templates will be created containing the correct links to newly created javascript and CSS bundles.\n\nPlease do not commit any generated files however, only commit the patched source files.\n","funding_links":[],"categories":["置顶","Projects","Apps","Software","PHP"],"sub_categories":["9、效率工具集合","Hosted","Dashboard","Personal Dashboards"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaledavies%2Fjump","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaledavies%2Fjump","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaledavies%2Fjump/lists"}