diff --git a/apps/server/docker/traefik/traefik.yml b/apps/server/docker/traefik/traefik.yml index 4c582bd01..0fb59ab1d 100644 --- a/apps/server/docker/traefik/traefik.yml +++ b/apps/server/docker/traefik/traefik.yml @@ -1,6 +1,10 @@ entryPoints: web: address: ":8090" + http: + encodedCharacters: + allowEncodedSlash: true + allowEncodedHash: true providers: file: diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html index 672edae1c..a69329fce 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html @@ -216,7 +216,7 @@
#calendar:color
**#color** instead.
+ **#color** instead.
#color, but applies the color only for the event
in the calendar and not for other places such as the note tree.Configure Traefik proxy and HTTPS. See #7768 for - reference
+The goal of this article is to configure Traefik proxy and HTTPS. See + #7768for reference.
+Traefik 3.6.4 introduced a breaking change regarding
+ how percent-encoded characters are handled in URLs. More specifically some
+ URLs used by Trilium (such as search/%23workspace%20%23!template)
+ are automatically rejected by Traefik, resulting in HTTP 400 errors.
To solve this, the Traefik static configuration must + be modified in order to allow those characters:
entryPoints:
+ web:
+ http:
+ encodedCharacters:
+ allowEncodedSlash: true
+ allowEncodedHash: true
+
Setting up Traefik as reverse proxy requires setting the following labels:
labels:
- traefik.enable=true
@@ -16,8 +35,8 @@
- traefik.http.middlewares.trilium-headers.headers.customrequestheaders.X-Forwarded-Proto=https
After setting up a reverse proxy, make sure to configure the [missing note].
-docker-compose.yamlservices:
+ href="#root/_help_LLzSMXACKhUs">Trusted proxy.
+Example docker-compose.yaml
services:
trilium:
image: triliumnext/trilium
container_name: trilium
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets.html
index 4f1d6731f..2ef613b9b 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets.html
@@ -1,33 +1,28 @@
-Launch bar widgets are a subset of Custom Widgets that
+
Launch bar widgets are a subset of Custom Widgets that
can be used to render custom buttons and widgets inside the Launch Bar.
+ href="#root/_help_xYmIYSP6wE3F">Launch Bar.
Creating a launch bar widget
-Unlike Custom Widgets,
+
Unlike Custom Widgets,
the process of setting up a launch bar widget is slightly different:
- - Create a Code note of type JavaScript (front-end).
+
- Create a Code note of type JavaScript (front-end).
- - The script itself uses the same concepts as Custom Widgets,
- including the use of a
NoteContextAwareWidget or
- a BasicWidget (according to needs).
- - As examples, see Note Title Widget and
+
- The script itself uses the same concepts as Custom Widgets, including the use of a
NoteContextAwareWidget or
+ a BasicWidget (according to needs).
+ - As examples, see Note Title Widget and
Analog Watch.
-
+ class="reference-link" href="#root/_help_gcI7RPbaNSh3">Analog Watch.
+
- - Don't set
#widget, as that attribute is
- reserved for Custom Widgets.
- - In the Global menu,
+
- Don't set
#widget, as that attribute is reserved for
+ Custom Widgets.
+ - In the Global menu,
select Configure launchbar.
- - In the Visible Launchers section, select Add a custom widget.
- - Give the newly created launcher a name (and optionally a name).
- - In the Promoted Attributes section,
- modify the widget field to point to the newly created note.
- - Refresh the UI.
+ - In the Visible Launchers section, select Add a custom widget.
+ - Give the newly created launcher a name (and optionally a name).
+ - In the Promoted Attributes section,
+ modify the widget field to point to the newly created note.
+ - Refresh the UI.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Analog Watch.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Analog Watch.html
index f0fb7e5b6..e9625e39b 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Analog Watch.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Analog Watch.html
@@ -4,7 +4,7 @@
This is a more intricate example of a basic widget, which displays an
analog watch in the launch bar. Unlike note-context aware widgets, basic
- widgets don't react to note navigation.
const TPL = `
+ widgets don't react to note navigation.const TPL = `
<div class="analog-watch" style="
position: relative;
height: 38px;
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget.html
index 9549f5d81..6e6da3273 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget.html
@@ -6,7 +6,7 @@
currently opened note and refreshes automatically as the user navigates
through the notes.
In this example, the title of the note is displayed. It works best on
- the horizontal layout.
const TPL = `\
+ the horizontal layout.const TPL = `\
<div style="
display: flex;
height: 53px;
diff --git a/docs/Developer Guide/Developer Guide/Documentation.md b/docs/Developer Guide/Developer Guide/Documentation.md
index 35bdcf096..cb411c0f7 100644
--- a/docs/Developer Guide/Developer Guide/Documentation.md
+++ b/docs/Developer Guide/Developer Guide/Documentation.md
@@ -1,5 +1,5 @@
# Documentation
-There are multiple types of documentation for Trilium:
+There are multiple types of documentation for Trilium:
* The _User Guide_ represents the user-facing documentation. This documentation can be browsed by users directly from within Trilium, by pressing F1.
* The _Developer's Guide_ represents a set of Markdown documents that present the internals of Trilium, for developers.
diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json
index 7878fb278..d846c6d27 100644
--- a/docs/User Guide/!!!meta.json
+++ b/docs/User Guide/!!!meta.json
@@ -15662,6 +15662,48 @@
"type": "text",
"mime": "text/html",
"attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "MgibgPcfeuGz",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "xYmIYSP6wE3F",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "IPArqVfDQ4We",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "gcI7RPbaNSh3",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "x3i7MxGccDuM",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 60
+ },
{
"type": "label",
"name": "iconClass",
@@ -15675,48 +15717,6 @@
"value": "launch-bar-widgets",
"isInheritable": false,
"position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "MgibgPcfeuGz",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "xYmIYSP6wE3F",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "x3i7MxGccDuM",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "IPArqVfDQ4We",
- "isInheritable": false,
- "position": 90
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "gcI7RPbaNSh3",
- "isInheritable": false,
- "position": 100
}
],
"format": "markdown",
@@ -15741,6 +15741,13 @@
"type": "text",
"mime": "text/html",
"attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "x0JgW8UqGXvq",
+ "isInheritable": false,
+ "position": 10
+ },
{
"type": "label",
"name": "shareAlias",
@@ -15754,13 +15761,6 @@
"value": "note-title-widget",
"isInheritable": false,
"position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "x0JgW8UqGXvq",
- "isInheritable": false,
- "position": 50
}
],
"format": "markdown",
diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
index 1582093a4..6630185a5 100644
--- a/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
+++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
@@ -1,5 +1,23 @@
# Traefik
-Configure Traefik proxy and HTTPS. See [#7768](https://github.com/TriliumNext/Trilium/issues/7768#issuecomment-3539165814) for reference
+The goal of this article is to configure Traefik proxy and HTTPS. See [#7768](https://github.com/TriliumNext/Trilium/issues/7768#issuecomment-3539165814) for reference.
+
+## Breaking change in Traefik 3.6.4
+
+Traefik 3.6.4 introduced a [breaking change](https://doc.traefik.io/traefik/migrate/v3/#encoded-characters-in-request-path) regarding how percent-encoded characters are handled in URLs. More specifically some URLs used by Trilium (such as `search/%23workspace%20%23!template`) are automatically rejected by Traefik, resulting in HTTP 400 errors.
+
+To solve this, the Traefik [**static** configuration](https://doc.traefik.io/traefik/getting-started/configuration-overview/#the-install-configuration) must be modified in order to allow those characters:
+
+```yaml
+entryPoints:
+ web:
+ http:
+ encodedCharacters:
+ allowEncodedSlash: true
+ allowEncodedHash: true
+```
+
+> [!TIP]
+> If you still have issues, depending on how Trilium is used (especially regarding search), you might need to enable more encoded character groups. For more information, see [the relevant GitHub issue](https://github.com/TriliumNext/Trilium/issues/7968); feel free to report your findings.
### Build the docker-compose file
@@ -23,7 +41,7 @@ Setting up Traefik as reverse proxy requires setting the following labels:
### Setup needed environment variables
-After setting up a reverse proxy, make sure to configure the [missing note].
+After setting up a reverse proxy, make sure to configure the Trusted proxy.
### Example `docker-compose.yaml`