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/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 00000000..08eebdf9
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,33 @@
+name: ๐ Bug report
+description: Please only raise an issue if you've been advised to do so in a GitHub discussion. Thanks! ๐
+labels: ["bug"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ ## โ ๏ธ Please note
+ The starting point for a bug report should always be a [GitHub discussion](https://github.com/gethomepage/homepage/discussions/new?category=support)
+ Thank you for contributing to homepage! โ
+ - type: checkboxes
+ id: pre-flight
+ attributes:
+ label: Before submitting, please confirm the following
+ options:
+ - label: I confirm this was discussed, and the maintainers suggest I open an issue (note that AI bots are not maintainers).
+ required: true
+ - label: I am aware that if I create this issue without a discussion, it will be removed without a response.
+ required: true
+ - type: input
+ id: discussion
+ attributes:
+ label: Discussion Link
+ description: |
+ Please link to the GitHub discussion that led to this issue.
+ validations:
+ required: true
+ - type: textarea
+ id: additional
+ attributes:
+ label: Additional context
+ description: Optional
+ render: Text
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index ce15fd04..22d29ff5 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -2,7 +2,7 @@ blank_issues_enabled: false
contact_links:
- name: ๐ค Questions and Help
url: https://github.com/gethomepage/homepage/discussions
- about: For support or general questions.
+ about: For support, possible bug reports or general questions.
- name: ๐ฌ Chat
url: https://discord.gg/k4ruYNrudu
about: Want to discuss homepage with others? Check out our chat.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 1cad352a..bf4fa386 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,12 +1,12 @@
## Proposed change
Closes # (issue)
diff --git a/.github/workflows/crowdin.yml b/.github/workflows/crowdin.yml
index e7e473eb..ae1b3af9 100644
--- a/.github/workflows/crowdin.yml
+++ b/.github/workflows/crowdin.yml
@@ -19,7 +19,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: crowdin action
- uses: crowdin/github-action@v1
+ uses: crowdin/github-action@v2
with:
upload_translations: false
download_translations: true
diff --git a/.github/workflows/docs-publish.yml b/.github/workflows/docs-publish.yml
index 2793f28c..2f3a9501 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:
@@ -55,6 +52,7 @@ jobs:
- run: sudo apt-get install pngquant
- run: pip install mike
- run: pip install mkdocs-material
+ - run: pip install "mkdocs-material[imaging]"
- name: Test Docs Build
run: MKINSIDERS=false mkdocs build
deploy:
@@ -80,6 +78,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-material[imaging]"
- name: Set Git config
run: |
git config --global user.name "GitHub Action"
diff --git a/.github/workflows/repo-maintenance.yml b/.github/workflows/repo-maintenance.yml
index d1f7e4fd..7cf47c51 100644
--- a/.github/workflows/repo-maintenance.yml
+++ b/.github/workflows/repo-maintenance.yml
@@ -42,17 +42,17 @@ jobs:
This issue has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new discussion for related concerns.
- See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-respoistory-maintenance) for more details.
+ See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-repository-maintenance) for more details.
pr-comment: >
This pull request has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new discussion for related concerns.
- See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-respoistory-maintenance) for more details.
+ See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-repository-maintenance) for more details.
discussion-comment: >
This discussion has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new discussion for related concerns.
- See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-respoistory-maintenance) for more details.
+ See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-repository-maintenance) for more details.
close-answered-discussions:
name: 'Close Answered Discussions'
runs-on: ubuntu-latest
@@ -92,7 +92,7 @@ jobs:
}`;
const commentVariables = {
discussion: discussion.id,
- body: 'This discussion has been automatically closed because it was marked as answered. See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-respoistory-maintenance) for more details.',
+ body: 'This discussion has been automatically closed because it was marked as answered. See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-repository-maintenance) for more details.',
}
await github.graphql(addCommentMutation, commentVariables)
@@ -182,7 +182,7 @@ jobs:
}`;
const commentVariables = {
discussion: discussion.id,
- body: 'This discussion has been automatically closed due to inactivity. See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-respoistory-maintenance) for more details.',
+ body: 'This discussion has been automatically closed due to inactivity. See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-repository-maintenance) for more details.',
}
await github.graphql(addCommentMutation, commentVariables);
@@ -260,7 +260,7 @@ jobs:
}`;
const commentVariables = {
discussion: discussion.id,
- body: 'This discussion has been automatically closed due to lack of community support. See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-respoistory-maintenance) for more details.',
+ body: 'This discussion has been automatically closed due to lack of community support. See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-repository-maintenance) for more details.',
}
await github.graphql(addCommentMutation, commentVariables);
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index f2361c43..d3b07697 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -18,7 +18,7 @@ In short, when you submit code changes, your submissions are understood to be un
## Report bugs using Github [discussions](https://github.com/gethomepage/homepage/discussions)
-We use GitHub discussions to triage bugs. Report a bug by [opening a new discussion](https://github.com/gethomepage/homepage/discussions/new?category=support); it's that easy!
+We use GitHub discussions to triage bugs. Report a bug by [opening a new discussion](https://github.com/gethomepage/homepage/discussions/new?category=support); it's that easy! Please do not open an issue unless instructed to do so by a project maintainer.
## Write bug reports with detail, background, and sample configurations
@@ -48,15 +48,18 @@ Please see information in the docs regarding [code formatting with pre-commit ho
By contributing, you agree that your contributions will be licensed under its GNU General Public License.
+## Use of AI for pull requests
+
+In general, homepage does not accept "AI-generated" PRs. If you choose to use something like that to aid the development process to generate a significant proportion of the pull request, please make sure this is explicitly stated in the PR itself.
+
## References
This document was adapted from the open-source contribution guidelines for [Facebook's Draft](https://github.com/facebook/draft-js/blob/main/CONTRIBUTING.md)
-# Automatic Respoistory Maintenance
+## Automatic Respository Maintenance
The homepage team appreciates all effort and interest from the community in filing bug reports, creating feature requests, sharing ideas and helping other community members. That said, in an effort to keep the repository organized and managebale the project uses automatic handling of certain areas:
-- Issues that cannot be reproduced will be marked 'stale' after 7 days of inactivity and closed after 14 further days of inactivity.
- Issues, pull requests and discussions that are closed will be locked after 30 days of inactivity.
- Discussions with a marked answer will be automatically closed.
- Discussions in the 'General' or 'Support' categories will be closed after 180 days of inactivity.
diff --git a/README.md b/README.md
index 5bc61685..f14bdfad 100644
--- a/README.md
+++ b/README.md
@@ -25,6 +25,13 @@
+Homepage builds are kindly powered by DigitalOcean. +
+ # Features With features like quick search, bookmarks, weather support, a wide range of integrations and widgets, an elegant and modern design, and a focus on performance, Homepage is your ideal start to the day and a handy companion throughout it. @@ -41,7 +48,7 @@ With features like quick search, bookmarks, weather support, a wide range of int ## Docker Integration -Homepage has built-in support for Docker, and can automatically discover and add services to the homepage based on labels. See the [Docker](https://gethomepage.dev/latest/installation/docker/) page for more information. +Homepage has built-in support for Docker, and can automatically discover and add services to the homepage based on labels. See the [Docker Service Discovery](https://gethomepage.dev/latest/configs/docker/#automatic-service-discovery) page for more information. ## Service Widgets @@ -59,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/docker.md b/docs/configs/docker.md index 4d3026db..bcd0dd61 100644 --- a/docs/configs/docker.md +++ b/docs/configs/docker.md @@ -235,4 +235,4 @@ You can show the docker stats by clicking the status indicator but this can also showStats: true ``` -Also see the settings for [show docker stats](docker.md#show-docker-stats). +Also see the settings for [show docker stats](settings.md#show-docker-stats). 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/configs/settings.md b/docs/configs/settings.md index 9ee86a85..2f387a65 100644 --- a/docs/configs/settings.md +++ b/docs/configs/settings.md @@ -85,7 +85,7 @@ Or you may pass the path to a local image relative to the `/app/public` director ## Theme -You can configure a fixed them (and disable the theme switcher) by passing the `theme` option, like so: +You can configure a fixed theme (and disable the theme switcher) by passing the `theme` option, like so: ```yaml theme: dark # or light @@ -211,13 +211,13 @@ layout: ### Five Columns -You can add a fifth column (when `style: columns` which is default) by adding: +You can add a fifth column to services (when `style: columns` which is default) by adding: ```yaml fiveColumns: true ``` -By default homepage will max out at 4 columns for column style +By default homepage will max out at 4 columns for services with `columns` style ### Collapsible sections @@ -363,7 +363,7 @@ providers: You can then pass `provider` instead of `apiKey` in your widget configuration. ```yaml -- weather: +- weatherapi: latitude: 50.449684 longitude: 30.525026 provider: weatherapi @@ -377,9 +377,10 @@ You can use the 'Quick Launch' feature to search services, perform a web search There are a few optional settings for the Quick Launch feature: -- `searchDescriptions`: which lets you control whether item descriptions are included in searches. This is off by default. When enabled, results that match the item name will be placed above those that only match the description. +- `searchDescriptions`: which lets you control whether item descriptions are included in searches. This is false by default. When enabled, results that match the item name will be placed above those that only match the description. - `hideInternetSearch`: disable automatically including the currently-selected web search (e.g. from the widget) as a Quick Launch option. This is false by default, enabling the feature. -- `showSearchSuggestions`: shows search suggestions for the internet search. This value will be inherited from the search widget if it is not specified. If it is not specified there either, it will default to false. +- `showSearchSuggestions`: show search suggestions for the internet search. If this is not specified then the setting will be inherited from the search widget. If it is not specified there either, it will default to false. For custom providers the `suggestionUrl` needs to be set in order for this to work. +- `provider`: search engine provider. If none is specified it will try to use the provider set for the Search Widget, if neither are present then internet search will be disabled. - `hideVisitURL`: disable detecting and offering an option to open URLs. This is false by default, enabling the feature. ```yaml @@ -388,6 +389,17 @@ quicklaunch: hideInternetSearch: true showSearchSuggestions: true hideVisitURL: true + provider: google # google, duckduckgo, bing, baidu, brave or custom +``` + +or for a custom search: + +```yaml +quicklaunch: + provider: custom + url: https://www.ecosia.org/search?q= + target: _blank + suggestionUrl: https://ac.ecosia.org/autocomplete?type=list&q= ``` ## Homepage Version @@ -406,6 +418,8 @@ By default the homepage logfile is written to the a `logs` subdirectory of the ` logpath: /logfile/path ``` +By default, logs are sent both to `stdout` and to a file at the path specified. This can be changed by setting the `LOG_TARGETS` environment variable to one of `both` (default), `stdout` or `file`. + ## Show Docker Stats You can show all docker stats expanded in `settings.yaml`: diff --git a/docs/index.md b/docs/index.md index 97a3704b..fe1c0adf 100644 --- a/docs/index.md +++ b/docs/index.md @@ -17,3 +17,10 @@ hide: A modern, fully static, fast, secure fully proxied, highly customizable application dashboard with integrations for over 100 services and translations into multiple languages. Easily configured via YAML files or through docker label discovery.  + + ++Homepage builds are kindly powered by DigitalOcean. +
diff --git a/docs/installation/index.md b/docs/installation/index.md index f1d317c4..beb370c1 100644 --- a/docs/installation/index.md +++ b/docs/installation/index.md @@ -7,6 +7,10 @@ description: Docs intro 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. +