Skip to content

Commit 2024297

Browse files
committed
Merge branch 'main' into linkding_support
# Conflicts: # docs/customservices.md
2 parents a63f9e2 + 3f154b0 commit 2024297

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1318
-666
lines changed

.jsconfig.json

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"compilerOptions": {
3+
"paths": {
4+
"@/*": ["./src/*"]
5+
}
6+
},
7+
"exclude": ["node_modules", "dist"]
8+
}

.schema/config-schema.json

+359
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,359 @@
1+
{
2+
"$id": "https://raw.githubusercontent.com/bastienwirtz/homer/main/.schema/config-schema.json",
3+
"$schema": "http://json-schema.org/draft-07/schema",
4+
"description": "https://github.com/bastienwirtz/homer/blob/main/docs/configuration.md",
5+
"examples": [],
6+
"title": "Homer Dashboard configuration",
7+
"type": "object",
8+
"definitions": {
9+
"Colors": {
10+
"type": "object",
11+
"additionalProperties": false,
12+
"properties": {
13+
"light": {
14+
"$ref": "#/definitions/ColorSet"
15+
},
16+
"dark": {
17+
"$ref": "#/definitions/ColorSet"
18+
}
19+
},
20+
"title": "Colors"
21+
},
22+
"ColorSet": {
23+
"type": "object",
24+
"additionalProperties": false,
25+
"properties": {
26+
"highlight-primary": {
27+
"type": "string"
28+
},
29+
"highlight-secondary": {
30+
"type": "string"
31+
},
32+
"highlight-hover": {
33+
"type": "string"
34+
},
35+
"background": {
36+
"type": "string"
37+
},
38+
"card-background": {
39+
"type": "string"
40+
},
41+
"text": {
42+
"type": "string"
43+
},
44+
"text-header": {
45+
"type": "string"
46+
},
47+
"text-title": {
48+
"type": "string"
49+
},
50+
"text-subtitle": {
51+
"type": "string"
52+
},
53+
"card-shadow": {
54+
"type": "string"
55+
},
56+
"link": {
57+
"type": "string"
58+
},
59+
"link-hover": {
60+
"type": "string"
61+
},
62+
"background-image": {
63+
"type": "string"
64+
}
65+
}
66+
},
67+
"Defaults": {
68+
"type": "object",
69+
"additionalProperties": false,
70+
"properties": {
71+
"layout": {
72+
"enum": [
73+
"columns",
74+
"list"
75+
],
76+
"description": "Layout of the dashboard, either 'columns' or 'list'"
77+
},
78+
"colorTheme": {
79+
"enum": [
80+
"auto",
81+
"light",
82+
"dark"
83+
],
84+
"description": "One of 'auto', 'light', or 'dark'"
85+
}
86+
},
87+
"title": "Defaults"
88+
},
89+
"Hotkey": {
90+
"type": "object",
91+
"additionalProperties": false,
92+
"properties": {
93+
"search": {
94+
"type": "string",
95+
"description": "hotkey for search, e.g. Shift"
96+
}
97+
},
98+
"required": [
99+
"search"
100+
]
101+
},
102+
"Link": {
103+
"type": "object",
104+
"additionalProperties": false,
105+
"properties": {
106+
"name": {
107+
"type": "string",
108+
"description": "Name as seen in the navbar"
109+
},
110+
"icon": {
111+
"type": "string",
112+
"description": "Fontawesome icon"
113+
},
114+
"url": {
115+
"type": "string",
116+
"description": "Url of the link. When #filename is used, it is a link to another homer page, while 'filename' is the name of the config file"
117+
},
118+
"target": {
119+
"type": "string",
120+
"description": "html tag target attribute like _blank for a new page"
121+
}
122+
},
123+
"required": [
124+
"url"
125+
],
126+
"title": "Link"
127+
},
128+
"Message": {
129+
"type": "object",
130+
"additionalProperties": false,
131+
"properties": {
132+
"url": {
133+
"type": "string",
134+
"format": "uri"
135+
},
136+
"mapping": {
137+
"$ref": "#/definitions/Mapping",
138+
"description": "Mapping for the content loaded from the URL"
139+
},
140+
"refreshInterval": {
141+
"type": "integer",
142+
"description": "The refresh interval in milliseconds for reloading the message url"
143+
},
144+
"style": {
145+
"type": "string",
146+
"description": "See https://bulma.io/documentation/components/message/#colors for styling options"
147+
},
148+
"title": {
149+
"type": "string",
150+
"description": "Title of the message box"
151+
},
152+
"icon": {
153+
"type": "string",
154+
"description": "Fontawesome icon for the message box"
155+
},
156+
"content": {
157+
"type": "string",
158+
"description": "HTML content for the message box"
159+
}
160+
},
161+
"title": "Messagebox"
162+
},
163+
"Mapping": {
164+
"type": "object",
165+
"additionalProperties": true,
166+
"title": "Mapping"
167+
},
168+
"Proxy": {
169+
"type": "object",
170+
"additionalProperties": false,
171+
"properties": {
172+
"useCredentials": {
173+
"type": "boolean",
174+
"description": "# send cookies & authorization headers when fetching service specific data. Set to `true` if you use an authentication proxy. Can be overrided on service level. "
175+
},
176+
"headers": {
177+
"$ref": "#/definitions/Headers",
178+
"description": "send custom headers when fetching service specific data. Can also be set on a service level."
179+
}
180+
},
181+
"title": "Proxy"
182+
},
183+
"Headers": {
184+
"type": "object",
185+
"additionalProperties": true,
186+
"title": "Headers"
187+
},
188+
"Service": {
189+
"type": "object",
190+
"additionalProperties": false,
191+
"properties": {
192+
"name": {
193+
"type": "string",
194+
"description": "Service name"
195+
},
196+
"icon": {
197+
"type": "string",
198+
"description": "Fontawesome icon for the service"
199+
},
200+
"logo": {
201+
"type": "string",
202+
"description": "A path to an image can also be provided. Note that icon take precedence if both icon and logo are set."
203+
},
204+
"class": {
205+
"type": "string",
206+
"description": "Optional css class to add on the service group. Example 'highlight-purple'"
207+
},
208+
"items": {
209+
"type": "array",
210+
"items": {
211+
"$ref": "#/definitions/Item"
212+
}
213+
}
214+
},
215+
"required": [
216+
"items"
217+
],
218+
"title": "Service"
219+
},
220+
"Item": {
221+
"type": "object",
222+
"additionalProperties": true,
223+
"properties": {
224+
"name": {
225+
"type": "string"
226+
},
227+
"logo": {
228+
"type": "string",
229+
"description": "Path to a logo. Alternatively a fa icon can be provided"
230+
},
231+
"icon": {
232+
"type": "string",
233+
"description": "Fontawesome icon for the item, alternative for logo"
234+
},
235+
"subtitle": {
236+
"type": "string"
237+
},
238+
"tag": {
239+
"type": "string",
240+
"description": "Show tag"
241+
},
242+
"keywords": {
243+
"type": "string",
244+
"description": "Optional keyword used for searching purpose"
245+
},
246+
"url": {
247+
"type": "string",
248+
"description": "Url of this item"
249+
},
250+
"target": {
251+
"type": "string",
252+
"description": "html tag target attribute like _blank for a new page"
253+
},
254+
"tagstyle": {
255+
"type": "string",
256+
"description": "Styleclass for the tag"
257+
},
258+
"type": {
259+
"type": "string",
260+
"description": "Optional, loads a specific component that provides extra features. MUST MATCH a file name (without file extension) available in `src/components/services`"
261+
}
262+
},
263+
"title": "Item"
264+
}
265+
},
266+
"properties": {
267+
"externalConfig": {
268+
"type": "string",
269+
"description": "Use external configuration file. Using this will ignore remaining config in this file externalConfig: https://example.com/server-luci/config.yaml"
270+
},
271+
"title": {
272+
"type": "string",
273+
"description": "Title of the dashboard"
274+
},
275+
"subtitle": {
276+
"type": "string",
277+
"description": "Subtitle of the dashboard"
278+
},
279+
"documentTitle": {
280+
"type": "string",
281+
"description": "Title of the document. When not filled, title (and subtitle will be used)"
282+
},
283+
"logo": {
284+
"type": "string",
285+
"description": "Path to logo image"
286+
},
287+
"icon": {
288+
"type": "string",
289+
"description": "Dashboard icon"
290+
},
291+
"header": {
292+
"type": "boolean",
293+
"description": "Show header, default is true"
294+
},
295+
"hotkey": {
296+
"$ref": "#/definitions/Hotkey",
297+
"description": "Define hotkeys, for example for search"
298+
},
299+
"footer": {
300+
"anyOf": [
301+
{
302+
"type": "boolean"
303+
},
304+
{
305+
"type": "string"
306+
}
307+
],
308+
"description": "footer Line content. HTML is supported. Set false if you want to hide it."
309+
},
310+
"columns": {
311+
"type": "string",
312+
"description": "'auto' or number (must be a factor of 12: 1, 2, 3, 4, 6, 12)",
313+
"format": "integer"
314+
},
315+
"connectivityCheck": {
316+
"type": "boolean",
317+
"description": "# whether you want to display a message when the apps are not accessible anymore (VPN disconnected for example). You should set it to true when using an authentication proxy, it also reloads the page when a redirection is detected when checking connectivity."
318+
},
319+
"proxy": {
320+
"$ref": "#/definitions/Proxy",
321+
"description": "Optional: Proxy / hosting option"
322+
},
323+
"defaults": {
324+
"$ref": "#/definitions/Defaults"
325+
},
326+
"theme": {
327+
"type": "string",
328+
"description": "'default' or one of the themes available in 'src/assets/themes'"
329+
},
330+
"stylesheet": {
331+
"type": "array",
332+
"items": {
333+
"type": "string"
334+
},
335+
"description": "Will load custom CSS files. Especially useful for custom icon sets. Entries are paths to the stylesheets"
336+
},
337+
"colors": {
338+
"$ref": "#/definitions/Colors"
339+
},
340+
"message": {
341+
"$ref": "#/definitions/Message",
342+
"description": "Messagebox"
343+
},
344+
"links": {
345+
"description": "Links in the navigation bar",
346+
"type": "array",
347+
"items": {
348+
"$ref": "#/definitions/Link"
349+
}
350+
},
351+
"services": {
352+
"description": "Services",
353+
"type": "array",
354+
"items": {
355+
"$ref": "#/definitions/Service"
356+
}
357+
}
358+
}
359+
}

Dockerfile

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ RUN pnpm build
1717
# production stage
1818
FROM alpine:3.21
1919

20+
ARG VERSION_TAG=latest
21+
2022
LABEL \
2123
org.label-schema.schema-version="1.0" \
2224
org.label-schema.version="$VERSION_TAG" \

0 commit comments

Comments
 (0)