From 9abee89478a3b1e5680f93b533ec7fb13f9d98b7 Mon Sep 17 00:00:00 2001 From: Djeex Date: Mon, 31 Aug 2026 23:39:19 +0200 Subject: [PATCH] Remove em dashes from the remaining English content --- content/en/1.about/1.welcome.md | 2 +- content/en/2.general/1.networking/1.nat.md | 2 +- content/en/2.general/1.networking/3.samba.md | 4 ++-- content/en/2.general/2.storage/2.zfs.md | 6 +++--- content/en/2.general/3.hardware/2.network.md | 10 +++++----- content/en/3.serveex/2.core/2.docker.md | 4 ++-- content/en/3.serveex/2.core/3.swag.md | 12 ++++++------ content/en/4.stockeex/1.introduction.md | 2 +- content/en/5.nonsense/1.python/1.nvidia-stock-bot.md | 4 ++-- content/en/5.nonsense/1.python/2.adguard-cidre.md | 4 ++-- content/en/5.nonsense/1.python/3.lumeex.md | 10 +++++----- content/en/5.nonsense/2.bash/1.servarr-duplicates.md | 8 ++++---- content/en/5.nonsense/2.bash/4.hotdisk.md | 2 +- .../en/5.nonsense/2.bash/5.backrest-docker-stop.md | 2 +- content/en/index.md | 2 +- 15 files changed, 37 insertions(+), 37 deletions(-) diff --git a/content/en/1.about/1.welcome.md b/content/en/1.about/1.welcome.md index 878b944..bbf571f 100644 --- a/content/en/1.about/1.welcome.md +++ b/content/en/1.about/1.welcome.md @@ -1,6 +1,6 @@ --- title: Welcome -description: Introduction to Docudjeex — a personal homelab documentation site covering self-hosted services, Debian, and Docker infrastructure. +description: Introduction to Docudjeex, a personal homelab documentation site covering self-hosted services, Debian, and Docker infrastructure. navigation: icon: i-lucide-home hideHeader: true diff --git a/content/en/2.general/1.networking/1.nat.md b/content/en/2.general/1.networking/1.nat.md index 1f21ae5..d3c6e8f 100644 --- a/content/en/2.general/1.networking/1.nat.md +++ b/content/en/2.general/1.networking/1.nat.md @@ -53,7 +53,7 @@ __Warning:__ If you have multiple services to expose like `subdomain1.mydomain.c Every time a device connects to your local network, your router assigns it an IP address using DHCP rules. This IP is randomly selected from a predefined pool. -At every device reboot, the IP may change — which is problematic if you're forwarding ports, as the target IP may no longer be valid. +At every device reboot, the IP may change, which is problematic if you're forwarding ports, as the target IP may no longer be valid. To avoid this, use your router's DHCP server to assign a static IP address. diff --git a/content/en/2.general/1.networking/3.samba.md b/content/en/2.general/1.networking/3.samba.md index e88ebee..cc5db58 100644 --- a/content/en/2.general/1.networking/3.samba.md +++ b/content/en/2.general/1.networking/3.samba.md @@ -88,7 +88,7 @@ sudo chmod 2775 /video ``` ### Create the user -Now add a no-login user — this user cannot log into the server but can access Samba. +Now add a no-login user: this user cannot log into the server but can access Samba. ```bash [Terminal] sudo useradd -M -s /sbin/nologin sambauser @@ -126,7 +126,7 @@ sudo apt install cifs-utils ### Create the Mount Destination -We will create a folder on our local machine where the remote `/video` folder will be mounted — e.g., `/mnt/video`. +We will create a folder on our local machine where the remote `/video` folder will be mounted, e.g. `/mnt/video`. ```bash [Terminal] sudo mkdir /mnt/video diff --git a/content/en/2.general/2.storage/2.zfs.md b/content/en/2.general/2.storage/2.zfs.md index 3000988..60c816f 100644 --- a/content/en/2.general/2.storage/2.zfs.md +++ b/content/en/2.general/2.storage/2.zfs.md @@ -45,14 +45,14 @@ ZFS continuously checks that your stored data hasn't become corrupted. Every blo ### Built-in RAID -ZFS includes its own volume management system (vdevs). You can build a zpool using multiple disks—similar to traditional [RAID](/general/storage/raid) setups—but with more flexibility. For example: +ZFS includes its own volume management system (vdevs). You can build a zpool using multiple disks, similar to traditional [RAID](/general/storage/raid) setups, but with more flexibility. For example: - **Z-mirror** → equivalent to RAID 1 - **RAIDZ1** → equivalent to RAID 5 (tolerates 1 disk failure) - **RAIDZ2** → equivalent to RAID 6 (tolerates 2 disk failures) - **RAIDZ3** → tolerates up to 3 disk failures -ZFS handles all this natively—no external RAID software needed. +ZFS handles all this natively: no external RAID software needed. ::note @@ -61,7 +61,7 @@ Check out the [article on RAID](/general/storage/raid) to find the right solutio ### Snapshots and Clones -ZFS allows you to create snapshots—instantaneous images of a dataset's state. Snapshots take up minimal space and can be scheduled frequently. You can also create clones: writable copies of snapshots. +ZFS allows you to create snapshots: instantaneous images of a dataset's state. Snapshots take up minimal space and can be scheduled frequently. You can also create clones: writable copies of snapshots. ### Compression and Deduplication diff --git a/content/en/2.general/3.hardware/2.network.md b/content/en/2.general/3.hardware/2.network.md index 07567d3..ac1ff7a 100644 --- a/content/en/2.general/3.hardware/2.network.md +++ b/content/en/2.general/3.hardware/2.network.md @@ -11,9 +11,9 @@ description: Overview of networking hardware for homelabs. Switches, NICs, cable A computer network cannot exist without the hardware required to build it. Hardware determines the size of the network, communication speeds, and its overall performance. In this article, we will focus on the simplest types of networks, typically found in home environments. ## The Router -The __router__ is the central hub of your network. It directs __packets__—the blocks of data that travel across your network—from the sender to the appropriate recipient. It manages the routing of data both within your local network and to/from external networks. In short, it enables devices to communicate with each other and with the internet. +The __router__ is the central hub of your network. It directs __packets__ (the blocks of data that travel across your network) from the sender to the appropriate recipient. It manages the routing of data both within your local network and to/from external networks. In short, it enables devices to communicate with each other and with the internet. -Everyone has a router at home—it's the __internet box__ provided by your ISP (Internet Service Provider). +Everyone has a router at home: it's the __internet box__ provided by your ISP (Internet Service Provider). In general, a router consists of: @@ -23,9 +23,9 @@ In general, a router consists of: A router may also include _firewall_ capabilities, allowing you to restrict traffic from specific devices, as well as _[NAT (Network Address Translation)](/general/networking/nat)_ for port forwarding. It generally includes a _[DHCP (Dynamic Host Configuration Protocol)](/general/networking/nat#dhcp)_ server to automatically assign _IP addresses_ to devices connected to the network. -The router directly affects communication speeds between devices. The WAN port limits the maximum internet speed you can receive from your ISP. For example, if your subscription offers 5 Gb/s, you’ll need a WAN port that supports at least 5 Gb/s. Likewise, internal device-to-device communication is limited by the speed of the switch. If your devices communicate at 5 Gb/s, the router’s switch must have 5 Gb/s ports. If you're using WiFi 7 equipment and want to enjoy its full speed, your router must support it as well. If you’re using a separate WiFi access point, make sure its network port matches or exceeds the speed of the WiFi it broadcasts—and that the router supports it too. +The router directly affects communication speeds between devices. The WAN port limits the maximum internet speed you can receive from your ISP. For example, if your subscription offers 5 Gb/s, you’ll need a WAN port that supports at least 5 Gb/s. Likewise, internal device-to-device communication is limited by the speed of the switch. If your devices communicate at 5 Gb/s, the router’s switch must have 5 Gb/s ports. If you're using WiFi 7 equipment and want to enjoy its full speed, your router must support it as well. If you’re using a separate WiFi access point, make sure its network port matches or exceeds the speed of the WiFi it broadcasts, and that the router supports it too. -Internet speed, number of devices, WiFi speed, and internal network speed—these are the four key factors to consider when choosing an internet box or buying your own router. +Internet speed, number of devices, WiFi speed, and internal network speed: these are the four key factors to consider when choosing an internet box or buying your own router. ::tip{icon=""} ✨ __Tip:__ @@ -117,5 +117,5 @@ These let you connect different types of cables to your SFP/SFP+ ports. Variants ::warning -__Warning:__ RJ45 transceivers consume a lot of energy due to copper signal loss and can generate significant heat. Low-power models (under 2W) exist and are generally rated for longer cables (e.g., 80m instead of 30m). Surprisingly, these are preferred over short-distance models because they generate less heat and consume less energy—making them more compatible with sensitive devices. Using the wrong type can cause network degradation or even outages. +__Warning:__ RJ45 transceivers consume a lot of energy due to copper signal loss and can generate significant heat. Low-power models (under 2W) exist and are generally rated for longer cables (e.g., 80m instead of 30m). Surprisingly, these are preferred over short-distance models because they generate less heat and consume less energy, making them more compatible with sensitive devices. Using the wrong type can cause network degradation or even outages. :: diff --git a/content/en/3.serveex/2.core/2.docker.md b/content/en/3.serveex/2.core/2.docker.md index 3083387..8957e29 100644 --- a/content/en/3.serveex/2.core/2.docker.md +++ b/content/en/3.serveex/2.core/2.docker.md @@ -118,7 +118,7 @@ Then go to `http://yourserverip:3555` in your browser to access the login page. More info on [Dockge and how to use it](https://github.com/louislam/dockge) -And there you go — Docker and a tool to easily manage your containers are ready! +And there you go! Docker and a tool to easily manage your containers are ready! ## [Watchtower](https://watchtower.nickfedor.com/), to auto-update containers Watchtower is a container that checks for updates and pulls new images automatically, just by adding a label in your containers’ `compose.yml` files. @@ -176,4 +176,4 @@ labels: - com.centurylinklabs.watchtower.enable=true ``` -Then restart the modified stacks. And that's it — you now have a solid base to start deploying the services you want! +Then restart the modified stacks. And that's it! You now have a solid base to start deploying the services you want! diff --git a/content/en/3.serveex/2.core/3.swag.md b/content/en/3.serveex/2.core/3.swag.md index 77dd58b..be5d81a 100644 --- a/content/en/3.serveex/2.core/3.swag.md +++ b/content/en/3.serveex/2.core/3.swag.md @@ -21,7 +21,7 @@ description: Set up SWAG as a reverse proxy with automatic SSL, expose your serv ::warning -SWAG is only useful for exposing your services to the internet—i.e., accessing them via a public URL like `https://service.mydomain.com`. If you don’t want to expose your services and prefer to always use a VPN to connect remotely, you can go [here instead](/serveex/security/wireguard). +SWAG is only useful for exposing your services to the internet, i.e. accessing them via a public URL like `https://service.mydomain.com`. If you don’t want to expose your services and prefer to always use a VPN to connect remotely, you can go [here instead](/serveex/security/wireguard). :: Below is an example exposing Dockge. We will install SWAG along with the dbip mod for geolocation-based blocking, and the dashboard mod for managing swag, fail2ban, and geolocation. @@ -127,7 +127,7 @@ Fill out the variables as follows: | `DOMAIN` | Your domain (covers all subdomains too) | `mydomain.com` | | `DOMAINS` | Any additional domains | `myseconddomain.com` | | `EMAIL` | Your email for generating the certificate | `your@email.com` | -| `PLUGIN` | Plugin for certificate generation—depends on your [DNS provider](https://docs.linuxserver.io/general/swag/) | `ovh`
`cloudflare` | +| `PLUGIN` | Plugin for certificate generation, depends on your [DNS provider](https://docs.linuxserver.io/general/swag/) | `ovh`
`cloudflare` | Assuming your DNS zone is managed by OVH, deploy the stack once. The logs will show a failure in creating the SSL certificate due to a missing `ovh.ini` configuration. Stop the stack. @@ -189,7 +189,7 @@ On the left, you'll see a list of currently "proxied" services (none yet). On th ## DBIP DBIP allows you to block connections based on countries. It relies on the configuration file named `dbip.conf` located in `/docker/swag/config/nginx`. [More info here](https://virtualize.link/secure/). -In this example, we’ll configure it to block a list of countries known to be the source of most malicious traffic. We’ll also configure a variable to allow internal server traffic, your box’s local network, and a potential VPN in the 10.x.x.x range to access your services — but not the open internet. +In this example, we’ll configure it to block a list of countries known to be the source of most malicious traffic. We’ll also configure a variable to allow internal server traffic, your box’s local network, and a potential VPN in the 10.x.x.x range to access your services, but not the open internet. This configuration can be enabled or disabled per service (see the Dockge example below). @@ -277,14 +277,14 @@ server { ## Exposing Dockge ::note 📋 __Prerequisite:__

-We assume that you have created a subdomain like `dockge.mydomain.com` in your [DNS zone](/general/networking/dns), with a `CNAME` pointing to `mydomain.com` and — unless you're using [Cloudflare Zero Trust](/serveex/security/cloudflare) — that you've forwarded port `443` from your router to the server's `443` in [your NAT rules](/general/networking/nat). +We assume that you have created a subdomain like `dockge.mydomain.com` in your [DNS zone](/general/networking/dns), with a `CNAME` pointing to `mydomain.com`. Unless you're using [Cloudflare Zero Trust](/serveex/security/cloudflare), we also assume you've forwarded port `443` from your router to the server's `443` in [your NAT rules](/general/networking/nat). :: Now it's time to expose Dockge on the internet so you can access and manage your containers remotely. We assume you've set up the subdomain `dockge.mydomain.com` with a `CNAME` pointing to `mydomain.com`. ::warning -Dockge does not support multi-factor authentication. Exposing it online could compromise all connected machines. Only do this if you're using an MFA solution like [Authentik](/serveex/security/authentik/). Otherwise, don’t expose it with SWAG — use a VPN like [Wireguard](/serveex/security/wireguard) instead. +Dockge does not support multi-factor authentication. Exposing it online could compromise all connected machines. Only do this if you're using an MFA solution like [Authentik](/serveex/advanced/authentik/). Otherwise, don’t expose it with SWAG. Use a VPN like [Wireguard](/serveex/security/wireguard) instead. :: Open the `dockge.subdomain.conf` file: @@ -367,7 +367,7 @@ We assume the Dockge network is named `dockge_default`. You can verify the setup Redeploy the SWAG stack. -Wait a moment, then visit `https://dockge.mydomain.com` in your browser — you should be redirected to Dockge. You can also check the service status from the dashboard (`http://yourserverip:81` on your local network). +Wait a moment, then visit `https://dockge.mydomain.com` in your browser. You should be redirected to Dockge. You can also check the service status from the dashboard (`http://yourserverip:81` on your local network). ## Exposing Another Service with SWAG SWAG includes templates for most known services, named `servicename.subdomain.conf.sample`. Just create the subdomain in your registrar's DNS zone (like OVH), point it to your main domain via a CNAME, then copy and rename the sample file: diff --git a/content/en/4.stockeex/1.introduction.md b/content/en/4.stockeex/1.introduction.md index 31ca91e..af3aabf 100644 --- a/content/en/4.stockeex/1.introduction.md +++ b/content/en/4.stockeex/1.introduction.md @@ -1,6 +1,6 @@ --- title: Introduction -description: Introduction to Stockeex — a personal project for stock and inventory management. Documentation coming soon. +description: Introduction to Stockeex, a personal project for stock and inventory management. Documentation coming soon. navigation: icon: i-lucide-bookmark --- diff --git a/content/en/5.nonsense/1.python/1.nvidia-stock-bot.md b/content/en/5.nonsense/1.python/1.nvidia-stock-bot.md index e8b4fd9..c5bb3c4 100644 --- a/content/en/5.nonsense/1.python/1.nvidia-stock-bot.md +++ b/content/en/5.nonsense/1.python/1.nvidia-stock-bot.md @@ -1,6 +1,6 @@ --- 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. +description: A Python bot that monitors GPU stock availability in real time and sends Discord alerts, built during the RTX 5000 series launch shortage. --- @@ -11,7 +11,7 @@ For the past four years, the electronics hardware shortage has been relentless. Four years later and with 5,000 members on the server, the RTX 5000 series is being released. Yet, no working stock bot seems to exist. Not to mention a certain “influencer” who charges users for access to a bot that doesn’t even work. He manually copies alerts from other servers like ours, which have already solved the issue. -Anyway, eager to get an RTX 5090 for my AI-dedicated machine, I decided it was time to dive into Python—with a little help from ChatGPT. Along with another member, KevOut, who helped guide me through the APIs and initial architecture, I ended up building a clean and functional bot that sends different kinds of Discord alerts—all deployable in a simple Docker container. +Anyway, eager to get an RTX 5090 for my AI-dedicated machine, I decided it was time to dive into Python, with a little help from ChatGPT. Along with another member, KevOut, who helped guide me through the APIs and initial architecture, I ended up building a clean and functional bot that sends different kinds of Discord alerts, all deployable in a simple Docker container. After many setbacks, I went from this: diff --git a/content/en/5.nonsense/1.python/2.adguard-cidre.md b/content/en/5.nonsense/1.python/2.adguard-cidre.md index 11dcc39..67baf9b 100644 --- a/content/en/5.nonsense/1.python/2.adguard-cidre.md +++ b/content/en/5.nonsense/1.python/2.adguard-cidre.md @@ -7,11 +7,11 @@ description: A Python script to sync AdGuard Home CIDR allowlists automatically, :ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60} # 🤖 Adguard CIDRE Sync -Adguard Home is a fantastic solution for DNS-level ad blocking and rewriting requests—perfect for removing ISP DNS trackers or intrusive ads. +Adguard Home is a fantastic solution for DNS-level ad blocking and rewriting requests, perfect for removing ISP DNS trackers or intrusive ads. It works great locally, but if you want all your devices (even on the go) to benefit, you’ll need to expose Adguard to the internet. Unfortunately, that means anyone can use it, potentially overloading your €1/month remote VPS. -Adguard allows whitelisting or blacklisting clients. The problem? To whitelist a client, you need their IP—but for mobile phones, that IP changes often. Instead of trying to whitelist ever-changing IPs, the better approach is to block broader IP ranges by region. +Adguard allows whitelisting or blacklisting clients. The problem? To whitelist a client, you need their IP, but for mobile phones, that IP changes often. Instead of trying to whitelist ever-changing IPs, the better approach is to block broader IP ranges by region. CIDRE is a tool that syncs geo-targeted IP ranges with firewalls. Instead of running CIDRE with a full firewall stack on the remote server, I figured I could just import those regularly updated IP ranges into Adguard’s blocklist. diff --git a/content/en/5.nonsense/1.python/3.lumeex.md b/content/en/5.nonsense/1.python/3.lumeex.md index 569a3aa..f3d8b8c 100644 --- a/content/en/5.nonsense/1.python/3.lumeex.md +++ b/content/en/5.nonsense/1.python/3.lumeex.md @@ -1,6 +1,6 @@ --- title: Lumeex -description: Lumeex is a static photo gallery site generator built with Python — minimalist, lightweight, and fully customizable without a CMS. +description: Lumeex is a static photo gallery site generator built with Python, minimalist, lightweight, and fully customizable without a CMS. --- @@ -17,13 +17,13 @@ description: Lumeex is a static photo gallery site generator built with Python --- -Amateur photographer that I am, I spent several weeks looking for a framework with a photo gallery that could outshine Instagram. I wanted something that showcased the photos rather than the author, and that made every visit unique by loading the images in random order—while still allowing filtering and sorting by tag or combinations of tags. +Amateur photographer that I am, I spent several weeks looking for a framework with a photo gallery that could outshine Instagram. I wanted something that showcased the photos rather than the author, and that made every visit unique by loading the images in random order, while still allowing filtering and sorting by tag or combinations of tags. -In the end, I found nothing that did exactly what I wanted. And when something came close, it was always through heavy, bloated CMS platforms. So I decided to make a static site by hand, the old-school way, with Notepad++. Being fairly comfortable with HTML/CSS and a bit of JavaScript, I quickly came up with something nice during my vacation, between beach sessions. After all, a good craftsman should have good tools—and there’s no better tool than one you make yourself. +In the end, I found nothing that did exactly what I wanted. And when something came close, it was always through heavy, bloated CMS platforms. So I decided to make a static site by hand, the old-school way, with Notepad++. Being fairly comfortable with HTML/CSS and a bit of JavaScript, I quickly came up with something nice during my vacation, between beach sessions. After all, a good craftsman should have good tools, and there’s no better tool than one you make yourself. -Then I thought it might be a good idea to automate certain tasks—like generating favicon formats, resizing and converting images, creating the gallery automatically instead of entering everything by hand, and generating `robots.txt` and `sitemap` files… so I turned back to Python. +Then I thought it might be a good idea to automate certain tasks, like generating favicon formats, resizing and converting images, creating the gallery automatically instead of entering everything by hand, and generating `robots.txt` and `sitemap` files… so I turned back to Python. -Eventually, after getting good results, I figured I might as well go all the way: build a complete framework for generating a static site photo gallery, where all you need to do is fill in your site’s information in a config file and tweak the visuals a bit—without touching the code. +Eventually, after getting good results, I figured I might as well go all the way: build a complete framework for generating a static site photo gallery, where all you need to do is fill in your site’s information in a config file and tweak the visuals a bit, without touching the code. That’s how **Lum[eex]{style="color: #1ad6ff"}** was born. diff --git a/content/en/5.nonsense/2.bash/1.servarr-duplicates.md b/content/en/5.nonsense/2.bash/1.servarr-duplicates.md index 1791523..2a46637 100644 --- a/content/en/5.nonsense/2.bash/1.servarr-duplicates.md +++ b/content/en/5.nonsense/2.bash/1.servarr-duplicates.md @@ -9,7 +9,7 @@ description: A bash script to detect and fix duplicate media files in Sonarr and Six months after downloading terabytes of media, I realized that Sonarr and Radarr were copying them into my Plex library instead of creating hardlinks. This happens due to a counterintuitive mechanism: if you mount multiple folders in Sonarr/Radarr, it sees them as different filesystems and thus cannot create hardlinks. That’s why you should mount only one parent folder containing all child folders (like `downloads`, `movies`, `tvseries` inside a `media` parent folder). -So I restructured my directories, manually updated every path in Qbittorrent, Plex, and others. The last challenge was finding a way to detect existing duplicates, delete them, and automatically create hardlinks instead—to save space. +So I restructured my directories, manually updated every path in Qbittorrent, Plex, and others. The last challenge was finding a way to detect existing duplicates, delete them, and automatically create hardlinks instead, to save space. My directory structure: @@ -37,7 +37,7 @@ Yes, I asked ChatGPT and Qwen3 (which I host on a dedicated AI machine). Natural In the end, I only needed to find `.mkv` files, and duplicates have the exact same name as the originals, which simplifies things a lot. A simple Bash script would do the job. -Spare you the endless Q&A with ChatGPT—I was disappointed. Qwen3 was much cleaner. ChatGPT kept pushing awk-based solutions, which fail on paths with spaces. With Qwen’s help and dropping awk, the results improved significantly. +Spare you the endless Q&A with ChatGPT, I was disappointed. Qwen3 was much cleaner. ChatGPT kept pushing awk-based solutions, which fail on paths with spaces. With Qwen’s help and dropping awk, the results improved significantly. To test, I first asked for a script that only lists and compares: @@ -83,9 +83,9 @@ With `awk`, it would’ve stopped at `/media/seedbox/sonarr/Serie`. I’m far fr Once I verified the output, I asked for a complete script: compare, delete duplicates, create hardlinks. -Again, ChatGPT disappointed. Despite my requests, it created hardlinks *before* deleting the duplicates—effectively linking and then deleting the link (though the original is kept). Not helpful. +Again, ChatGPT disappointed. Despite my requests, it created hardlinks *before* deleting the duplicates, effectively linking and then deleting the link (though the original is kept). Not helpful. -Quick stopover to Qwen3, RTX 5090 in overdrive, and bam—much better result. Yes, it kept ChatGPT-style emojis, but here it is: +Quick stopover to Qwen3, RTX 5090 in overdrive, and bam, much better result. Yes, it kept ChatGPT-style emojis, but here it is: ```bash [Terminal] #!/bin/bash diff --git a/content/en/5.nonsense/2.bash/4.hotdisk.md b/content/en/5.nonsense/2.bash/4.hotdisk.md index 813be44..3dafb61 100644 --- a/content/en/5.nonsense/2.bash/4.hotdisk.md +++ b/content/en/5.nonsense/2.bash/4.hotdisk.md @@ -33,7 +33,7 @@ The installer also lets you configure various parameters: | `DISCORD_WEBHOOK` | Discord webhook URL for notifications | _Required_ | It also runs another script that configures **logrotate** with the parameters defined above. -Finally, the installer can even be executed directly via a simple `curl` command followed by one last setup script — perfect for the laziest of us. +Finally, the installer can even be executed directly via a simple `curl` command followed by one last setup script, perfect for the laziest of us. I also had to handle several tricky cases: running as root without sudo, using sudo directly, running as a non-sudo user, missing dependencies, permission issues, file creation errors, disk data reading errors, and more. diff --git a/content/en/5.nonsense/2.bash/5.backrest-docker-stop.md b/content/en/5.nonsense/2.bash/5.backrest-docker-stop.md index f15cff5..6a54d8a 100644 --- a/content/en/5.nonsense/2.bash/5.backrest-docker-stop.md +++ b/content/en/5.nonsense/2.bash/5.backrest-docker-stop.md @@ -1,6 +1,6 @@ --- 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. +description: A bash script that stops Docker containers before a Backrest backup runs and restarts them after, ensuring safe database backups without complex dumps. --- diff --git a/content/en/index.md b/content/en/index.md index 279c2e6..db6fdab 100644 --- a/content/en/index.md +++ b/content/en/index.md @@ -1,6 +1,6 @@ --- title: Home -description: Homelab documentation by Djeex — self-hosting guides for Debian, Docker, networking, storage, and more. +description: Homelab documentation by Djeex, self-hosting guides for Debian, Docker, networking, storage, and more. --- :ellipsis{right=0px width=75% blur=150px zIndex=60}