Remove decorative dashes and fix two broken admonitions

This commit is contained in:
Djeex
2026-08-30 19:53:57 +02:00
parent bb1a482a8d
commit 022a9d96bd
77 changed files with 10 additions and 239 deletions
+3 -10
View File
@@ -6,18 +6,11 @@ description: Learn how NAT, port forwarding, and DHCP work on a home router. Con
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
::note{icon=""}
🎯 __Goals:__
- Understand how port forwarding works
- Learn how to configure router NAT
- Learn how to issue DHCP leases (fixed IPs)
::
![picture](/img/global/nat.svg)
## What is a "port"?
---
Ports are different channels through which your router sends and receives data. This allows multiple services to run simultaneously.
When it receives data through a port, your router forwards that data to the machine that:
@@ -31,7 +24,7 @@ Some programs and applications are designed to use specific ports. For example,
So, your router acts as a data dispatcher between the internet and your local machines.
## Port Forwarding
---
Forwarding a `port` means setting a rule that specifies which `source` can send data to which `port` on your router, which will then forward it to a specific `port` on a specific `machine`. The `sources` and `destination machine` are identified by their IP addresses.
| Variable | Description | Example |
@@ -57,7 +50,7 @@ __Warning:__ If you have multiple services to expose like `subdomain1.mydomain.c
::
## DHCP
---
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.
+3 -11
View File
@@ -5,17 +5,9 @@ description: Understand how DNS works, how to read and edit a DNS zone, and how
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
# Domain Names and DNS Zones
::note
🎯 __Objectives:__
- Understand how a DNS server works
- Learn how to edit a DNS zone
::
## Introduction
---
When you browse a website or use an app, requests are made to one or more domains to fetch content for the page. Your device doesn't know the IP addresses of these servers, so it contacts a _name server_ (Domain Name Server), which responds with the most up-to-date IP address for the domain being requested.
The DNS zone is like a registry with signposts that direct your requests to the correct destination.
@@ -23,7 +15,7 @@ The DNS zone is like a registry with signposts that direct your requests to the
![Picture](/img/global/dns.svg)
## The DNS Zone
---
When you purchase a domain from a registrar (Cloudflare, OVH, etc.), the registrar assigns you a DNS zone that you can customize.
You can enter _records_ into this DNS zone to direct requests properly. You can find [more information here](https://help.ovhcloud.com/csm/fr-dns-servers-general-information?id=kb_article_view&sysparm_article=KB0051661).
@@ -51,7 +43,7 @@ So, if you want to point `mydomain.com` to your server, you can do it by adding
::warning
- __Warning:__ If your server is hosted at home:
__Warning:__ If your server is hosted at home:
- Your public IP is the one assigned to your home router. Make sure it's static, or configure [DDNS](https://aws.amazon.com/fr/what-is/dynamic-dns/).
- Make sure you've [set up port 443 forwarding to your server's listening port](/general/networking/nat).
::
@@ -5,23 +5,14 @@ description: Set up Samba on Debian to share folders over your local network and
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
# Samba
Samba is a protocol that allows access to a folder located on a network drive. It can be configured on macOS, Windows, or Linux.
There are many tutorials for setting up Samba on Windows or on NAS systems like Synology, but here we focus on Debian.
::note
🎯 __Objectives:__
- Create a network folder on a remote machine
- Access the network folder from our server
::
![samba](/img/global/smb.svg)
## Sharing a Network Folder
---
::note
In this example, we will share the `/video` folder from a remote machine called `remote-machine`. We will access this folder from a machine called `local-machine`. The user connecting to the network drive will be `sambauser`.
-5
View File
@@ -29,7 +29,6 @@ RAID is not a backup system but a service continuity system! It only allows hot-
::
### No RAID
---
<div style="display: flex; align-items: center;">
<img src="/img/global/no-raid.svg" alt="Image" style="max-width: 30%; max-height:230px; margin-right: 20px;">
@@ -43,7 +42,6 @@ RAID is not a backup system but a service continuity system! It only allows hot-
Use your disks without RAID when you're not afraid of data loss and can tolerate service interruptions between failure and backup restoration.
### RAID 0
---
<div style="display: flex; align-items: center;">
<img src="/img/global/raid0.svg" alt="Image" style="max-width: 30%; max-height:230px; margin-right: 20px;">
@@ -60,7 +58,6 @@ Use your disks without RAID when you're not afraid of data loss and can tolerate
Use RAID 0 when you prioritize performance and are not concerned about data loss. Ideal for temporary, high-speed storage (video editing, AI workloads, etc). Not suitable for long-term storage, as one failure means total data loss.
### RAID 1
---
<div style="display: flex; align-items: center;">
<img src="/img/global/raid1.svg" alt="Image" style="max-width: 30%; max-height:230px; margin-right: 20px;">
@@ -81,7 +78,6 @@ Use RAID 1 for strong redundancy. Each disk contains all data, so performance re
::
### RAID 5
---
<p align="center">
<img src="/img/global/raid5.svg" alt="Image" style="max-width: 40%; margin-right: 20px;">
</p>
@@ -96,7 +92,6 @@ Use RAID 1 for strong redundancy. Each disk contains all data, so performance re
Use RAID 5 when you want reliable storage with 3 to 5 disks and minimal space loss. It tolerates one disk failure but may have degraded performance during recovery, which can take days.
### RAID 6
---
<p align="center">
<img src="/img/global/raid6.svg" alt="Image" style="max-width: 50%; margin-right: 20px;">
</p>
-2
View File
@@ -30,7 +30,6 @@ Heres what were most interested in:
- Its robust error notifications and monitoring.
## Structure
---
![](/img/global/zfs.svg)
ZFS has a unique structure:
@@ -46,7 +45,6 @@ There are several dataset types:
- **snapshot**: a frozen-in-time version of another dataset. Snapshots can be created manually or through backup tools. They can be mounted to browse data as it was at the snapshot time.
## Why ZFS over others?
---
### Data Integrity
ZFS continuously checks that your stored data hasn't become corrupted. Every block of data is associated with a checksum, allowing ZFS to detect even the smallest alteration. If corruption is found and a healthy copy exists elsewhere, ZFS can repair the data automatically.
@@ -18,7 +18,6 @@ Understand the fundamentals of server hardware
A __server__ is essentially a computer dedicated to specific tasks, designed to remain accessible at all times. Structurally, it's not much different from a regular computer. Depending on its intended use, some components may vary. This article serves as a reference to help you understand the essential components of a server and how their roles adapt based on your needs.
## Motherboard
---
The __motherboard__ is the foundation of your machine. It's the component that connects all others together. It enables communication between components and interaction with peripherals (keyboard, mouse, etc.). Choose it based on your I/O (Input/Output) needs like USB ports, network ports, speed, etc., and ensure compatibility with the components you plan to install.
Key components connected to the motherboard:
@@ -38,7 +37,6 @@ Common consumer motherboard formats:
Larger boards generally offer more ports and features. Pre-built systems might use proprietary formats.
## CPU
---
<div style="display: flex; align-items: center;">
<img src="/img/global/cpu.svg" alt="Image" style="max-width: 25%; max-height:230px; margin-right: 20px;">
<p>The <strong>CPU</strong> (Central Processing Unit) is the computer's calculator. It processes most software tasks. Modern CPUs have multiple cores, often with virtual threads, to better handle workloads. They need to be cooled using either an active cooler (with a fan) or a passive one (fanless), depending on power consumption (watts). Choose your CPU based on how you plan to use the server.</p>
@@ -58,7 +56,6 @@ Consider:
For low-power home servers or NAS (non-intensive computing), consider Intel N100/150 (4 cores) or N305/N355 (8 cores)—efficient and low power (ideal for 24/7 uptime).
## RAM
---
<p align="center">
<img src="/img/global/ram.svg" alt="Image" style="max-width: 65%;">
@@ -69,14 +66,12 @@ __RAM__ (Random Access Memory) is fast, temporary memory used by the CPU (and iG
Comes as sticks installed on the motherboard. Varies by format and generation (currently DDR5).
## GPU
---
The __GPU__ (Graphics Processing Unit) handles graphical, video, and sometimes AI-related processing. Its main theoretical use is to display the image on your screen. In servers, it's useful for media centers (e.g. [Plex](/serveex/media/plex)) and for accelerating AI tasks like facial recognition or photo indexing (e.g. [Immich](/serveex/cloud/immich)).
Depending on the required performance, one can choose between a dedicated GPU with its own VRAM (a graphics card connected to a PCIe slot on the motherboard), or an iGPU—an integrated GPU built into the CPU (such as the N100/N150 or N305/N355), which uses the systems shared RAM.
### HDD(s)
---
<p align="center">
<img src="/img/global/hdd.svg" alt="Image" style="max-width: 50%; margin-right: 20px;">
@@ -95,7 +90,6 @@ Generally, HDDs are best suited for storing data that doesnt require frequent
Comes in 3.5" and 2.5" formats; servers usually favor the more reliable 3.5".
### SSD(s)
---
<p align="center">
<img src="/img/global/nvme.svg" alt="Image" style="max-width: 50%; margin-right: 20px;">
@@ -110,7 +104,6 @@ SSDs come in various formats, but today the preferred choice is the M.2 NVMe ver
However, SSDs are significantly more expensive than hard drives for the same storage capacity. Typically, the operating system (OS) is installed on the SSD to ensure fast performance. In a server environment, it's also ideal to store [Docker containers](/serveex/core/docker) and databases on the SSD. More broadly, any data that needs to be accessed frequently and quickly—such as websites, applications, or processing workloads—should be stored on an SSD.
### Network Card
---
A __network card__ allows your machine to communicate with your network (including the internet). It consists of a controller chip and one or more network ports. These ports—often Ethernet ports—can come in different physical formats and support various data transfer standards:
@@ -131,7 +124,6 @@ The network card is usually built directly into the motherboard, but you can als
In general, for a server setup, it's recommended to have at least two Ethernet ports to ensure redundancy in case one connection fails.
### Input/Output Ports
---
__I/O__ ports allow communication with external devices (displays, keyboard, mouse, network...). Motherboards typically offer:
@@ -143,7 +135,6 @@ __I/O__ ports allow communication with external devices (displays, keyboard, mou
Choose a motherboard and expansions based on your I/O needs.
### Power Supply
---
The __power supply unit__ (PSU) is the component that provides electrical power to your machines components. It connects to the wall via a power cord and has several output cables that plug into the motherboard and various peripherals, such as hard drives or dedicated graphics cards.
@@ -158,7 +149,6 @@ Another important factor is the form factor. There are several standard sizes, f
To choose the right PSU, a common rule of thumb is to estimate your systems power needs based on usage, and then double that value. This is because most power supplies operate at optimal efficiency around 50% of their maximum load.
### Case
---
<div style="display: flex; align-items: center;">
<img src="/img/global/case.svg" alt="Image" style="max-width: 25%; max-height:230px; margin-right: 20px;">
@@ -18,7 +18,6 @@ Understand the basics of networking hardware
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.
Everyone has a router at home—it's the __internet box__ provided by your ISP (Internet Service Provider).
@@ -41,7 +40,6 @@ You can easily use a third-party router to manage your network if your ISPs i
::
## The Switch
---
The __switch__, or network switch, is a device that allows multiple devices to connect to the network. It acts as a literal hub, connecting directly to the router or to another switch upstream. It helps avoid overloading the switch ports on your router or relocating devices to another room without running a cable from each one back to the router. Another common use case is to segment multiple networks that are managed by the same router.
@@ -56,7 +54,6 @@ __Warning:__ Make sure to use a switch with ports that match the speeds supporte
::
## Cables
---
Cables are essential components of your network. Depending on their type and category, they can limit the bandwidth between devices, so they must be chosen to match your network's specifications. They also need to be compatible with your devices' ports.
-1
View File
@@ -186,7 +186,6 @@ Install and deploy Vaultwarden
::
## Coming Soon
---
- Homepage, to have all your services at a glance and access them easily
- Mkdocs for your documentation
@@ -13,7 +13,6 @@ description: Step-by-step guide to install Debian 13 on a home server and set up
![picture](/img/serveex/server.svg)
## Installation
---
1. [BIOS Setup](https://www.debian.org/releases/stable/i386/ch03s06.en.html#bios-setup)
2. [Download Debian Image](https://www.debian.org/download.en.html)
@@ -41,7 +40,6 @@ description: Step-by-step guide to install Debian 13 on a home server and set up
9. Optional - [Wake Server Remotely (WoW - WoL)](https://dev.to/zakery1369/enable-wake-on-lan-on-debian-4ljd)
## Must-Have CLI Apps
---
Some essential apps youll likely need at some point, so might as well install them early:
```sh
sudo apt update
@@ -55,7 +53,6 @@ Additionally:
- [lazydocker](https://github.com/jesseduffield/lazydocker) - CLI Docker container manager
## Useful Features
---
### Firewall
- [ufw](https://www.zenarmor.com/docs/network-security-tutorials/how-to-set-up-a-firewall-with-ufw-on-debian)
-3
View File
@@ -20,7 +20,6 @@ Docker, to install deployable services in seconds and manage them with just a fe
![picture](/img/serveex/docker.svg)
## Install Docker
---
Add the Docker repositories and GPG key:
```sh
@@ -55,7 +54,6 @@ From here on, we assume the stacks are installed in the `/docker` folder, create
::
## Install [Dockge](https://github.com/louislam/dockge) to manage and deploy containers
---
[Dockge](https://github.com/louislam/dockge) is a web tool to create, configure, launch, and manage Docker containers. It's a simple, intuitive interface thats lighter and easier for beginners than using the CLI or Portainer.
![picture](/img/serveex/dockge.png)
@@ -123,7 +121,6 @@ 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!
## [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.
### Configuration
-5
View File
@@ -31,7 +31,6 @@ Below is an example exposing Dockge. We will install SWAG along with the dbip mo
![Picture](/img/serveex/reverse-proxy.svg)
## Installation
---
::note
@@ -182,14 +181,12 @@ include /config/nginx/dbip.conf;
Restart the stack in Dockge. This time, the SSL certificate should be successfully generated! Check the logs to confirm the server is ready.
## Dashboard
---
Access the dashboard locally by going to `http://yourserverip:81`
On the left, you'll see a list of currently "proxied" services (none yet). On the right, the list of banned IPs. Below, various indicators. For more details, [click here](https://www.linuxserver.io/blog/introducing-swag-dashboard).
![picture](https://www.linuxserver.io/user/pages/03.blog/introducing-swag-dashboard/example.png)
## 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, well configure it to block a list of countries known to be the source of most malicious traffic. Well also configure a variable to allow internal server traffic, your boxs local network, and a potential VPN in the 10.x.x.x range to access your services — but not the open internet.
@@ -267,7 +264,6 @@ server {
```
## Exposing Dockge
---
::note
📋 __Prerequisite:__ <br/><br/>
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).
@@ -363,7 +359,6 @@ 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).
## 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:
```sh
@@ -16,7 +16,6 @@ description: Install and configure WireGuard VPN to securely access your homelab
::
## Introduction
---
Using a VPN allows remote access to a servers local resources without exposing them to the internet. Its a clean and secure way to access services like SSH without exposing the port publicly. With a VPN, you can securely connect to your network from anywhere and make devices on different networks communicate.
Here we will use [Wireguard](https://www.wireguard.com/), a secure and high-performance VPN server, using containers:
@@ -49,7 +48,6 @@ You *can* allow VPN clients to share access to their local networks, but we won
So only VPN-connected devices can communicate with each other on the VPN, not with other local devices outside the VPN.
## Server Setup
---
::note
📋 **Pre-flight Checklist:**
@@ -168,7 +166,6 @@ To configure clients:
5. Save, download, and rename the file to `wg0.conf` (or `wg1.conf`, etc.)
## Client Server Setup
---
::note
We assume the client server runs Linux with Docker installed.
@@ -244,7 +241,6 @@ Repeat this setup for each client.
::
## Other Devices
---
- **Mobile:** Install WireGuard and scan the QR code via the web UI (`http://server-ip:51821`)
- **Desktop:** Install the WireGuard client and import the downloaded config file.
@@ -38,7 +38,6 @@ There are two main modes you should know:
Both modes can be configured on a per-application basis.
## Installation
---
Folder structure:
```sh
root
@@ -202,7 +201,6 @@ __Warning:__ Its recommended to create a new admin account and **disable** th
::
## Exposing Authentik
---
To use Authentik outside your local network, you must expose it.
::note
@@ -299,7 +297,6 @@ Restart the stack and wait for SWAG to be fully operational.
Done! You can now access Authentik via `https://auth.mydomain.com`
## Enable Multifactor Authentication
---
The main value of Authentik is using multifactor authentication for all protected apps.
- Go to `https://auth.mydomain.com`
@@ -313,11 +310,9 @@ The main value of Authentik is using multifactor authentication for all protecte
Youll now be prompted to enter a one-time code at every login.
## Protecting a Native App
---
Authentik is natively compatible with several applications. You can find the list and [support here](https://docs.goauthentik.io/integrations/services/).
## Protecting an App via Reverse Proxy
---
SWAG lets you insert Authentiks login page between a request and access to your service. To do this:
- Configure the authentication provider in Authentik.
@@ -372,7 +367,6 @@ Your new architecture looks like this:
![Picture](/img/serveex/authentik.svg)
## Protecting a Remote Server Service
---
For a [native application](/serveex/security/authentik/#protecting-a-native-app) (via OAuth 2.0 or other), nothing changes.
For a non-native app behind a reverse proxy, you must deploy an __Outpost__. An Outpost is a container acting as a local proxy — it's the target of your app's auth requests and the only one authorized to communicate with your Authentik API.
@@ -562,7 +556,6 @@ Save with :kbd{value="Ctrl+O"}, then :kbd{value="Enter"}, and exit with :kbd{val
Then configure the applications to protect as you did on your main server, whether they are [native](/serveex/security/authentik/#protecting-a-native-app) or protected via [reverse proxy](/serveex/security/authentik#protecting-an-app-via-reverse-proxy).
## Migrating an Authentik Database
---
On the source machine, dump the database:
```sh
@@ -19,7 +19,6 @@ description: Use Cloudflare Tunnels and Zero Trust to expose homelab services wi
![cloudfare_tunnels](/img/serveex/cloudflared.svg)
## Introduction
---
The _Zero Trust_ architecture is the practice of designing systems based on the principle of __"never trust, always verify"__, as opposed to the traditional principle of __"trust, but verify"__. This concept has become increasingly popular recently due to the growing number of attacks targeting user data. Its a broad concept, but well focus on how to apply _Zero Trust_ to the web services we host.
_Cloudflare tunnels_ offer a simple way to implement _Zero Trust_, using [SWAG](/serveex/core/swag) and [Authentik](/serveex/security/authentik).
@@ -43,7 +42,6 @@ Here well explain how to integrate SWAG with Cloudflare tunnels.
::
## Cloudflare Configuration
---
### DNS Zone
First, you need to set Cloudflare as your [DNS zone](/general/networking/dns) manager. If you bought your domain from Cloudflare, thats already done. Otherwise, check with your registrar how to add external DNS servers. Cloudflare provides [step-by-step documentation](https://developers.cloudflare.com/dns/zone-setups/full-setup/setup/) on how to configure a DNS Zone, whether your domain is external or registered with Cloudflare.
@@ -75,7 +73,6 @@ You must register for _Cloudflare Teams_ to access the _Zero Trust_ dashboard th
Register [via this link](https://dash.teams.cloudflare.com/).
## SWAG Configuration
---
::note
This guide assumes you own `mondomaine.fr` and that its DNS is correctly pointing to Cloudflare, as described above.
@@ -231,7 +228,6 @@ Then confirm your tunnel appears under _Networks > Tunnels_ in [Cloudflare Zero
::
## Managing Multiple Tunnels for Multiple Servers
---
By default, all subdomains of your domain are routed through the single tunnel. But if you have a second server, just change the tunnel name in that SWAG instance.
In your DNS zone, redirect subdomains to the correct tunnel.
@@ -20,7 +20,6 @@ description: Install Uptime-Kuma to monitor your self-hosted services uptime, se
![picture](https://user-images.githubusercontent.com/1336778/212262296-e6205815-ad62-488c-83ec-a5b0d0689f7c.jpg)
## Installation
---
Folder structure
```sh
@@ -19,7 +19,6 @@ description: Install Dozzle to monitor Docker container logs in real time from a
![Dozzle](https://blog.unixhost.pro/wp-content/uploads/2023/03/image-5.png)
## Installation
---
Folder structure
```sh
@@ -73,7 +72,6 @@ DOMAIN=dozzle.mydomain.com
Deploy the container. Go to `http://yourserverip:9135`. Voilà, your Dozzle web UI is up and running!
## Exposing Dozzle with Swag
---
::warning
@@ -19,7 +19,6 @@ description: Install Speedtest Tracker to automatically measure and log your int
![speedtest-tracker](/img/serveex/speedtest-tracker.avif)
## Installation
---
::note
We will use the Docker image maintained by [LinuxServer.io](https://docs.linuxserver.io/images/docker-speedtest-tracker/)
@@ -91,7 +90,6 @@ PORT=3225 # port to access the web UI
Deploy the container and go to `http://yourserverip:3225`. Log in with the account `[email protected]` and the password `password`. Dont forget to change your ID and password once logged in!
## Expose Speedtest Tracker
---
::note
📋 **Prerequisites:**
We assume that you've already created a subdomain like `speedtest.yourdomain.com` in your [DNS zone](/general/networking/dns) with a `CNAME` pointing to `yourdomain.com`, and [unless youre using Cloudflare Zero Trust](/serveex/security/cloudflare), you've also forwarded port `443` from your router to port `443` of your server in your [NAT rules](/general/networking/nat).
@@ -23,7 +23,6 @@ Beszel includes a hub with a web UI and an agent that collects data from your se
![Beszel](/img/serveex/beszel.png)
## Installation
---
Folder structure
@@ -147,7 +146,6 @@ __If it fails:__ check your firewall rules.
::
## Expose Beszel with Swag
---
::warning
@@ -19,7 +19,6 @@ description: Install UpSnap to remotely wake up machines on your local network v
![Beszel](/img/serveex/upsnap.webp)
## Installation
---
Folder structure
@@ -86,7 +85,6 @@ __If it fails:__ check your firewall rules.
::
## Exposing UpSnap with Swag
---
::warning
-3
View File
@@ -32,7 +32,6 @@ Youll need to create a *Plex.tv* account. You dont need to expose your Ple
::
## Install Plex
---
Folder structure:
```sh
root
@@ -144,7 +143,6 @@ You must be on your local network during Plex's initial setup. Otherwise, the UR
::
## Configure Plex
---
Plex offers a range of free movies/shows. After creating your account, I recommend disabling everything in the _Online Services_ section to keep your library clean.
Then go to the _Remote Access_ section and manually select a port (well use `1234`). It's best not to use the default port.
@@ -173,7 +171,6 @@ If your media is stored on a network disk (e.g. NAS or external hard drive over
::
## Expose Tautulli with Swag
---
You dont need to expose Plex, as it's accessible via your Plex account on plex.tv.
However, you may want to expose Tautulli so you can view stats from a simple URL when you're not home.
@@ -29,7 +29,6 @@ Heres the system well set up:
![Picture](/img/serveex/qbit.svg)
## Configuration
---
Folder structure
```sh
@@ -192,7 +191,6 @@ Detailed info:
| `PW` | Qbittorrent UI password | `password` |
## Deployment
---
Once done, deploy the container.
::warning
@@ -214,7 +212,6 @@ You're done! In Qbittorrent settings, under "Downloads", set `/media/downloads`
When adding a download, remember to select the proper directory so Plex can sync correctly (`/media/movies` or `/media/tvseries`). You can also automate this with categories and folders.
## Exposing the Web UI
---
::warning
@@ -25,7 +25,6 @@ Simple.
Well start by deploying the stack and then proceed to configure each app and understand how they work.
## Install the Apps
---
### Docker Compose
@@ -232,7 +231,6 @@ MEDIA_PATH=
Deploy the stack.
### Configure Radarr
---
Radarr queries your torrent sources and lets you define the type of releases to prioritize. It can also upgrade your movies if a better version is available.
@@ -284,7 +282,6 @@ Go to *Settings > Connect*, add a new connection and choose *Plex Media Server*.
- Go to *Settings > General* and copy your *API Key* for later use.
### Configure Sonarr
---
Sonarr queries torrent sources and defines what kind of TV series releases to prioritize. It also upgrades series when better versions are available.
@@ -297,7 +294,6 @@ __If it fails:__ check your firewall rules.
::
### Configure Prowlarr
---
Prowlarr acts as a proxy to manage your torrent indexers and link them to Radarr and Sonarr.
@@ -322,7 +318,6 @@ In *Settings > Apps*, add Radarr and Sonarr with the following details:
- Click *Test*, then *Save* if all goes well.
### Configuring Bazarr
---
Bazarr is an app that automatically searches for the correct subtitles in your preferred languages for all the movies and TV shows added by Radarr and Sonarr.
Go to `http://yourserverip:6767`.
@@ -364,7 +359,6 @@ Go to *Settings > General* and create a username and password using *forms login
Repeat the same steps for Radarr.
### Configuring Overseerr
---
[Overseerr](https://overseerr.dev/) is an app that lets you browse a movie catalog and send requests to Sonarr and Radarr. Just browse movies or series, click *Request*, and the media will automatically be downloaded according to your Radarr or Sonarr settings. If the title hasnt been released yet, it will be downloaded automatically when available. This way, episodes of a series appear in Plex without any manual intervention.
@@ -416,7 +410,6 @@ If the test succeeds, continue filling in the fields:
And thats it! Just request a movie or series, then check in qBittorrent or Radarr/Sonarr. Within a few minutes, your media will be available on Plex!
## Exposing Overseerr with SWAG
---
It can be useful to expose Overseerr if you want to send requests from outside your network without a VPN, or if you've shared your Plex library with others and want them to have Overseerr access.
-2
View File
@@ -16,7 +16,6 @@ description: Install Immich, a self-hosted alternative to Google Photos and iClo
![Picture](/img/serveex/immich.png)
## Installation
---
Folder structure
```sh
@@ -51,7 +50,6 @@ Deploy the container.
You're done! You can connect and follow the setup instructions at `http://yourserverip:2283`.
## Exposing Immich with SWAG
---
The main benefit of this setup is being able to access Immich remotely on all your devices. We'll expose Immich using SWAG.
::note
@@ -16,7 +16,6 @@ description: Install Nextcloud to self-host your files, photos, and calendar —
![Picture](/img/serveex/nextcloud.png)
## Installation
---
::note
We'll be using the Docker image maintained by [LinuxServer.io](https://docs.linuxserver.io/images/docker-nextcloud/)
@@ -84,7 +83,6 @@ __If it fails:__ check your firewall rules.
::
## Exposing Nextcloud with Swag
---
The goal of this setup is to access Nextcloud remotely from all your devices. Well use Swag to expose the app.
::note
@@ -19,7 +19,6 @@ description: Install File Browser to browse and manage your server files from a
![File Browser](/img/serveex/filebrowser.png)
## Installation
---
Open Dockge, click on `compose`, name the stack `filebrowser`, then copy and paste the following:
```yaml
@@ -58,7 +57,6 @@ __If it doesnt work:__ check your firewall rules.
::
## Exposing File Browser with Swag
---
::warning
@@ -19,7 +19,6 @@ description: Install Pingvin Share, a self-hosted file sharing platform to send
![picture](/img/serveex/pingvin.png)
## Installation
---
Open Dockge, click `compose`, name the stack `pingvin`, then copy-paste this:
```yaml
@@ -80,7 +79,6 @@ __If it fails:__ check your firewall rules.
::
## Exposing Pingvin with Swag
---
The whole point of a solution like this is being able to access it remotely, from all your devices. To do this, we'll expose Pingvin through Swag.
::note
@@ -20,7 +20,6 @@ description: Install code-server to run VS Code in your browser from your homela
![code-server](https://github.com/coder/code-server/raw/main/docs/assets/screenshot-2.png)
## Installation
---
::note
For this setup, well use the [image maintained by LinuxServer.io](https://docs.linuxserver.io/images/docker-code-server/).
@@ -107,7 +106,6 @@ __If it fails:__ check your firewall rules.
::
## Mount Folders
---
You can mount folders into VS Code by adding the relevant volumes in `compose.yaml` (or via Dockge), then redeploy the container.
```yaml
@@ -121,7 +119,6 @@ services:
Once inside VS Code, you'll have access to the mounted folder.
## Expose code-server with Swag
---
The whole point of such a solution is to access it remotely from any device. To do this, well expose code-server via Swag.
::note
@@ -19,7 +19,6 @@ description: Install Gitea, a lightweight self-hosted Git service to manage your
![gitea](https://about.gitea.com/img/home-screenshot.png)
## Installation
---
Folder structure
```sh
@@ -73,7 +72,6 @@ __If it fails:__ check your firewall rules.
::
## Exposing Gitea with Swag
---
The benefit of this setup is being able to access it remotely from any of your devices. To do so, well expose Gitea through Swag.
::note
@@ -19,7 +19,6 @@ description: Install IT Tools, a self-hosted collection of handy utilities for d
![IT Tools](/img/serveex/it-tools.png)
## Installation
---
Open Dockge, click on `compose`, name the stack `it-tools`, and paste the following:
@@ -56,7 +55,6 @@ __If it fails:__ check your firewall rules.
::
## Expose IT Tools with Swag
---
You might want to access it remotely on all your devices. To do that, we'll expose IT Tools using Swag.
::note
-5
View File
@@ -38,7 +38,6 @@ This is how ads and malicious domains are blocked—Adguard blocks only the bad
![Picture](/img/serveex/adguard.svg)
## Installation
---
Folder structure:
```sh
@@ -101,7 +100,6 @@ Go to `http://yourserverip:3000` and follow the setup instructions.
Thats it! Adguard is deployed.
## Exposing AdGuard with SWAG
---
To make AdGuard usable from outside your home network, you need to expose it.
::note
@@ -242,7 +240,6 @@ Press :kbd{value="Ctrl+O"}, then :kbd{value="Enter"} to save, and :kbd{value="Ct
And that's it! AdGuard is now exposed!
## Configure SSL/TLS Encryption
---
Encryption is essential if you want to keep your queries to AdGuard private. Encrypting your queries ensures that no one—not even your ISP—can see your history. It also ensures that only your server can respond to you.
To configure encryption:
@@ -261,7 +258,6 @@ To configure encryption:
Done! Your future DNS queries are now protected!
## Configure Devices
---
You have several options (which you can combine) to configure your devices.
### Secure the Local Network
You can secure your local network with AdGuard by configuring your router to direct all DNS queries by default to AdGuard instead of your ISPs DNS. Note: your router must allow DNS changes (Orange routers do not).
@@ -299,6 +295,5 @@ In Windows, you need to configure AdGuard for each network adapter you want to u
All programs using that network adapter will now be filtered by AdGuard.
## Add Filters
---
- Go to the settings and change the filters.
@@ -18,7 +18,6 @@ description: Install Vaultwarden, a self-hosted Bitwarden-compatible password ma
Vaultwarden is a fork of [Bitwarden](https://bitwarden.com/fr-fr/help/).
## Installation
---
Folder structure:
```sh
@@ -108,7 +107,6 @@ __If it fails:__ check your firewall rules.
::
## Exposing Vaultwarden with SWAG
---
The main benefit of Vaultwarden is being able to access it remotely from any device. We'll expose it through [SWAG](/serveex/core/swag).
::note
@@ -6,7 +6,6 @@ description: A Python bot that monitors GPU stock availability in real time and
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
# 🤖 Nvidia Stock Bot
---
For the past four years, the electronics hardware shortage has been relentless. Graphics cards are no exception. In 2020, I had to wait two months to get my RTX 3080. To manage it, I joined [JV Hardware](https://discord.gg/gxffg3GA96), where a small group of geeks had set up a bot that pinged users when GPUs became available.
@@ -6,7 +6,6 @@ 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.
@@ -6,7 +6,6 @@ description: A bash script to detect and fix duplicate media files in Sonarr and
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
# Servarr duplicates corrector
---
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. Thats why you should mount only one parent folder containing all child folders (like `downloads`, `movies`, `tvseries` inside a `media` parent folder).
@@ -6,7 +6,6 @@ description: A bash script to automatically dump LUKS headers from all encrypted
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
# Backup of LUKS Headers for Encrypted Disks/Volumes
---
I recently realized that having just the password is not enough to unlock a LUKS volume after a failure or corruption. I learned how to dump the LUKS headers from disks/volumes and to use the serial numbers along with partition names to accurately identify which header corresponds to which disk/partition (I have 10 of them!).
@@ -6,7 +6,6 @@ description: Use socat to proxy the Docker socket through Docker Socket Proxy, a
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
# Socat Proxy
---
This project addresses a common use case:
@@ -6,7 +6,6 @@ description: A bash script that monitors hard drive temperatures and automatical
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
# HotDisk
---
When you have a NAS with several drives sitting in a laundry room, temperatures can quickly rise.
Hard drives are very sensitive to heat and can suffer serious damage if they exceed a certain temperature threshold for too long.
@@ -6,7 +6,6 @@ description: A bash script that stops Docker containers before a Backrest backup
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
# Backrest Docker Stop
---
[Backrest](https://github.com/garethgeorge/backrest) is a fantastic backup tool. In the case of [Serveex](https://docu.djeex.fr/en/serveex/introduction), most of the data that needs to be backed up consists of containers, and those containers often include databases.
@@ -15,7 +15,6 @@ title: Wireguard 14
::
## Introduction
---
Using a VPN allows remote access to a servers local resources without exposing them to the internet. Its a clean and secure way to access services like SSH without exposing the port publicly. With a VPN, you can securely connect to your network from anywhere and make devices on different networks communicate.
Here we will use [Wireguard](https://www.wireguard.com/), a secure and high-performance VPN server, using containers:
@@ -48,7 +47,6 @@ You *can* allow VPN clients to share access to their local networks, but we won
So only VPN-connected devices can communicate with each other on the VPN, not with other local devices outside the VPN.
## Server Side
---
::note
📋 __Checklist:__
@@ -168,7 +166,6 @@ If it fails, check firewall rules.
::
## On the Client Server
---
::note
Assumes the client is a Linux server with Docker installed
@@ -248,7 +245,6 @@ Repeat for each client
::
## Other Devices
---
- **Phone:** Install Wireguard and scan the QR code from the web UI (`http://your-server-ip:51821`)
- **PC:** Install the Wireguard client and import the config file