https://github.com/unraid/docs
Unraid Documentation
https://github.com/unraid/docs
Last synced: 2 months ago
JSON representation
Unraid Documentation
- Host: GitHub
- URL: https://github.com/unraid/docs
- Owner: unraid
- Created: 2023-05-18T13:16:39.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2026-03-28T18:13:40.000Z (3 months ago)
- Last Synced: 2026-03-28T18:31:05.042Z (3 months ago)
- Language: MDX
- Homepage: http://docs.unraid.net/
- Size: 39.6 MB
- Stars: 44
- Watchers: 7
- Forks: 50
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![Docs Status][docs-shield]][docs-url]
[![Crowdin][crowdin-shield]][crowdin-url]
Unraid Documentation
Source for the official Unraid documentation site.
Explore the docs »
View Site
·
Report Bug
·
Request Content
Table of Contents
## About The Project
[![Unraid Docs Screenshot][product-screenshot]](https://docs.unraid.net)
This repository powers the public [Unraid Docs](https://docs.unraid.net) site. It contains source content, UI components, and supporting scripts that help the Unraid team publish accurate, localized, and accessible documentation for Unraid OS and connected services.
The documentation site is built on [Docusaurus 3](https://docusaurus.io/), rendered as a static site, and deployed via GitHub Pages. Remark-based linting, Crowdin integrations, and automated formatting scripts keep Markdown/MDX contributions consistent across the project.
### Built With
* [![Docusaurus][Docusaurus-shield]][Docusaurus-url]
* [![React][React.js]][React-url]
* [![TypeScript][TypeScript-shield]][TypeScript-url]
* [![Remark][Remark-shield]][Remark-url]
* [![Vitest][Vitest-shield]][Vitest-url]
## Getting Started
Follow these steps to work on the docs locally.
### Prerequisites
* Node.js 22 or newer (see the `package.json` `engines` field)
* pnpm via [Corepack](https://nodejs.org/api/corepack.html)
* Recommended: [nvm](https://github.com/nvm-sh/nvm) for managing Node versions
Install or update Node with nvm:
```bash
nvm install --lts
nvm use
```
### Installation
1. Clone the repo
```bash
git clone https://github.com/unraid/docs.git
cd docs
```
2. Install dependencies
```bash
corepack enable
pnpm install
```
## Usage
Spin up a local Docusaurus dev server:
```bash
pnpm start
```
The local docs dev server listens on `http://localhost:3001` by default. This keeps local iframe/embed testing aligned with [`iframe-test.html`](iframe-test.html) and other localhost examples in the repo.
Preview specific locales (one at a time):
```bash
pnpm start -- --locale zh
pnpm start -- --locale es
```
Run Docusaurus lint/build checks:
```bash
pnpm lint
```
Additional project scripts:
* Type check TypeScript: `pnpm typecheck`
* Unit tests (watch): `pnpm test`
* Single test run (CI): `pnpm test:run`
* Build production site: `pnpm build`
* Preview production build: `pnpm serve`
## Algolia Reindex
The docs search index is refreshed by the GitHub Actions workflow at [`.github/workflows/algolia-reindex.yml`](.github/workflows/algolia-reindex.yml).
That workflow matches the current Algolia Crawler API flow for this site:
* It looks up crawler `unraid` with `GET https://crawler.algolia.com/api/1/crawlers?name=unraid`
* It checks crawler details with `GET https://crawler.algolia.com/api/1/crawlers/`
* It triggers `POST https://crawler.algolia.com/api/1/crawlers//reindex`
The workflow runs automatically on `main` when published docs content changes, and it can also be started manually with **Actions > Algolia Reindex > Run workflow**.
To enable it in GitHub, create these repository secrets:
* `ALGOLIA_CRAWLER_USER_ID`
* `ALGOLIA_CRAWLER_API_KEY`
You can find both in the Algolia dashboard under **Data sources > Crawler > Settings**.
Optional repository variables:
* `ALGOLIA_APP_ID` defaults to `JUYLFQHE7W`
* `ALGOLIA_CRAWLER_NAME` defaults to `unraid`
* `ALGOLIA_REINDEX_DELAY_SECONDS` defaults to `300`
The workflow does not need the standard `ALGOLIA_API_KEY` secret. Reindexing uses the crawler-specific credentials above.
## Fork PR Previews
Forked pull requests do not get native Cloudflare preview builds, so this repo uses a two-workflow GitHub Actions flow for untrusted contributions:
* `.github/workflows/fork-preview-build.yml` runs on fork PRs, installs dependencies, builds the site, and uploads the static `build/` output as an artifact.
* `.github/workflows/fork-preview-deploy.yml` runs after that build completes, downloads the artifact in a trusted workflow, and deploys it to a preview-only Cloudflare Pages project with `wrangler pages deploy --branch=pr-`.
This keeps Cloudflare secrets out of the untrusted PR build while still producing a stable preview URL at `https://pr-..pages.dev`.
Set these before enabling the workflows:
* Repository variable: `CLOUDFLARE_PREVIEW_PAGES_PROJECT`
* Repository secret: `CLOUDFLARE_ACCOUNT_ID`
* Repository secret: `CLOUDFLARE_DEPLOY_TOKEN`
Recommended setup:
1. Create a separate Cloudflare Pages project dedicated to previews only.
2. Keep production on the existing deployment path.
3. Scope the Cloudflare deploy token to Pages edit access for the account that owns the preview project.
## Contributing
New to the docs? Start with the contributor [Style Guide](docs/contribute/style-guide.mdx) for voice, formatting, and workflow expectations. It covers terminology, MDX conventions, screenshots, and review tips.
Once you're comfortable with the guidelines, typical workflow looks like:
1. Fork the project
2. Create a feature branch (`git checkout -b docs/your-change`)
3. Run `pnpm lint` before committing
4. Commit with a clear message (`git commit -m "docs: describe change"`)
5. Push to your fork and open a pull request against `main`
### Top contributors
## Localization
Help translate Unraid Docs for the global community.
* Join the project on Crowdin: [unraid.crowdin.com/unraid-docs](https://unraid.crowdin.com/unraid-docs)
* Follow the glossary and tone guidance in the [Style Guide](docs/contribute/style-guide.mdx)
* Use `pnpm crowdin:upload` or `pnpm crowdin:upload:sources` after changing English source docs
* Use `pnpm crowdin:upload:translations -- --language ` after manually fixing files under `i18n/` so those fixes are pushed back to Crowdin before the next download
* The upload wrapper accepts the repo locale codes directly: use `de`, `es`, `fr`, and `zh` for `i18n/zh`; it normalizes `zh` to Crowdin's `zh-CN` project language code automatically
* Use `pnpm crowdin:download` to pull the latest exported translations after uploads
* `pnpm crowdin:sync` updates source strings and downloads translations, but it does not replace `crowdin:upload:translations` when you need to preserve manual translation fixes
Crowdin suggestions are reviewed regularly by maintainers and native-language contributors.
## License
© 2024 Lime Technology, Inc. All rights reserved. See the [Unraid Legal Terms][license-url] for usage guidelines.
## Contact
Need help? Open an issue on GitHub or reach us via [unraid.net/contact](https://unraid.net/contact).
Project Link: [https://github.com/unraid/docs](https://github.com/unraid/docs)
## Acknowledgments
* [Docusaurus](https://docusaurus.io/)
* [Crowdin](https://crowdin.com/)
* [Remark Lint](https://github.com/remarkjs/remark-lint)
* [Vitest](https://vitest.dev/)
[contributors-shield]: https://img.shields.io/github/contributors/unraid/docs.svg?style=for-the-badge
[contributors-url]: https://github.com/unraid/docs/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/unraid/docs.svg?style=for-the-badge
[forks-url]: https://github.com/unraid/docs/network/members
[stars-shield]: https://img.shields.io/github/stars/unraid/docs.svg?style=for-the-badge
[stars-url]: https://github.com/unraid/docs/stargazers
[issues-shield]: https://img.shields.io/github/issues/unraid/docs.svg?style=for-the-badge
[issues-url]: https://github.com/unraid/docs/issues
[docs-shield]: https://img.shields.io/badge/site-docs.unraid.net-orange?style=for-the-badge
[docs-url]: https://docs.unraid.net
[crowdin-shield]: https://img.shields.io/badge/Crowdin-Join-orange?style=for-the-badge&logo=crowdin
[crowdin-url]: https://unraid.crowdin.com/unraid-docs
[product-screenshot]: static/img/docusaurus.png
[Docusaurus-shield]: https://img.shields.io/badge/Docusaurus-3B0997?style=for-the-badge&logo=docusaurus&logoColor=white
[Docusaurus-url]: https://docusaurus.io/
[React.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB
[React-url]: https://react.dev/
[TypeScript-shield]: https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white
[TypeScript-url]: https://www.typescriptlang.org/
[Remark-shield]: https://img.shields.io/badge/Remark-000000?style=for-the-badge&logo=markdown&logoColor=white
[Remark-url]: https://github.com/remarkjs/remark
[Vitest-shield]: https://img.shields.io/badge/Vitest-6E9F18?style=for-the-badge&logo=vitest&logoColor=white
[Vitest-url]: https://vitest.dev/
[license-url]: https://unraid.net/legal