diff --git a/docusaurus.config.ts b/docusaurus.config.ts
index 46a7a270..01995ef3 100644
--- a/docusaurus.config.ts
+++ b/docusaurus.config.ts
@@ -17,7 +17,19 @@ const config: Config = {
// Has to be set even if not using translations
i18n: {
defaultLocale: 'en',
- locales: ['en'],
+ locales: ['en', 'cn'],
+ localeConfigs: {
+ en: {
+ label: 'English',
+ direction: 'ltr',
+ htmlLang: 'en-US',
+ },
+ cn: {
+ label: '简体中文',
+ direction: 'ltr',
+ htmlLang: 'zh-CN',
+ },
+ },
},
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'throw',
@@ -163,6 +175,10 @@ const config: Config = {
},
],
},
+ {
+ type: 'localeDropdown',
+ position: 'right',
+ },
{
type: 'search',
position: 'right',
diff --git a/i18n/cn/code.json b/i18n/cn/code.json
new file mode 100644
index 00000000..7a6f29f9
--- /dev/null
+++ b/i18n/cn/code.json
@@ -0,0 +1,468 @@
+{
+ "theme.NotFound.title": {
+ "message": "Page Not Found",
+ "description": "The title of the 404 page"
+ },
+ "theme.NotFound.p1": {
+ "message": "We could not find what you were looking for.",
+ "description": "The first paragraph of the 404 page"
+ },
+ "A simple, yet powerful dashboard for your server.": {
+ "message": "简单而强大的服务器仪表板。"
+ },
+ "A sleek, modern dashboard that puts all of your apps and services at your fingertips. Control everything in one convenient location. Seamlessly integrates with the apps you've added, providing you with valuable information.": {
+ "message": "时尚现代的仪表板,将您所有的应用程序和服务触手可及。在一个便捷的位置控制一切。与您添加的应用程序无缝集成,为您提供有价值的信息。"
+ },
+ "Install": {
+ "message": "安装"
+ },
+ "Host from $2.3/month": {
+ "message": "托管服务每月 $2.3 起"
+ },
+ "theme.ErrorPageContent.title": {
+ "message": "This page crashed.",
+ "description": "The title of the fallback page when the page crashed"
+ },
+ "theme.BackToTopButton.buttonAriaLabel": {
+ "message": "Scroll back to top",
+ "description": "The ARIA label for the back to top button"
+ },
+ "theme.blog.archive.title": {
+ "message": "Archive",
+ "description": "The page & hero title of the blog archive page"
+ },
+ "theme.blog.archive.description": {
+ "message": "Archive",
+ "description": "The page & hero description of the blog archive page"
+ },
+ "theme.blog.paginator.navAriaLabel": {
+ "message": "Blog list page navigation",
+ "description": "The ARIA label for the blog pagination"
+ },
+ "theme.blog.paginator.newerEntries": {
+ "message": "Newer entries",
+ "description": "The label used to navigate to the newer blog posts page (previous page)"
+ },
+ "theme.blog.paginator.olderEntries": {
+ "message": "Older entries",
+ "description": "The label used to navigate to the older blog posts page (next page)"
+ },
+ "theme.blog.post.paginator.navAriaLabel": {
+ "message": "Blog post page navigation",
+ "description": "The ARIA label for the blog posts pagination"
+ },
+ "theme.blog.post.paginator.newerPost": {
+ "message": "Newer post",
+ "description": "The blog post button label to navigate to the newer/previous post"
+ },
+ "theme.blog.post.paginator.olderPost": {
+ "message": "Older post",
+ "description": "The blog post button label to navigate to the older/next post"
+ },
+ "theme.tags.tagsPageLink": {
+ "message": "View all tags",
+ "description": "The label of the link targeting the tag list page"
+ },
+ "theme.colorToggle.ariaLabel.mode.system": {
+ "message": "system mode",
+ "description": "The name for the system color mode"
+ },
+ "theme.colorToggle.ariaLabel.mode.light": {
+ "message": "light mode",
+ "description": "The name for the light color mode"
+ },
+ "theme.colorToggle.ariaLabel.mode.dark": {
+ "message": "dark mode",
+ "description": "The name for the dark color mode"
+ },
+ "theme.colorToggle.ariaLabel": {
+ "message": "Switch between dark and light mode (currently {mode})",
+ "description": "The ARIA label for the color mode toggle"
+ },
+ "theme.docs.breadcrumbs.navAriaLabel": {
+ "message": "Breadcrumbs",
+ "description": "The ARIA label for the breadcrumbs"
+ },
+ "theme.docs.DocCard.categoryDescription.plurals": {
+ "message": "1 item|{count} items",
+ "description": "The default description for a category card in the generated index about how many items this category includes"
+ },
+ "theme.docs.paginator.navAriaLabel": {
+ "message": "Docs pages",
+ "description": "The ARIA label for the docs pagination"
+ },
+ "theme.docs.paginator.previous": {
+ "message": "Previous",
+ "description": "The label used to navigate to the previous doc"
+ },
+ "theme.docs.paginator.next": {
+ "message": "Next",
+ "description": "The label used to navigate to the next doc"
+ },
+ "theme.docs.tagDocListPageTitle.nDocsTagged": {
+ "message": "One doc tagged|{count} docs tagged",
+ "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.docs.tagDocListPageTitle": {
+ "message": "{nDocsTagged} with \"{tagName}\"",
+ "description": "The title of the page for a docs tag"
+ },
+ "theme.docs.versionBadge.label": {
+ "message": "Version: {versionLabel}"
+ },
+ "theme.docs.versions.unreleasedVersionLabel": {
+ "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.",
+ "description": "The label used to tell the user that he's browsing an unreleased doc version"
+ },
+ "theme.docs.versions.unmaintainedVersionLabel": {
+ "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.",
+ "description": "The label used to tell the user that he's browsing an unmaintained doc version"
+ },
+ "theme.docs.versions.latestVersionSuggestionLabel": {
+ "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).",
+ "description": "The label used to tell the user to check the latest version"
+ },
+ "theme.docs.versions.latestVersionLinkLabel": {
+ "message": "latest version",
+ "description": "The label used for the latest version suggestion link label"
+ },
+ "theme.common.editThisPage": {
+ "message": "Edit this page",
+ "description": "The link label to edit the current page"
+ },
+ "theme.common.headingLinkTitle": {
+ "message": "Direct link to {heading}",
+ "description": "Title for link to heading"
+ },
+ "theme.lastUpdated.atDate": {
+ "message": " on {date}",
+ "description": "The words used to describe on which date a page has been last updated"
+ },
+ "theme.lastUpdated.byUser": {
+ "message": " by {user}",
+ "description": "The words used to describe by who the page has been last updated"
+ },
+ "theme.lastUpdated.lastUpdatedAtBy": {
+ "message": "Last updated{atDate}{byUser}",
+ "description": "The sentence used to display when a page has been last updated, and by who"
+ },
+ "theme.navbar.mobileVersionsDropdown.label": {
+ "message": "Versions",
+ "description": "The label for the navbar versions dropdown on mobile view"
+ },
+ "theme.tags.tagsListLabel": {
+ "message": "Tags:",
+ "description": "The label alongside a tag list"
+ },
+ "theme.AnnouncementBar.closeButtonAriaLabel": {
+ "message": "Close",
+ "description": "The ARIA label for close button of announcement bar"
+ },
+ "theme.admonition.caution": {
+ "message": "caution",
+ "description": "The default label used for the Caution admonition (:::caution)"
+ },
+ "theme.admonition.danger": {
+ "message": "danger",
+ "description": "The default label used for the Danger admonition (:::danger)"
+ },
+ "theme.admonition.info": {
+ "message": "info",
+ "description": "The default label used for the Info admonition (:::info)"
+ },
+ "theme.admonition.note": {
+ "message": "note",
+ "description": "The default label used for the Note admonition (:::note)"
+ },
+ "theme.admonition.tip": {
+ "message": "tip",
+ "description": "The default label used for the Tip admonition (:::tip)"
+ },
+ "theme.admonition.warning": {
+ "message": "warning",
+ "description": "The default label used for the Warning admonition (:::warning)"
+ },
+ "theme.blog.sidebar.navAriaLabel": {
+ "message": "Blog recent posts navigation",
+ "description": "The ARIA label for recent posts in the blog sidebar"
+ },
+ "theme.DocSidebarItem.expandCategoryAriaLabel": {
+ "message": "Expand sidebar category '{label}'",
+ "description": "The ARIA label to expand the sidebar category"
+ },
+ "theme.DocSidebarItem.collapseCategoryAriaLabel": {
+ "message": "Collapse sidebar category '{label}'",
+ "description": "The ARIA label to collapse the sidebar category"
+ },
+ "theme.NavBar.navAriaLabel": {
+ "message": "Main",
+ "description": "The ARIA label for the main navigation"
+ },
+ "theme.navbar.mobileLanguageDropdown.label": {
+ "message": "Languages",
+ "description": "The label for the mobile language switcher dropdown"
+ },
+ "theme.NotFound.p2": {
+ "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.",
+ "description": "The 2nd paragraph of the 404 page"
+ },
+ "theme.TOCCollapsible.toggleButtonLabel": {
+ "message": "On this page",
+ "description": "The label used by the button on the collapsible TOC component"
+ },
+ "theme.blog.post.readMore": {
+ "message": "Read more",
+ "description": "The label used in blog post item excerpts to link to full blog posts"
+ },
+ "theme.blog.post.readMoreLabel": {
+ "message": "Read more about {title}",
+ "description": "The ARIA label for the link to full blog posts from excerpts"
+ },
+ "theme.blog.post.readingTime.plurals": {
+ "message": "One min read|{readingTime} min read",
+ "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.CodeBlock.copy": {
+ "message": "Copy",
+ "description": "The copy button label on code blocks"
+ },
+ "theme.CodeBlock.copied": {
+ "message": "Copied",
+ "description": "The copied button label on code blocks"
+ },
+ "theme.CodeBlock.copyButtonAriaLabel": {
+ "message": "Copy code to clipboard",
+ "description": "The ARIA label for copy code blocks button"
+ },
+ "theme.docs.breadcrumbs.home": {
+ "message": "Home page",
+ "description": "The ARIA label for the home page in the breadcrumbs"
+ },
+ "theme.CodeBlock.wordWrapToggle": {
+ "message": "Toggle word wrap",
+ "description": "The title attribute for toggle word wrapping button of code block lines"
+ },
+ "theme.docs.sidebar.collapseButtonTitle": {
+ "message": "Collapse sidebar",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.collapseButtonAriaLabel": {
+ "message": "Collapse sidebar",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.navAriaLabel": {
+ "message": "Docs sidebar",
+ "description": "The ARIA label for the sidebar navigation"
+ },
+ "theme.docs.sidebar.closeSidebarButtonAriaLabel": {
+ "message": "Close navigation bar",
+ "description": "The ARIA label for close button of mobile sidebar"
+ },
+ "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
+ "message": "← Back to main menu",
+ "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"
+ },
+ "theme.docs.sidebar.toggleSidebarButtonAriaLabel": {
+ "message": "Toggle navigation bar",
+ "description": "The ARIA label for hamburger menu button of mobile navigation"
+ },
+ "theme.navbar.mobileDropdown.collapseButton.expandAriaLabel": {
+ "message": "Expand the dropdown",
+ "description": "The ARIA label of the button to expand the mobile dropdown navbar item"
+ },
+ "theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel": {
+ "message": "Collapse the dropdown",
+ "description": "The ARIA label of the button to collapse the mobile dropdown navbar item"
+ },
+ "theme.docs.sidebar.expandButtonTitle": {
+ "message": "Expand sidebar",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.docs.sidebar.expandButtonAriaLabel": {
+ "message": "Expand sidebar",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.SearchBar.seeAll": {
+ "message": "See all {count} results"
+ },
+ "theme.SearchPage.documentsFound.plurals": {
+ "message": "One document found|{count} documents found",
+ "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.SearchPage.existingResultsTitle": {
+ "message": "Search results for \"{query}\"",
+ "description": "The search page title for non-empty query"
+ },
+ "theme.SearchPage.emptyResultsTitle": {
+ "message": "Search the documentation",
+ "description": "The search page title for empty query"
+ },
+ "theme.SearchPage.inputPlaceholder": {
+ "message": "Type your search here",
+ "description": "The placeholder for search page input"
+ },
+ "theme.SearchPage.inputLabel": {
+ "message": "Search",
+ "description": "The ARIA label for search page input"
+ },
+ "theme.SearchPage.algoliaLabel": {
+ "message": "Search by Algolia",
+ "description": "The ARIA label for Algolia mention"
+ },
+ "theme.SearchPage.noResultsText": {
+ "message": "No results were found",
+ "description": "The paragraph for empty search result"
+ },
+ "theme.SearchPage.fetchingNewResults": {
+ "message": "Fetching new results...",
+ "description": "The paragraph for fetching new search results"
+ },
+ "theme.SearchBar.label": {
+ "message": "Search",
+ "description": "The ARIA label and placeholder for search button"
+ },
+ "theme.SearchModal.searchBox.resetButtonTitle": {
+ "message": "Clear the query",
+ "description": "The label and ARIA label for search box reset button"
+ },
+ "theme.SearchModal.searchBox.cancelButtonText": {
+ "message": "Cancel",
+ "description": "The label and ARIA label for search box cancel button"
+ },
+ "theme.SearchModal.startScreen.recentSearchesTitle": {
+ "message": "Recent",
+ "description": "The title for recent searches"
+ },
+ "theme.SearchModal.startScreen.noRecentSearchesText": {
+ "message": "No recent searches",
+ "description": "The text when no recent searches"
+ },
+ "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": {
+ "message": "Save this search",
+ "description": "The label for save recent search button"
+ },
+ "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": {
+ "message": "Remove this search from history",
+ "description": "The label for remove recent search button"
+ },
+ "theme.SearchModal.startScreen.favoriteSearchesTitle": {
+ "message": "Favorite",
+ "description": "The title for favorite searches"
+ },
+ "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": {
+ "message": "Remove this search from favorites",
+ "description": "The label for remove favorite search button"
+ },
+ "theme.SearchModal.errorScreen.titleText": {
+ "message": "Unable to fetch results",
+ "description": "The title for error screen of search modal"
+ },
+ "theme.SearchModal.errorScreen.helpText": {
+ "message": "You might want to check your network connection.",
+ "description": "The help text for error screen of search modal"
+ },
+ "theme.SearchModal.footer.selectText": {
+ "message": "to select",
+ "description": "The explanatory text of the action for the enter key"
+ },
+ "theme.SearchModal.footer.selectKeyAriaLabel": {
+ "message": "Enter key",
+ "description": "The ARIA label for the Enter key button that makes the selection"
+ },
+ "theme.SearchModal.footer.navigateText": {
+ "message": "to navigate",
+ "description": "The explanatory text of the action for the Arrow up and Arrow down key"
+ },
+ "theme.SearchModal.footer.navigateUpKeyAriaLabel": {
+ "message": "Arrow up",
+ "description": "The ARIA label for the Arrow up key button that makes the navigation"
+ },
+ "theme.SearchModal.footer.navigateDownKeyAriaLabel": {
+ "message": "Arrow down",
+ "description": "The ARIA label for the Arrow down key button that makes the navigation"
+ },
+ "theme.SearchModal.footer.closeText": {
+ "message": "to close",
+ "description": "The explanatory text of the action for Escape key"
+ },
+ "theme.SearchModal.footer.closeKeyAriaLabel": {
+ "message": "Escape key",
+ "description": "The ARIA label for the Escape key button that close the modal"
+ },
+ "theme.SearchModal.footer.searchByText": {
+ "message": "Search by",
+ "description": "The text explain that the search is making by Algolia"
+ },
+ "theme.SearchModal.noResultsScreen.noResultsText": {
+ "message": "No results for",
+ "description": "The text explains that there are no results for the following search"
+ },
+ "theme.SearchModal.noResultsScreen.suggestedQueryText": {
+ "message": "Try searching for",
+ "description": "The text for the suggested query when no results are found for the following search"
+ },
+ "theme.SearchModal.noResultsScreen.reportMissingResultsText": {
+ "message": "Believe this query should return results?",
+ "description": "The text for the question where the user thinks there are missing results"
+ },
+ "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": {
+ "message": "Let us know.",
+ "description": "The text for the link to report missing results"
+ },
+ "theme.SearchModal.placeholder": {
+ "message": "Search docs",
+ "description": "The placeholder of the input of the DocSearch pop-up modal"
+ },
+ "theme.blog.post.plurals": {
+ "message": "One post|{count} posts",
+ "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.blog.tagTitle": {
+ "message": "{nPosts} tagged with \"{tagName}\"",
+ "description": "The title of the page for a blog tag"
+ },
+ "theme.blog.author.pageTitle": {
+ "message": "{authorName} - {nPosts}",
+ "description": "The title of the page for a blog author"
+ },
+ "theme.blog.authorsList.pageTitle": {
+ "message": "Authors",
+ "description": "The title of the authors page"
+ },
+ "theme.blog.authorsList.viewAll": {
+ "message": "View all authors",
+ "description": "The label of the link targeting the blog authors page"
+ },
+ "theme.blog.author.noPosts": {
+ "message": "This author has not written any posts yet.",
+ "description": "The text for authors with 0 blog post"
+ },
+ "theme.contentVisibility.unlistedBanner.title": {
+ "message": "Unlisted page",
+ "description": "The unlisted content banner title"
+ },
+ "theme.contentVisibility.unlistedBanner.message": {
+ "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.",
+ "description": "The unlisted content banner message"
+ },
+ "theme.contentVisibility.draftBanner.title": {
+ "message": "Draft page",
+ "description": "The draft content banner title"
+ },
+ "theme.contentVisibility.draftBanner.message": {
+ "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.",
+ "description": "The draft content banner message"
+ },
+ "theme.ErrorPageContent.tryAgain": {
+ "message": "Try again",
+ "description": "The label of the button to try again rendering when the React error boundary captures an error"
+ },
+ "theme.common.skipToMainContent": {
+ "message": "Skip to main content",
+ "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"
+ },
+ "theme.tags.tagsPageTitle": {
+ "message": "Tags",
+ "description": "The title of the tag list page"
+ }
+}
diff --git a/i18n/cn/docusaurus-plugin-content-blog/options.json b/i18n/cn/docusaurus-plugin-content-blog/options.json
new file mode 100644
index 00000000..9239ff70
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-blog/options.json
@@ -0,0 +1,14 @@
+{
+ "title": {
+ "message": "Blog",
+ "description": "The title for the blog used in SEO"
+ },
+ "description": {
+ "message": "Blog",
+ "description": "The description for the blog used in SEO"
+ },
+ "sidebar.title": {
+ "message": "Recent posts",
+ "description": "The label for the left sidebar"
+ }
+}
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current.json b/i18n/cn/docusaurus-plugin-content-docs/current.json
new file mode 100644
index 00000000..62a9d148
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,82 @@
+{
+ "version.label": {
+ "message": "Next",
+ "description": "The label for version current"
+ },
+ "sidebar.GettingStarted.category.Installation": {
+ "message": "Installation",
+ "description": "The label for category Installation in sidebar GettingStarted"
+ },
+ "sidebar.GettingStarted.category.Installation.link.generated-index.title": {
+ "message": "Getting started",
+ "description": "The generated-index page title for category Installation in sidebar GettingStarted"
+ },
+ "sidebar.Docs.category.Getting started": {
+ "message": "Getting started",
+ "description": "The label for category Getting started in sidebar Docs"
+ },
+ "sidebar.Docs.category.Getting started.link.generated-index.title": {
+ "message": "Getting started",
+ "description": "The generated-index page title for category Getting started in sidebar Docs"
+ },
+ "sidebar.Docs.category.Installation": {
+ "message": "Installation",
+ "description": "The label for category Installation in sidebar Docs"
+ },
+ "sidebar.Docs.category.Installation.link.generated-index.title": {
+ "message": "Getting started",
+ "description": "The generated-index page title for category Installation in sidebar Docs"
+ },
+ "sidebar.Docs.category.Management": {
+ "message": "Management",
+ "description": "The label for category Management in sidebar Docs"
+ },
+ "sidebar.Docs.category.Management.link.generated-index.title": {
+ "message": "Management pages",
+ "description": "The generated-index page title for category Management in sidebar Docs"
+ },
+ "sidebar.Docs.category.Integrations": {
+ "message": "Integrations",
+ "description": "The label for category Integrations in sidebar Docs"
+ },
+ "sidebar.Docs.category.Integrations.link.generated-index.title": {
+ "message": "Integrations",
+ "description": "The generated-index page title for category Integrations in sidebar Docs"
+ },
+ "sidebar.Docs.category.Integrations.link.generated-index.description": {
+ "message": "Integration are a principal part of homarr, it's where you can connect your other apps to interact with them with widgets or other capabilities, Homarr currently integrates with the following applications:",
+ "description": "The generated-index page description for category Integrations in sidebar Docs"
+ },
+ "sidebar.Docs.category.Widgets": {
+ "message": "Widgets",
+ "description": "The label for category Widgets in sidebar Docs"
+ },
+ "sidebar.Docs.category.Widgets.link.generated-index.title": {
+ "message": "Widgets",
+ "description": "The generated-index page title for category Widgets in sidebar Docs"
+ },
+ "sidebar.Docs.category.Widgets.link.generated-index.description": {
+ "message": "Widgets allow you to show data on your board or control applications. Click on one of the widgets below for further information:",
+ "description": "The generated-index page description for category Widgets in sidebar Docs"
+ },
+ "sidebar.Docs.category.Advanced": {
+ "message": "Advanced",
+ "description": "The label for category Advanced in sidebar Docs"
+ },
+ "sidebar.Docs.category.Advanced.link.generated-index.title": {
+ "message": "Advanced Concepts or features",
+ "description": "The generated-index page title for category Advanced in sidebar Docs"
+ },
+ "sidebar.Docs.category.Developer guides": {
+ "message": "Developer guides",
+ "description": "The label for category Developer guides in sidebar Docs"
+ },
+ "sidebar.Docs.category.Command line interface": {
+ "message": "Command line interface",
+ "description": "The label for category Command line interface in sidebar Docs"
+ },
+ "sidebar.Docs.category.Community": {
+ "message": "Community",
+ "description": "The label for category Community in sidebar Docs"
+ }
+}
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/_category_.json b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/_category_.json
new file mode 100644
index 00000000..28623c90
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "Getting started",
+ "position": 1,
+ "collapsed": false,
+ "link": {
+ "type": "generated-index",
+ "title": "Getting started"
+ }
+}
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/after-the-installation.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/after-the-installation.mdx
new file mode 100644
index 00000000..baf55b42
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/after-the-installation.mdx
@@ -0,0 +1,316 @@
+---
+title: After the installation
+sidebar_position: 3
+tags:
+ - Getting started
+ - Configuration
+---
+
+import imageStartFromScratchStepServerSettings from "./img/onboarding-from-scratch-step-server-settings.png";
+import imageStartFromScratchStepAdminUser from "./img/onboarding-from-scratch-step-admin-user.png";
+import imageStartFromScratchStepExternalAdminGroup from "./img/onboarding-from-scratch-step-external-admin-group.png";
+import imageStartFromScratchStepFinish from "./img/onboarding-from-scratch-step-finish.png";
+import manageBoardHeaderEditMode from "./img/manage-board-header-edit-mode.png";
+import manageBoardHeaderAddItem from "./img/manage-board-header-add-item-menu.png";
+import manageBoardHeaderChooseItem from "./img/manage-board-header-choose-item.png";
+import manageBoardNoApp from "./img/manage-board-no-app.png";
+import manageExportOldHomarr from "./img/old-homarr-export-data.png";
+import manageImportOldHomarrDropzone from "./img/old-homarr-import-dropzone.png";
+import manageImportOldHomarrChooseData from "./img/old-homarr-import-choose-imported-data.png";
+import manageImportDecryptionToken from "./img/old-homarr-import-decryption-token.png";
+
+:::tip
+
+Read our [glossary](./glossary) if you are new to Homarr.
+
+:::
+
+Congratulations on installing Homarr. Now it's time to get yourself familiar with the concepts of Homarr and how to use it.
+
+## Onboarding
+The onboard will show the first time you start Homarr.
+This process will help you with your first steps and adding some initial data, such as the administrator account.
+
+:::note
+
+If you see this screen repeatitly after you restarted the Homarr container, your Docker mounting paths may be missing,
+incorrect or read-only. Read [our installation instructions](/docs/getting-started/installation/docker) again to fix this issue.
+
+:::
+
+You can either import a previous dashboard using the ZIP archive or start from scratch:
+
+
+
+You may refresh anytime and continue from a different device - the onboarding is saved immideatly on the server for your convinience.
+
+### Starting from scratch
+Depending on your auth provider configuration you will either first see the admin user creation form or the external group creation form.
+If credentials provider was selected, you'll be prompted to create an admin user for Homarr.
+This user cannot be deleted and has full control over Homarr and all of it's boards.
+You must choose an username and password (both can later be changed).
+We enforce strict password requirements, when you enter your password, to protect your instance if you accidentially
+expose it to the Internet.
+
+
+
+If you selected external providers (such as LDAP or OIDC), you'll be prompted to create an admin group.
+This group will be used to synchronize users from your provider to Homarr.
+When a user is logged in through the provider the groups of him that match groups with any in Homarr will be added to the user.
+The name of the group has to match exactly the name of the group in the provider.
+
+
+
+Next, you can configure some basic settings for Homarr. We recommend to leave all settings at default for most users.
+Here you can also disable analytics. Please note that our analytics are completly anonymous and is fully compliant with GDPR and PECR.
+
+
+
+After this step, you finished the onboarding.
+The onboarding can no longer be started again.
+From here you can click on one of the provided links to continue your journey.
+We recommend you to continue with the section [creating your first board on this page](#creating-your-first-board).
+
+
+
+### Importing a ZIP from version before 1.0.0
+This is recommended when you used Homarr before and want to re-import your data.
+It is important that you first migrate correctly using [the list of breaking changes for 1.0](/blog/2024/09/23/version-1.0).
+
+
+
+**How to export and import data**
+1. Navigate to your old Homarr, open your management pages, open the tools submenu and open ``Migrate to 1.0``.
+2. Check the contents that you want to export. We recommend you to export all data.
+3. Click on the export data button
+4. Save the ZIP file, that is being downloaded, on your device. If you selected "integrations" or "users", you also get an encryption / decryption key.
+Copy it and do not loose it!
+5. Go to your new >1.0.0 Homarr instance and start the onboarding. Choose ``Import from Homarr before 1.0``
+6. Drag and drop your previously downloaded ZIP archive into the file upload:
+7. Next, choose the data that you want to import and how to import it. Since screen sizes were removed in 1.0, we create a new board for every screen size by default. We recommend you to only keep the best layout and adjust it later in 1.0.0 - but you can also import all of them and pick later.
+8. If you previously exported integrations or users, you will be asked to decrypt the data safely using your obtained encryption token. Paste into the modal and confirm your action.
+9. Next, you can [follow the same setup as when starting from scratch](#starting-from-scratch). After you completed the onboarding, all of your data will be migrated and available.
+
+## Creating your first board
+In Homarr, you organize your apps and widgets on boards.
+Boards can be organized using the interactive drag and drop.
+Let's create your first board by navigating here: ``Manage`` > ``Boards`` > ``New board``:
+
+
+A board must always have a name and can either be public or private.
+Public boards are also accessible for users, that are not logged in ([see access control for boards](/docs/management/boards/#access-control)).
+
+
+
+Congratulations - you've just created your first board. You can see boards, that you have access to, on this page:
+
+
+
+## Add your first app to Homarr
+To add links to your dashboard, you must first add them as an "app".
+Navigate to this page to add an app:
+
+
+
+Next, click on the ``New app`` button. You'll need to provide a name and an icon to create an app.
+The name must be at least one character long but you can provide any image URL for the icon.
+Homarr ships with over 11K icons - so you can just search by entering a search text instead.
+
+
+
+After you created the app, you'll see in on the apps page:
+
+
+
+## Arrange and organize your board
+Let's add your freshly created app, from the previous step, to the board.
+To do this, edit your previously created board by clicking on the big ``Open board`` button:
+
+
+
+Here you have the following options in the header:
+
+
+
+- **Search**: Here you can search for data. You can search for integrations, boards, actions, sites and much more. Some actions may be context dependent (eg. will only show when certain widgets are on your page)
+- **Edit mode**: Clicking this button will toggle the edit mode. In this mode you can edit the contents of your board.
+- **Settings**: Clicking this button will redirect you to a settings page where you can adjust the board settings (page title, colors, ...).
+- **Profile**: This avatar will be visible on every page. Clicking it will show a menu with actions.
+
+When entering the edit mode, you'll get some additional buttons to work with:
+
+
+
+- **Add item**: Click this button to add new elements to your page.
+- **Exit edit mode**: Click this btuton to save your changes and exit edit mode.
+
+To continue, click the option "New Item":
+
+
+
+Next, you can choose what item you'd like to add.
+We will discuss the other options in the following sections - for now choose "App" to continue.
+
+
+
+As soon as you chose the app, the modal will close and you'll get the following item on your board:
+
+
+
+This is expected, because you haven't told Homarr what app it should show in this item.
+To configure this, click on the small 3 dots at the top of the item in the edit mode and choose "Edit item" in the menu.
+
+
+
+In the modal you can edit the app that you want to display:
+
+
+
+As soon as you save your changes, the tile on the board will refresh and display your app.
+Using the small bidirectional arrow at the bottom right you can resize the element.
+Start pressing with your mouse button down, move your mouse to resize and release your finger as soon your you're happy with the size.
+
+
+
+To move your item to a different position on the board, simply hold the mouse button anywhere on the item and move with the mouse to the desired position.
+As soon as you release your finger, the item will snap in place in the grid.
+
+
+
+:::note
+
+You cannot move items freely on the vertical axis.
+We always align all items to the top of the page to simply organization.
+To move items to the bottom, you must add more items or resize items.
+
+:::
+
+:::tip
+
+We recommend you to experiment for a few minutes, before you start building your actual dashboard.
+This helps you to explore the capabilities of Homarr before you build your board in a suboptimal way.
+
+:::
+
+Users on touch or mobile devices may not be able to drag and drop or move items.
+They can use the "Move / resize item" option in the edit menu of items instead:
+
+
+
+Be sure to save your changes by exiting edit mode!
+
+
+
+## Adding your first integration
+Now it's time to integrate some basic data into your board.
+To do this, we first need to create an integration.
+An integration is a connection between Homarr and a third party application - usually something that you run and deploy yourself.
+
+Navigate to ``Manage`` > ``Integrations`` (for example via your user menu).
+As an example, we are going to use the public demo instance of **Dash.** - a popular application to monitor CPU / hardware usage.
+Choose the **Dash.** integration from the list of available integrations:
+
+
+
+Next, choose a name (or leave it at default), enter ``https://dash.mauz.dev/`` as the URL in the form and click on ``Test connection and create``.
+Pressing the save button will perform a test request to the integration, to confirm that the networking setup is working as expected.
+Sometimes invalid configurations, firewalls and other mistakes can lead to connectivity problems - [follow this guide here](/docs/management/integrations/#troubleshooting-connection) if you experience issues.
+
+If connection was successful, you will be redirect back to the list of integrations.
+Now let's embed it to your board (see next section).
+
+:::note
+
+Some integrations may require additional configuration, such as a username, password or API tokens.
+Depending on your networking setup and applications, the connection from Homarr might also get blocked by firewalls,
+the target application or your router.
+
+:::
+
+## Embed integration data using widgets
+Let's add your integration, that you have configured in the section above, as a widget to your board.
+First, navigate back to your board that you want to add it to.
+Next, enter edit mode again and add another item to your board:
+
+
+
+Instead of choosing an app, let's choose ``System Health Monitoring`` this time.
+Click on "Add to board":
+
+
+
+Resize the item slightly and then edit it using the three dots menu at the top:
+
+
+
+Next, choose your newly created Dash. integration in the integrations dropdown:
+
+
+
+:::note
+
+Some widgets may support multiple integrations at the same time.
+If they do not support multiple integrations, you will be unable to select more than one.
+
+:::
+
+Confirm your changes by pressing save.
+Editing a widget will trigger a data update and data will soon appear:
+
+
+
+As with every change, don't forget to save your changes using the exit edit mode button:
+
+
+
+## Grouping your items
+As the last step, let's organize your freshly created items using two different options.
+You can choose either or both of them on your boards.
+
+### Using dynamic sections
+Dynamic sections are a simple, resizable visual group to group items.
+
+
+
+After adding a dynamic section, you can simply drag and drop items into the section:
+
+
+
+### Using categories
+Categories are more advanced and complicated than dynamic sections.
+To create a category, open the add item modal and choose "new category":
+
+
+
+Every category must have a name. After you click "Add category", you will get a new item on your board:
+
+
+
+You can drag and drop items in to this category in the edit mode.
+Categories will have a big space before and after them in the edit mode to
+enable you to drag and drop items outside the category.
+You can also collapse or open categories in edit mode to facilitate your editing process.
+
+:::note
+
+A current limitation of categories is, that they will always have a width of 100%.
+You cannot reduce their horizontal width.
+
+:::
+
+## Next steps
+You're done with the basic setup 🔥. Now it's time to organize and customize even more.
+We highly recommend you to experiment with different options, styles and configurations.
+See these curated pages for your next steps:
+- Create new apps using the [apps management](../management/apps/)
+- Customize your board or add more boards using the [boards management](../management/boards/)
+- Integrate software that you use using the [integrations management](../management/integrations)
+- Choose from our beautiful and interactive [widgets](/docs/category/widgets)
+- See [all supported integrations](/docs/category/integrations)
+- Integrate with Homarr with your own application using [the API](../management/api/)
+
+:::danger
+
+The Homarr Team will never ask for your credentials. Do not send people your credentials, as they manage the access to your applications and can cause harm to your device if they are abused.
+
+:::
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/glossary.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/glossary.mdx
new file mode 100644
index 00000000..8d690245
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/glossary.mdx
@@ -0,0 +1,12 @@
+# Glossary
+In the glossary, you'll learn the different components and their names of Homarr.
+
+| Term | Definition |
+|-----------------|----------------------------------------------------------------------------------------------------------------|
+| Apps | An piece of software that you or a third party hosts (eg. Google) |
+| Integration | A connection to a service outside of Homarr |
+| Dynamic section | Resizeable area where items on your board can be placed and grouped |
+| Widget | A tile that uses your integrations to display data or enables you to interact with with them |
+| Edit mode | Temporary state that you can enter where you can drag and drop, edit or customize your board |
+| Board | Customizable page which can be edited using the edit mode. This is where apps, sections and widgets are placed |
+| Tasks | Workloads that are performed in the background - even if there is no user present |
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/add-category.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/add-category.png
new file mode 100644
index 00000000..5dc81377
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/add-category.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-general-tab.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-general-tab.png
new file mode 100644
index 00000000..fe873917
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-general-tab.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-no-title.webp b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-no-title.webp
new file mode 100644
index 00000000..e1de4fd3
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-no-title.webp differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-bottom.webp b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-bottom.webp
new file mode 100644
index 00000000..20a69c50
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-bottom.webp differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-hover.webp b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-hover.webp
new file mode 100644
index 00000000..0ee1177b
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-hover.webp differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-left.webp b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-left.webp
new file mode 100644
index 00000000..84f62522
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-left.webp differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-right.webp b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-right.webp
new file mode 100644
index 00000000..6523a8b5
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-right.webp differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-top.webp b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-top.webp
new file mode 100644
index 00000000..ddc15bcb
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/app-title-top.webp differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/appearance-tab.webp b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/appearance-tab.webp
new file mode 100644
index 00000000..0bfb7190
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/appearance-tab.webp differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/behavior-tab.webp b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/behavior-tab.webp
new file mode 100644
index 00000000..3537f785
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/behavior-tab.webp differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/category-menu.webp b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/category-menu.webp
new file mode 100644
index 00000000..11045a7a
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/category-menu.webp differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/category.gif b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/category.gif
new file mode 100644
index 00000000..6b9837b3
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/category.gif differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/choose-integration.gif b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/choose-integration.gif
new file mode 100644
index 00000000..fc8c6ae0
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/choose-integration.gif differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/create-dynamic-section.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/create-dynamic-section.png
new file mode 100644
index 00000000..cb49979d
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/create-dynamic-section.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/description-hover-example.webp b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/description-hover-example.webp
new file mode 100644
index 00000000..0ae270bc
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/description-hover-example.webp differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/dynamic-section.gif b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/dynamic-section.gif
new file mode 100644
index 00000000..b6e0bb4b
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/dynamic-section.gif differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/edit-mode.webp b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/edit-mode.webp
new file mode 100644
index 00000000..3271e767
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/edit-mode.webp differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/edit-system-health-widget.gif b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/edit-system-health-widget.gif
new file mode 100644
index 00000000..5687af89
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/edit-system-health-widget.gif differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/exit-edit-mode.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/exit-edit-mode.png
new file mode 100644
index 00000000..13045c75
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/exit-edit-mode.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/integration-secrets.webp b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/integration-secrets.webp
new file mode 100644
index 00000000..0f7254da
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/integration-secrets.webp differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-add-app-form.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-add-app-form.png
new file mode 100644
index 00000000..9b44dde1
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-add-app-form.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-choose-app.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-choose-app.png
new file mode 100644
index 00000000..ce777c42
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-choose-app.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-edit-app.gif b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-edit-app.gif
new file mode 100644
index 00000000..6463141b
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-edit-app.gif differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-edit-system-health.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-edit-system-health.png
new file mode 100644
index 00000000..71650a5a
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-edit-system-health.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header-add-item-menu.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header-add-item-menu.png
new file mode 100644
index 00000000..47b2d0bd
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header-add-item-menu.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header-choose-item.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header-choose-item.png
new file mode 100644
index 00000000..f2d445e9
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header-choose-item.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header-choose-system-health.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header-choose-system-health.png
new file mode 100644
index 00000000..b83e3cd4
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header-choose-system-health.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header-edit-mode.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header-edit-mode.png
new file mode 100644
index 00000000..297cd13f
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header-edit-mode.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header.png
new file mode 100644
index 00000000..2229b80d
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-header.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-move-resize-item-menu.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-move-resize-item-menu.png
new file mode 100644
index 00000000..2bf8a46b
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-move-resize-item-menu.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-no-app.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-no-app.png
new file mode 100644
index 00000000..9b097bef
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-board-no-app.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-create-board-button.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-create-board-button.png
new file mode 100644
index 00000000..8f4e1efd
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-create-board-button.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-create-board-modal.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-create-board-modal.png
new file mode 100644
index 00000000..97ec9795
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-create-board-modal.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-created-app.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-created-app.png
new file mode 100644
index 00000000..6fb72fad
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-created-app.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-navigate-apps.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-navigate-apps.png
new file mode 100644
index 00000000..a290aa4e
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-navigate-apps.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-view-board.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-view-board.png
new file mode 100644
index 00000000..5fc63c57
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/manage-view-board.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/move-item.gif b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/move-item.gif
new file mode 100644
index 00000000..22c86410
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/move-item.gif differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/old-homarr-export-data.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/old-homarr-export-data.png
new file mode 100644
index 00000000..2cd32d95
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/old-homarr-export-data.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/old-homarr-import-choose-imported-data.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/old-homarr-import-choose-imported-data.png
new file mode 100644
index 00000000..d0d2de39
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/old-homarr-import-choose-imported-data.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/old-homarr-import-decryption-token.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/old-homarr-import-decryption-token.png
new file mode 100644
index 00000000..4ff3ecd3
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/old-homarr-import-decryption-token.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/old-homarr-import-dropzone.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/old-homarr-import-dropzone.png
new file mode 100644
index 00000000..1c0c3da6
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/old-homarr-import-dropzone.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-from-scratch-step-admin-user.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-from-scratch-step-admin-user.png
new file mode 100644
index 00000000..0453eed2
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-from-scratch-step-admin-user.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-from-scratch-step-external-admin-group.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-from-scratch-step-external-admin-group.png
new file mode 100644
index 00000000..8ee7800f
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-from-scratch-step-external-admin-group.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-from-scratch-step-finish.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-from-scratch-step-finish.png
new file mode 100644
index 00000000..08b3586a
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-from-scratch-step-finish.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-from-scratch-step-server-settings.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-from-scratch-step-server-settings.png
new file mode 100644
index 00000000..c2d537e9
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-from-scratch-step-server-settings.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-step-1.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-step-1.png
new file mode 100644
index 00000000..715a62c7
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/onboarding-step-1.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/resize-item.gif b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/resize-item.gif
new file mode 100644
index 00000000..e2f3b5ce
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/resize-item.gif differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/widget-system-health.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/widget-system-health.png
new file mode 100644
index 00000000..201a040a
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/img/widget-system-health.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/index.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/index.mdx
new file mode 100644
index 00000000..fb3ed4f6
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/index.mdx
@@ -0,0 +1,44 @@
+---
+title: 前提条件
+sidebar_position: 1
+tags:
+ - 入门指南
+ - 安装
+ - Docker
+ - Unraid
+---
+
+import Link from '@docusaurus/Link';
+import { IconArrowRight } from '@tabler/icons-react';
+
+在尝试安装 Homarr 之前,请检查您的设备是否满足要求。
+在不受支持的设备上安装可能导致不稳定的行为,我们将不提供支持。
+
+## 硬件要求
+- 至少 500MB 内存
+- 至少 600MB 的可用磁盘空间用于 Docker 镜像。建议使用 SSD。
+- 单核或双核 CPU
+- 稳定的网络连接,不建议使用 Wi-Fi
+
+## 架构
+
+我们为多种不同的架构构建 Homarr,包括 ARM。请确保您的设备架构受 Homarr 支持。我们无法为不常见或过时的架构提供支持。
+
+| 架构 | 支持状态 |
+|--------------|-----------------|
+| linux/amd64 | ✅ 支持 |
+| linux/arm64 | ✅ 支持 |
+| linux/arm/v7 | ❌ 不支持 |
+
+## 开始安装
+
+
+
+ 前往安装指南
+
+
+
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/_category_.json b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/_category_.json
new file mode 100644
index 00000000..ee30498e
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "Installation",
+ "position": 1,
+ "collapsed": true,
+ "link": {
+ "type": "generated-index",
+ "title": "Getting started"
+ }
+}
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/docker.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/docker.mdx
new file mode 100644
index 00000000..88fd5031
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/docker.mdx
@@ -0,0 +1,105 @@
+import { DockerInstallSnippet } from '@site/src/components/pages/installation/docker/dynamic-docker-install'
+
+# Docker
+Docker 是我们推荐的安装方法,适合初学者和专业人士。
+它易于使用,将所有依赖项打包在单个容器中,易于使用和维护。
+它需要至少一些 [Docker](https://www.docker.com/) 的基础知识。
+我们推荐 [NetworkChuck 的 Docker Containers 101](https://www.youtube.com/watch?v=eGz9DS-aIeY) 作为完全初学者的良好起点。
+
+## Docker compose
+### 前提条件
+
+- 满足[硬件前提条件](/docs/getting-started/#hardware)和[架构前提条件](/docs/getting-started/#architecture)的 Linux 或 Windows 系统。
+- [Docker](https://docs.docker.com/get-docker/)
+- [Docker Compose](https://docs.docker.com/compose/install/) - *现在许多系统都预装了*
+
+### 安装
+
+
+最后,在同一目录中运行 ``docker compose up -d``。这将在后台启动 Homarr 容器。
+
+:::caution
+
+Docker compose creates a network by default. Some integrations may not work (specifically Dash.) when the network internal hostname is used since clients do not know this name. It is recommended that you either use a local network wide hostname or the IP directly. An alternative is to create a DNS record with the same internal compose stack hostname for all clients outside.
+
+:::
+
+### Updating
+
+To update, navigate to the directory with the ``docker-compose.yaml`` located.
+
+- Stop Homarr using ``docker compose down``
+- Pull the newest image of Homarr using ``docker compose pull``
+- Start Homarr again using ``docker compose up -d`` (``-d`` for detached mode - start in background)
+- Delete the old image using ``docker image prune`` (*Warning: this also removes you other unused images - not just Homarr*)
+
+You can automate this process using [Watchtower](https://containrrr.dev/watchtower/).
+
+### Uninstalling
+
+To uninstall, navigate to the directory with the ``docker-compose.yaml`` located.
+
+- Stop Homarr using ``docker compose down``
+- Delete the created directories & files on your root file system (check ``docker-compose.yaml`` file for your specific locations)
+- Delete compose file using ``rm docker-compose.yaml``
+- Prune unused Docker images using ``docker image prune`` (*Warning: this also removes you other unused images - not just Homarr*)
+- (Optional): Prune any network or volumes if you use any.
+- (Optional): Remove Homarr from your reverse proxy, VPNs or tunnels if you use any.
+
+
+## Docker standalone
+
+:::caution
+
+[Docker Compose](#docker-compose) is easier and recommended for beginners. Consider using compose instead.
+
+:::
+
+### Prerequisites
+
+- A Linux or Windows based system that meets the [hardware prerequisites](/docs/getting-started/#hardware) and [architecture prerequisites](/docs/getting-started/#architecture).
+- [Docker](https://docs.docker.com/get-docker/)
+
+### Installation
+
+To install Homarr using Docker, simply run the following command.
+
+```bash
+docker run \
+ --name homarr \
+ --restart unless-stopped \
+ -p 7575:7575 \
+ -v /var/run/docker.sock:/var/run/docker.sock \
+ -v /homarr/appdata:/appdata \
+ -e SECRET_ENCRYPTION_KEY='your_64_character_hex_string' \
+ -d ghcr.io/homarr-labs/homarr:latest
+```
+
+:::note
+
+Docker will mount the configuration files and icons to your host machine. Please make sure to replace ```` from the docker run command with your desired storage location. The path must be absolute.
+
+:::
+
+### Updating
+To update Homarr, you must remove your container first. Make sure that you've mounted your data and that you have access to it, so your configuration doesn't get lost.
+
+1. Run ``docker rm homarr`` to remove the container.
+2. Pull the latest Homarr image ``docker pull ghcr.io/homarr-labs/homarr:latest``.
+3. Re-run the command you used to install Homarr.
+
+This process can get tideous, if you update frequently. Thus, we recommend [using docker-compose](#docker-compose)
+
+:::tip
+
+Want to update all your containers automatically? Checkout [Watchtower](https://containrrr.dev/watchtower/) a service which will automatically update your containers on a set interval.
+
+:::
+
+### Uninstalling
+
+1. Obtain the container ID of your Homarr container using ``docker ps | grep homarr``.
+2. Delete the container using ``docker rm ``
+3. Prune unused Docker images using ``docker image prune`` (*Warning: this also removes you other unused images - not just Homarr*)
+4. (Optional): Prune any network or volumes if you use any.
+5. (Optional): Remove Homarr from your reverse proxy, VPNs or tunnels if you use any.
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/easy-panel.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/easy-panel.mdx
new file mode 100644
index 00000000..adb30ec0
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/easy-panel.mdx
@@ -0,0 +1,9 @@
+# EasyPanel
+
+:::caution
+Easypanel has not updated to 1.0 yet. There template is still on 0.15.4.
+:::
+
+Easypanel is a modern server control panel. If you [run Easypanel](https://easypanel.io/docs) on your server, you can deploy Homarr with 1 click on it.
+
+[](https://easypanel.io/docs/templates/homarr)
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/helm.md b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/helm.md
new file mode 100644
index 00000000..81278d06
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/helm.md
@@ -0,0 +1,437 @@
+# Helm
+
+
+
+
+
+
+
+A Helm chart to deploy homarr for Kubernetes
+
+**Homepage:**
+
+## Source Code
+
+*
+
+## Requirements
+
+Kubernetes: `>=1.24.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| | mysql | 14.0.0 |
+
+## Installing the Chart
+
+To install the chart with the release name `homarr`
+
+### OCI (Recommended)
+
+```console
+helm install homarr oci://ghcr.io/homarr-labs/charts/homarr
+```
+
+### Traditional
+
+```console
+helm repo add homarr-labs https://homarr-labs.github.io/charts/
+helm repo update
+helm install homarr homarr-labs/homarr
+```
+
+## Uninstalling the Chart
+
+To uninstall the `homarr` deployment
+
+```console
+helm uninstall homarr
+```
+
+The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release.
+
+## Configuration
+
+Read through the [values.yaml](https://github.com/homarr-labs/charts/blob/dev/charts/homarr/values.yaml) file. It has several commented out suggested values.
+
+Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
+
+```console
+helm install homarr \
+ --set env.TZ="America/New York" \
+ homarr-labs/homarr
+```
+
+Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.
+
+```console
+helm install homarr homarr-labs/homarr -f values.yaml
+```
+
+## Custom configuration
+
+### Secrets
+
+To avoid including sensitive information in plain text within your version control, consider using a declarative approach by applying secrets directly with kubectl apply. For example, instead of including repository credentials in your Helm values, you can leverage a kubernetes secrets manager.
+
+Below is an exhaustive list of all secrets:
+
+
+
+| FEATURE | SECRET NAME | SECRET KEYS | Required |
+|-----------|-------------------------|----------------------------------------------------------------------|-----------------------------------------------------------------------|
+| OIDC | auth-oidc-secret | oidc-client-id oidc-client-secret | No |
+| LDAP | auth-ldap-secret | bind-password | No |
+| DATABASE | db-secret | db-encryption-key db-url mysql-root-password mysql-password | Depends (see Database section) at least db-encryption-key is required |
+
+
+
+### Database
+
+You have multiple options for configuring the database:
+
+
+
+| DRIVER TYPE | Persistence mode |
+|----------------|---------------------------------|
+| better-sqlite3 | Pod disk |
+| better-sqlite3 | `homarr-database` PVC |
+| mysql2 | MySql database chart dependency |
+| mysql2 | External MySql database |
+
+
+
+#### Pod disk
+
+No additional configuration is required. However, keep in mind that if the pod restarts, all data will be lost. This setup is not *recommended* for production use.
+
+To create the necessary database secret, execute the following command:
+
+
+Required Secrets
+
+````yaml
+kubectl create secret generic db-secret \
+--from-literal=db-encryption-key='' \
+--namespace homarr
+````
+
+
+
+#### PVC
+
+To persist data, you need to enable the `homarr-database` PVC. This will store the Homarr database on a mounted volume.
+
+Associated secret to create :
+
+
+DB Required Secrets
+
+````yaml
+kubectl create secret generic db-secret \
+--from-literal=db-encryption-key='' \
+--namespace homarr
+````
+
+
+
+Bellow an example of the override value file :
+
+
+values.yaml
+
+````yaml
+persistence:
+ homarrDatabase:
+ enabled: true
+ storageClassName: "default"
+ size: "1Gi"
+````
+
+
+
+#### MySql database chart dependency
+
+We are using [mysql bitnami](https://artifacthub.io/packages/helm/bitnami/mysql) chart as a dependency for data persistence. For additional configuration options, refer to the [Mysql chart documentation](https://github.com/bitnami/charts/tree/main/bitnami/mysql)
+
+To create the necessary database secrets, execute the following command:
+
+
+Required Secrets
+
+````yaml
+kubectl create secret generic db-secret \
+--from-literal=db-encryption-key='' \
+--from-literal=db-url='mysql://homarr:your-db-password1@homarr-mysql:3306/homarrdb' \
+--from-literal=mysql-root-password='your-db-password1' \
+--from-literal=mysql-password='your-db-password2' \
+--namespace homarr
+````
+
+
+if the key `mysql.auth.usersame` has been modified, please update the `db-url` accordingly. The database host and port should remain unchanged.
+
+Below is an example of the override values file:
+
+
+values.yaml
+
+````yaml
+mysql:
+ internal: true
+````
+
+
+#### External MySql database
+
+The chart offer the possibility to use an external database.
+
+To create the necessary database secrets, execute the following command:
+
+
+Required Secrets
+
+````yaml
+kubectl create secret generic db-secret \
+--from-literal=db-encryption-key='' \
+--from-literal=db-url='mysql://user:password@host:port/homarrdb' \
+--namespace homarr
+````
+
+
+Below is an example of the override values file:
+
+
+values.yaml
+
+````yaml
+database:
+ externalDatabaseEnabled: true
+````
+
+
+### Ingress
+
+The ingress section in the values.yaml file allows you to configure how external traffic accesses your application through an Ingress resource. This section defines whether Ingress is enabled, the class to use, and how to set up hosts, paths, and TLS for secure connections.
+
+
+values.yaml
+
+````yaml
+service:
+ enabled: true # Ensure the service is enabled for Ingress to route traffic
+ingress:
+ enabled: true
+ ingressClassName: "traefik"
+ annotations:
+ # Add any additional annotations as needed
+ hosts:
+ - host: homarr.homelab.dev
+ paths:
+ - path: /
+ pathType: ImplementationSpecific
+ tls:
+ - hosts:
+ - "homarr.homelab.dev"
+ - "www.homarr.homelab.dev"
+ secretName: homelab-tls
+````
+
+
+### Certificates
+
+Configuration for trusted certificate persistence. Supports:
+
+- Declarative config via `configmap` or `secret`
+- Pre-existing secret with `existingSecret`
+
+#### type: configmap
+
+Use inline certificates to generate a ConfigMap, mounted as individual files.
+
+
+values.yaml
+
+````yaml
+persistence:
+ homarrTrustedCerts:
+ enabled: true
+ type: configmap
+ certificates:
+ cert1.crt: |
+ -----BEGIN CERTIFICATE-----
+ MIID...ABCD==
+ -----END CERTIFICATE-----
+ cert2.crt: |
+ -----BEGIN CERTIFICATE-----
+ MIID...EFGH==
+ -----END CERTIFICATE-----
+````
+
+
+Behavior:
+
+- Helm creates a ConfigMap with keys cert1.crt and cert2.crt
+- Mounts them as /appdata/trusted-certificates/cert1.crt and /appdata/trusted-certificates/cert2.crt
+
+#### type: secret
+
+Use inline certificates to generate a Kubernetes Secret, mounted as files.
+
+
+values.yaml
+
+````yaml
+persistence:
+ homarrTrustedCerts:
+ enabled: true
+ type: secret
+ certificates:
+ cert1.crt: |
+ -----BEGIN CERTIFICATE-----
+ MIIC...XYZ==
+ -----END CERTIFICATE-----
+ cart2.crt: |
+ -----BEGIN CERTIFICATE-----
+ MIIC...XYZ==
+ -----END CERTIFICATE-----
+````
+
+
+Behavior:
+
+- Helm creates a Kubernetes Secret with cert1.crt and cart2.crt keys
+- Mounts it into the container
+
+#### type: existingSecret
+
+Use an existing Kubernetes Secret, assuming its keys are filenames.
+
+
+values.yaml
+
+````yaml
+persistence:
+ homarrTrustedCerts:
+ enabled: true
+ type: existingSecret
+ existingSecretName: "existingSecretName"
+ existingSecretKeys:
+ - cert3.crt
+ - cert4.crt
+````
+
+
+Behavior:
+
+- No new Secret is created
+- Uses existingSecretName directly
+- Mounts all keys as files in /appdata/trusted-certificates
+
+#### Summary Table
+
+| Type | Creates Resource | Requires Certificates | Uses Existing | Mounts As Files |
+| ---------------- | ---------------- | --------------------- | ------------- | --------------- |
+| `configmap` | ConfigMap | Yes (`certificates`) | ❌ | ✅ |
+| `secret` | Secret | Yes (`certificates`) | ❌ | ✅ |
+| `existingSecret` | ❌ | ❌ | ✅ | ✅ |
+
+All available values are listed on the [artifacthub](https://artifacthub.io/packages/helm/homarr-labs/homarr?modal=values). If you find any issue please open an issue on [github](https://github.com/homarr-labs/charts/issues/new?assignees=maintainers&labels=bug&projects=&template=bug_report.yaml)
+
+## Values
+
+| Key | Type | Default | Description |
+|-----|------|---------|-------------|
+| additionalObjects | list | `[]` | Additional resources to deploy. These objects are templated. |
+| affinity | object | `{}` | Node affinity for pod scheduling |
+| autoscaling.enabled | bool | `false` | Enable autoscaling |
+| autoscaling.maxReplicas | int | `100` | Maximum replicas |
+| autoscaling.minReplicas | int | `1` | Minimum replicas |
+| autoscaling.targetCPUUtilizationPercentage | int | `80` | Target CPU utilization for autoscaling |
+| containerPorts | object | `{"http":{"port":7575,"protocol":"TCP"}}` | containerPorts defines the ports to open on the container. It is a map where each entry specifies: - `port` (int) (required): The port number to expose inside the container. - `protocol` (string) (required): The network protocol (TCP or UDP) used for the port. - `disabled` (bool) : Optional flag to disable this port (defaults to false). Can be overridden via Helm values. By default, this configuration exposes TCP port 7575 with the name `http`. |
+| database.externalDatabaseEnabled | bool | `false` | Enable external database |
+| database.migrationEnabled | bool | `true` | Database migration configuration. DB_MIGRATIONS_DISABLED Set to `true` to disable database migrations. Migrations are enabled by default (`false`). |
+| env.AUTH_LDAP_BASE | string | `nil` | Base dn of your LDAP server |
+| env.AUTH_LDAP_BIND_DN | string | `nil` | User used for finding users and groups |
+| env.AUTH_LDAP_GROUP_CLASS | string | `"groupOfUniqueNames"` | Class used for querying groups |
+| env.AUTH_LDAP_GROUP_FILTER_EXTRA_ARG | string | `nil` | Extra arguments for user's groups search filter (& based) |
+| env.AUTH_LDAP_GROUP_MEMBER_ATTRIBUTE | string | `"member"` | Attribute used for querying group member |
+| env.AUTH_LDAP_GROUP_MEMBER_USER_ATTRIBUTE | string | `"dn"` | User attribute used for comparing with group member |
+| env.AUTH_LDAP_SEARCH_SCOPE | string | `"base"` | LDAP search scope between base, one or sub |
+| env.AUTH_LDAP_URI | string | `nil` | URI of your LDAP server |
+| env.AUTH_LDAP_USERNAME_ATTRIBUTE | string | `"uid"` | Attribute used for username |
+| env.AUTH_LDAP_USERNAME_FILTER_EXTRA_ARG | string | `nil` | Extra arguments for user search filter (& based) |
+| env.AUTH_LDAP_USER_MAIL_ATTRIBUTE | string | `"mail"` | Attribute used for mail field |
+| env.AUTH_LOGOUT_REDIRECT_URL | string | `nil` | URL to redirect to after clicking logging out. |
+| env.AUTH_OIDC_AUTO_LOGIN | string | `"false"` | Automatically redirect to OIDC login |
+| env.AUTH_OIDC_CLIENT_NAME | string | `"OIDC"` | Display name of provider (in login screen) |
+| env.AUTH_OIDC_GROUPS_ATTRIBUTE | string | `"groups"` | Attribute used for groups (roles) claim |
+| env.AUTH_OIDC_ISSUER | string | `nil` | Issuer URI of OIDC provider without trailing slash (/) |
+| env.AUTH_OIDC_NAME_ATTRIBUTE_OVERWRITE | string | `nil` | Overwrite name attribute. By default, it will use preferred_username if it does not contain a @ and otherwise name. |
+| env.AUTH_OIDC_SCOPE_OVERWRITE | string | `"openid email profile groups"` | Override the OIDC scopes |
+| env.AUTH_PROVIDERS | string | `"credentials"` | Enabled authentication methods. Multiple providers can be enabled with by separating them with , (ex. AUTH_PROVIDERS=credentials,oidc, it is highly recommended to just enable one provider). |
+| env.AUTH_SESSION_EXPIRY_TIME | string | `"30d"` | Time for the session to time out. Can be set as pure number, which will automatically be used in seconds, or followed by s, m, h or d for seconds, minutes, hours or days. (ex: "30m") |
+| env.TZ | string | `"Europe/Paris"` | Your local time zone |
+| envSecrets.authLdapCredentials.existingSecret | string | `"auth-ldap-secret"` | Name of existing secret containing LDAP credentials |
+| envSecrets.authLdapCredentials.ldapBindingPassword | string | `"bind-password"` | Password for bind user secret key |
+| envSecrets.authOidcCredentials.existingSecret | string | `"auth-oidc-secret"` | Name of existing secret containing OIDC credentials |
+| envSecrets.authOidcCredentials.oidcClientId | string | `"oidc-client-id"` | ID of OIDC client (application) secret key |
+| envSecrets.authOidcCredentials.oidcClientSecret | string | `"oidc-client-secret"` | Secret of OIDC client (application) secret key |
+| envSecrets.dbCredentials.dbEncryptionKey | string | `"db-encryption-key"` | Secret key for SECRET_ENCRYPTION_KEY can be generated with `openssl rand -hex 32` |
+| envSecrets.dbCredentials.dbPasswordKey | string | `"mysql-root-password"` | Secret key for DB_PASSWORD |
+| envSecrets.dbCredentials.dbUrlKey | string | `"db-url"` | Secret key for DB_URL Example for internal database: `mysql://username:password@homarr-mysql:3306/homarrdb` |
+| envSecrets.dbCredentials.dbUserPasswordKey | string | `"mysql-password"` | Secret key for database user |
+| envSecrets.dbCredentials.existingSecret | string | `"db-secret"` | Name of existing secret containing DB credentials |
+| fullnameOverride | string | `""` | Overrides chart's fullname |
+| hostAliases | list | `[]` | Add static entries to /etc/hosts in the Pod. This is useful in the following cases: - You are running in a dual-stack cluster (IPv4 + IPv6) and want to force usage of IPv4 for specific hostnames - Your application is having DNS resolution issues or IPv6 preference issues - You need to override or simulate DNS entries without changing global DNS - You are running in an air-gapped or isolated environment without external DNS Example: hostAliases: - ip: "192.168.1.10" hostnames: - "example.com" - "example.internal" |
+| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy |
+| image.repository | string | `"ghcr.io/homarr-labs/homarr"` | Image repository |
+| image.tag | string | `"v1.32.0"` | Overrides the image tag whose default is the chart appVersion |
+| imagePullSecrets | list | `[]` | Secrets for Docker registry |
+| ingress.annotations | object | `{}` | Ingress annotations |
+| ingress.enabled | bool | `false` | Enable ingress |
+| ingress.hosts | list | `[{"host":"chart-example.local","paths":[{"path":"/"}]}]` | Ingress hosts configuration |
+| ingress.ingressClassName | string | `""` | Ingress class name |
+| ingress.tls | list | `[]` | Ingress TLS configuration |
+| livenessProbe.httpGet.path | string | `"/api/health/live"` | This is the liveness check endpoint used by Kubernetes to determine if the application is still running. |
+| livenessProbe.httpGet.port | int | `7575` | The port on which the liveness check will be performed. This must be the same as the container port exposed by the application. |
+| mysql | object | See [values.yaml](https://github.com/homarr-labs/charts/blob/dev/charts/homarr/values.yaml) | Enable and configure Mysql database subchart under this key. For more options see [Mysql chart documentation](https://github.com/bitnami/charts/tree/main/bitnami/mysql) |
+| nameOverride | string | `""` | Overrides chart's name |
+| nodeSelector | object | `{}` | Node selectors for pod scheduling |
+| persistence.homarrDatabase.accessMode | string | `"ReadWriteOnce"` | homarr-database access mode |
+| persistence.homarrDatabase.enabled | bool | `false` | Enable homarr-database persistent storage |
+| persistence.homarrDatabase.mountPath | string | `"/appdata"` | homarr-database mount path inside the pod |
+| persistence.homarrDatabase.name | string | `"homarr-database"` | homarr-database persistent storage name |
+| persistence.homarrDatabase.size | string | `"50Mi"` | homarr-database storage size |
+| persistence.homarrDatabase.storageClassName | string | `"local-path"` | homarr-database storage class name |
+| persistence.homarrDatabase.volumeClaimName | string | `""` | homarr-database optional volumeClaimName to target specific PV |
+| persistence.homarrTrustedCerts.certificates | string | `nil` | homarr-trusted-certificates certificates, each entry will become a new trusted certificate as a dedicated file (works only for "configmap" and "secret" mode) |
+| persistence.homarrTrustedCerts.enabled | bool | `false` | Enable trusted certificates persistence |
+| persistence.homarrTrustedCerts.existingSecretKeys | string | `nil` | List of keys (filenames) to mount from the existing secret (used only when type is "existingSecret") |
+| persistence.homarrTrustedCerts.existingSecretName | string | `""` | Name of the existing Kubernetes Secret to mount (required if type is "existingSecret") |
+| persistence.homarrTrustedCerts.mountPath | string | `"/appdata/trusted-certificates"` | homarr-trusted-certificates mount path inside the pod |
+| persistence.homarrTrustedCerts.type | string | `"configmap"` | Persistence mode can be : configmap (declarative), secret (declarative) or existingSecret (mount an existing Kubernetes Secret by name and specify which keys to mount as files) |
+| podAnnotations | object | `{}` | Pod annotations |
+| podLabels | object | `{}` | Pod labels |
+| podSecurityContext | object | `{}` | Pod security context |
+| rbac | object | `{"enabled":false}` | Enable RBAC resources for Kubernetes integration Creates Role, ClusterRole, and associated bindings for Homarr's Kubernetes features |
+| rbac.enabled | bool | `false` | Enable to create RBAC resources and activate Kubernetes integration |
+| readinessProbe.httpGet.path | string | `"/api/health/ready"` | This is the readiness check endpoint used by Kubernetes to determine if the application is ready to handle traffic. |
+| readinessProbe.httpGet.port | int | `7575` | The port on which the readiness check will be performed. This must match the container's exposed port. |
+| replicaCount | int | `1` | Number of replicas |
+| resources | object | `{}` | Resource configuration |
+| securityContext | object | `{}` | Security context |
+| service.enabled | bool | `true` | Enable service |
+| service.ipFamilies | list | `[]` | List of IP families to use for the service. Examples: - ["IPv4"] - ["IPv6"] - ["IPv4", "IPv6"] for dual-stack Leave empty to use cluster default behavior |
+| service.ipFamilyPolicy | string | `"SingleStack"` | Defines how the service assigns IP families (IPv4/IPv6) Possible values: - SingleStack (default): Only one IP family, usually IPv4 - PreferDualStack: Use dual-stack if the cluster supports it, fallback to single - RequireDualStack: Fail if dual-stack cannot be assigned |
+| service.ports.app.port | int | `7575` | Service port |
+| service.ports.app.protocol | string | `"TCP"` | Service protocol |
+| service.ports.app.targetPort | string | `"http"` | Service target port |
+| service.type | string | `"ClusterIP"` | Service type |
+| strategyType | string | `"RollingUpdate"` | `strategyType` specifies the strategy used to replace old Pods by new ones. `strategyType` can be `"Recreate"` or `"RollingUpdate"`. `"RollingUpdate"` is the default value and updates Pods in a rolling update fashion. `"Recreate"` will kill all existing Pods before new ones are created. The `"Recreate"` strategy is necessary when persistent volume's `accessMode` is set to `"ReadWriteOnce"` when using `helm upgrade`, as pod volume attachments to an existing PersistentVolumeClaim need to be cleared before a new pod can attach to it. |
+| tolerations | list | `[]` | Node tolerations for pod scheduling |
+
+---
+Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs)
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/home-assistant.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/home-assistant.mdx
new file mode 100644
index 00000000..ad6a4ff3
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/home-assistant.mdx
@@ -0,0 +1,25 @@
+# Home Assistant Add-on
+
+:::caution
+Home Assistant Add-on has not updated to 1.0 yet. There add-on is still on 0.15.10.
+:::
+
+Homarr can be seamlessly integrated into your Home Assistant setup with this add-on. This is perfect for users who rely on Home Assistant as their primary server and don't have a separate device for hosting.
+
+## Prerequisites
+
+- [Home Assistant](https://www.home-assistant.io/getting-started/)
+- Add-ons are only available if you've used the Home Assistant Operating System or Home Assistant Supervised installation method.
+
+## Installation
+
+1. **Add Repository**: Navigate to your Home Assistant Supervisor panel, and go to the Add-on Store. Add the following repository URL: `https://github.com/Wiggen94/ha-homarr-server` or click this button
+[](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2FWiggen94%2Fha-homarr-server)
+
+2. **Install the Add-on**: Search for "Homarr Server" in the Add-on Store and select it. Click on "Install" to start the installation process.
+
+3. **Start the Add-on**: Once installed and configured, start the Homarr Server add-on from the Home Assistant Supervisor panel.
+
+4. **Access Homarr**: Homarr will be available at `http://:7575`. Open this address in your browser to access your Homarr dashboard.
+
+Your configuration, data and icons will be saved at /shares
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-apps-search.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-apps-search.png
new file mode 100644
index 00000000..88a98989
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-apps-search.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-apps.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-apps.png
new file mode 100644
index 00000000..9f3498ed
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-apps.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-auth-secret.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-auth-secret.png
new file mode 100644
index 00000000..04f512bd
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-auth-secret.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-install-homarr.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-install-homarr.png
new file mode 100644
index 00000000..e2cc8a7a
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-install-homarr.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-installation.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-installation.png
new file mode 100644
index 00000000..93e677ea
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-installation.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-storage-configuration.png b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-storage-configuration.png
new file mode 100644
index 00000000..b556fcad
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/truenas-scale-storage-configuration.png differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/unraid-apps-homarr.webp b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/unraid-apps-homarr.webp
new file mode 100644
index 00000000..e3b481aa
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/unraid-apps-homarr.webp differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/unraid-navigation-app-manager.webp b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/unraid-navigation-app-manager.webp
new file mode 100644
index 00000000..6a444855
Binary files /dev/null and b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/img/unraid-navigation-app-manager.webp differ
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/pika-pods.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/pika-pods.mdx
new file mode 100644
index 00000000..37fcf9b4
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/pika-pods.mdx
@@ -0,0 +1,5 @@
+# Pika Pods
+
+Pika Pods is a hosting platform for open source apps. You can deploy Homarr on Pika Pods with just a few clicks:
+
+[__](https://www.pikapods.com/pods?run=homarr-v1)
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/portainer.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/portainer.mdx
new file mode 100644
index 00000000..f816d77f
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/portainer.mdx
@@ -0,0 +1,47 @@
+# Portainer
+## Portainer Stacks
+### Prerequisites
+
+- [Portainer Stacks](https://www.portainer.io/blog/stacks-docker-compose-the-portainer-way)
+
+### Installing
+
+To install Homarr using Portainer Stacks, simply create a new stack and paste the following code into it.
+
+```yml title="docker-compose.yml"
+#---------------------------------------------------------------------#
+# Homarr - A simple, yet powerful dashboard for your server. #
+#---------------------------------------------------------------------#
+services:
+ homarr:
+ container_name: homarr
+ image: ghcr.io/homarr-labs/homarr:latest
+ restart: unless-stopped
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock # Optional, only if you want docker integration
+ - /appdata:/appdata
+ environment:
+ - SECRET_ENCRYPTION_KEY=your_64_character_hex_string # <--- can be generated with `openssl rand -hex 32`
+ ports:
+ - '7575:7575'
+```
+
+
+:::note
+Portainer will mount the files to your host machine. Please make sure to replace ```` from the docker run command with your desired storage location. The path must be absolute.
+:::
+
+Then, click on ``Deploy the stack`` and wait until the container has started.
+
+:::tip
+
+If you're unsure how to create a stack, checkout the [Portainer Documentation](https://docs.portainer.io/user/docker/stacks/add).
+
+:::
+
+### Updating
+
+To update Homarr using Docker Compose or Portainer Stacks, simply pull the latest image and restart the container.
+
+1. Run ``docker pull ghcr.io/homarr-labs/homarr:latest`` to pull the latest image.
+2. Re-run ``docker-compose up -d`` or re-deploy the stack in Portainer.
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/proxmox.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/proxmox.mdx
new file mode 100644
index 00000000..ac5de4c2
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/proxmox.mdx
@@ -0,0 +1,67 @@
+# Proxmox
+
+This guide covers how to install homarr inside of a linux-container in ProxmoxVE, using a fully automated approach.
+
+# What is community-scripts?
+
+https://community-scripts.github.io/ProxmoxVE/
+
+This installation method is provided by the Proxmox Community-Scripts. We are a community-driven initiative that simplifies the setup of Proxmox Virtual Environment (VE).
+With hundreds of scripts to help you manage your Proxmox VE environment. Whether you're a seasoned user or a newcomer, we've got you covered.
+
+# Installation
+
+It's as simple as pasting the following snippet into your Proxmox node's console
+
+```bash
+bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/homarr.sh)"
+```
+
+:::warning
+Never trust any script directly injected from the web, without prior looking through it or searching the web for other's opinions.
+
+:::
+
+After executing this command, you will get asked, if you want to accept defaults or would like to specify things like IP-Adress, DNS etc, then choose advanced.
+
+After confirming the installation, the script will install the required dependencies, which may take a few minutes. Do not interrupt the installation.
+After you've installed Homarr, you can find a new LXC "homarr".
+
+# Updating
+
+Updating is as simple as executing
+
+```bash
+update
+```
+
+or running the script again but this time inside the container's shell:
+
+```bash
+bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/homarr.sh)"
+```
+
+# Troubleshooting
+
+If something does not work after an update, please first try rebooting the LXC or the homarr Service with
+
+```bash
+systemctl restart homarr
+```
+
+# Getting help
+- If you are looking for help with the script, updating the LXC or troubleshooting the installer, please get in contact with the support of the community scripts. They provide support on their [Discord](https://discord.gg/2wvnMDgdnU). If you found vulnerabilities, bugs or have a request for the script, [create a new issue here](https://github.com/community-scripts/ProxmoxVE/issues/new/choose).
+- If you are looking to report a bug, vulnerability or request a new feature, use https://github.com/homarr-labs/homarr . You can ask for help on our Discord.
+
+# How to find logs
+Homarr runs under a system service called `homarr`, so getting the logs is a simple as using the following command inside the LXC (Container) Shell
+
+```bash
+systemctl status homarr
+```
+
+As Homarr logs really a log, it sometimes feels like the log is endless till you get the bottom, so a command like this only shows the latest 100 lines:
+
+```bash
+journalctl -u homarr | tail -n 100
+```
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/qnap.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/qnap.mdx
new file mode 100644
index 00000000..a655db5b
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/qnap.mdx
@@ -0,0 +1,9 @@
+# QNAP
+
+:::caution
+QNAP installation guide has not updated to 1.0 yet. There guide is still for 0.15.10.
+:::
+
+When installing on QNAP, we recommend you to install Homarr using [Container Station]( https://www.qnap.com/en/software/container-station) or [this third-party image](https://www.myqnap.org/product/homarr/).
+
+There is also a guide available, but note that it is written in Chinese: https://post.smzdm.com/p/awzm7op2/
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/railway.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/railway.mdx
new file mode 100644
index 00000000..b619ee0b
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/railway.mdx
@@ -0,0 +1,5 @@
+# Railway
+
+Railway is a cloud platform that allows you to deploy your apps with ease. You can deploy Homarr on Railway with a few clicks.
+
+[__](https://railway.com/template/_c4Kr9?referralCode=vishify)
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/saltbox.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/saltbox.mdx
new file mode 100644
index 00000000..2f284d72
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/saltbox.mdx
@@ -0,0 +1,10 @@
+# Saltbox
+
+:::caution
+Saltbox installation command has not updated to 1.0 yet. There command still runs 0.15.10.
+:::
+
+You can also use this to install on Saltbox:
+```bash
+sb install sandbox-homarr
+```
\ No newline at end of file
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/source.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/source.mdx
new file mode 100644
index 00000000..933b264d
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/source.mdx
@@ -0,0 +1,43 @@
+---
+title: From source
+---
+
+# (Not recommended): From source
+
+:::caution
+
+Installing from source is a bad idea in many ways:
+
+- No isolation between applications
+- Dependency conflicts on your root operating system
+- Cumbersome update process
+- Permission management
+- Handling of conflicts
+
+Therefore, we highly discourage you from using this as a normal user.
+This method is only useful, when you want to develop on Homarr or extend it with your own functionality.
+
+:::
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en/download/)
+- [pnpm](https://pnpm.io/installation)
+- [Redis](https://redis.io/download)
+
+## Steps
+
+
+
Clone the Repository using git clone https://github.com/homarr-labs/homarr.git
+
Enter the created directory using cd homarr
+
Install all dependencies using pnpm install
+
Copy the `.env.example` file to `.env` and replace `DB_URL` with the full path you want to use for the sqlite database file. For example `DB_URL='/home/username/homarr/db.sqlite`
+
Replace `AUTH_SECRET` and `SECRET_ENCRYPTION_KEY` both with a secure random string by using `openssl rand -hex 32`
+
Replace `CRON_JOB_API_KEY` with a secure random string by using `openssl rand -base64 32`
+
Run `pnpm run db:migration:sqlite:run` and wait that it completes
+
Build the source using `pnpm build`
+
Copy better-sqlite3.node files with `mkdir build` and `cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node`
+
Start a redis server using `redis-server`
+
Run the server using `pnpm start`
+
Open `http://localhost:3000` in your browser
+
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/synology.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/synology.mdx
new file mode 100644
index 00000000..03a7a5bf
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/synology.mdx
@@ -0,0 +1,10 @@
+# Synology
+
+:::caution
+Synology installation guide has not updated to 1.0 yet. His guide is still for 0.15.10.
+:::
+
+The installation process is quite easy and fast on Synology devices.
+Since this method is used less often, we recommend you to follow this guide written by mariushosting.
+
+https://mariushosting.com/how-to-install-homarr-on-your-synology-nas/
diff --git a/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/unraid.mdx b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/unraid.mdx
new file mode 100644
index 00000000..c4b656e8
--- /dev/null
+++ b/i18n/cn/docusaurus-plugin-content-docs/current/getting-started/installation/unraid.mdx
@@ -0,0 +1,49 @@
+import Link from '@docusaurus/Link';
+import { IconDownload } from '@tabler/icons-react';
+
+# Unraid
+
+You can install Homarr directly from your Unraid Dashboard, no terminal required.
+
+#### Prerequisites
+
+- [Unraid](https://unraid.net/)
+- [Community Apps](https://forums.unraid.net/topic/38582-plug-in-community-applications/)
+
+#### Install the Community Apps Plugin
+
+
+
A simple, yet powerful dashboard for your
- server.
+
+ A simple, yet powerful dashboard for your server.
+
- A sleek, modern dashboard that puts all of your apps and services at your fingertips.
- Control everything in one convenient location. Seamlessly integrates with the
- apps you've added, providing you with valuable information.
+
+ A sleek, modern dashboard that puts all of your apps and services at your fingertips.
+ Control everything in one convenient location. Seamlessly integrates with the
+ apps you've added, providing you with valuable information.
+