basic structure
This commit is contained in:
		
							
								
								
									
										0
									
								
								homelabbing/docs/hardware/index.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								homelabbing/docs/hardware/index.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								homelabbing/docs/hardware/server/index.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								homelabbing/docs/hardware/server/index.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										85
									
								
								homelabbing/docs/how-to-use-this-guide.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								homelabbing/docs/how-to-use-this-guide.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| # How to Use This Documentation | ||||
|  | ||||
| Welcome to the **Homelab Documentation** – a complete reference for planning, building, and maintaining your self-hosted infrastructure. | ||||
|  | ||||
| This knowledge base is organized into **three main categories** in the top navigation:   | ||||
| - **Software** – Applications and services you can self-host   | ||||
| - **Hardware** – Physical servers, storage, and network equipment   | ||||
| - **Know-How** – Linux fundamentals, networking, and security | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 📂 Category Structure | ||||
|  | ||||
| ### **Software** | ||||
| Guides for installing, configuring, and running self-hosted applications. | ||||
| - **Media Services** – Streaming, automation, indexing, transcoding | ||||
| - **Productivity Tools** – File sync, document management, collaboration | ||||
| - **Monitoring & Management** – Metrics, logs, automation, backups | ||||
| - **Other Applications** – Any other useful self-hosted services | ||||
|  | ||||
| **Example:**   | ||||
| [Docker Installation Guide](knowhow/docker)   | ||||
| [Service Installation Example](software/mediastack) | ||||
|  | ||||
| --- | ||||
|  | ||||
| ### **Hardware** | ||||
| Documentation about your physical homelab setup. | ||||
| - **Servers** – Build guides for different performance tiers | ||||
| - **Storage** – RAID, ZFS, NAS integration | ||||
| - **Networking Equipment** – Routers, switches, WiFi APs | ||||
| - **Power & UPS** – Power protection and energy efficiency | ||||
|  | ||||
| **Example:**   | ||||
| [Starter Server Build](hardware/server) | ||||
|  | ||||
| --- | ||||
|  | ||||
| ### **Know-How** | ||||
| General technical knowledge for running and securing a homelab. | ||||
| - **Linux** | ||||
|   - Basics – Commands, filesystem, permissions | ||||
|   - Docker – Installation, Compose, Swarm Mode | ||||
| - **Networking** | ||||
|   - VLANs, subnets, DNS, VPN setup | ||||
| - **Security** | ||||
|   - TLS/SSL, reverse proxy configuration | ||||
|   - MFA, firewall, access control | ||||
|   - Backup strategies | ||||
|  | ||||
| **Example:**   | ||||
| [Linux Basics](knowhow/linux/basics) | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 🛠 How to Navigate | ||||
|  | ||||
| 1. **Choose a Category** – Use the top navigation to open *Software*, *Hardware*, or *Know-How*.   | ||||
| 2. **Expand the Sidebar** – Each category contains subtopics with their own guides.   | ||||
| 3. **Follow Links** – Many guides link to related topics for better context.   | ||||
| 4. **Copy & Paste** – All commands are provided in ready-to-use code blocks.   | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 🚀 Suggested Starting Path | ||||
|  | ||||
| If you’re new to self-hosting: | ||||
| 1. Follow the [Docker Installation Guide](knowhow/docker)   | ||||
| 2. Deploy a basic service of your choice   | ||||
| 3. Set up reverse proxy and SSL for secure access   | ||||
| 4. Learn networking and security basics in *Know-How*   | ||||
| 5. Expand with automation, backups, and monitoring | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 📚 Resources | ||||
|  | ||||
| - [Docker Documentation](https://docs.docker.com/) | ||||
| - [Jellyfin Docs](https://jellyfin.org/docs/) | ||||
| - [Awesome-Selfhosted](https://github.com/awesome-selfhosted/awesome-selfhosted) | ||||
| - [selfh.st – Self-Hosting Knowledge Base](https://selfh.st/) | ||||
|  | ||||
| --- | ||||
|  | ||||
| **Tip:** Keep your configuration files, `docker-compose.yml` files, and infrastructure documentation in version control for easy recovery. | ||||
| @@ -1,47 +0,0 @@ | ||||
| --- | ||||
| sidebar_position: 1 | ||||
| --- | ||||
|  | ||||
| # Tutorial Intro | ||||
|  | ||||
| Let's discover **Docusaurus in less than 5 minutes**. | ||||
|  | ||||
| ## Getting Started | ||||
|  | ||||
| Get started by **creating a new site**. | ||||
|  | ||||
| Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**. | ||||
|  | ||||
| ### What you'll need | ||||
|  | ||||
| - [Node.js](https://nodejs.org/en/download/) version 18.0 or above: | ||||
|   - When installing Node.js, you are recommended to check all checkboxes related to dependencies. | ||||
|  | ||||
| ## Generate a new site | ||||
|  | ||||
| Generate a new Docusaurus site using the **classic template**. | ||||
|  | ||||
| The classic template will automatically be added to your project after you run the command: | ||||
|  | ||||
| ```bash | ||||
| npm init docusaurus@latest my-website classic | ||||
| ``` | ||||
|  | ||||
| You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor. | ||||
|  | ||||
| The command also installs all necessary dependencies you need to run Docusaurus. | ||||
|  | ||||
| ## Start your site | ||||
|  | ||||
| Run the development server: | ||||
|  | ||||
| ```bash | ||||
| cd my-website | ||||
| npm run start | ||||
| ``` | ||||
|  | ||||
| The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there. | ||||
|  | ||||
| The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/. | ||||
|  | ||||
| Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes. | ||||
							
								
								
									
										89
									
								
								homelabbing/docs/knowhow/docker/index.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								homelabbing/docs/knowhow/docker/index.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | ||||
| # Installation | ||||
|  | ||||
| This guide explains how to install Docker Engine using the official Docker repository. | ||||
|  | ||||
| ## Prerequisites | ||||
|  | ||||
| - Root or `sudo` privileges   | ||||
| - Supported OS: Debian 10/11/12 or Ubuntu 20.04/22.04 | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 1. Remove old versions (if any) | ||||
|  | ||||
| ```bash | ||||
| sudo apt-get remove docker docker-engine docker.io containerd runc | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 2. Set up the repository | ||||
|  | ||||
| ### 2.1 Install required packages | ||||
|  | ||||
| ```bash | ||||
| sudo apt-get update | ||||
| sudo apt-get install -y \ | ||||
|     ca-certificates \ | ||||
|     curl \ | ||||
|     gnupg \ | ||||
|     lsb-release | ||||
| ``` | ||||
|  | ||||
| ### 2.2 Add Docker’s official GPG key | ||||
|  | ||||
| ```bash | ||||
| sudo mkdir -p /etc/apt/keyrings | ||||
| curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg | ||||
| ``` | ||||
|  | ||||
| ### 2.3 Set up the Docker repository | ||||
|  | ||||
| ```bash | ||||
| echo \ | ||||
|   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ | ||||
|   https://download.docker.com/linux/$(. /etc/os-release && echo \"$ID\") \ | ||||
|   $(lsb_release -cs) stable" | \ | ||||
|   sudo tee /etc/apt/sources.list.d/docker.list > /dev/null | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 3. Install Docker Engine | ||||
|  | ||||
| ```bash | ||||
| sudo apt-get update | ||||
| sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 4. Enable and start the Docker service | ||||
|  | ||||
| ```bash | ||||
| sudo systemctl enable docker | ||||
| sudo systemctl start docker | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 5. Verify installation | ||||
|  | ||||
| ```bash | ||||
| sudo docker run hello-world | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Optional: Add your user to the `docker` group | ||||
|  | ||||
| ```bash | ||||
| sudo usermod -aG docker $USER | ||||
| newgrp docker | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## References | ||||
|  | ||||
| - https://docs.docker.com/engine/install/ | ||||
							
								
								
									
										0
									
								
								homelabbing/docs/knowhow/index.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								homelabbing/docs/knowhow/index.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								homelabbing/docs/knowhow/linux/basics/index.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								homelabbing/docs/knowhow/linux/basics/index.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								homelabbing/docs/knowhow/linux/index.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								homelabbing/docs/knowhow/linux/index.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										
											BIN
										
									
								
								homelabbing/docs/software/img/mediastack-diagram.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								homelabbing/docs/software/img/mediastack-diagram.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 263 KiB | 
							
								
								
									
										0
									
								
								homelabbing/docs/software/index.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								homelabbing/docs/software/index.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										101
									
								
								homelabbing/docs/software/mediastack/introduction.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								homelabbing/docs/software/mediastack/introduction.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,101 @@ | ||||
| # Introduction | ||||
|  | ||||
| This documentation describes a self-hosted, Docker-based media automation stack that handles everything from user requests to content playback, fully integrated with Jellyfin as the central media server. | ||||
|  | ||||
| The stack includes download automation (Usenet), metadata scraping, transcoding, user interface for media requests, monitoring, and search. Everything is containerized and orchestrated with Docker Compose. | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 1. Prerequisites | ||||
|  | ||||
| Before continuing, make sure Docker and Docker Compose are installed on your system.   | ||||
| You can follow the installation guide here:   | ||||
| 👉 [Install Docker on Debian/Ubuntu](../../knowhow/docker/) | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 2. Stack Overview | ||||
|  | ||||
| The following diagram illustrates how the various components in the media stack interact: | ||||
|  | ||||
|  | ||||
|  | ||||
| **Legend / Component Highlights:** | ||||
|  | ||||
| - **Jellyfin**: the main media server for playback and library management | ||||
| - **Jellyseerr**: user-facing request portal | ||||
| - **Radarr/Sonarr**: automation for movies and series | ||||
| - **Prowlarr**: indexer aggregator for both Radarr and Sonarr | ||||
| - **SABnzbd**: Usenet downloader | ||||
| - **Tdarr**: automated transcoding engine | ||||
| - **Meilisearch**: search backend for metadata (used by Scraparr/Suggestarr) | ||||
| - **Wizarr**: user invite and account management | ||||
| - **Trailarr & Huntarr**: UI enhancements and support tooling | ||||
| - **Scraparr & Suggestarr**: metadata and suggestion automation | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 3. Directory Structure | ||||
|  | ||||
| Your directory tree is organized to clearly separate persistent data and component configuration: | ||||
|  | ||||
| ``` | ||||
| /mediastack | ||||
| ├── 4k-radarr               # Radarr instance for 4K content | ||||
| ├── jellyfin                # Config/data for Jellyfin | ||||
| ├── jellyseerr              # Request frontend | ||||
| ├── radarr                  # Main movie automation | ||||
| ├── sonarr                  # Series automation | ||||
| ├── sabnzbd                 # Usenet download client | ||||
| ├── tdarr                   # Transcoding | ||||
| ├── prowlarr                # Indexer management | ||||
| ├── wizarr                  # Invite portal | ||||
| ├── postgres                # Database service | ||||
| ├── huntarr, trailarr*      # Visual/UX enhancements | ||||
| ├── scraparr, suggestarr    # Metadata and recommendation tooling | ||||
| ├── cache/ | ||||
| │   ├── jellyfin | ||||
| │   ├── sabnzbd | ||||
| │   ├── tdarr | ||||
| │   └── meilisearch | ||||
| ├── media/ | ||||
| │   ├── 4k-filme | ||||
| │   ├── anime_filme | ||||
| │   ├── animes | ||||
| │   ├── filme | ||||
| │   ├── serien | ||||
| │   └── posters | ||||
| ``` | ||||
|  | ||||
| > All services are managed using Docker Compose with volume mounts mapped into the above directories. | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 4. Benefits | ||||
|  | ||||
| - 🧩 Modular: You can scale or swap components easily | ||||
| - 🐳 Containerized: Consistent and portable deployments | ||||
| - 🧠 Automated: Minimal manual work once configured | ||||
| - 📦 Composable: All services communicate via APIs or shared volumes | ||||
| - 🔐 Local-first & private | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 5. Next Steps | ||||
|  | ||||
| - Set up Docker and Docker Compose if you haven't yet | ||||
| - Start configuring the services one by one (see individual `.md` files) | ||||
| - Secure access via reverse proxy (e.g., Traefik or Nginx) | ||||
| - Enjoy your fully automated media center 🎬 | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Links | ||||
|  | ||||
| - Jellyfin: https://jellyfin.org   | ||||
| - Jellyseerr: https://github.com/Fallenbagel/jellyseerr   | ||||
| - Tdarr: https://github.com/HaveAGitGat/Tdarr   | ||||
| - SABnzbd: https://sabnzbd.org   | ||||
| - Radarr: https://radarr.video   | ||||
| - Sonarr: https://sonarr.tv   | ||||
| - Prowlarr: https://github.com/Prowlarr/Prowlarr   | ||||
| @@ -0,0 +1,82 @@ | ||||
| # Installation | ||||
|  | ||||
| This guide shows you how to install [Jellyfin](https://jellyfin.org/) via Docker Compose. Make sure Docker Engine is already installed on your system. | ||||
|  | ||||
| ## Prerequisites | ||||
|  | ||||
| - Docker Engine installed (follow the official guide linked above)   | ||||
| - Docker Compose available   | ||||
| - Linux host system | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 1. Create a project directory | ||||
|  | ||||
| ```bash | ||||
| mkdir jellyfin | ||||
| cd jellyfin | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 2. Create `docker-compose.yml` | ||||
|  | ||||
| ```yaml | ||||
| version: "3" | ||||
| services: | ||||
|   jellyfin: | ||||
|     image: jellyfin/jellyfin | ||||
|     container_name: jellyfin | ||||
|     user: uid:gid           # replace uid:gid with your actual user ID and group ID | ||||
|     network_mode: "host"    # optional: needed for DLNA and certain integrations | ||||
|     volumes: | ||||
|       - ./config:/config | ||||
|       - ./cache:/cache | ||||
|       - /path/to/media:/media | ||||
|         # Add more media folders if needed | ||||
|     restart: unless-stopped | ||||
|     environment: | ||||
|       - JELLYFIN_PublishedServerUrl=http://your-domain-or-ip | ||||
|     extra_hosts: | ||||
|       - "host.docker.internal:host-gateway" | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 3. Start Jellyfin | ||||
|  | ||||
| ```bash | ||||
| docker compose up -d | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 4. Access Jellyfin | ||||
|  | ||||
| Open a browser and navigate to `http://<your-host-ip>:8096` to begin setup via the web UI. | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 5. (Optional) Manage updates | ||||
|  | ||||
| When a new version is available: | ||||
|  | ||||
| ```bash | ||||
| docker compose pull | ||||
| docker compose up -d | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Notes | ||||
|  | ||||
| - Ensure user ID (`uid`) and group ID (`gid`) match your Linux user to prevent permissions issues.   | ||||
| - Host network mode is required for DLNA and some integrations only; you can remove it if not needed.   | ||||
| - This setup uses bind-mounted folders (`./config`, `./cache`, `/path/to/media`) for persistent data. | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## References | ||||
|  | ||||
| - Official Docker installation guide: https://docs.docker.com/engine/install/   | ||||
| - Jellyfin Docker Compose instructions | ||||
| @@ -0,0 +1,60 @@ | ||||
| # Introduction | ||||
|  | ||||
| **Jellyfin** is a free, open-source media server software that lets you collect, manage, and stream your personal media—such as movies, TV shows, music, and photos—across devices. It is a community-driven alternative to proprietary platforms like Plex and Emby. | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Key Features | ||||
|  | ||||
| - 🆓 **Completely Free**: No paid licenses, subscriptions, or locked features. | ||||
| - 🛡️ **Privacy-Focused**: No telemetry, no third-party tracking. | ||||
| - 📺 **Streaming**: Access your media from web browsers, smart TVs, mobile apps, or Kodi. | ||||
| - 🧠 **Metadata Management**: Automatic retrieval of posters, fanart, episode guides, and more. | ||||
| - 🎚️ **Transcoding**: On-the-fly conversion for devices with limited format support. | ||||
| - 🎛️ **Plugin System**: Extend functionality with community-made plugins. | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Supported Platforms | ||||
|  | ||||
| - **Server**: Windows, Linux, macOS, Docker, and more | ||||
| - **Clients**: | ||||
|   - Web browser | ||||
|   - Android / iOS apps | ||||
|   - Smart TVs (via apps or DLNA) | ||||
|   - Kodi (via Jellyfin add-on) | ||||
|   - Chromecast | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Ideal Use Cases | ||||
|  | ||||
| - Home media streaming over LAN or internet | ||||
| - Centralized media hub for a household | ||||
| - Replacement for paid services (e.g., Plex, Netflix for local content) | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Comparison to Plex & Emby | ||||
|  | ||||
| | Feature            | Jellyfin        | Plex            | Emby            | | ||||
| |--------------------|-----------------|------------------|------------------| | ||||
| | Open Source        | ✅ Yes          | ❌ No            | ⚠️ Partial        | | ||||
| | Free Features      | ✅ All          | ❌ Some Locked   | ⚠️ Limited        | | ||||
| | No Account Needed  | ✅ Yes          | ❌ No            | ⚠️ Mostly         | | ||||
| | Community-Driven   | ✅ 100%         | ❌               | ⚠️ Limited        | | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Quick Start | ||||
|  | ||||
| If you haven’t installed Jellyfin yet, check the [Docker Compose installation guide](./jellyfin-docker-compose.md) or visit the [official documentation](https://jellyfin.org/docs/). | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Links | ||||
|  | ||||
| - 🌐 Website: https://jellyfin.org   | ||||
| - 📘 Docs: https://jellyfin.org/docs/   | ||||
| - 🐙 GitHub: https://github.com/jellyfin/jellyfin   | ||||
| - 💬 Community: https://matrix.to/#/#jellyfin:matrix.org   | ||||
| @@ -0,0 +1,95 @@ | ||||
| # Installation | ||||
|  | ||||
| [Jellyseerr](https://github.com/Fallenbagel/jellyseerr) is a free and open-source request management and media discovery tool for Jellyfin. It allows users to search for and request media directly from your Jellyfin library or through external indexers. | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Prerequisites | ||||
|  | ||||
| - Docker and Docker Compose installed   | ||||
| - A running Jellyfin instance (optional but recommended)   | ||||
| - Optional: Sonarr, Radarr, and download clients for full automation | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 1. Create Project Directory | ||||
|  | ||||
| ```bash | ||||
| mkdir jellyseerr | ||||
| cd jellyseerr | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 2. Create `docker-compose.yml` | ||||
|  | ||||
| ```yaml | ||||
| version: "3" | ||||
| services: | ||||
|   jellyseerr: | ||||
|     image: fallenbagel/jellyseerr:latest | ||||
|     container_name: jellyseerr | ||||
|     restart: unless-stopped | ||||
|     ports: | ||||
|       - "5055:5055" | ||||
|     environment: | ||||
|       - LOG_LEVEL=info | ||||
|     volumes: | ||||
|       - ./config:/app/config | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 3. Start Jellyseerr | ||||
|  | ||||
| ```bash | ||||
| docker compose up -d | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 4. Access Web UI | ||||
|  | ||||
| Open your browser and go to: | ||||
|  | ||||
| ``` | ||||
| http://<your-server-ip>:5055 | ||||
| ``` | ||||
|  | ||||
| You'll be guided through the setup process: | ||||
| - Create admin account | ||||
| - Connect Jellyfin server | ||||
| - (Optional) Connect Sonarr, Radarr, etc. | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 5. Update Instructions | ||||
|  | ||||
| To update Jellyseerr: | ||||
|  | ||||
| ```bash | ||||
| docker compose pull | ||||
| docker compose up -d | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## 6. Optional: Enable Reverse Proxy | ||||
|  | ||||
| To expose Jellyseerr via a domain name (e.g. `requests.example.com`), set up a reverse proxy using [Traefik](https://doc.traefik.io/traefik/), Nginx, or Caddy. A basic Traefik label example: | ||||
|  | ||||
| ```yaml | ||||
|     labels: | ||||
|       - "traefik.enable=true" | ||||
|       - "traefik.http.routers.jellyseerr.rule=Host(`requests.example.com`)" | ||||
|       - "traefik.http.routers.jellyseerr.entrypoints=websecure" | ||||
|       - "traefik.http.routers.jellyseerr.tls.certresolver=myresolver" | ||||
| ``` | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## References | ||||
|  | ||||
| - Jellyseerr GitHub: https://github.com/Fallenbagel/jellyseerr   | ||||
| - Docker Hub: https://hub.docker.com/r/fallenbagel/jellyseerr   | ||||
| - Official Documentation: https://docs.jellyseerr.com   | ||||
| @@ -0,0 +1,61 @@ | ||||
| # Introduction | ||||
|  | ||||
| [**Jellyseerr**](https://docs.jellyseerr.dev/) is a free and open-source media request and discovery platform designed specifically for [**Jellyfin**](https://jellyfin.org). It provides a user-friendly interface for browsing, searching, and requesting movies and TV shows, bridging the gap between your users and your media automation stack (e.g., Jellyfin + Sonarr/Radarr). | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Key Features | ||||
|  | ||||
| - 🔎 **Search & Discover**: Browse and search for movies and series from TMDB. | ||||
| - 🎯 **Direct Requests**: Request content directly from the UI, linked to Sonarr and Radarr. | ||||
| - 🔐 **User Management**: Role-based permissions and Jellyfin authentication. | ||||
| - 📅 **Release Tracking**: View upcoming or recently added media. | ||||
| - 💬 **Request Comments**: Users can comment and track the status of their requests. | ||||
| - 🌍 **Multi-language** support with a responsive web UI. | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Target Audience | ||||
|  | ||||
| - Jellyfin server admins who want to delegate content requests to users | ||||
| - Home media server users looking to streamline their request workflow | ||||
| - Those looking for a self-hosted alternative to Overseerr (Plex-only) | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Jellyseerr vs Overseerr | ||||
|  | ||||
| | Feature                      | Jellyseerr      | Overseerr     | | ||||
| |-----------------------------|------------------|---------------| | ||||
| | Media Server Integration    | ✅ Jellyfin only | ❌ Plex only  | | ||||
| | Open Source                 | ✅ Yes           | ✅ Yes        | | ||||
| | Actively Maintained         | ✅ Yes           | ✅ Yes        | | ||||
| | UI and Features             | ⭐ Comparable     | ⭐ Comparable | | ||||
| | Login with Media Server     | ✅ Jellyfin SSO  | ✅ Plex OAuth | | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## How It Works | ||||
|  | ||||
| 1. **User logs in** (via Jellyfin) | ||||
| 2. **Searches for media** via TMDB integration | ||||
| 3. **Requests are submitted** through the UI | ||||
| 4. **Sonarr/Radarr handle automation** (optional) | ||||
| 5. **Jellyfin picks up downloaded content automatically** | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Requirements | ||||
|  | ||||
| - Jellyfin server | ||||
| - Docker or Node.js environment | ||||
| - (Optional) Sonarr, Radarr, and download clients (e.g., qBittorrent, NZBGet) | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Links | ||||
|  | ||||
| - 🌐 Project: https://github.com/Fallenbagel/jellyseerr   | ||||
| - 📘 Docs: https://docs.jellyseerr.com   | ||||
| - 🐳 Docker Hub: https://hub.docker.com/r/fallenbagel/jellyseerr   | ||||
| - 💬 Community: https://discord.gg/mVJcS4tq3q   | ||||
| @@ -1,8 +0,0 @@ | ||||
| { | ||||
|   "label": "Tutorial - Basics", | ||||
|   "position": 2, | ||||
|   "link": { | ||||
|     "type": "generated-index", | ||||
|     "description": "5 minutes to learn the most important Docusaurus concepts." | ||||
|   } | ||||
| } | ||||
| @@ -1,23 +0,0 @@ | ||||
| --- | ||||
| sidebar_position: 6 | ||||
| --- | ||||
|  | ||||
| # Congratulations! | ||||
|  | ||||
| You have just learned the **basics of Docusaurus** and made some changes to the **initial template**. | ||||
|  | ||||
| Docusaurus has **much more to offer**! | ||||
|  | ||||
| Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**. | ||||
|  | ||||
| Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610) | ||||
|  | ||||
| ## What's next? | ||||
|  | ||||
| - Read the [official documentation](https://docusaurus.io/) | ||||
| - Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config) | ||||
| - Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration) | ||||
| - Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout) | ||||
| - Add a [search bar](https://docusaurus.io/docs/search) | ||||
| - Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase) | ||||
| - Get involved in the [Docusaurus Community](https://docusaurus.io/community/support) | ||||
| @@ -1,34 +0,0 @@ | ||||
| --- | ||||
| sidebar_position: 3 | ||||
| --- | ||||
|  | ||||
| # Create a Blog Post | ||||
|  | ||||
| Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed... | ||||
|  | ||||
| ## Create your first Post | ||||
|  | ||||
| Create a file at `blog/2021-02-28-greetings.md`: | ||||
|  | ||||
| ```md title="blog/2021-02-28-greetings.md" | ||||
| --- | ||||
| slug: greetings | ||||
| title: Greetings! | ||||
| authors: | ||||
|   - name: Joel Marcey | ||||
|     title: Co-creator of Docusaurus 1 | ||||
|     url: https://github.com/JoelMarcey | ||||
|     image_url: https://github.com/JoelMarcey.png | ||||
|   - name: Sébastien Lorber | ||||
|     title: Docusaurus maintainer | ||||
|     url: https://sebastienlorber.com | ||||
|     image_url: https://github.com/slorber.png | ||||
| tags: [greetings] | ||||
| --- | ||||
|  | ||||
| Congratulations, you have made your first post! | ||||
|  | ||||
| Feel free to play around and edit this post as much as you like. | ||||
| ``` | ||||
|  | ||||
| A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings). | ||||
| @@ -1,57 +0,0 @@ | ||||
| --- | ||||
| sidebar_position: 2 | ||||
| --- | ||||
|  | ||||
| # Create a Document | ||||
|  | ||||
| Documents are **groups of pages** connected through: | ||||
|  | ||||
| - a **sidebar** | ||||
| - **previous/next navigation** | ||||
| - **versioning** | ||||
|  | ||||
| ## Create your first Doc | ||||
|  | ||||
| Create a Markdown file at `docs/hello.md`: | ||||
|  | ||||
| ```md title="docs/hello.md" | ||||
| # Hello | ||||
|  | ||||
| This is my **first Docusaurus document**! | ||||
| ``` | ||||
|  | ||||
| A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello). | ||||
|  | ||||
| ## Configure the Sidebar | ||||
|  | ||||
| Docusaurus automatically **creates a sidebar** from the `docs` folder. | ||||
|  | ||||
| Add metadata to customize the sidebar label and position: | ||||
|  | ||||
| ```md title="docs/hello.md" {1-4} | ||||
| --- | ||||
| sidebar_label: 'Hi!' | ||||
| sidebar_position: 3 | ||||
| --- | ||||
|  | ||||
| # Hello | ||||
|  | ||||
| This is my **first Docusaurus document**! | ||||
| ``` | ||||
|  | ||||
| It is also possible to create your sidebar explicitly in `sidebars.js`: | ||||
|  | ||||
| ```js title="sidebars.js" | ||||
| export default { | ||||
|   tutorialSidebar: [ | ||||
|     'intro', | ||||
|     // highlight-next-line | ||||
|     'hello', | ||||
|     { | ||||
|       type: 'category', | ||||
|       label: 'Tutorial', | ||||
|       items: ['tutorial-basics/create-a-document'], | ||||
|     }, | ||||
|   ], | ||||
| }; | ||||
| ``` | ||||
| @@ -1,43 +0,0 @@ | ||||
| --- | ||||
| sidebar_position: 1 | ||||
| --- | ||||
|  | ||||
| # Create a Page | ||||
|  | ||||
| Add **Markdown or React** files to `src/pages` to create a **standalone page**: | ||||
|  | ||||
| - `src/pages/index.js` → `localhost:3000/` | ||||
| - `src/pages/foo.md` → `localhost:3000/foo` | ||||
| - `src/pages/foo/bar.js` → `localhost:3000/foo/bar` | ||||
|  | ||||
| ## Create your first React Page | ||||
|  | ||||
| Create a file at `src/pages/my-react-page.js`: | ||||
|  | ||||
| ```jsx title="src/pages/my-react-page.js" | ||||
| import React from 'react'; | ||||
| import Layout from '@theme/Layout'; | ||||
|  | ||||
| export default function MyReactPage() { | ||||
|   return ( | ||||
|     <Layout> | ||||
|       <h1>My React page</h1> | ||||
|       <p>This is a React page</p> | ||||
|     </Layout> | ||||
|   ); | ||||
| } | ||||
| ``` | ||||
|  | ||||
| A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page). | ||||
|  | ||||
| ## Create your first Markdown Page | ||||
|  | ||||
| Create a file at `src/pages/my-markdown-page.md`: | ||||
|  | ||||
| ```mdx title="src/pages/my-markdown-page.md" | ||||
| # My Markdown page | ||||
|  | ||||
| This is a Markdown page | ||||
| ``` | ||||
|  | ||||
| A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page). | ||||
| @@ -1,31 +0,0 @@ | ||||
| --- | ||||
| sidebar_position: 5 | ||||
| --- | ||||
|  | ||||
| # Deploy your site | ||||
|  | ||||
| Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**). | ||||
|  | ||||
| It builds your site as simple **static HTML, JavaScript and CSS files**. | ||||
|  | ||||
| ## Build your site | ||||
|  | ||||
| Build your site **for production**: | ||||
|  | ||||
| ```bash | ||||
| npm run build | ||||
| ``` | ||||
|  | ||||
| The static files are generated in the `build` folder. | ||||
|  | ||||
| ## Deploy your site | ||||
|  | ||||
| Test your production build locally: | ||||
|  | ||||
| ```bash | ||||
| npm run serve | ||||
| ``` | ||||
|  | ||||
| The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/). | ||||
|  | ||||
| You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**). | ||||
| @@ -1,152 +0,0 @@ | ||||
| --- | ||||
| sidebar_position: 4 | ||||
| --- | ||||
|  | ||||
| # Markdown Features | ||||
|  | ||||
| Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**. | ||||
|  | ||||
| ## Front Matter | ||||
|  | ||||
| Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/): | ||||
|  | ||||
| ```text title="my-doc.md" | ||||
| // highlight-start | ||||
| --- | ||||
| id: my-doc-id | ||||
| title: My document title | ||||
| description: My document description | ||||
| slug: /my-custom-url | ||||
| --- | ||||
| // highlight-end | ||||
|  | ||||
| ## Markdown heading | ||||
|  | ||||
| Markdown text with [links](./hello.md) | ||||
| ``` | ||||
|  | ||||
| ## Links | ||||
|  | ||||
| Regular Markdown links are supported, using url paths or relative file paths. | ||||
|  | ||||
| ```md | ||||
| Let's see how to [Create a page](/create-a-page). | ||||
| ``` | ||||
|  | ||||
| ```md | ||||
| Let's see how to [Create a page](./create-a-page.md). | ||||
| ``` | ||||
|  | ||||
| **Result:** Let's see how to [Create a page](./create-a-page.md). | ||||
|  | ||||
| ## Images | ||||
|  | ||||
| Regular Markdown images are supported. | ||||
|  | ||||
| You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`): | ||||
|  | ||||
| ```md | ||||
|  | ||||
| ``` | ||||
|  | ||||
|  | ||||
|  | ||||
| You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them: | ||||
|  | ||||
| ```md | ||||
|  | ||||
| ``` | ||||
|  | ||||
| ## Code Blocks | ||||
|  | ||||
| Markdown code blocks are supported with Syntax highlighting. | ||||
|  | ||||
| ````md | ||||
| ```jsx title="src/components/HelloDocusaurus.js" | ||||
| function HelloDocusaurus() { | ||||
|   return <h1>Hello, Docusaurus!</h1>; | ||||
| } | ||||
| ``` | ||||
| ```` | ||||
|  | ||||
| ```jsx title="src/components/HelloDocusaurus.js" | ||||
| function HelloDocusaurus() { | ||||
|   return <h1>Hello, Docusaurus!</h1>; | ||||
| } | ||||
| ``` | ||||
|  | ||||
| ## Admonitions | ||||
|  | ||||
| Docusaurus has a special syntax to create admonitions and callouts: | ||||
|  | ||||
| ```md | ||||
| :::tip My tip | ||||
|  | ||||
| Use this awesome feature option | ||||
|  | ||||
| ::: | ||||
|  | ||||
| :::danger Take care | ||||
|  | ||||
| This action is dangerous | ||||
|  | ||||
| ::: | ||||
| ``` | ||||
|  | ||||
| :::tip My tip | ||||
|  | ||||
| Use this awesome feature option | ||||
|  | ||||
| ::: | ||||
|  | ||||
| :::danger Take care | ||||
|  | ||||
| This action is dangerous | ||||
|  | ||||
| ::: | ||||
|  | ||||
| ## MDX and React Components | ||||
|  | ||||
| [MDX](https://mdxjs.com/) can make your documentation more **interactive** and allows using any **React components inside Markdown**: | ||||
|  | ||||
| ```jsx | ||||
| export const Highlight = ({children, color}) => ( | ||||
|   <span | ||||
|     style={{ | ||||
|       backgroundColor: color, | ||||
|       borderRadius: '20px', | ||||
|       color: '#fff', | ||||
|       padding: '10px', | ||||
|       cursor: 'pointer', | ||||
|     }} | ||||
|     onClick={() => { | ||||
|       alert(`You clicked the color ${color} with label ${children}`) | ||||
|     }}> | ||||
|     {children} | ||||
|   </span> | ||||
| ); | ||||
|  | ||||
| This is <Highlight color="#25c2a0">Docusaurus green</Highlight> ! | ||||
|  | ||||
| This is <Highlight color="#1877F2">Facebook blue</Highlight> ! | ||||
| ``` | ||||
|  | ||||
| export const Highlight = ({children, color}) => ( | ||||
|   <span | ||||
|     style={{ | ||||
|       backgroundColor: color, | ||||
|       borderRadius: '20px', | ||||
|       color: '#fff', | ||||
|       padding: '10px', | ||||
|       cursor: 'pointer', | ||||
|     }} | ||||
|     onClick={() => { | ||||
|       alert(`You clicked the color ${color} with label ${children}`); | ||||
|     }}> | ||||
|     {children} | ||||
|   </span> | ||||
| ); | ||||
|  | ||||
| This is <Highlight color="#25c2a0">Docusaurus green</Highlight> ! | ||||
|  | ||||
| This is <Highlight color="#1877F2">Facebook blue</Highlight> ! | ||||
| @@ -1,7 +0,0 @@ | ||||
| { | ||||
|   "label": "Tutorial - Extras", | ||||
|   "position": 3, | ||||
|   "link": { | ||||
|     "type": "generated-index" | ||||
|   } | ||||
| } | ||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 25 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 27 KiB | 
| @@ -1,55 +0,0 @@ | ||||
| --- | ||||
| sidebar_position: 1 | ||||
| --- | ||||
|  | ||||
| # Manage Docs Versions | ||||
|  | ||||
| Docusaurus can manage multiple versions of your docs. | ||||
|  | ||||
| ## Create a docs version | ||||
|  | ||||
| Release a version 1.0 of your project: | ||||
|  | ||||
| ```bash | ||||
| npm run docusaurus docs:version 1.0 | ||||
| ``` | ||||
|  | ||||
| The `docs` folder is copied into `versioned_docs/version-1.0` and `versions.json` is created. | ||||
|  | ||||
| Your docs now have 2 versions: | ||||
|  | ||||
| - `1.0` at `http://localhost:3000/docs/` for the version 1.0 docs | ||||
| - `current` at `http://localhost:3000/docs/next/` for the **upcoming, unreleased docs** | ||||
|  | ||||
| ## Add a Version Dropdown | ||||
|  | ||||
| To navigate seamlessly across versions, add a version dropdown. | ||||
|  | ||||
| Modify the `docusaurus.config.js` file: | ||||
|  | ||||
| ```js title="docusaurus.config.js" | ||||
| export default { | ||||
|   themeConfig: { | ||||
|     navbar: { | ||||
|       items: [ | ||||
|         // highlight-start | ||||
|         { | ||||
|           type: 'docsVersionDropdown', | ||||
|         }, | ||||
|         // highlight-end | ||||
|       ], | ||||
|     }, | ||||
|   }, | ||||
| }; | ||||
| ``` | ||||
|  | ||||
| The docs version dropdown appears in your navbar: | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Update an existing version | ||||
|  | ||||
| It is possible to edit versioned docs in their respective folder: | ||||
|  | ||||
| - `versioned_docs/version-1.0/hello.md` updates `http://localhost:3000/docs/hello` | ||||
| - `docs/hello.md` updates `http://localhost:3000/docs/next/hello` | ||||
| @@ -1,88 +0,0 @@ | ||||
| --- | ||||
| sidebar_position: 2 | ||||
| --- | ||||
|  | ||||
| # Translate your site | ||||
|  | ||||
| Let's translate `docs/intro.md` to French. | ||||
|  | ||||
| ## Configure i18n | ||||
|  | ||||
| Modify `docusaurus.config.js` to add support for the `fr` locale: | ||||
|  | ||||
| ```js title="docusaurus.config.js" | ||||
| export default { | ||||
|   i18n: { | ||||
|     defaultLocale: 'en', | ||||
|     locales: ['en', 'fr'], | ||||
|   }, | ||||
| }; | ||||
| ``` | ||||
|  | ||||
| ## Translate a doc | ||||
|  | ||||
| Copy the `docs/intro.md` file to the `i18n/fr` folder: | ||||
|  | ||||
| ```bash | ||||
| mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/ | ||||
|  | ||||
| cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md | ||||
| ``` | ||||
|  | ||||
| Translate `i18n/fr/docusaurus-plugin-content-docs/current/intro.md` in French. | ||||
|  | ||||
| ## Start your localized site | ||||
|  | ||||
| Start your site on the French locale: | ||||
|  | ||||
| ```bash | ||||
| npm run start -- --locale fr | ||||
| ``` | ||||
|  | ||||
| Your localized site is accessible at [http://localhost:3000/fr/](http://localhost:3000/fr/) and the `Getting Started` page is translated. | ||||
|  | ||||
| :::caution | ||||
|  | ||||
| In development, you can only use one locale at a time. | ||||
|  | ||||
| ::: | ||||
|  | ||||
| ## Add a Locale Dropdown | ||||
|  | ||||
| To navigate seamlessly across languages, add a locale dropdown. | ||||
|  | ||||
| Modify the `docusaurus.config.js` file: | ||||
|  | ||||
| ```js title="docusaurus.config.js" | ||||
| export default { | ||||
|   themeConfig: { | ||||
|     navbar: { | ||||
|       items: [ | ||||
|         // highlight-start | ||||
|         { | ||||
|           type: 'localeDropdown', | ||||
|         }, | ||||
|         // highlight-end | ||||
|       ], | ||||
|     }, | ||||
|   }, | ||||
| }; | ||||
| ``` | ||||
|  | ||||
| The locale dropdown now appears in your navbar: | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Build your localized site | ||||
|  | ||||
| Build your site for a specific locale: | ||||
|  | ||||
| ```bash | ||||
| npm run build -- --locale fr | ||||
| ``` | ||||
|  | ||||
| Or build your site to include all the locales at once: | ||||
|  | ||||
| ```bash | ||||
| npm run build | ||||
| ``` | ||||
| @@ -10,8 +10,8 @@ import {themes as prismThemes} from 'prism-react-renderer'; | ||||
|  | ||||
| /** @type {import('@docusaurus/types').Config} */ | ||||
| const config = { | ||||
|   title: 'My Site', | ||||
|   tagline: 'Dinosaurs are cool', | ||||
|   title: 'Homelabbing', | ||||
|   tagline: 'Your guide for a perfect homelab', | ||||
|   favicon: 'img/favicon.ico', | ||||
|  | ||||
|   // Future flags, see https://docusaurus.io/docs/api/docusaurus-config#future | ||||
| @@ -89,14 +89,26 @@ const config = { | ||||
|         items: [ | ||||
|           { | ||||
|             type: 'docSidebar', | ||||
|             sidebarId: 'tutorialSidebar', | ||||
|             sidebarId: 'software', | ||||
|             position: 'left', | ||||
|             label: 'Tutorial', | ||||
|             label: 'Software', | ||||
|           }, | ||||
|           {to: '/blog', label: 'Blog', position: 'left'}, | ||||
|           { | ||||
|             href: 'https://github.com/facebook/docusaurus', | ||||
|             label: 'GitHub', | ||||
|             type: 'docSidebar', | ||||
|             sidebarId: 'hardware', | ||||
|             position: 'left', | ||||
|             label: 'Hardware', | ||||
|           }, | ||||
|           { | ||||
|             type: 'docSidebar', | ||||
|             sidebarId: 'knowhow', | ||||
|             position: 'left', | ||||
|             label: 'Know-How', | ||||
|           }, | ||||
|           {to: '/blog', label: 'Blog', position: 'right'}, | ||||
|           { | ||||
|             href: 'https://gitea.js-devop.de/jschaufuss/Homelabbing', | ||||
|             label: 'Gitea', | ||||
|             position: 'right', | ||||
|           }, | ||||
|         ], | ||||
| @@ -108,8 +120,16 @@ const config = { | ||||
|             title: 'Docs', | ||||
|             items: [ | ||||
|               { | ||||
|                 label: 'Tutorial', | ||||
|                 to: '/docs/intro', | ||||
|                 label: 'Software', | ||||
|                 to: '/docs/software/', | ||||
|               }, | ||||
|               { | ||||
|                 label: 'Hardware', | ||||
|                 to: '/docs/hardware/', | ||||
|               }, | ||||
|               { | ||||
|                 label: 'Know-How', | ||||
|                 to: '/docs/knowhow/', | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
| @@ -138,8 +158,8 @@ const config = { | ||||
|                 to: '/blog', | ||||
|               }, | ||||
|               { | ||||
|                 label: 'GitHub', | ||||
|                 href: 'https://github.com/facebook/docusaurus', | ||||
|                 label: 'Gitea', | ||||
|                 href: 'https://gitea.js-devop.de/jschaufuss/Homelabbing', | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
|   | ||||
							
								
								
									
										44
									
								
								homelabbing/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								homelabbing/package.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| { | ||||
|   "name": "homelabbing", | ||||
|   "version": "0.0.0", | ||||
|   "private": true, | ||||
|   "scripts": { | ||||
|     "docusaurus": "docusaurus", | ||||
|     "start": "docusaurus start", | ||||
|     "build": "docusaurus build", | ||||
|     "swizzle": "docusaurus swizzle", | ||||
|     "deploy": "docusaurus deploy", | ||||
|     "clear": "docusaurus clear", | ||||
|     "serve": "docusaurus serve", | ||||
|     "write-translations": "docusaurus write-translations", | ||||
|     "write-heading-ids": "docusaurus write-heading-ids" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "@docusaurus/core": "3.8.1", | ||||
|     "@docusaurus/preset-classic": "3.8.1", | ||||
|     "@mdx-js/react": "^3.0.0", | ||||
|     "clsx": "^2.0.0", | ||||
|     "prism-react-renderer": "^2.3.0", | ||||
|     "react": "^19.0.0", | ||||
|     "react-dom": "^19.0.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@docusaurus/module-type-aliases": "3.8.1", | ||||
|     "@docusaurus/types": "3.8.1" | ||||
|   }, | ||||
|   "browserslist": { | ||||
|     "production": [ | ||||
|       ">0.5%", | ||||
|       "not dead", | ||||
|       "not op_mini all" | ||||
|     ], | ||||
|     "development": [ | ||||
|       "last 3 chrome version", | ||||
|       "last 3 firefox version", | ||||
|       "last 5 safari version" | ||||
|     ] | ||||
|   }, | ||||
|   "engines": { | ||||
|     "node": ">=18.0" | ||||
|   } | ||||
| } | ||||
| @@ -15,21 +15,77 @@ | ||||
|  @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} | ||||
|  */ | ||||
| const sidebars = { | ||||
|   // By default, Docusaurus generates a sidebar from the docs folder structure | ||||
|   tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], | ||||
|  | ||||
|   // But you can create a sidebar manually | ||||
|   /* | ||||
|   tutorialSidebar: [ | ||||
|     'intro', | ||||
|     'hello', | ||||
|   software: [ | ||||
|     'software/index', | ||||
|     { | ||||
|       type: 'category', | ||||
|       label: 'Tutorial', | ||||
|       items: ['tutorial-basics/create-a-document'], | ||||
|       label: 'Mediastack', | ||||
|       items: [ | ||||
|         'software/mediastack/introduction', | ||||
|         { | ||||
|           type: 'category', | ||||
|           label: 'Jellyfin', | ||||
|           items: [ | ||||
|             'software/mediastack/jellyfin/introduction', | ||||
|             'software/mediastack/jellyfin/installation', | ||||
|           ], | ||||
|         }, | ||||
|         { | ||||
|           type: 'category', | ||||
|           label: 'Jellyseerr', | ||||
|           items: [ | ||||
|             'software/mediastack/jellyseerr/introduction', | ||||
|             'software/mediastack/jellyseerr/installation', | ||||
|           ], | ||||
|         }, | ||||
|       ], | ||||
|     }, | ||||
|   ], | ||||
|   hardware: [ | ||||
|     'hardware/index', | ||||
|     { | ||||
|       type: 'category', | ||||
|       label: 'Server', | ||||
|       items: [ | ||||
|         { | ||||
|           type: 'category', | ||||
|           label: 'Starter-Server', | ||||
|           items: ['hardware/server/starter-server/index'], | ||||
|         }, | ||||
|       ], | ||||
|     }, | ||||
|   ], | ||||
|   knowhow: [ | ||||
|     'knowhow/index', | ||||
|     { | ||||
|       type: 'category', | ||||
|       label: 'Linux', | ||||
|       items: [ | ||||
|         { | ||||
|           type: 'category', | ||||
|           label: 'Basics', | ||||
|           items: ['knowhow/linux/basics/index'], | ||||
|         }, | ||||
|       ], | ||||
|     }, | ||||
|     { | ||||
|       type: 'category', | ||||
|       label: 'Docker', | ||||
|       items: [ | ||||
|         'knowhow/docker/index', | ||||
|         { | ||||
|           type: 'category', | ||||
|           label: 'Docker Compose', | ||||
|           items: ['knowhow/docker/docker-compose/index'], | ||||
|         }, | ||||
|         { | ||||
|           type: 'category', | ||||
|           label: 'Docker Swarm Mode', | ||||
|           items: ['knowhow/docker/docker-swarm/index'], | ||||
|         }, | ||||
|       ], | ||||
|     }, | ||||
|   ], | ||||
|    */ | ||||
| }; | ||||
|  | ||||
| export default sidebars; | ||||
|   | ||||
| @@ -19,8 +19,8 @@ function HomepageHeader() { | ||||
|         <div className={styles.buttons}> | ||||
|           <Link | ||||
|             className="button button--secondary button--lg" | ||||
|             to="/docs/intro"> | ||||
|             Docusaurus Tutorial - 5min ⏱️ | ||||
|             to="/docs/how-to-use-this-guide"> | ||||
|             How to use this Guide | ||||
|           </Link> | ||||
|         </div> | ||||
|       </div> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user