GitHub Pages redirects non-trailing-slash URLs with 301, causing Algolia crawler to ignore all sitemap entries. Setting trailingSlash to true aligns generated URLs with what GitHub Pages actually serves.
304 lines
7.9 KiB
TypeScript
304 lines
7.9 KiB
TypeScript
import type * as Preset from "@docusaurus/preset-classic";
|
|
import type { Config } from "@docusaurus/types";
|
|
import { themes as prismThemes } from "prism-react-renderer";
|
|
const a11yEmoji = require("@fec/remark-a11y-emoji");
|
|
|
|
const config: Config = {
|
|
title: "Homarr documentation",
|
|
tagline: "A simple yet powerful dashboard for your server.",
|
|
url: "https://homarr.dev",
|
|
baseUrl: "/",
|
|
trailingSlash: true,
|
|
favicon: "img/logo.png",
|
|
organizationName: "homarr-labs",
|
|
projectName: "homarr",
|
|
i18n: {
|
|
defaultLocale: "en",
|
|
locales: ["en"],
|
|
},
|
|
onBrokenLinks: "throw",
|
|
onBrokenMarkdownLinks: "throw",
|
|
onBrokenAnchors: "throw",
|
|
onDuplicateRoutes: "throw",
|
|
|
|
future: {
|
|
v4: {
|
|
removeLegacyPostBuildHeadAttribute: true,
|
|
useCssCascadeLayers: true,
|
|
siteStorageNamespacing: true,
|
|
fasterByDefault: true,
|
|
mdx1CompatDisabledByDefault: false,
|
|
},
|
|
},
|
|
|
|
markdown: {
|
|
mermaid: true,
|
|
format: "detect",
|
|
},
|
|
|
|
themes: ["@docusaurus/theme-mermaid"],
|
|
|
|
scripts: [
|
|
{
|
|
src: "https://widget.kapa.ai/kapa-widget.bundle.js",
|
|
"data-website-id": "1e4656f4-abeb-4343-bbae-1d8626f52378",
|
|
"data-project-name": "Homarr",
|
|
"data-project-color": "#2B2B2B",
|
|
"data-project-logo": "https://homarr.dev/img/favicon.png",
|
|
async: true,
|
|
},
|
|
],
|
|
|
|
presets: [
|
|
[
|
|
"classic",
|
|
{
|
|
docs: {
|
|
sidebarPath: require.resolve("./sidebars.js"),
|
|
editUrl: ({ docPath }) => `https://github.com/homarr-labs/homarr/edit/dev/apps/docs/docs/${docPath}`,
|
|
remarkPlugins: [a11yEmoji],
|
|
exclude: ["**/custom-widget.mdx"],
|
|
showLastUpdateAuthor: false,
|
|
showLastUpdateTime: false,
|
|
},
|
|
blog: {
|
|
showReadingTime: true,
|
|
// Please change this to your repo.
|
|
// Remove this to remove the "edit this page" links.
|
|
editUrl: "https://github.com/homarr-labs/homarr/edit/dev/apps/docs",
|
|
authorsMapPath: "authors.yml",
|
|
},
|
|
theme: {
|
|
customCss: require.resolve("./src/css/custom.css"),
|
|
},
|
|
sitemap: {
|
|
changefreq: "weekly",
|
|
priority: 0.5,
|
|
ignorePatterns: ["/tags/**"],
|
|
filename: "sitemap.xml",
|
|
},
|
|
} satisfies Preset.Options,
|
|
],
|
|
],
|
|
|
|
themeConfig: {
|
|
navbar: {
|
|
title: "Homarr",
|
|
logo: {
|
|
alt: "Homarr Logo",
|
|
src: "img/logo.png",
|
|
},
|
|
items: [
|
|
{
|
|
label: "Documentation",
|
|
type: "doc",
|
|
position: "left",
|
|
docId: "getting-started/index",
|
|
},
|
|
{
|
|
label: "Blog",
|
|
position: "left",
|
|
to: "/blog",
|
|
},
|
|
{
|
|
label: "About us",
|
|
position: "left",
|
|
to: "/about-us",
|
|
},
|
|
{
|
|
to: "https://demo.homarr.dev/",
|
|
label: "Demo",
|
|
position: "right",
|
|
},
|
|
{
|
|
to: "https://opencollective.com/homarr",
|
|
label: "💴 Donate",
|
|
position: "right",
|
|
},
|
|
{
|
|
type: "dropdown",
|
|
label: "Community",
|
|
position: "right",
|
|
items: [
|
|
{
|
|
to: "https://discord.com/invite/aCsmEV5RgA",
|
|
label: "Discord",
|
|
},
|
|
{
|
|
to: "https://github.com/homarr-labs/homarr",
|
|
label: "GitHub",
|
|
},
|
|
{
|
|
to: "https://www.answeroverflow.com/c/972958686051962910",
|
|
label: "Answer Overflow",
|
|
},
|
|
{
|
|
to: "https://crowdin.com/project/homarr_labs",
|
|
label: "Community translations (Crowdin)",
|
|
},
|
|
{
|
|
to: "https://www.reddit.com/r/homarr/",
|
|
label: "Reddit",
|
|
},
|
|
{
|
|
to: "https://opencollective.com/homarr",
|
|
label: "OpenCollective",
|
|
},
|
|
{
|
|
to: "https://x.com/homarr_labs",
|
|
label: "X / Twitter",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "search",
|
|
position: "right",
|
|
},
|
|
],
|
|
hideOnScroll: false,
|
|
},
|
|
algolia: {
|
|
appId: "N69WSPZTID",
|
|
apiKey: "b2b00f4ed8ca3dc87b5d211c55121416",
|
|
indexName: "Docusaurus",
|
|
contextualSearch: false,
|
|
searchPagePath: "search",
|
|
insights: false,
|
|
replaceSearchResultPathname: {
|
|
from: "/docs/(next|\\d+(?:\\.\\d+)*)/",
|
|
to: "/docs/",
|
|
},
|
|
},
|
|
footer: {
|
|
links: [
|
|
{
|
|
title: "Documentation",
|
|
items: [
|
|
{
|
|
label: "Installation",
|
|
to: "/docs/category/getting-started",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: "Community",
|
|
items: [
|
|
{
|
|
label: "Discord",
|
|
to: "https://discord.com/invite/aCsmEV5RgA",
|
|
},
|
|
{
|
|
label: "GitHub",
|
|
to: "https://github.com/homarr-labs/homarr",
|
|
},
|
|
{
|
|
label: "Donate",
|
|
to: "https://opencollective.com/homarr",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: "More",
|
|
items: [
|
|
{
|
|
label: "Blog",
|
|
to: "/blog",
|
|
},
|
|
{
|
|
label: "About us",
|
|
to: "/about-us",
|
|
},
|
|
],
|
|
},
|
|
],
|
|
logo: {
|
|
alt: "Homarr Logo",
|
|
src: "img/logo.png",
|
|
height: 100,
|
|
},
|
|
copyright: `<span class="copyright_text">Copyright © ${new Date().getFullYear()} Homarr<span> — <a href="/docs/community/license">License</a>`,
|
|
},
|
|
prism: {
|
|
theme: prismThemes.github,
|
|
darkTheme: prismThemes.dracula,
|
|
defaultLanguage: "bash",
|
|
},
|
|
colorMode: {
|
|
defaultMode: "dark",
|
|
respectPrefersColorScheme: true,
|
|
},
|
|
metadata: [
|
|
{
|
|
name: "keywords",
|
|
content: "Homarr, Dashboard, Selfhosted, Hosting, Modules, Open-Source",
|
|
},
|
|
],
|
|
zoom: {
|
|
selector: ".markdown :not(em) > img",
|
|
background: {
|
|
light: "rgb(255, 255, 255)",
|
|
dark: "rgb(50, 50, 50)",
|
|
},
|
|
config: {
|
|
// options you can specify via https://github.com/francoischalifour/medium-zoom#usage
|
|
margin: 80,
|
|
},
|
|
},
|
|
tableOfContents: {
|
|
minHeadingLevel: 2,
|
|
maxHeadingLevel: 4,
|
|
},
|
|
} satisfies Preset.ThemeConfig,
|
|
plugins: [
|
|
function homarrPackagesPlugin() {
|
|
return {
|
|
name: "resolve-homarr-packages",
|
|
configureWebpack() {
|
|
return { resolve: { symlinks: false } };
|
|
},
|
|
};
|
|
},
|
|
[
|
|
"posthog-docusaurus",
|
|
{
|
|
apiKey: "phc_pWxeD1hbl4ip02JYReX1Crjkt5DhB3dduigirHMCtFE",
|
|
appUrl: "https://hog.homarr.dev",
|
|
enableInDevelopment: true,
|
|
ui_host: "https://eu.posthog.com",
|
|
defaults: "2026-01-30",
|
|
autocapture: true,
|
|
disable_session_recording: true,
|
|
advanced_disable_feature_flags: true,
|
|
},
|
|
],
|
|
"docusaurus-plugin-image-zoom",
|
|
require.resolve("./plugins/validate-docs-coverage"),
|
|
function disableExpensiveBundlerOptimizationPlugin() {
|
|
return {
|
|
name: "disable-expensive-bundler-optimizations",
|
|
configureWebpack(_config: unknown, isServer: boolean) {
|
|
return {
|
|
optimization: {
|
|
concatenateModules: process.env.CI != null && process.env.CI !== "false" ? !isServer : false,
|
|
},
|
|
};
|
|
},
|
|
};
|
|
},
|
|
"@signalwire/docusaurus-plugin-llms-txt",
|
|
async function tailwindCssPlugin(context, options) {
|
|
return {
|
|
name: "docusaurus-tailwindcss",
|
|
configurePostCss(postcssOptions) {
|
|
// Appends TailwindCSS and AutoPrefixer.
|
|
postcssOptions.plugins.push(require("tailwindcss"));
|
|
postcssOptions.plugins.push(require("autoprefixer"));
|
|
return postcssOptions;
|
|
},
|
|
};
|
|
},
|
|
],
|
|
};
|
|
|
|
export default config;
|