diff --git a/.editorconfig b/.editorconfig index a481ff77..7037b0f6 100644 --- a/.editorconfig +++ b/.editorconfig @@ -11,3 +11,6 @@ charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true max_line_length = 120 + +[*.md] +trim_trailing_whitespace = false diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 683221a4..39bfee33 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,3 @@ -github: [gethomepage, benphelps, shamoon] +github: [gethomepage] open_collective: homepage +patreon: gethomepage diff --git a/.github/workflows/docs-publish.yml b/.github/workflows/docs-publish.yml index 2793f28c..b45dbb7a 100644 --- a/.github/workflows/docs-publish.yml +++ b/.github/workflows/docs-publish.yml @@ -2,15 +2,15 @@ name: Docs on: push: - tags: [ 'v*.*.*' ] - branches: ['main'] + tags: ["v*.*.*"] + branches: ["main"] paths: - - 'docs/**' - - 'mkdocs.yml' + - "docs/**" + - "mkdocs.yml" pull_request: paths: - - 'docs/**' - - 'mkdocs.yml' + - "docs/**" + - "mkdocs.yml" merge_group: workflow_dispatch: @@ -22,16 +22,13 @@ jobs: name: Linting Checks runs-on: ubuntu-22.04 steps: - - - name: Checkout repository + - name: Checkout repository uses: actions/checkout@v4 - - - name: Install python + - name: Install python uses: actions/setup-python@v5 with: python-version: 3.x - - - name: Check files + - name: Check files uses: pre-commit/action@v3.0.1 test: @@ -54,7 +51,7 @@ jobs: mkdocs-material- - run: sudo apt-get install pngquant - run: pip install mike - - run: pip install mkdocs-material + - run: pip install mkdocs-material mkdocs-redirects "mkdocs-material[imaging]" - name: Test Docs Build run: MKINSIDERS=false mkdocs build deploy: @@ -80,6 +77,7 @@ jobs: - run: sudo apt-get install pngquant - run: pip install mike==2.0.0 - run: pip install git+https://${GH_TOKEN}@github.com/benphelps/mkdocs-material-insiders.git + - run: pip install mkdocs-redirects "mkdocs-material[imaging]" - name: Set Git config run: | git config --global user.name "GitHub Action" diff --git a/README.md b/README.md index 4c41e227..f14bdfad 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,10 @@ Homepage is highly customizable, with support for custom themes, custom CSS & JS For configuration options, examples and more, [please check out the homepage documentation](http://gethomepage.dev). +## Security Notice 🔒 + +Please note that when using features such as widgets, Homepage can access personal information (for example from your home automation system) and Homepage currently does not (and is not planned to) include any authentication layer itself. Thus, we recommend homepage be deployed behind a reverse proxy including authentication, SSL etc, and / or behind a VPN. + ## With Docker Using docker compose: diff --git a/docs/assets/BlossomValley.jpg b/docs/assets/BlossomValley.jpg new file mode 100644 index 00000000..8c6a6321 Binary files /dev/null and b/docs/assets/BlossomValley.jpg differ diff --git a/docs/assets/sections.png b/docs/assets/sections.png new file mode 100644 index 00000000..d1d68d5a Binary files /dev/null and b/docs/assets/sections.png differ diff --git a/docs/configs/index.md b/docs/configs/index.md index a43977f6..85a1ac90 100644 --- a/docs/configs/index.md +++ b/docs/configs/index.md @@ -1,6 +1,7 @@ --- title: Configuration description: Homepage Configuration +icon: material/cog --- Homepage uses YAML for configuration, YAML stands for "YAML Ain't Markup Language.". It's a human-readable data serialization format that's a superset of JSON. Great for config files, easy to read and write. Supports complex data types like lists and objects. **Indentation matters.** If you already use Docker Compose, you already use YAML. diff --git a/docs/configs/kubernetes.md b/docs/configs/kubernetes.md index 6ba995c4..c76813f4 100644 --- a/docs/configs/kubernetes.md +++ b/docs/configs/kubernetes.md @@ -98,6 +98,8 @@ When the Kubernetes cluster connection has been properly configured, this servic If you are using multiple instances of homepage, an `instance` annotation can be specified to limit services to a specific instance. If no instance is provided, the service will be visible on all instances. +If you have a single service that needs to be shown on multiple specific instances of homepage (but not on all of them), the service can be annotated by multiple `instance.name` annotations, where `name` can be the names of your specific multiple homepage instances. For example, a service that is annotated with `gethomepage.dev/instance.public: ""` and `gethomepage.dev/instance.internal: ""` will be shown on `public` and `internal` homepage instances. + ### Traefik IngressRoute support Homepage can also read ingresses defined using the Traefik IngressRoute custom resource definition. Due to the complex nature of Traefik routing rules, it is required for the `gethomepage.dev/href` annotation to be set: diff --git a/docs/index.md b/docs/index.md index fe1c0adf..676086db 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,5 +1,7 @@ --- title: Home +description: A modern, fully static, fast, secure, fully proxied, highly customizable application dashboard with integrations for over 100 services and translations into multiple languages. +icon: material/home hide: - navigation - toc diff --git a/docs/installation/index.md b/docs/installation/index.md index f1d317c4..778b9ef2 100644 --- a/docs/installation/index.md +++ b/docs/installation/index.md @@ -1,12 +1,17 @@ --- title: Installation description: Docs intro +icon: simple/docker ---
You have a few options for deploying homepage, depending on your needs. We offer docker images for a majority of platforms. You can also install and run homepage from source if Docker is not your thing. It can even be installed on Kubernetes with Helm.
+!!! danger + + Please note that when using features such as widgets, Homepage can access personal information (for example from your home automation system) and Homepage currently does not (and is not planned to) include any authentication layer itself. Thus, we recommend homepage be deployed behind a reverse proxy including authentication, SSL etc, and / or behind a VPN. +