10 Commits
Author SHA1 Message Date
Djeex 3529834d95 Fixed deprecated path in qbittorent.md 2026-08-25 10:30:54 +00:00
Djeex fd21bd2f83 feat: add canonical URL and og:url
Docus doesn't generate canonical links or og:url natively. A plugin
now injects rel=canonical and og:url per route using nuxt-site-config's
withSiteUrl, which reads site.url from nuxt.config.ts.
2026-08-11 23:10:26 +02:00
Djeex 2c28b27e82 Fixed darkreader lock 2026-08-11 10:12:54 +00:00
Djeex d22711484b feat: add SEO descriptions to all pages and fix canonical URL 2026-08-11 08:48:59 +00:00
Djeex bfdef4c47a feat: add sitemap generation 2026-08-11 08:32:13 +00:00
Djeex 6129fd31d1 Fixed text 2026-08-03 16:04:44 +00:00
Djeex d839908521 Instameex 2026-08-03 15:52:04 +00:00
Djeex c640801e23 Fixed ")" 2026-03-11 12:06:58 +00:00
Djeex 9e3f116f55 Fixed qbittorrent screenshot 2026-03-11 12:05:05 +00:00
Djeex a59c6c7d4a Fixed Debian version 2026-03-11 11:51:12 +00:00
51 changed files with 10508 additions and 2801 deletions
+1 -1
View File
@@ -25,7 +25,7 @@ export default defineAppConfig({
docus: { docus: {
title: 'Docudjeex', title: 'Docudjeex',
description: 'Homelab documentation', description: 'Homelab documentation',
url: 'http://docus.dev', url: 'https://docu.djeex.fr',
image: '/img/social.png', image: '/img/social.png',
socials: { socials: {
github:'', github:'',
+1
View File
@@ -1,5 +1,6 @@
--- ---
title: Home title: Home
description: Homelab documentation by Djeex — self-hosting guides for Debian, Docker, networking, storage, and more.
navigation: false navigation: false
layout: page layout: page
main: main:
+2 -1
View File
@@ -1,6 +1,7 @@
--- ---
icon: lucide:home icon: lucide:home
title: Welcome title: Welcome
description: Introduction to Docudjeex — a personal homelab documentation site covering self-hosted services, Debian, and Docker infrastructure.
main: main:
fluid: false fluid: false
--- ---
@@ -9,7 +10,7 @@ main:
# docu[·]{style="color: #1ad6ff"}what? # docu[·]{style="color: #1ad6ff"}what?
__Docu[·]{style="color: #1ad6ff"}djeex__ is a site containing the documentation of my personal servers, originally created to easily keep track of my configurations and commands. __Docu[·]{style="color: #1ad6ff"}djeex__ is a site containing the documentation of my personal servers, originally created to easily keep track of my configurations and commands.
My infrastructure is built around the Debian 12 + Docker combo, making exporting and deployment simpler. My infrastructure is built around the Debian 13 + Docker combo, making exporting and deployment simpler.
Special thanks to __Nipah__, __Xenio__, and others for their patience and support. Most of this content comes directly from them. Special thanks to __Nipah__, __Xenio__, and others for their patience and support. Most of this content comes directly from them.
## About the documentation ## About the documentation
+1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: NAT & DHCP title: NAT & DHCP
description: Learn how NAT, port forwarding, and DHCP work on a home router. Configure fixed IP leases and understand how to expose local services.
main: main:
fluid: false fluid: false
--- ---
+1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: DNS Zone title: DNS Zone
description: Understand how DNS works, how to read and edit a DNS zone, and how to configure domain names for your self-hosted services.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Samba title: Samba
description: Set up Samba on Debian to share folders over your local network and access them from Windows, macOS, or Linux.
main: main:
fluid: false fluid: false
--- ---
+1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: RAID title: RAID
description: Understand RAID concepts — hardware vs software, RAID levels, and how to set up redundant disk arrays for your homelab.
main: main:
fluid: false fluid: false
--- ---
+1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: ZFS title: ZFS
description: Introduction to ZFS — a combined file system and volume manager with snapshots, checksums, and built-in redundancy for reliable homelab storage.
main: main:
fluid: false fluid: false
--- ---
+1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: The Basics title: The Basics
description: Overview of server hardware fundamentals — CPUs, RAM, storage, and form factors to understand before building your homelab.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Network title: Network
description: Overview of networking hardware for homelabs — switches, NICs, cables, and how to connect your servers efficiently.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: The ProloNAS title: The ProloNAS
description: Build a capable home server on a budget using an Intel N100 mini PC — a practical guide to getting started with self-hosting for under $130.
fluid: false fluid: false
--- ---
+2 -1
View File
@@ -2,6 +2,7 @@
icon: lucide:bookmark icon: lucide:bookmark
navigation: true navigation: true
title: Introduction title: Introduction
description: Introduction to Serveex — a personal homelab project to self-host everyday services using Debian and Docker, replacing Google, Apple, and Netflix.
main: main:
fluid: false fluid: false
--- ---
@@ -41,7 +42,7 @@ The Core of the Server
#title #title
__Operating System__ __Operating System__
#description #description
[Install and configure Debian 12](/serveex/core/installation) [Install and configure Debian 13](/serveex/core/installation)
:: ::
::card{icon=logos:docker-icon} ::card{icon=logos:docker-icon}
+3 -2
View File
@@ -1,11 +1,12 @@
--- ---
navigation: true navigation: true
title: Debian 12 title: Debian 13
description: Step-by-step guide to install Debian 13 on a home server and set up SSH access, essential packages, and a ready-to-use base system.
main: main:
fluid: false fluid: false
--- ---
:ellipsis{left=0px width=40rem top=10rem blur=140px} :ellipsis{left=0px width=40rem top=10rem blur=140px}
# Debian 12 # Debian 13
::alert{type="info"} ::alert{type="info"}
🎯 __Goal:__ Install Debian 13 and the main dependencies to have a ready-to-use OS, accessible via SSH. 🎯 __Goal:__ Install Debian 13 and the main dependencies to have a ready-to-use OS, accessible via SSH.
:: ::
+2 -1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Docker title: Docker
description: Install Docker and Dockge on Debian to deploy and manage self-hosted services with simple container stacks.
main: main:
fluid: false fluid: false
--- ---
@@ -43,7 +44,7 @@ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin
That's it! That's it!
**More options:** [Install Docker for Debian 12](https://docs.docker.com/engine/install/debian/) **More options:** [Install Docker for Debian 13](https://docs.docker.com/engine/install/debian/)
::alert{type="info" icon="exclamation-circle"} ::alert{type="info" icon="exclamation-circle"}
:::list{type="info"} :::list{type="info"}
+1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: SWAG title: SWAG
description: Set up SWAG as a reverse proxy with automatic SSL, expose your services securely, and configure geo-blocking on your homelab.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Wireguard title: Wireguard
description: Install and configure WireGuard VPN to securely access your homelab from anywhere and connect all your devices to your private network.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Authentik title: Authentik
description: Install Authentik as a self-hosted identity provider — configure MFA and protect your services with SSO and reverse proxy authentication.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Cloudflare Zero Trust title: Cloudflare Zero Trust
description: Use Cloudflare Tunnels and Zero Trust to expose homelab services without opening ports — configure SWAG and manage multiple tunnels.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Uptime-Kuma title: Uptime-Kuma
description: Install Uptime-Kuma to monitor your self-hosted services uptime, set up alerts, and optionally protect the dashboard with Authentik.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Dozzle title: Dozzle
description: Install Dozzle to monitor Docker container logs in real time from a clean web interface, exposed via SWAG.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Speedtest Tracker title: Speedtest Tracker
description: Install Speedtest Tracker to automatically measure and log your internet connection speed over time, exposed with SWAG.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Beszel title: Beszel
description: Install Beszel to monitor server CPU, RAM, disk, and network metrics — including remote servers — with a lightweight web dashboard.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: UpSnap title: UpSnap
description: Install UpSnap to remotely wake up machines on your local network via Wake-on-LAN, exposed with SWAG.
main: main:
fluid: false fluid: false
--- ---
+1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Plex title: Plex
description: Install Plex Media Server with Tautulli on your homelab to stream movies and TV shows from anywhere on all your devices.
main: main:
fluid: false fluid: false
--- ---
+4 -3
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Qbittorrent title: Qbittorrent
description: Install qBittorrent with Gluetun and ProtonVPN to download torrents securely behind a VPN on your self-hosted server.
main: main:
fluid: false fluid: false
--- ---
@@ -13,7 +14,7 @@ main:
- Securely connect to the BitTorrent network using Gluetun and Proton VPN - Securely connect to the BitTorrent network using Gluetun and Proton VPN
:: ::
![Picture](https://github.com/VueTorrent/VueTorrent/blob/master/public/screenshots/screenshot-desktop-dark-mode.jpeg?raw=true) ![Picture](/img/serveex/qbit-vue.jpeg)
To safely download your favorite media, we'll build a system using: To safely download your favorite media, we'll build a system using:
@@ -80,7 +81,7 @@ services:
- gluetun - gluetun
gluetun: gluetun:
image: qmcgaw/gluetun:v3.40.1 image: qmcgaw/gluetun:v3.41.3
container_name: gluetun container_name: gluetun
restart: unless-stopped restart: unless-stopped
mem_limit: 4g mem_limit: 4g
@@ -149,7 +150,7 @@ Press `i` to edit and enter:
```toml ```toml
[[roles]] [[roles]]
name = "t-anc/GSP-Qbittorent-Gluetun-sync-port-mod" name = "t-anc/GSP-Qbittorent-Gluetun-sync-port-mod"
routes = ["GET /v1/openvpn/portforwarded"] routes = ["GET /v1/portforward"]
auth = "apikey" auth = "apikey"
apikey = "your_key_here" # key you just generated apikey = "your_key_here" # key you just generated
``` ```
+1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Automation title: Automation
description: Automate media downloads with the Servarr stack — Radarr, Sonarr, Bazarr, Prowlarr, and Overseerr for movies and TV shows.
main: main:
fluid: false fluid: false
--- ---
+1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Immich title: Immich
description: Install Immich, a self-hosted alternative to Google Photos and iCloud with face recognition, geolocation, and multi-device sync.
main: main:
fluid: false fluid: false
--- ---
+1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Nextcloud title: Nextcloud
description: Install Nextcloud to self-host your files, photos, and calendar — a privacy-friendly alternative to Google Drive, OneDrive, and iCloud.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: File Browser title: File Browser
description: Install File Browser to browse and manage your server files from a web interface, exposed securely with SWAG.
main: main:
fluid: false fluid: false
--- ---
+1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Pingvin title: Pingvin
description: Install Pingvin Share, a self-hosted file sharing platform to send files securely without relying on WeTransfer or Google Drive.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Code-Server title: Code-Server
description: Install code-server to run VS Code in your browser from your homelab — mount folders and expose it securely with SWAG.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Gitea title: Gitea
description: Install Gitea, a lightweight self-hosted Git service to manage your code repositories privately on your own server.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: IT Tools title: IT Tools
description: Install IT Tools, a self-hosted collection of handy utilities for developers — converters, encoders, formatters, and more.
main: main:
fluid: false fluid: false
--- ---
+1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Adguard Home title: Adguard Home
description: Install AdGuard Home for network-wide ad and tracker blocking with DNS-over-HTTPS, client management, and custom filtering rules.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Vaultwarden title: Vaultwarden
description: Install Vaultwarden, a self-hosted Bitwarden-compatible password manager to replace Google or Apple password managers across all your devices.
main: main:
fluid: false fluid: false
--- ---
+1
View File
@@ -2,6 +2,7 @@
icon: lucide:bookmark icon: lucide:bookmark
navigation: true navigation: true
title: Introduction title: Introduction
description: Introduction to Stockeex — a personal project for stock and inventory management. Documentation coming soon.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Nvidia Stock Bot title: Nvidia Stock Bot
description: A Python bot that monitors GPU stock availability in real time and sends Discord alerts — built during the RTX 5000 series launch shortage.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Adguard CIDRE title: Adguard CIDRE
description: A Python script to sync AdGuard Home CIDR allowlists automatically, securing your self-hosted DNS server exposed to the internet.
main: main:
fluid: false fluid: false
--- ---
+1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Lumeex title: Lumeex
description: Lumeex is a static photo gallery site generator built with Python — minimalist, lightweight, and fully customizable without a CMS.
main: main:
fluid: false fluid: false
--- ---
@@ -0,0 +1,58 @@
---
navigation: true
title: Instameex
description: Instameex is a Docker-based tool to merge SDR and HDR photo exports into a proper gain-map JPEG ready for Instagram HDR upload.
main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
<div align="center">
<img src="https://git.djeex.fr/Djeex/instameex/raw/branch/main/src/assets/img/logo-long.svg" alt="Lumeex Screenshot" width="300"/>
</div>
<p/>
<div align="center">
<p>Mix your SDR and HDR exports into an Instagram-ready HDR photo.</p>
</div>
</p>
<div align="center">
<img src="https://git.djeex.fr/Djeex/instameex/raw/branch/main/illustration/instameex-illustration.png" width="640" alt="Instameex Screenshot" />
</div>
---
Nothing is more frustrating than Instagram's HDR handling. It compresses and destroys gain maps, and the slightest change in aspect ratio or size simply strips HDR out entirely. As for Lightroom, its "SDR preview" system is frankly unacceptable, it makes it impossible to get consistent results. Until now, posting on Instagram meant choosing between decent SDR with broken HDR, or the other way around.
Why not simply edit your SDR file to perfection on one side, your HDR file on the other, and then recalculate a gain map from those two perfect files?
A few pioneers have already gone down that road, notably with an [Adobe Lightroom Classic](https://github.com/karachungen/lightroom-plugin-export-hdr) plugin. Judge me if you want, but I only use Lightroom CC, which does not support plugins.
I drew inspiration from a [fork of the original project](https://github.com/kostis-kounadis/instagram-hdr-assembler), the one that eventually became the LrC plugin, to build a frontend that can be easily deployed with Docker. Let's be honest: it was also a great excuse to put my Claude Code subscription to the test. And I have to say, watching it spin up its own environments, run end-to-end tests, self-correct its code, and write detailed summaries is genuinely impressive. I still reviewed everything myself, don't worry. I also learned a great deal about HDR fundamentals, gain maps, HLG/PQ tone curves, color spaces, and more.
In short, here is what my workflow now looks like for posting on Instagram:
![Instameex workflow](/img/nonsense/instameex-workflow.svg)
Allow me to introduce **Instam[eex]{style="color: #1ad6ff"}**
---
::card-grid{grid-template-columns="repeat(2, minmax(0, 1fr));"}
#title
And here is the result
#root
:ellipsis{left=0px width=40rem top=10rem blur=140px}
#default
::card
#title
🐋 __Instameex__
#description
[Open the repository](https://git.djeex.fr/Djeex/instameex)
::
::card
#title
🌍 __Online version__
#description
[Convert online](https://instameex.djeex.fr)
::
::
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Servarr corrector title: Servarr corrector
description: A bash script to detect and fix duplicate media files in Sonarr and Radarr libraries by replacing copies with hardlinks to reclaim disk space.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: LUKS Backup title: LUKS Backup
description: A bash script to automatically dump LUKS headers from all encrypted disks, identify them by serial number, and store them in an encrypted archive.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Socat Proxy title: Socat Proxy
description: Use socat to proxy the Docker socket through Docker Socket Proxy, allowing Beszel to collect container stats without exposing the full Docker socket.
main: main:
fluid: false fluid: false
--- ---
+1
View File
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: HotDisk title: HotDisk
description: A bash script that monitors hard drive temperatures and automatically shuts down the server when disks stay above a safe threshold for too long.
main: main:
fluid: false fluid: false
--- ---
@@ -1,6 +1,7 @@
--- ---
navigation: true navigation: true
title: Backrest Docker Stop title: Backrest Docker Stop
description: A bash script that stops Docker containers before a Backrest backup runs and restarts them after — ensuring safe database backups without complex dumps.
main: main:
fluid: false fluid: false
--- ---
+11 -1
View File
@@ -2,6 +2,7 @@ export default defineNuxtConfig({
// https://github.com/nuxt-themes/docus // https://github.com/nuxt-themes/docus
css: ['~/assets/css/extra.css'], css: ['~/assets/css/extra.css'],
extends: ['@nuxt-themes/docus'], extends: ['@nuxt-themes/docus'],
modules: ['@nuxtjs/sitemap'],
devtools: { enabled: false }, devtools: { enabled: false },
colorMode: { colorMode: {
preference: 'dark', preference: 'dark',
@@ -37,10 +38,19 @@ export default defineNuxtConfig({
{ rel: 'manifest', href: '/img/favicon/site.webmanifest' } { rel: 'manifest', href: '/img/favicon/site.webmanifest' }
], ],
meta: [ meta: [
{ name: 'darkreader-lock' }, { name: 'darkreader-lock', content: 'true' },
] ]
} }
}, },
site: {
url: 'https://docu.djeex.fr'
},
sitemap: {
autoLastmod: true,
urls: ['https://docu.djeex.fr']
},
compatibilityDate: '2024-10-24' compatibilityDate: '2024-10-24'
}) })
+10372 -2794
View File
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -15,8 +15,9 @@
"@nuxt/eslint-config": "^0.6.1", "@nuxt/eslint-config": "^0.6.1",
"@nuxt/icon": "^1.7.5", "@nuxt/icon": "^1.7.5",
"@nuxtjs/plausible": "^1.0.3", "@nuxtjs/plausible": "^1.0.3",
"@nuxtjs/sitemap": "6.1.5",
"@types/node": "^22.9.0", "@types/node": "^22.9.0",
"eslint": "^9.14.0", "eslint": "^9.14.0",
"nuxt": "^3.14.159" "nuxt": "^3.21.11"
} }
} }
+13
View File
@@ -0,0 +1,13 @@
export default defineNuxtPlugin(() => {
const route = useRoute()
const canonicalUrl = withSiteUrl(computed(() => route.path), { canonical: true })
useHead({
link: [
{ rel: 'canonical', href: canonicalUrl }
],
meta: [
{ property: 'og:url', content: canonicalUrl }
]
})
})
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB