The Jesse's audit #1

Merged
Djeex merged 20 commits from the-jesse-audit into main 2026-09-07 15:07:21 +02:00
90 changed files with 380 additions and 376 deletions
Showing only changes of commit 67d593cb73 - Show all commits
+1 -1
View File
@@ -7,7 +7,7 @@ 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}
![picture](/img/global/nat.svg)
![Diagram of NAT translating a private LAN address to a public IP address](/img/global/nat.svg)
## What is a "port"?
+1 -1
View File
@@ -12,7 +12,7 @@ When you browse a website or use an app, requests are made to one or more domain
The DNS zone is like a registry with signposts that direct your requests to the correct destination.
![Picture](/img/global/dns.svg)
![Diagram of a DNS zone directing requests to the right server](/img/global/dns.svg)
## The DNS Zone
+5 -5
View File
@@ -30,7 +30,7 @@ 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;">
<img src="/img/global/no-raid.svg" alt="Disks with no RAID redundancy" style="max-width: 30%; max-height:230px; margin-right: 20px;">
<ul>
<li>Just your disks, without RAID. Data is stored disk by disk.</li>
<li>If you lose a disk, only its data is lost.</li>
@@ -43,7 +43,7 @@ Use your disks without RAID when you're not afraid of data loss and can tolerate
### 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;">
<img src="/img/global/raid0.svg" alt="RAID 0 striping data across disks" style="max-width: 30%; max-height:230px; margin-right: 20px;">
<ul>
<li>OS sees 1 drive.</li>
<li>Data is striped across all disks.</li>
@@ -59,7 +59,7 @@ Use RAID 0 when you prioritize performance and are not concerned about 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;">
<img src="/img/global/raid1.svg" alt="RAID 1 mirroring data across disks" style="max-width: 30%; max-height:230px; margin-right: 20px;">
<ul>
<li>OS sees 1 drive.</li>
<li>All disks contain identical data.</li>
@@ -78,7 +78,7 @@ 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;">
<img src="/img/global/raid5.svg" alt="RAID 5 with distributed parity" style="max-width: 40%; margin-right: 20px;">
</p>
- OS sees 1 drive.
@@ -92,7 +92,7 @@ Use RAID 5 when you want reliable storage with 3 to 5 disks and minimal space lo
### RAID 6
<p align="center">
<img src="/img/global/raid6.svg" alt="Image" style="max-width: 50%; margin-right: 20px;">
<img src="/img/global/raid6.svg" alt="RAID 6 with double distributed parity" style="max-width: 50%; margin-right: 20px;">
</p>
- OS sees 1 drive.
+1 -1
View File
@@ -24,7 +24,7 @@ Heres what were most interested in:
- Its robust error notifications and monitoring.
## Structure
![](/img/global/zfs.svg)
![ZFS logo](/img/global/zfs.svg)
ZFS has a unique structure:
+5 -5
View File
@@ -31,7 +31,7 @@ Larger boards generally offer more ports and features. Pre-built systems might u
## 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;">
<img src="/img/global/cpu.svg" alt="CPU icon" 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>
</div>
@@ -51,7 +51,7 @@ For low-power home servers or NAS (non-intensive computing), consider Intel N100
## RAM
<p align="center">
<img src="/img/global/ram.svg" alt="Image" style="max-width: 65%;">
<img src="/img/global/ram.svg" alt="RAM icon" style="max-width: 65%;">
</p>
__RAM__ (Random Access Memory) is fast, temporary memory used by the CPU (and iGPU if applicable) for quick access during execution. It clears periodically and when the machine powers down. Better RAM = better CPU performance.
@@ -67,7 +67,7 @@ Depending on the required performance, one can choose between a dedicated GPU wi
## HDD(s)
<p align="center">
<img src="/img/global/hdd.svg" alt="Image" style="max-width: 50%; margin-right: 20px;">
<img src="/img/global/hdd.svg" alt="Hard disk drive icon" style="max-width: 50%; margin-right: 20px;">
</p>
An __HDD__ (Hard Disk Drive), or hard drive, is a component used to store data. It was once the standard storage device in computers. HDDs consist of one or more stacked platters and read/write heads, somewhat like a vinyl record player.
@@ -85,7 +85,7 @@ 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;">
<img src="/img/global/nvme.svg" alt="NVMe SSD icon" style="max-width: 50%; margin-right: 20px;">
</p>
An __SSD__ (Solid State Drive) is a small circuit board with memory chips soldered onto it, used to store information. Unlike RAM, these chips retain data even when not powered, meaning the information is preserved after a reboot. SSDs are generally used as the main storage medium for your server.
@@ -144,7 +144,7 @@ To choose the right PSU, a common rule of thumb is to estimate your systems p
## 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;">
<img src="/img/global/case.svg" alt="Computer case icon" style="max-width: 25%; max-height:230px; margin-right: 20px;">
<p>The <strong>case</strong> is also an essential component of your machine. It plays a key role in cooling, through its fans and airflow design, and it determines the form factor compatibility for your motherboard, power supply, and any dedicated GPU you may install.
</p>
</div>
@@ -20,7 +20,7 @@ A mini PC for $100 + a USB dock for $50 that holds multiple hard drives = a comp
Thats all a **ProloNAS** is: a NAS anyone can afford. The name is a French pun, *prolo* (slang for "working-class") plus *NAS*, a home server for the rest of us, not just people who can drop $1000 on a branded box. Its then up to you to scale your storage capacity according to your needs.
![](/img/global/prolonas.svg)
![Diagram of a mini PC paired with a DAS enclosure forming a ProloNAS](/img/global/prolonas.svg)
## Example Hardware
+4 -4
View File
@@ -9,7 +9,7 @@ navigation:
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
## A Home Lab by a Beginner, for Beginners
![](/img/serveex/serveex-server.svg)
![Diagram of a home server replacing cloud services](/img/serveex/serveex-server.svg)
**Serveex** is primarily a personal project aimed at hosting as many everyday services as possible at home, without relying on proprietary platforms (Google, Apple, Netflix, etc.). The goal was to experiment, learn, and document every step along the way. This is purely a scientific project and is not intended for production use.
@@ -62,7 +62,7 @@ to: /serveex/core/wireguard
ui:
icon: text-[#88171A]
---
Install and deploy Wireguard
Install and deploy WireGuard
::
::card{icon="i-noto-globe-showing-americas" title="Reverse Proxy" to="/serveex/core/swag"}
@@ -174,7 +174,7 @@ to: /serveex/media/qbittorrent
ui:
icon: text-[#2F67BA]
---
Install and deploy Qbittorrent
Install and deploy qBittorrent
::
::card
@@ -284,7 +284,7 @@ to: /serveex/apps/adguard
ui:
icon: text-[#68BC71]
---
Install and deploy Adguard Home
Install and deploy AdGuard Home
::
::card
@@ -10,7 +10,7 @@ description: Step-by-step guide to install Debian 13 on a home server and set up
The other reason is that it stays out of your way. Appliance systems like Unraid, TrueNAS or Synology's DSM put their own layer on top of Linux, and the day you need something their interface doesn't expose, you're stuck working around it. Debian is just a server: you install what you want, where you want, and nothing is hidden behind someone else's UI. It also happens to be what most self-hosted projects target first, so their docs hand you `apt` commands that work as-is, Docker publishes an official Debian repository, and any error message you paste into a search engine already has years of answers behind it. A minimal install is light enough to leave nearly all the RAM and CPU of a small N100 box to your containers.
![picture](/img/serveex/server.svg)
![Server icon](/img/serveex/server.svg)
## Installation
+2 -2
View File
@@ -12,7 +12,7 @@ A **container** sidesteps the problem: it packages an app together with everythi
**Docker** is the tool that builds, starts and manages these containers. Point it at an *image*, a ready-made snapshot of an app maintained by its developers, and it downloads it and runs it in one command. The rest of Serveex is built entirely on it: every app from here on is one Docker container, or a handful of them working together.
![picture](/img/serveex/docker.svg)
![Diagram of Docker containers running isolated from the host system](/img/serveex/docker.svg)
## Install Docker
::steps{level="3"}
@@ -53,7 +53,7 @@ sudo mkdir /srv/docker
## 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)
![Dockge web interface for managing Docker Compose stacks](/img/serveex/dockge.png)
### Configuration
+5 -5
View File
@@ -1,5 +1,5 @@
---
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.
---
@@ -9,10 +9,10 @@ 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:
Here we will use [WireGuard](https://www.wireguard.com/), a secure and high-performance VPN server, using containers:
- [wg-easy](https://github.com/wg-easy/wg-easy) as the server, providing a very simple web UI to manage connections and download config files (including QR codes for phones)
- [Wireguard](https://docs.linuxserver.io/images/docker-wireguard/?h=wireguard) as the client for Linux systems
- [WireGuard](https://docs.linuxserver.io/images/docker-wireguard/?h=wireguard) as the client for Linux systems
Clients are also available for Windows, macOS, iOS, and Android.
@@ -27,7 +27,7 @@ To achieve this, well create a **Virtual Private Network** (VPN), i.e., a sec
Additionally, you can add your phone, laptop, or other devices to the VPN and securely access your server resources wherever you are.
![picture](/img/serveex/vpn.svg)
![Diagram of a VPN tunnel connecting a remote device to the home network](/img/serveex/vpn.svg)
In this diagram, machine 1 is part of two networks:
@@ -276,4 +276,4 @@ Repeat this setup for each client.
And heres the final setup overview:
![picture](/img/serveex/wireguard.svg)
![Diagram of the WireGuard client-server tunnel setup](/img/serveex/wireguard.svg)
+5 -5
View File
@@ -6,7 +6,7 @@ description: Set up SWAG as a reverse proxy with automatic SSL, expose your serv
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
[Swag](https://docs.linuxserver.io/general/swag/) is the core of this homelab. Its a powerful reverse proxy that allows you to expose services on the internet using domain names, handling SSL certificate issuance (for encrypted connections), request routing, and access security (via HTTP auth or SSO like Authelia or Authentik). All the necessary documentation is [available here](https://docs.linuxserver.io/general/swag).
[SWAG](https://docs.linuxserver.io/general/swag/) is the core of this homelab. Its a powerful reverse proxy that allows you to expose services on the internet using domain names, handling SSL certificate issuance (for encrypted connections), request routing, and access security (via HTTP auth or SSO like Authelia or Authentik). All the necessary documentation is [available here](https://docs.linuxserver.io/general/swag).
::warning{to="/serveex/core/wireguard"}
@@ -17,7 +17,7 @@ Below is an example exposing Dockge. We will install SWAG along with the dbip mo
**Reverse proxy principle and its application in our case:**
![Picture](/img/serveex/reverse-proxy.svg)
![Diagram of a reverse proxy forwarding requests to the right backend service](/img/serveex/reverse-proxy.svg)
## Installation
@@ -161,7 +161,7 @@ Save with :kbd{value="Ctrl+O"}, then :kbd{value="Enter"}, and exit with :kbd{val
### Enable DBIP in nginx.conf
Now configure swag to access DBIP, the geolocation-based access control module. Open the `nginx.conf` file:
Now configure SWAG to access DBIP, the geolocation-based access control module. Open the `nginx.conf` file:
```bash [Terminal]
sudo nano /srv/docker/swag/config/nginx/nginx.conf
@@ -182,7 +182,7 @@ Restart the stack in Dockge. This time, the SSL certificate should be successful
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](/img/serveex/swag-dashboard.png)
![SWAG dashboard showing proxied services and banned IPs](/img/serveex/swag-dashboard.png)
## DBIP
DBIP allows you to block connections based on countries. It relies on the configuration file named `dbip.conf` located in `/srv/docker/swag/config/nginx`. [More info here](https://virtualize.link/secure/).
@@ -290,7 +290,7 @@ Now it's time to expose Dockge on the internet so you can access and manage your
::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 [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, dont expose it with SWAG. Use a VPN like [Wireguard](/serveex/core/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 [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, dont expose it with SWAG. Use a VPN like [WireGuard](/serveex/core/wireguard) instead.
::
::steps{level="3"}
@@ -1,12 +1,12 @@
---
title: TinyAuth
description: Install TinyAuth, a lightweight forward-auth proxy, and pair it with Pocket ID to add SSO login in front of your self-hosted apps. Protect your app behind Swag with forward-auth.
description: Install TinyAuth, a lightweight forward-auth proxy, and pair it with Pocket ID to add SSO login in front of your self-hosted apps. Protect your app behind SWAG with forward-auth.
---
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
[TinyAuth](https://tinyauth.app) is a small forward-auth proxy: a single login page that Swag can insert in front of any app before letting a request through, checking whether a visitor is authenticated before forwarding them on.
[TinyAuth](https://tinyauth.app) is a small forward-auth proxy: a single login page that SWAG can insert in front of any app before letting a request through, checking whether a visitor is authenticated before forwarding them on.
![tinyauth](/img/serveex/tinyauth.png)
@@ -135,7 +135,7 @@ It re-prompts for the username, password, and current 6-digit code.
From now on, that user needs both their password and a valid code from their authenticator app to log in.
## Exposing TinyAuth with Swag
## Exposing TinyAuth with SWAG
TinyAuth needs its own subdomain: it's the page users land on before being forwarded to the app they actually want.
::note
@@ -174,7 +174,7 @@ Here we assume the TinyAuth network name is `tinyauth_default`. You can check th
### Create the subdomain.conf file
In the Swag folders, create the file `tinyauth.subdomain.conf`:
In the SWAG folders, create the file `tinyauth.subdomain.conf`:
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Tip:__ Use **File Browser Quantum** to navigate and edit files instead of using terminal commands.
@@ -225,7 +225,7 @@ __If it fails:__ check your firewall rules.
::
## Protecting an app via reverse proxy
Swag doesn't ship a ready-made include file for TinyAuth, so we'll add the forward-auth check directly to the app's own `*.subdomain.conf`. We'll use Dockge as an example.
SWAG doesn't ship a ready-made include file for TinyAuth, so we'll add the forward-auth check directly to the app's own `*.subdomain.conf`. We'll use Dockge as an example.
::steps{level="3"}
### Open the app's subdomain.conf file
@@ -96,7 +96,7 @@ TRUST_PROXY=true
|----------|-------|---------|
| `APP_URL`{lang=properties} | The public URL you'll use to reach Pocket ID (see exposure below) | `https://id.mydomain.com` |
| `ENCRYPTION_KEY`{lang=properties} | The key generated above | `Q2pVEqsTNRkJSO9SkJzU3KZ2...` |
| `TRUST_PROXY`{lang=properties} | Required since Pocket ID sits behind Swag | `true` |
| `TRUST_PROXY`{lang=properties} | Required since Pocket ID sits behind SWAG | `true` |
Deploy the stack. The local interface is available at `http://yourserverip:1411`.
@@ -114,7 +114,7 @@ Pocket ID doesn't use passwords: your first account is created with a **passkey*
Passkeys require a secure context: HTTPS, or `localhost`. Registering one from `http://yourserverip:1411` on another machine will be refused by the browser, since that's plain HTTP to a non-`localhost` address. If setup doesn't complete locally, expose Pocket ID first (see below) and finish setup over HTTPS instead.
::
## Exposing Pocket ID with Swag
## Exposing Pocket ID with SWAG
Other apps need to reach Pocket ID over HTTPS to complete the OIDC login flow, so it must be exposed even if you only use it from home.
::note
@@ -153,7 +153,7 @@ Here we assume the Pocket ID network name is `pocket-id_default`. You can check
### Create the subdomain.conf file
In the Swag folders, create the file `id.subdomain.conf`:
In the SWAG folders, create the file `id.subdomain.conf`:
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Tip:__ Use **File Browser Quantum** to navigate and edit files instead of using terminal commands.
@@ -6,7 +6,9 @@ description: Install Uptime-Kuma to monitor your self-hosted services uptime, se
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
![picture](/img/serveex/uptime_kuma.jpg)
[Uptime-Kuma](https://github.com/louislam/uptime-kuma) is a self-hosted monitoring tool that regularly checks whether your other services and sites are up and reachable, and alerts you the moment one goes down. It can also build a public status page to share your services' health with others.
![Uptime-Kuma dashboard showing monitored services and their status](/img/serveex/uptime_kuma.jpg)
## Installation
@@ -65,7 +67,7 @@ __If it fails:__ check your firewall rules.
### Done!
::
## Expose with Swag
## Expose with SWAG
::note{icon=""}
📋 __Before you begin:__
<br/><br/>
@@ -74,13 +76,13 @@ We assume you have the subdomain `stats.mydomain.com` with a `CNAME` pointing to
::warning
Uptime-Kuma does not use multi-factor authentication. Exposing Uptime-Kuma on the internet could compromise the machines it monitors. Only do this if you're using an MFA system like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, dont expose it with SWAG; use a VPN like [Wireguard](/serveex/core/wireguard) instead.
Uptime-Kuma does not use multi-factor authentication. Exposing Uptime-Kuma on the internet could compromise the machines it monitors. Only do this if you're using an MFA system like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, dont expose it with SWAG; use a VPN like [WireGuard](/serveex/core/wireguard) instead.
::
::steps{level="3"}
### Create the subdomain.conf file
In the Swag folders, create the `stats.subdomain.conf` file.
In the SWAG folders, create the `stats.subdomain.conf` file.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Tip for those who dislike the terminal:__
@@ -104,14 +104,14 @@ Deploy the container. Go to `http://yourserverip:9135`. Voilà, your Dozzle web
### Done!
::
## Exposing Dozzle with Swag
## Exposing Dozzle with SWAG
::warning
Dozzle does not use multi-factor authentication. Exposing Dozzle to the internet could compromise the connected machines. Only do this if you use a multi-factor authentication system like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, do not expose it with SWAG and instead use a VPN like [Wireguard](/serveex/core/wireguard).
Dozzle does not use multi-factor authentication. Exposing Dozzle to the internet could compromise the connected machines. Only do this if you use a multi-factor authentication system like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, do not expose it with SWAG and instead use a VPN like [WireGuard](/serveex/core/wireguard).
::
You may want to access Dozzle remotely and on all your devices. To do so, well expose Dozzle via Swag.
You may want to access Dozzle remotely and on all your devices. To do so, well expose Dozzle via SWAG.
::note{icon=""}
📋 __Before you begin:__
@@ -150,7 +150,7 @@ We assume the Dozzle network name is `dozzle_default`. You can verify the connec
### Create the subdomain.conf file
In the Swag folder, create the `dozzle.subdomain.conf` file.
In the SWAG folder, create the `dozzle.subdomain.conf` file.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Tip:__ You can use **File Browser Quantum** to browse and edit files instead of using terminal commands.
@@ -102,7 +102,7 @@ Now we want to expose Speedtest Tracker to the internet so you can access it rem
::warning
Speedtest Tracker does not use multi-factor authentication. Exposing it on the internet could compromise connected devices. Do so only if you use a multi-factor system like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, avoid using SWAG and prefer a VPN like [Wireguard](/serveex/core/wireguard).
Speedtest Tracker does not use multi-factor authentication. Exposing it on the internet could compromise connected devices. Do so only if you use a multi-factor system like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, avoid using SWAG and prefer a VPN like [WireGuard](/serveex/core/wireguard).
::
::steps{level="3"}
@@ -182,14 +182,14 @@ Deploy the stack on the remote server. Data will begin flowing into the web UI a
__If it fails:__ check your firewall rules.
::
## Expose Beszel with Swag
## Expose Beszel with SWAG
::warning
Beszel does not support multi-factor authentication. Exposing it on the internet could compromise connected machines. Only do this if you're using a system like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, do not expose with SWAG. Use a VPN like [Wireguard](/serveex/core/wireguard) instead.
Beszel does not support multi-factor authentication. Exposing it on the internet could compromise connected machines. Only do this if you're using a system like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, do not expose with SWAG. Use a VPN like [WireGuard](/serveex/core/wireguard) instead.
::
If you want to access Beszel remotely from all your devices, expose it using Swag.
If you want to access Beszel remotely from all your devices, expose it using SWAG.
::note{icon="" to="/general/networking/nat"}
📋 __Prerequisite:__
@@ -200,7 +200,7 @@ You must have created a DNS subdomain like `beszel.mydomain.com` with a `CNAME`
::steps{level="3"}
### Add Beszel's network to SWAG
In Dockge, edit Swag's compose file and add Beszels network:
In Dockge, edit SWAG's compose file and add Beszels network:
```yaml [compose.yaml]
---
@@ -219,16 +219,16 @@ networks:
external: true
```
Redeploy the stack and wait for Swag to become fully operational.
Redeploy the stack and wait for SWAG to become fully operational.
::note
We assume the network name is `beszel_default`. You can check connectivity by visiting Swag's dashboard at `http://yourserverip:81`.
We assume the network name is `beszel_default`. You can check connectivity by visiting SWAG's dashboard at `http://yourserverip:81`.
::
### Create the subdomain.conf file
In Swags config folders, create `beszel.subdomain.conf`.
In SWAGs config folders, create `beszel.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Tip:__ Use **File Browser Quantum** to browse and edit files instead of terminal commands.
@@ -85,14 +85,14 @@ Deploy the container and go to `http://yourserverip:8095`. Just follow the steps
__If it fails:__ check your firewall rules.
::
## Exposing UpSnap with Swag
## Exposing UpSnap with SWAG
::warning
UpSnap does not support multi-factor authentication. Exposing it on the internet could compromise connected machines. Do this only if you're using a multi-factor authentication system like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, avoid exposing it with SWAG and use a VPN like [Wireguard](/serveex/core/wireguard) instead.
UpSnap does not support multi-factor authentication. Exposing it on the internet could compromise connected machines. Do this only if you're using a multi-factor authentication system like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, avoid exposing it with SWAG and use a VPN like [WireGuard](/serveex/core/wireguard) instead.
::
You may want to access it remotely from all your devices. To do so, we'll expose UpSnap via Swag.
You may want to access it remotely from all your devices. To do so, we'll expose UpSnap via SWAG.
::note{icon=""}
📋 __Beforehand:__
@@ -131,7 +131,7 @@ Here we assume the network name for upsnap is `upsnap_default`. You can check th
### Create the subdomain.conf file
In the Swag folders, create the file `upsnap.subdomain.conf`.
In the SWAG folders, create the file `upsnap.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Tip:__ You can use **File Browser Quantum** to navigate your files and edit documents instead of using terminal commands.
+1 -1
View File
@@ -16,7 +16,7 @@ As always, we'll use the [linuxserver.io image](https://docs.linuxserver.io/imag
::note{to="/serveex/core/wireguard"}
Unlike Plex, Jellyfin has no cloud relay: to access your server outside your local network, you must expose it yourself (see below), or use a VPN like **Wireguard**.
Unlike Plex, Jellyfin has no cloud relay: to access your server outside your local network, you must expose it yourself (see below), or use a VPN like **WireGuard**.
::
## Install Jellyfin
+15 -15
View File
@@ -1,24 +1,24 @@
---
title: Qbittorrent
title: qBittorrent
description: Install qBittorrent with Gluetun and ProtonVPN to download torrents securely behind a VPN on your self-hosted server.
---
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
![Picture](/img/serveex/qbit-vue.jpeg)
![VueTorrent web interface showing active torrent downloads](/img/serveex/qbit-vue.jpeg)
To safely download your favorite media, we'll build a system using:
- [Qbittorrent](https://github.com/linuxserver/docker-qbittorrent) as the BitTorrent client
- [qBittorrent](https://github.com/linuxserver/docker-qbittorrent) as the BitTorrent client
- [Proton VPN Plus](https://protonvpn.com/torrenting), a VPN to secure your traffic. You need a subscription (promos available) to access the BitTorrent protocol. You can also use another VPN as long as it supports BitTorrent.
- [Gluetun](https://github.com/qdm12/gluetun)
- [Qbittorrent port update](https://codeberg.org/TechnoSam/qbittorrent-gluetun-port-update) to automatically update the VPN port (which changes regularly).
- [qBittorrent port update](https://codeberg.org/TechnoSam/qbittorrent-gluetun-port-update) to automatically update the VPN port (which changes regularly).
- The [VueTorrent](https://github.com/gabe565/linuxserver-mod-vuetorrent) mod for a modern and intuitive UI.
Heres the system well set up:
![Picture](/img/serveex/qbit.svg)
![Diagram of qBittorrent routing its traffic through the Gluetun VPN tunnel](/img/serveex/qbit.svg)
## Configuration
@@ -34,7 +34,7 @@ tree:
- gluetun/
- compose.yaml
- .env
- "media # linked to Jellyfin and Qbittorrent":
- "media # linked to Jellyfin and qBittorrent":
- "downloads/ # generic downloads, selected in settings"
- "movies/ # used for downloading movies"
- "tvseries/ # used for downloading TV shows"
@@ -122,7 +122,7 @@ services:
### Configure the download port update
Before editing the `.env` in Dockge, let's configure the download port update. Proton and most VPNs rotate the forwarding port, which must be communicated to Qbittorrent.
Before editing the `.env` in Dockge, let's configure the download port update. Proton and most VPNs rotate the forwarding port, which must be communicated to qBittorrent.
Weve added the mod `ghcr.io/t-anc/gsp-qbittorent-gluetun-sync-port-mod` to the container.
@@ -181,8 +181,8 @@ Detailed info:
| `UI_PORT` | Port for accessing the web UI | `5695` |
| `PR_KEY` | Private key from Proton | `buKsjNHLyzKMM1qYnzOy4s7SHfly` |
| `GSP_KEY` | Key you generated for port update | `MnBa47MeVmk7xiv` |
| `ID` | Qbittorrent UI login username | `user` |
| `PW` | Qbittorrent UI password | `password` |
| `ID` | qBittorrent UI login username | `user` |
| `PW` | qBittorrent UI password | `password` |
### Done!
::
@@ -217,7 +217,7 @@ Change your username and password in the "webui" settings.
### Done!
::
You're done! In Qbittorrent settings, under "Downloads", set `/media/downloads` as the default folder.
You're done! In qBittorrent settings, under "Downloads", set `/media/downloads` as the default folder.
When adding a download, remember to select the proper directory so Jellyfin can sync correctly (`/media/movies` or `/media/tvseries`). You can also automate this with categories and folders.
@@ -225,10 +225,10 @@ When adding a download, remember to select the proper directory so Jellyfin can
::warning
Qbittorrent does not support multi-factor authentication. Exposing it to the internet may put your system at risk. Only do this if you use MFA via [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, dont expose it with SWAG. Use a VPN like [Wireguard](/serveex/core/wireguard) instead.
qBittorrent does not support multi-factor authentication. Exposing it to the internet may put your system at risk. Only do this if you use MFA via [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, dont expose it with SWAG. Use a VPN like [WireGuard](/serveex/core/wireguard) instead.
::
To start downloads from outside your home, without a VPN, you can expose the Qbittorrent web UI.
To start downloads from outside your home, without a VPN, you can expose the qBittorrent web UI.
::note
@@ -334,9 +334,9 @@ Press :kbd{value="Ctrl+O"}, then :kbd{value="Enter"} to save, and :kbd{value="Ct
### Done!
::
Wait a few minutes, then go to `https://seedbox.mydomain.com`. You should land on the Qbittorrent interface.
Wait a few minutes, then go to `https://seedbox.mydomain.com`. You should land on the qBittorrent interface.
## Protecting Qbittorrent with TinyAuth
## Protecting qBittorrent with TinyAuth
Add [TinyAuth](/serveex/security/tinyauth)'s forward-auth check directly to `seedbox.subdomain.conf`, the same way as [the TinyAuth guide](/serveex/security/tinyauth#protecting-an-app-via-reverse-proxy):
```nginx [seedbox.subdomain.conf]{26-38,41-42}
@@ -418,4 +418,4 @@ The `location /tinyauth` block runs inside SWAG's own container, so SWAG needs t
And thats it! You now have a ready-to-use media center.
![Picture](/img/serveex/seed.svg)
![Diagram of the complete seedbox setup, from qBittorrent to SWAG](/img/serveex/seed.svg)
+7 -7
View File
@@ -49,7 +49,7 @@ tree:
::warning
__Warning:__ Make sure to follow this file structure carefully, especially the `media` folder. This folder must be mounted **exactly the same way** in both the _Qbittorrent_ compose file (`/your/path/media:/media`) and the _arr_ applications. If not, the _arr_ apps may not recognize the path provided by Qbittorrent and will fail to create _hardlinks_. Without hardlinks, the _arr_ apps will copy the files instead, **doubling the space used** on your storage.
__Warning:__ Make sure to follow this file structure carefully, especially the `media` folder. This folder must be mounted **exactly the same way** in both the _Qbittorrent_ compose file (`/your/path/media:/media`) and the _arr_ applications. If not, the _arr_ apps may not recognize the path provided by qBittorrent and will fail to create _hardlinks_. Without hardlinks, the _arr_ apps will copy the files instead, **doubling the space used** on your storage.
::
::steps{level="3"}
@@ -170,7 +170,7 @@ MEDIA_PATH=
|----------------|-------------------------------------------------------------------------------------------------|-------------|
| `PUID` | Set using your user info (check with `id yourusername`) | `1000` |
| `PGID` | Same as above | `1000` |
| `MEDIA_PATH` | Path to your media folder, here: `/media`. It must match the one used by Qbittorrent. | `/media` |
| `MEDIA_PATH` | Path to your media folder, here: `/media`. It must match the one used by qBittorrent. | `/media` |
::note
@@ -207,7 +207,7 @@ Create an account and choose *forms login*.
::warning
__Warning:__ If you already have movies in `movies` from Qbittorrent, do not let Radarr add them. Radarr might modify them, which could stop seeding in Qbittorrent.
__Warning:__ If you already have movies in `movies` from qBittorrent, do not let Radarr add them. Radarr might modify them, which could stop seeding in qBittorrent.
::
#### Configure Profiles
@@ -216,12 +216,12 @@ Go to *Settings > Profiles*. These are your default quality profiles. When you m
![profiles_radarr](/img/serveex/radarr1.png)
#### Add Qbittorrent
#### Add qBittorrent
In *Settings > Download Clients*, add Qbittorrent.
In *Settings > Download Clients*, add qBittorrent.
- Use your server IP as *Host* and port `5695` if following this guide.
- Provide your Qbittorrent *Username* and *Password*.
- Provide your qBittorrent *Username* and *Password*.
- Click *Test*.
- If successful, click *Save*.
@@ -389,7 +389,7 @@ It can be useful to expose Seerr if you want to send requests from outside your
::warning
Seerr has no built-in two-factor authentication. Only expose it if you're using a secure authentication solution like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik). Otherwise, don't expose it with SWAG, use a VPN like [Wireguard](/serveex/core/wireguard) instead.
Seerr has no built-in two-factor authentication. Only expose it if you're using a secure authentication solution like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik). Otherwise, don't expose it with SWAG, use a VPN like [WireGuard](/serveex/core/wireguard) instead.
::
::note
+1 -1
View File
@@ -8,7 +8,7 @@ description: Install Immich, a self-hosted alternative to Google Photos and iClo
[Immich](https://immich.app/docs/overview/introduction) is a self-hosted photo and video management solution that replaces cloud services like Google Photos or iCloud. It offers powerful features like face recognition and geolocation.
![Picture](/img/serveex/immich.png)
![Immich web interface showing a photo library timeline](/img/serveex/immich.png)
## Installation
+4 -4
View File
@@ -8,7 +8,7 @@ description: Install Nextcloud to self-host your files, photos, and calendar, a
[Nextcloud](https://nextcloud.com/) is a self-hosted solution that allows you to access and synchronize your data across all your devices. It also includes collaboration features, calendar, and more. Its a great alternative to services like Google Drive, iCloud, or OneDrive.
![Picture](/img/serveex/nextcloud.png)
![Nextcloud web interface showing files and folders](/img/serveex/nextcloud.png)
## Installation
::note{to="https://docs.linuxserver.io/images/docker-nextcloud/"}
@@ -84,8 +84,8 @@ Deploy the stack and visit `http://yourserverip:4545` to complete the setup.
__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.
## 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
@@ -155,7 +155,7 @@ Press :kbd{value="Ctrl+O"}, then :kbd{value="Enter"} to save, and :kbd{value="Ct
### Create the subdomain.conf file
In Swags folders, create the file `nextcloud.subdomain.conf`:
In SWAGs folders, create the file `nextcloud.subdomain.conf`:
```bash [Terminal]
sudo nano /srv/docker/swag/config/nginx/proxy-confs/nextcloud.subdomain.conf
@@ -104,14 +104,14 @@ Deploy the container and go to `http://yourserverip:8020`. Log in with the defau
__If it doesn't work:__ check your firewall rules.
::
## Exposing File Browser Quantum with Swag
## Exposing File Browser Quantum with SWAG
::warning
File Browser Quantum does not support multi-factor authentication. Exposing it publicly could put your systems at risk. Only do this if you're using a secure authentication solution like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, don't expose it with SWAG. Use a VPN like [Wireguard](/serveex/core/wireguard) instead.
File Browser Quantum does not support multi-factor authentication. Exposing it publicly could put your systems at risk. Only do this if you're using a secure authentication solution like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, don't expose it with SWAG. Use a VPN like [WireGuard](/serveex/core/wireguard) instead.
::
You may want to access File Browser Quantum remotely from all your devices. To do that, we'll expose it through Swag.
You may want to access File Browser Quantum remotely from all your devices. To do that, we'll expose it through SWAG.
::note{icon=""}
@@ -149,7 +149,7 @@ Restart the stack by clicking "deploy" and wait for SWAG to fully initialize.
### Create the subdomain.conf file
In the Swag folders, create the file `fbq.subdomain.conf`.
In the SWAG folders, create the file `fbq.subdomain.conf`.
```bash [Terminal]
sudo nano /srv/docker/swag/config/nginx/proxy-confs/fbq.subdomain.conf
+9 -9
View File
@@ -8,7 +8,7 @@ description: Install Pingvin Share, a self-hosted file sharing platform to send
[Pingvin](https://github.com/stonith404/pingvin-share) is a tool for quickly sharing files, similar to WeTransfer. Its many sharing options (password, expiration time, custom link, etc.) make it the ideal tool for sharing files quickly. Pingvin can also create _upload requests_, i.e. a shareable link you can send to someone so they can upload their files for you to retrieve.
![picture](/img/serveex/pingvin.png)
![Pingvin Share web interface for uploading and sharing files](/img/serveex/pingvin.png)
## Installation
@@ -42,7 +42,7 @@ services:
```
::note
From here on, we assume the network name for Swag is `swag_default`.
From here on, we assume the network name for SWAG is `swag_default`.
::
::tip{icon=""}
@@ -74,8 +74,8 @@ Deploy the container and go to `http://yourserverip:3600`. That's it! Your Pingv
__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.
## 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{icon=""}
📋 __Prerequisite:__ <br/><br/>
@@ -113,7 +113,7 @@ Redeploy the stack by clicking "deploy" and wait for SWAG to be fully up.
### Create the subdomain.conf file
In the Swag folders, create the `pingvin.subdomain.conf` file.
In the SWAG folders, create the `pingvin.subdomain.conf` file.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
@@ -224,15 +224,15 @@ In your Authentik admin area, create an OAuth2/OpenID provider.
Fill in each section as follows, replacing `mydomain.com` with your own domain. Copy the `Client ID` and `Client Secret` fields somewhere safe.
![picture](/img/serveex/pingvin-auth1.png)
![picture](/img/serveex/pingvin-auth2.png)
![picture](/img/serveex/pingvin-auth3.png)
![Authentik OAuth2/OpenID provider configuration screen, part 1](/img/serveex/pingvin-auth1.png)
![Authentik OAuth2/OpenID provider configuration screen, part 2](/img/serveex/pingvin-auth2.png)
![Authentik OAuth2/OpenID provider configuration screen, part 3](/img/serveex/pingvin-auth3.png)
#### Create the application
Save and create a `pingvin` application as follows.
![picture](/img/serveex/pingvin-auth4.png)
![Authentik application creation screen for Pingvin Share](/img/serveex/pingvin-auth4.png)
#### Add the provider to your outpost
@@ -118,8 +118,8 @@ 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.
## 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
@@ -157,7 +157,7 @@ Redeploy the stack by clicking “deploy” and wait until SWAG is fully operati
### Create the subdomain.conf file
Inside the Swag config folders, create the file `code.subdomain.conf`.
Inside the SWAG config folders, create the file `code.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Tip:__ You can use **File Browser Quantum** to navigate and edit your files instead of using terminal commands.
@@ -73,8 +73,8 @@ Deploy the container and go to `http://yourserverip:3333`. Your Forgejo instance
__If it fails:__ check your firewall rules.
::
## Exposing Forgejo with Swag
The benefit of this setup is being able to access it remotely from any of your devices. To do so, well expose Forgejo through Swag.
## Exposing Forgejo with SWAG
The benefit of this setup is being able to access it remotely from any of your devices. To do so, well expose Forgejo through SWAG.
::note
@@ -112,7 +112,7 @@ Redeploy the stack by clicking "Deploy" and wait until SWAG is fully operational
### Create the subdomain.conf file
Inside the Swag folders, create the file `forgejo.subdomain.conf`.
Inside the SWAG folders, create the file `forgejo.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Tip:__ You can use **File Browser Quantum** to navigate and edit your files instead of using terminal commands.
@@ -51,8 +51,8 @@ Deploy the container and visit `http://yourserverip:3222`. Thats it, your IT
__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.
## 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
@@ -95,7 +95,7 @@ Restart the stack by clicking "deploy" and wait for SWAG to be fully operational
### Create the subdomain.conf file
Inside the Swag folders, create the file `tools.subdomain.conf`.
Inside the SWAG folders, create the file `tools.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Tip:__ You can use **File Browser Quantum** to navigate and edit your files instead of using terminal commands.
+11 -11
View File
@@ -1,5 +1,5 @@
---
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.
---
@@ -10,9 +10,9 @@ description: Install AdGuard Home for network-wide ad and tracker blocking with
It works as a DNS server that redirects tracking domains to a “black hole,” preventing your devices from connecting to them.
In practice, once it's in place, all you need to do is set your devices to use Adguard as their DNS server.
In practice, once it's in place, all you need to do is set your devices to use AdGuard as their DNS server.
![adguard](/img/serveex/adguard.png)
![AdGuard](/img/serveex/adguard.png)
**Quick reminder of how DNS works:**
@@ -20,14 +20,14 @@ When you visit a site or use an app, it makes requests to various domains to loa
By default, your device uses your ISP's DNS server, which is usually configured in your router or, for mobile devices, at the carriers CGNAT level. You can change this in your browser settings, your devices system settings, or even directly in your router, depending on your ISP.
Adguard will act as a middleman between your device and the upstream DNS servers. If you configure your devices to use Adguard:
AdGuard will act as a middleman between your device and the upstream DNS servers. If you configure your devices to use AdGuard:
- If the domain is not in a blocklist, Adguard queries the upstream DNS servers and returns the correct IP to your device.
- If the domain *is* in a blocklist, Adguard will block the request and return nothing, so the associated content wont load.
- If the domain is not in a blocklist, AdGuard queries the upstream DNS servers and returns the correct IP to your device.
- If the domain *is* in a blocklist, AdGuard will block the request and return nothing, so the associated content wont load.
This is how ads and malicious domains are blocked: Adguard blocks only the bad domains, allowing the rest of the page to load normally.
This is how ads and malicious domains are blocked: AdGuard blocks only the bad domains, allowing the rest of the page to load normally.
![Picture](/img/serveex/adguard.svg)
![Diagram of AdGuard filtering a DNS request against a blocklist](/img/serveex/adguard.svg)
## Installation
@@ -47,7 +47,7 @@ tree:
::note
We will also mount the `/srv/docker/swag/config/etc/letsencrypt` folder to access Swag's SSL certificate.
We will also mount the `/srv/docker/swag/config/etc/letsencrypt` folder to access SWAG's SSL certificate.
::
::steps{level="3"}
@@ -102,7 +102,7 @@ The setup wizard asks you to pick an admin interface port. Keep it at `3000`: th
### Done!
::
Thats it! Adguard is deployed.
Thats it! AdGuard is deployed.
## Exposing AdGuard with SWAG
To make AdGuard usable from outside your home network, you need to expose it.
@@ -363,7 +363,7 @@ To configure encryption:
- Go to _Settings_ then _Encryption_.
- Set the options as follows:
![Picture](/img/serveex/adguard-chiffrement.png)
![AdGuard Home encryption settings screen](/img/serveex/adguard-chiffrement.png)
- Below, in the _Certificates_ section, check _Use file path for certificate_
- In the input field, enter `/swag-ssl/live/mydomain.com/fullchain.pem`, replacing `mydomain.com` with your actual domain.
@@ -25,11 +25,11 @@ There are two main modes you should know:
- The first allows apps with native support for OpenID-compatible SSO to connect directly to Authentik. This is the preferred method, as the app itself decides whats public and whats protected.
![Picture](/img/serveex/auth-native.svg)
![Diagram of an app connecting natively to Authentik via OpenID](/img/serveex/auth-native.svg)
- The second method injects Authentik authentication through SWAG before reaching the target service.
![Picture](/img/serveex/auth-proxy.svg)
![Diagram of Authentik injecting authentication through SWAG as a reverse proxy](/img/serveex/auth-proxy.svg)
Both modes can be configured on a per-application basis.
@@ -374,15 +374,15 @@ Why do this when Dockge already has authentication? Because Dockge uses weak HTT
- Select _Applications_ then _Create with wizard_
- Fill in the fields as shown:
![Picture](/img/serveex/auth1.png)
![Authentik application creation wizard](/img/serveex/auth1.png)
- At the next step, choose "Forward authentication (single application)" and configure it as shown (flows are important):
![Picture](/img/serveex/auth2.png)
![Authentik forward authentication provider configuration](/img/serveex/auth2.png)
- Next, go to the _Outposts_ menu on the left and edit _authentik Embedded Outpost_:
![Picture](/img/serveex/auth3.png)
![Authentik embedded outpost application list](/img/serveex/auth3.png)
- Add the `dockge` application by moving it to the right column and save.
@@ -414,7 +414,7 @@ Repeat this process for each app you want to protect (unless it has native integ
Your new architecture looks like this:
![Picture](/img/serveex/authentik.svg)
![Diagram of the resulting architecture with Authentik protecting apps via SWAG](/img/serveex/authentik.svg)
## Protecting a Remote Server Service
For a [native application](/serveex/advanced/authentik/#protecting-a-native-app) (via OAuth 2.0 or other), nothing changes.
+2 -2
View File
@@ -155,7 +155,7 @@ The main benefit of this setup is being able to access Arcane remotely from all
::warning
Arcane's own local login has no multi-factor authentication. Only expose it if you're using [Pocket ID](/serveex/security/pocket-id) (see below) or [Authentik](/serveex/advanced/authentik) for login. Otherwise, don't expose it with SWAG. Use a VPN like [Wireguard](/serveex/core/wireguard) instead, especially given the level of access Arcane has over your host.
Arcane's own local login has no multi-factor authentication. Only expose it if you're using [Pocket ID](/serveex/security/pocket-id) (see below) or [Authentik](/serveex/advanced/authentik) for login. Otherwise, don't expose it with SWAG. Use a VPN like [WireGuard](/serveex/core/wireguard) instead, especially given the level of access Arcane has over your host.
::
::note
@@ -194,7 +194,7 @@ Here we assume the Arcane network name is `arcane_default`. You can check the co
### Create the subdomain.conf file
In the Swag folders, create the file `arcane.subdomain.conf`:
In the SWAG folders, create the file `arcane.subdomain.conf`:
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Tip:__ Use **File Browser Quantum** to navigate and edit files instead of using terminal commands.
+1 -1
View File
@@ -15,5 +15,5 @@ currently writing, come back later...
--
```
<div align="center">
<img src="/img/stockeex/stockeex-raid.svg" alt="Image" style="max-width: 60%;">
<img src="/img/stockeex/stockeex-raid.svg" alt="Diagram of a RAID array" style="max-width: 60%;">
</div>
+1 -1
View File
@@ -32,7 +32,7 @@ Discord alerts for GPU stock availability
::card
---
icon: i-cbi-adguard
title: Adguard CIDRE
title: AdGuard CIDRE
to: /nonsense/python/adguard-cidre
ui:
icon: text-[#68BC71]
@@ -1,33 +1,33 @@
---
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.
---
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
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, youll need to expose Adguard to the internet. Unfortunately, that means anyone can use it, potentially overloading your €1/month remote VPS.
It works great locally, but if you want all your devices (even on the go) to benefit, youll 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 Adguards blocklist.
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 AdGuards blocklist.
Thus, Adguard CIDRE Sync was born: a container that syncs Adguards blocklist with CIDREs updated IP ranges on a schedule of your choosing.
Thus, AdGuard CIDRE Sync was born: a container that syncs AdGuards blocklist with CIDREs updated IP ranges on a schedule of your choosing.
The idea is to:
- Backup Adguards config file on first run (original untouched version saved)
- Backup AdGuards config file on first run (original untouched version saved)
- Download selected country IP ranges via an environment variable
- Let you manually add custom IPs via a file
- Concatenate, backup the config again (as the updated version), and inject the list into the correct blocklist section
- Reload Adguard by restarting the container (using Docker socket proxy for limited permissions)
- Reload AdGuard by restarting the container (using Docker socket proxy for limited permissions)
All fully autonomous, with frequency set via environment variable in the `docker-compose` config.
More info directly on the repo:
::card{title="🐋 __Adguard CIDRE Sync__" to="https://git.djeex.fr/Djeex/adguard-cidre" target="_blank"}
Adguard blocklist sync bot
::card{title="🐋 __AdGuard CIDRE Sync__" to="https://git.djeex.fr/Djeex/adguard-cidre" target="_blank"}
AdGuard blocklist sync bot
::
@@ -8,7 +8,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. Thats 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.
::file-tree
---
@@ -23,7 +23,7 @@ With this setup, Docker Socket Proxy communicates with Socat Proxy in their isol
In short:
![](/img/nonsense/socat-proxy.svg)
![Diagram of Socat Proxy relaying the Docker socket between isolated networks](/img/nonsense/socat-proxy.svg)
For example, with Beszel, the configuration would look like this:
+2 -2
View File
@@ -21,7 +21,7 @@ Not every article stays current forever. This section keeps two kinds of leftove
::card
---
icon: i-simple-icons-wireguard
title: Wireguard 14
title: WireGuard 14
to: /recycled/deprecated/wireguard-14
ui:
icon: text-[#88171A]
@@ -55,7 +55,7 @@ The paid-tier alternative to Jellyfin
::card
---
icon: i-cbi-qbittorrent
title: Qbittorrent for Plex
title: qBittorrent for Plex
to: /recycled/alternatives/qbittorrent-for-plex
ui:
icon: text-[#2F67BA]
@@ -1,5 +1,5 @@
---
title: Wireguard 14
title: WireGuard 14
description: Archived guide to installing WireGuard VPN using linuxserver.io's older wireguard image, kept for reference only.
---
@@ -14,10 +14,10 @@ wg-easy 15 got a lot more complicated, "not so easy" anymore, arguably. That's e
## 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:
Here we will use [WireGuard](https://www.wireguard.com/), a secure and high-performance VPN server, using containers:
- [wg-easy](https://github.com/wg-easy/wg-easy) as the server, providing a very simple web UI to manage connections and download config files (including QR codes for phones)
- [Wireguard](https://docs.linuxserver.io/images/docker-wireguard/?h=wireguard) as the client for Linux systems
- [WireGuard](https://docs.linuxserver.io/images/docker-wireguard/?h=wireguard) as the client for Linux systems
Clients are also available for Windows, macOS, iOS, and Android.
@@ -32,7 +32,7 @@ To achieve this, well create a **Virtual Private Network** (VPN), i.e., a sec
Additionally, you can add your phone, laptop, or other devices to the VPN and securely access your server resources wherever you are.
![picture](/img/serveex/vpn.svg)
![Diagram of a VPN tunnel connecting a remote device to the home network](/img/serveex/vpn.svg)
In this diagram, machine 1 is part of two networks:
@@ -257,8 +257,8 @@ 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
- **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
::warning
@@ -268,4 +268,4 @@ __Warning:__ If a client device is on the same LAN as the server, edit `wg0.conf
And this is the result:
![picture](/img/serveex/wireguard.svg)
![Diagram of the WireGuard client-server tunnel setup](/img/serveex/wireguard.svg)
@@ -58,14 +58,14 @@ Deploy the container and go to `http://yourserverip:8010`. Thats it! Your Fil
__If it doesnt work:__ check your firewall rules.
::
## Exposing File Browser with Swag
## Exposing File Browser with SWAG
::warning
File Browser does not support multi-factor authentication. Exposing it publicly could put your systems at risk. Only do this if youre using a secure authentication solution like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, do not expose it with SWAG. Use a VPN like [Wireguard](/serveex/core/wireguard) instead.
File Browser does not support multi-factor authentication. Exposing it publicly could put your systems at risk. Only do this if youre using a secure authentication solution like [TinyAuth](/serveex/security/tinyauth) or [Authentik](/serveex/advanced/authentik/). Otherwise, do not expose it with SWAG. Use a VPN like [WireGuard](/serveex/core/wireguard) instead.
::
You may want to access File Browser remotely from all your devices. To do that, well expose it through Swag.
You may want to access File Browser remotely from all your devices. To do that, well expose it through SWAG.
::note
@@ -103,7 +103,7 @@ Restart the stack by clicking "deploy" and wait for SWAG to fully initialize.
### Create the subdomain.conf file
In the Swag folders, create the file `files.subdomain.conf`.
In the SWAG folders, create the file `files.subdomain.conf`.
```bash [Terminal]
sudo nano /srv/docker/swag/config/nginx/proxy-confs/files.subdomain.conf
@@ -15,7 +15,7 @@ This is an alternative to **Jellyfin**, kept here for reference. Plex isn't full
With *Plex Pass*, you can also organize and play your music content similar to Spotify, the difference being that its your content, hosted and streamed from your server.
![picture](/img/serveex/plex.png)
![Plex web interface showing a media library](/img/serveex/plex.png)
We'll also install [Tautulli](https://docs.linuxserver.io/images/docker-tautulli/), a tool that provides detailed stats about Plex. As always, we'll use linuxserver.io images where possible.
@@ -150,7 +150,7 @@ Plex offers a range of free movies/shows. After creating your account, I recomme
Then go to the _Remote Access_ section and manually select a port (well use `1234`). It's best not to use the default port.
![picture](/img/serveex/plex-port.png)
![Plex Remote Access settings with a manually chosen port](/img/serveex/plex-port.png)
- On your router, forward TCP port `1234` to port `32400` for your servers IP using [NAT rules](/general/networking/nat).
- Once done, return to Plex to verify that remote access is functional.
@@ -173,7 +173,7 @@ Simply add your media to `/media/movies` and `/media/tvseries` on your server. Y
If your media is stored on a network disk (e.g. NAS or external hard drive over the network), refer to the **Samba mount guide** so Plex can access it.
::
## Expose Tautulli with Swag
## 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.
@@ -1,5 +1,5 @@
---
title: Qbittorrent for Plex
title: qBittorrent for Plex
description: Install qBittorrent with Gluetun and ProtonVPN to download torrents securely behind a VPN on your self-hosted server.
---
@@ -8,22 +8,22 @@ description: Install qBittorrent with Gluetun and ProtonVPN to download torrents
::note{to="/serveex/media/qbittorrent"}
This is the seedbox setup paired with Plex rather than Jellyfin, kept here for reference. See **Qbittorrent** for the same setup paired with Jellyfin, the recommended alternative since Plex isn't fully self-hosted (its own relay, a required account) and gates features behind a Plex Pass paywall.
This is the seedbox setup paired with Plex rather than Jellyfin, kept here for reference. See **qBittorrent** for the same setup paired with Jellyfin, the recommended alternative since Plex isn't fully self-hosted (its own relay, a required account) and gates features behind a Plex Pass paywall.
::
![Picture](/img/serveex/qbit-vue.jpeg)
![VueTorrent web interface showing active torrent downloads](/img/serveex/qbit-vue.jpeg)
To safely download your favorite media, we'll build a system using:
- [Qbittorrent](https://github.com/linuxserver/docker-qbittorrent) as the BitTorrent client
- [qBittorrent](https://github.com/linuxserver/docker-qbittorrent) as the BitTorrent client
- [Proton VPN Plus](https://protonvpn.com/torrenting), a VPN to secure your traffic. You need a subscription (promos available) to access the BitTorrent protocol. You can also use another VPN as long as it supports BitTorrent.
- [Gluetun](https://github.com/qdm12/gluetun)
- [Qbittorrent port update](https://codeberg.org/TechnoSam/qbittorrent-gluetun-port-update) to automatically update the VPN port (which changes regularly).
- [qBittorrent port update](https://codeberg.org/TechnoSam/qbittorrent-gluetun-port-update) to automatically update the VPN port (which changes regularly).
- The [VueTorrent](https://github.com/gabe565/linuxserver-mod-vuetorrent) mod for a modern and intuitive UI.
Heres the system well set up:
![Picture](/img/serveex/qbit.svg)
![Diagram of qBittorrent routing its traffic through the Gluetun VPN tunnel](/img/serveex/qbit.svg)
## Configuration
@@ -39,7 +39,7 @@ tree:
- gluetun/
- compose.yaml
- .env
- "media # linked to Plex and Qbittorrent":
- "media # linked to Plex and qBittorrent":
- "downloads/ # generic downloads, selected in settings"
- "movies/ # used for downloading movies"
- "tvseries/ # used for downloading TV shows"
@@ -127,7 +127,7 @@ services:
### Configure the port-forwarding sync
Before editing the `.env` in Dockge, let's configure the download port update. Proton and most VPNs rotate the forwarding port, which must be communicated to Qbittorrent.
Before editing the `.env` in Dockge, let's configure the download port update. Proton and most VPNs rotate the forwarding port, which must be communicated to qBittorrent.
Weve added the mod `ghcr.io/t-anc/gsp-qbittorent-gluetun-sync-port-mod` to the container.
@@ -186,8 +186,8 @@ Detailed info:
| `UI_PORT` | Port for accessing the web UI | `5695` |
| `PR_KEY` | Private key from Proton | `buKsjNHLyzKMM1qYnzOy4s7SHfly` |
| `GSP_KEY` | Key you generated for port update | `MnBa47MeVmk7xiv` |
| `ID` | Qbittorrent UI login username | `user` |
| `PW` | Qbittorrent UI password | `password` |
| `ID` | qBittorrent UI login username | `user` |
| `PW` | qBittorrent UI password | `password` |
### Done!
::
@@ -218,7 +218,7 @@ Change your username and password in the "webui" settings.
### Done!
::
You're done! In Qbittorrent settings, under "Downloads", set `/media/downloads` as the default folder.
You're done! In qBittorrent settings, under "Downloads", set `/media/downloads` as the default folder.
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.
@@ -226,10 +226,10 @@ When adding a download, remember to select the proper directory so Plex can sync
::warning
Qbittorrent does not support multi-factor authentication. Exposing it to the internet may put your system at risk. Only do this if you use MFA via [Authentik](/serveex/advanced/authentik/). Otherwise, dont expose it with SWAG. Use a VPN like [Wireguard](/serveex/core/wireguard) instead.
qBittorrent does not support multi-factor authentication. Exposing it to the internet may put your system at risk. Only do this if you use MFA via [Authentik](/serveex/advanced/authentik/). Otherwise, dont expose it with SWAG. Use a VPN like [WireGuard](/serveex/core/wireguard) instead.
::
To start downloads from outside your home, without a VPN, you can expose the Qbittorrent web UI.
To start downloads from outside your home, without a VPN, you can expose the qBittorrent web UI.
::note
@@ -339,8 +339,8 @@ Press :kbd{value="Ctrl+O"}, then :kbd{value="Enter"} to save, and :kbd{value="Ct
### Done!
::
Wait a few minutes, then go to `https://seedbox.mydomain.com`. You should land on the Qbittorrent interface.
Wait a few minutes, then go to `https://seedbox.mydomain.com`. You should land on the qBittorrent interface.
And thats it! You now have a ready-to-use media center.
![Picture](/img/serveex/seed.svg)
![Diagram of the complete seedbox setup, from qBittorrent to SWAG](/img/serveex/seed.svg)
@@ -57,7 +57,7 @@ tree:
::warning
__Warning:__ Make sure to follow this file structure carefully, especially the `media` folder. This folder must be mounted **exactly the same way** in both the _Qbittorrent_ compose file (`/your/path/media:/media`) and the _arr_ applications.
If not, the _arr_ apps may not recognize the path provided by Qbittorrent and will fail to create _hardlinks_.
If not, the _arr_ apps may not recognize the path provided by qBittorrent and will fail to create _hardlinks_.
Without hardlinks, the _arr_ apps will copy the files instead, **doubling the space used** on your storage.
::
@@ -205,7 +205,7 @@ MEDIA_PATH=
|----------------|-------------------------------------------------------------------------------------------------|-------------|
| `PUID` | Set using your user info (check with `id yourusername`) | `1000` |
| `PGID` | Same as above | `1000` |
| `MEDIA_PATH` | Path to your media folder, here: `/media`. It must match the one used by Qbittorrent. | `/media` |
| `MEDIA_PATH` | Path to your media folder, here: `/media`. It must match the one used by qBittorrent. | `/media` |
Deploy the stack.
@@ -233,7 +233,7 @@ Create an account and choose *forms login*.
::warning
__Warning:__ If you already have movies in `movies` from Qbittorrent, do not let Radarr add them. Radarr might modify them, which could stop seeding in Qbittorrent.
__Warning:__ If you already have movies in `movies` from qBittorrent, do not let Radarr add them. Radarr might modify them, which could stop seeding in qBittorrent.
::
#### Configure Profiles
@@ -242,12 +242,12 @@ Go to *Settings > Profiles*. These are your default quality profiles. When you m
![profiles_radarr](/img/serveex/radarr1.png)
#### Add Qbittorrent
#### Add qBittorrent
In *Settings > Download Clients*, add Qbittorrent.
In *Settings > Download Clients*, add qBittorrent.
- Use your server IP as *Host* and port `5695` if following this guide.
- Provide your Qbittorrent *Username* and *Password*.
- Provide your qBittorrent *Username* and *Password*.
- Click *Test*.
- If successful, click *Save*.
@@ -75,8 +75,8 @@ Deploy the container and go to `http://yourserverip:3333`. Your Gitea instance i
__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.
## 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
@@ -114,7 +114,7 @@ Redeploy the stack by clicking "Deploy" and wait until SWAG is fully operational
### Create the subdomain.conf file
Inside the Swag folders, create the file `gitea.subdomain.conf`.
Inside the SWAG folders, create the file `gitea.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Tip:__ You can use **File Browser** to navigate and edit your files instead of using terminal commands.
+1 -1
View File
@@ -17,7 +17,7 @@ seo:
:::::
:::::div{class="my-6 pt-[25px] pb-[25px]"}
![](/img/global/docudjeex-home.svg){.w-full}
![Docudjeex homepage illustration](/img/global/docudjeex-home.svg){.w-full}
:::::
:::::div{class="flex flex-col sm:flex-row sm:items-center gap-3"}
+1 -1
View File
@@ -7,7 +7,7 @@ description: Comprendre le NAT, la redirection de ports et le DHCP sur un routeu
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
![picture](/img/global/nat.svg)
![Schéma du NAT traduisant une adresse LAN privée en adresse IP publique](/img/global/nat.svg)
## Qu'est-ce qu'un « port » ?
+1 -1
View File
@@ -12,7 +12,7 @@ Lorsque vous naviguez sur un site, ou une application, des requêtes sont émise
La zone DNS, c'est une sorte de registre avec des panneaux qui redirige vos requêtes vers la bonne destination.
![Picture](/img/global/dns.svg)
![Schéma d'une zone DNS dirigeant les requêtes vers le bon serveur](/img/global/dns.svg)
## La zone DNS
+1 -1
View File
@@ -8,7 +8,7 @@ description: Configurer Samba sur Debian pour partager des dossiers sur votre r
Samba est une implémentation libre du protocole SMB/CIFS, permettant d'accèder à un dossier situé sur un disque réseau. Il peut être configuré sous Mac, Windows ou Linux.
De nombreux tutorials existent pour configurer Samba sous windows ou sur un NAS type Synology, ici nous nous concentrons sur Debian.
De nombreux tutoriels existent pour configurer Samba sous Windows ou sur un NAS type Synology, ici nous nous concentrons sur Debian.
![samba](/img/global/smb.svg)
+5 -5
View File
@@ -30,7 +30,7 @@ Il existe plusieurs types de RAID, chacun ayant ses avantages et inconvénients.
### Sans 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;">
<img src="/img/global/no-raid.svg" alt="Disques sans redondance RAID" style="max-width: 30%; max-height:230px; margin-right: 20px;">
<ul>
<li>Vos disques sans RAID. Les données sont stockées disque par disque.</li>
<li>Si vous perdez un disque, seules ses données sont perdues.</li>
@@ -43,7 +43,7 @@ Utilisez vos disques sans RAID si vous navez pas peur de perdre des données
### 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;">
<img src="/img/global/raid0.svg" alt="RAID 0 répartissant les données entre les disques" style="max-width: 30%; max-height:230px; margin-right: 20px;">
<ul>
<li>Le système voit un seul disque.</li>
<li>Les données sont entrelacées entre tous les disques.</li>
@@ -59,7 +59,7 @@ Utilisez RAID 0 si vous souhaitez privilégier la performance et que la perte de
### 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;">
<img src="/img/global/raid1.svg" alt="RAID 1 dupliquant les données entre les disques" style="max-width: 30%; max-height:230px; margin-right: 20px;">
<ul>
<li>Le système voit un seul disque.</li>
<li>Tous les disques contiennent les mêmes données.</li>
@@ -78,7 +78,7 @@ Utilisez RAID 1 pour une redondance maximale. Chaque disque contient toutes les
### RAID 5
<p align="center">
<img src="/img/global/raid5.svg" alt="Image" style="max-width: 40%; margin-right: 20px;">
<img src="/img/global/raid5.svg" alt="RAID 5 avec parité distribuée" style="max-width: 40%; margin-right: 20px;">
</p>
- Le système voit un seul disque.
@@ -92,7 +92,7 @@ Utilisez RAID 5 pour un stockage fiable avec 3 à 5 disques et une perte minimal
### RAID 6
<p align="center">
<img src="/img/global/raid6.svg" alt="Image" style="max-width: 50%; margin-right: 20px;">
<img src="/img/global/raid6.svg" alt="RAID 6 avec double parité distribuée" style="max-width: 50%; margin-right: 20px;">
</p>
- Le système voit un seul disque.
+2 -2
View File
@@ -7,7 +7,7 @@ description: Introduction à ZFS, système de fichiers et gestionnaire de volume
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
ZFS est populaire dans le monde des serveurs, des NAS (comme FreeNAS / TrueNAS), de la virtualisation, et même chez les particuliers qui veulent un stockage résilient. C'est un _système de fichier_ (à l'instar de NTFS pour windows, EXT4, FAT32 etc...) mais également un _gestionnaire de volume_ (comme LVM par exemple).
ZFS est populaire dans le monde des serveurs, des NAS (comme FreeNAS / TrueNAS), de la virtualisation, et même chez les particuliers qui veulent un stockage résilient. C'est un _système de fichier_ (à l'instar de NTFS pour Windows, EXT4, FAT32 etc.) mais également un _gestionnaire de volume_ (comme LVM par exemple).
Pour le dire simplement :
@@ -24,7 +24,7 @@ Ce qui nous intéresse le plus :
- ses notifications en cas d'erreur
## Structure
![](/img/global/zfs.svg)
![ZFS logo](/img/global/zfs.svg)
ZFS dispose d'une structure particulière :
+5 -5
View File
@@ -31,7 +31,7 @@ Bien sûr, selon la taille, le nombre de ports et de fonctionnalité diffère. D
## Le 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;">
<img src="/img/global/cpu.svg" alt="Icône de CPU" style="max-width: 25%; max-height:230px; margin-right: 20px;">
<p>Le <strong>CPU</strong> (Central Processing Unit) est la supercalculette de lordinateur. Il traite la plupart des tâches logicielles. Aujourdhui les processeurs comportent plusieurs cœurs, parfois eux-mêmes divisés en deux de façon logicielle, afin de mieux répartir la charge de travail et optimiser son fonctionnement. Il nécessite d'être refroidi avec un dissipateur actif (avec ventilateur) ou passif (sans ventilateur) selon la chaleur qu'il dégage, et donc selon la puissance en Watt qu'il requiert. Dans le cadre d'un serveur, on veillera donc à le choisir selon les usages que l'on aura. </p>
</div>
@@ -51,7 +51,7 @@ Dans le cadre d'un homelab/NAS sans calcul intensif, aujourd'hui on se dirigera
## La RAM
<p align="center">
<img src="/img/global/ram.svg" alt="Image" style="max-width: 65%; margin-right: 20px;">
<img src="/img/global/ram.svg" alt="Icône de RAM" style="max-width: 65%; margin-right: 20px;">
</p>
La __RAM__ (Random Access Memory), est une zone de stockage éphémère ultra rapide utilisée par le CPU (et l'iGPU le cas échéant) pour stocker des informations et calculs le temps de les exécuter. Elle se vide régulièrement selon les sollicitations et se vide également à chaque extinction de la machine. Plus elle est performante, plus les calculs du processeur sont efficaces.
@@ -67,7 +67,7 @@ Selon la puissance requise, on choisira un GPU dédié avec sa propre VRAM (une
## Le ou les HDD
<p align="center">
<img src="/img/global/hdd.svg" alt="Image" style="max-width: 50%; margin-right: 20px;">
<img src="/img/global/hdd.svg" alt="Icône de disque dur" style="max-width: 50%; margin-right: 20px;">
</p>
Un __HDD__ (Hard Disk Drive) ou disque dur, est un composant servant à stocker des données. Autrefois, c'était le stockage standard des machines informatiques. Ils sont constitués d'un ou plusieurs disques superposés en plateau, et de têtes de lecture, presque comme une platine vinyle.
@@ -85,7 +85,7 @@ Il existe plusieurs formats de HDD : 3.5" et 2.5". De manière générale dans u
## Le ou les SSD
<p align="center">
<img src="/img/global/nvme.svg" alt="Image" style="max-width: 50%; margin-right: 20px;">
<img src="/img/global/nvme.svg" alt="Icône de SSD NVMe" style="max-width: 50%; margin-right: 20px;">
</p>
Un __SSD__ (Solid State Drive) est une petite carte sur laquelle sont soudées des puces de mémoires servant à stocker de l'information. Contrairement à la RAM, ces puces conservent les informations même lorsqu'elles ne sont pas alimentées et donc les conservent après un redémarrage. C'est ce qui sert globalement de stockage principal pour votre serveur.
@@ -144,7 +144,7 @@ Pour choisir votre alimentation, la convention est d'estimer la puissance élect
## Le boîtier
<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;">
<img src="/img/global/case.svg" alt="Icône de boîtier" style="max-width: 25%; max-height:230px; margin-right: 20px;">
<p>Le <strong>boîtier</strong> est également un composant essentiel pour votre machine. Il joue un rôle clé dans le refroidissement, avec ses ventilateurs et sa conception des flux d'air, et il détermine la compatibilité de format de votre carte mère, de votre alimentation et de l'éventuel GPU dédié que vous installerez.
</p>
</div>
@@ -12,7 +12,7 @@ Cet article a été écrit avant l'augmentation __massive__ des prix du matérie
Lorsque l'on se lance dans l'aventure de son serveur chez soi, on se pose souvent la question _« Avec quoi dois-je commencer ? »_, _« Cela coûte cher non ? »_, et on finit soit par ne pas le faire, soit par acheter un NAS propriétaire qu'on jettera à la poubelle au bout d'un an quand on aura compris que cela n'apporte rien à part des problèmes et de l'argent jeté par la fenêtre.
Un serveur, ce n'est pas une armoire. C'est n'importe quel ordinateur capable de faire tourner linux. C'est pour cela que les mini PC à base de processeurs N100 sont populaires. Pour 100-130€ sur des plateformes chinoises on a une machine sous linux capable de tourner H24 des années durant, et d'exécuter tout ce qu'on attend d'un serveur/cloud chez soi sans perdre en performances.
Un serveur, ce n'est pas une armoire. C'est n'importe quel ordinateur capable de faire tourner Linux. C'est pour cela que les mini PC à base de processeurs N100 sont populaires. Pour 100-130€ sur des plateformes chinoises on a une machine sous linux capable de tourner H24 des années durant, et d'exécuter tout ce qu'on attend d'un serveur/cloud chez soi sans perdre en performances.
Ce n'est objectivement pas cher et n'importe qui s'intéressant au sujet peut se lancer dans l'aventure.
@@ -20,7 +20,7 @@ Un Mini PC à 100 balles + un dock USB à 50 balles accueillant des disques durs
C'est tout simplement ça le **ProloNAS, un NAS accessible pour les prolo**. Charge à vous ensuite de calibrer votre besoin en Disques Durs.
![](/img/global/prolonas.svg)
![Schéma d'un mini PC associé à un boîtier DAS formant un ProloNAS](/img/global/prolonas.svg)
## Exemple de matériel
@@ -59,7 +59,7 @@ Rappelez vous le **ProloNAS** : un N100 4 cœurs, 16Go de RAM, un SSD de 512Go,
Une année.
Une année c'est le temps qu'il m'a fallu pour jeter à la poubelle mon Syno en me disant que j'aurais dû dès le départ partir sur mon **ProloNAS** (devenu un vrai serveur, depuis).
Les constructeurs vous mettent à disposition des OS linux customisés à leur sauce, ne partageant pas les catalogues d'applications linux des distributions majeures, avec des noyaux linux datant souvent de l'antiquité, et surtout des OS très fermés ne vous permettant pas de développer votre NAS exactement selon vos besoins. En gros, soit vous utilisez leurs applications, soit vous rentrez dans un monde de souffrance. Pour donner un exemple, de nombreux conteneurs docker ne fonctionnent pas sur ces NAS constructeurs car le kernel est tellement vieux qu'il ne peut supporter les versions pourtant pas toujours récentes de docker.
Les constructeurs vous mettent à disposition des OS Linux customisés à leur sauce, ne partageant pas les catalogues d'applications Linux des distributions majeures, avec des noyaux linux datant souvent de l'antiquité, et surtout des OS très fermés ne vous permettant pas de développer votre NAS exactement selon vos besoins. En gros, soit vous utilisez leurs applications, soit vous rentrez dans un monde de souffrance. Pour donner un exemple, de nombreux conteneurs docker ne fonctionnent pas sur ces NAS constructeurs car le kernel est tellement vieux qu'il ne peut supporter les versions pourtant pas toujours récentes de docker.
### Dépendance des mises à jour propriétaires
+4 -4
View File
@@ -9,7 +9,7 @@ navigation:
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
## Un homelab de débutant, pour les débutants
![](/img/serveex/serveex-server.svg)
![Schéma d'un serveur maison remplaçant les services cloud](/img/serveex/serveex-server.svg)
**Serveex** est avant tout un projet personnel visant à héberger chez soi le plus de services du quotidien possible, sans dépendre de plateformes propriétaires (Google, Apple, Netflix, etc.). L'objectif était d'expérimenter, d'apprendre, et de documenter chaque étape du chemin. C'est un projet purement scientifique, pas destiné à un usage en production.
@@ -62,7 +62,7 @@ to: /serveex/core/wireguard
ui:
icon: text-[#88171A]
---
Installer et déployer Wireguard
Installer et déployer WireGuard
::
::card{icon="i-noto-globe-showing-americas" title="Reverse Proxy" to="/serveex/core/swag"}
@@ -174,7 +174,7 @@ to: /serveex/media/qbittorrent
ui:
icon: text-[#2F67BA]
---
Installer et déployer Qbittorrent
Installer et déployer qBittorrent
::
::card
@@ -284,7 +284,7 @@ to: /serveex/apps/adguard
ui:
icon: text-[#68BC71]
---
Installer et déployer Adguard Home
Installer et déployer AdGuard Home
::
::card
@@ -10,7 +10,7 @@ description: Guide pas à pas pour installer Debian 13 sur un serveur maison et
L'autre raison, c'est qu'il ne vous donnera aucune limite, il ne vous enfermera jamais. Les systèmes clés en main comme Unraid, TrueNAS ou le DSM de Synology posent leur propre couche par-dessus, et le jour où vous avez besoin de quelque chose que leur interface n'expose pas, vous serez coincé ou devrez bricoler autour. Debian n'est qu'un serveur : vous installez ce que vous voulez, où vous voulez, et rien n'est caché derrière l'interface de quelqu'un d'autre. C'est exactement ce que la plupart des projets auto-hébergés visent en premier, leurs docs vous donnent donc des commandes `apt` qui fonctionnent telles quelles, et n'importe quel message d'erreur collé dans un moteur de recherche a déjà des années de réponses derrière lui. Une installation minimale est assez légère pour laisser la quasi intégralité de la RAM et du CPU à tous les délires que vous installerez dessus.
![picture](/img/serveex/server.svg)
![Icône de serveur](/img/serveex/server.svg)
## Installation
+2 -2
View File
@@ -12,7 +12,7 @@ Un **conteneur** contourne le problème : il empaquette une application avec tou
**Docker** est l'outil qui construit, démarre et gère ces conteneurs. Pointez-le sur une *image*, un instantané prêt à l'emploi d'une application maintenu par ses développeurs, et il la télécharge et la lance en une commande. Tout le reste de Serveex est bâti dessus : chaque application à partir d'ici est un conteneur Docker, ou une poignée de conteneurs qui travaillent ensemble.
![picture](/img/serveex/docker.svg)
![Schéma de conteneurs Docker isolés du système hôte](/img/serveex/docker.svg)
## Installer Docker
::steps{level="3"}
@@ -53,7 +53,7 @@ sudo mkdir /srv/docker
## Installer [Dockge](https://github.com/louislam/dockge) pour gérer et déployer les conteneurs
[Dockge](https://github.com/louislam/dockge) est un outil web permettant de créer, configurer, lancer et gérer des conteneurs pour Docker. C'est une interface simple, intuitive, qui est plus légère et plus facile pour les débutants que d'utiliser docker en CLI ou Portainer.
![picture](/img/serveex/dockge.png)
![Interface web de Dockge pour gérer les stacks Docker Compose](/img/serveex/dockge.png)
### Configuration
+6 -6
View File
@@ -1,5 +1,5 @@
---
title: Wireguard
title: WireGuard
description: Installer et configurer WireGuard VPN pour accéder à votre homelab de n'importe où et connecter tous vos appareils à votre réseau privé.
---
@@ -9,12 +9,12 @@ description: Installer et configurer WireGuard VPN pour accéder à votre homela
## Introduction
L'utilisation d'un VPN permet d'accéder à distance aux ressources locales du serveur sans les exposer sur internet. C'est notamment une manière propre de sécuriser l'accès à la console SSH, plutôt que d'exposer le port sur internet. C'est pouvoir se connecter à son réseau où que l'on soit, de manière sécurisée, et de faire dialoguer des machines qui sont sur des réseaux différents.
Ici nous utiliserons [Wireguard](https://www.wireguard.com/), un serveur VPN sécurisé et très performant, à l'aide des conteneurs :
Ici nous utiliserons [WireGuard](https://www.wireguard.com/), un serveur VPN sécurisé et très performant, à l'aide des conteneurs :
- [wg-easy](https://github.com/wg-easy/wg-easy) pour le serveur, qui propose une interface web très simple pour contrôler les connexions et télécharger les fichiers de conf (notamment par QR code pour les téléphones)
- [Wireguard](https://docs.linuxserver.io/images/docker-wireguard/?h=wireguard) pour les clients linux
- [WireGuard](https://docs.linuxserver.io/images/docker-wireguard/?h=wireguard) pour les clients Linux
Il existe aussi des clients Windows, MacOS, iOS et Android.
Il existe aussi des clients Windows, macOS, iOS et Android.
Le principe est le suivant :
@@ -27,7 +27,7 @@ Pour cela nous allons créer un **réseau privé virtuel**, ou VPN, c'est-à-dir
D'autre part, vous pourrez ajouter votre téléphone, un ordinateur portable ou n'importe quel appareil au réseau pour pouvoir utiliser vos ressources depuis vos appareils quotidiens, où que vous soyez.
![picture](/img/serveex/vpn.svg)
![Schéma d'un tunnel VPN reliant un appareil distant au réseau domestique](/img/serveex/vpn.svg)
Dans cette illustration, la machine 1 est sur deux réseaux :
@@ -276,4 +276,4 @@ Répétez cette installation pour chaque client.
Et voici le schéma final de l'installation :
![picture](/img/serveex/wireguard.svg)
![Schéma du tunnel client-serveur WireGuard](/img/serveex/wireguard.svg)
+5 -5
View File
@@ -6,7 +6,7 @@ description: Configurer SWAG comme reverse proxy avec SSL automatique, exposer v
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
[Swag](https://docs.linuxserver.io/general/swag/) est le noyau de ce homelab. C'est un reverse proxy puissant qui permet d'exposer des services sur internet via des noms de domaine, en se chargeant de l'émission des certificats SSL (pour garder des connexions chiffrées), du routage des requêtes et de la sécurisation des accès (par authentification HTTP ou par SSO comme Authelia ou Authentik). Toute la documentation nécessaire est [disponible ici](https://docs.linuxserver.io/general/swag).
[SWAG](https://docs.linuxserver.io/general/swag/) est le noyau de ce homelab. C'est un reverse proxy puissant qui permet d'exposer des services sur internet via des noms de domaine, en se chargeant de l'émission des certificats SSL (pour garder des connexions chiffrées), du routage des requêtes et de la sécurisation des accès (par authentification HTTP ou par SSO comme Authelia ou Authentik). Toute la documentation nécessaire est [disponible ici](https://docs.linuxserver.io/general/swag).
::warning{to="/serveex/core/wireguard"}
@@ -17,7 +17,7 @@ Ci-dessous, un exemple exposant Dockge. Nous installerons SWAG ainsi que le mod
**Principe d'un reverse proxy et application dans notre cas :**
![Picture](/img/serveex/reverse-proxy.svg)
![Schéma d'un reverse proxy redirigeant les requêtes vers le bon service](/img/serveex/reverse-proxy.svg)
## Installation
@@ -161,7 +161,7 @@ Enregistrez avec :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"}, et quittez avec
### Activer DBIP dans nginx.conf
Configurons maintenant swag pour accéder à DBIP, le module de contrôle d'accès par géolocalisation. Ouvrez le fichier `nginx.conf` :
Configurons maintenant SWAG pour accéder à DBIP, le module de contrôle d'accès par géolocalisation. Ouvrez le fichier `nginx.conf` :
```bash [Terminal]
sudo nano /srv/docker/swag/config/nginx/nginx.conf
@@ -182,7 +182,7 @@ Redémarrez la stack dans Dockge. Cette fois, le certificat SSL devrait être g
Accédez au tableau de bord en local sur `http://ipdevotreserveur:81`
Sur la gauche, vous verrez la liste des services actuellement « proxifiés » (aucun pour l'instant). Sur la droite, la liste des IP bannies. En dessous, différents indicateurs. Pour plus de détails, [cliquez ici](https://www.linuxserver.io/blog/introducing-swag-dashboard).
![picture](/img/serveex/swag-dashboard.png)
![Tableau de bord SWAG affichant les services proxifiés et les IP bannies](/img/serveex/swag-dashboard.png)
## DBIP
DBIP permet de bloquer les connexions selon les pays. Il s'appuie sur le fichier de configuration nommé `dbip.conf` situé dans `/srv/docker/swag/config/nginx`. [Plus d'infos ici](https://virtualize.link/secure/).
@@ -290,7 +290,7 @@ Il est temps d'exposer Dockge sur internet pour accéder à vos conteneurs et le
::warning
Dockge ne gère pas l'authentification multifacteur. L'exposer en ligne pourrait compromettre toutes les machines reliées. Ne le faites que si vous utilisez une solution MFA comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard).
Dockge ne gère pas l'authentification multifacteur. L'exposer en ligne pourrait compromettre toutes les machines reliées. Ne le faites que si vous utilisez une solution MFA comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [WireGuard](/serveex/core/wireguard).
::
::steps{level="3"}
@@ -60,7 +60,7 @@ Vous devez vous inscrire à _Cloudflare Teams_ pour pouvoir accéder au tableau
Inscrivez-vous [via ce lien](https://one.dash.cloudflare.com/).
## Configuration de Swag
## Configuration de SWAG
::note
Nous partons du principe que vous avez le domaine `mondomaine.fr` avec les DNS qui pointent bien vers ceux de Cloudflare, comme vu précédemment.
@@ -1,12 +1,12 @@
---
title: TinyAuth
description: Installer TinyAuth, un proxy de forward-auth léger, et l'associer à Pocket ID pour ajouter une connexion SSO devant vos applications auto-hébergées. Protéger votre application derrière Swag avec le forward-auth.
description: Installer TinyAuth, un proxy de forward-auth léger, et l'associer à Pocket ID pour ajouter une connexion SSO devant vos applications auto-hébergées. Protéger votre application derrière SWAG avec le forward-auth.
---
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
[TinyAuth](https://tinyauth.app) est une application qui permet de forcer une authentification avant d'accéder à un service : une page de connexion que Swag peut insérer devant n'importe quelle application avant de laisser passer une requête, en vérifiant si le visiteur est authentifié avant de le rediriger.
[TinyAuth](https://tinyauth.app) est une application qui permet de forcer une authentification avant d'accéder à un service : une page de connexion que SWAG peut insérer devant n'importe quelle application avant de laisser passer une requête, en vérifiant si le visiteur est authentifié avant de le rediriger.
![tinyauth](/img/serveex/tinyauth.png)
@@ -135,7 +135,7 @@ Elle redemande l'identifiant, le mot de passe et le code à 6 chiffres du moment
À partir de maintenant, cet utilisateur a besoin à la fois de son mot de passe et d'un code valide de son application d'authentification pour se connecter.
## Exposer TinyAuth avec Swag
## Exposer TinyAuth avec SWAG
TinyAuth a besoin de son propre sous-domaine : c'est la page sur laquelle les utilisateurs arrivent avant d'être redirigés vers l'application qu'ils veulent réellement.
::note
@@ -174,7 +174,7 @@ Nous partons ici du principe que le nom du réseau de TinyAuth est `tinyauth_def
### Créer le fichier subdomain.conf
Dans les dossiers de Swag, créez le fichier `tinyauth.subdomain.conf` :
Dans les dossiers de SWAG, créez le fichier `tinyauth.subdomain.conf` :
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Astuce :__ utilisez **File Browser Quantum** pour naviguer et modifier les fichiers plutôt que des commandes dans le terminal.
@@ -225,7 +225,7 @@ __Si ça ne marche pas :__ vérifiez les règles de votre pare-feu.
::
## Protéger une application via le reverse proxy
Swag ne fournit pas de fichier d'inclusion tout prêt pour TinyAuth, nous ajouterons donc la vérification forward-auth directement dans le `*.subdomain.conf` de l'application. Nous prendrons Dockge en exemple.
SWAG ne fournit pas de fichier d'inclusion tout prêt pour TinyAuth, nous ajouterons donc la vérification forward-auth directement dans le `*.subdomain.conf` de l'application. Nous prendrons Dockge en exemple.
::steps{level="3"}
### Ouvrir le fichier subdomain.conf de l'application
@@ -96,7 +96,7 @@ TRUST_PROXY=true
|----------|-------|---------|
| `APP_URL`{lang=properties} | L'URL publique par laquelle vous joindrez Pocket ID (voir l'exposition plus bas) | `https://id.mondomaine.fr` |
| `ENCRYPTION_KEY`{lang=properties} | La clé générée ci-dessus | `Q2pVEqsTNRkJSO9SkJzU3KZ2...` |
| `TRUST_PROXY`{lang=properties} | Nécessaire puisque Pocket ID se trouve derrière Swag | `true` |
| `TRUST_PROXY`{lang=properties} | Nécessaire puisque Pocket ID se trouve derrière SWAG | `true` |
Déployez la stack. L'interface locale est disponible sur `http://ipdevotreserveur:1411`.
@@ -114,7 +114,7 @@ Pocket ID n'utilise pas de mots de passe : votre premier compte est créé avec
Les passkeys exigent un contexte sécurisé : HTTPS, ou `localhost`. Enregistrer une passkey depuis `http://ipdevotreserveur:1411` sur une autre machine sera refusé par le navigateur, puisque c'est du HTTP simple vers une adresse qui n'est pas `localhost`. Si la configuration ne se termine pas en local, exposez d'abord Pocket ID (voir plus bas) et terminez la configuration en HTTPS.
::
## Exposer Pocket ID avec Swag
## Exposer Pocket ID avec SWAG
Les autres applications doivent joindre Pocket ID en HTTPS pour finaliser le processus de connexion OIDC, il doit donc être exposé même si vous ne l'utilisez que depuis chez vous.
::note
@@ -153,7 +153,7 @@ Nous partons ici du principe que le nom du réseau de Pocket ID est `pocket-id_d
### Créer le fichier subdomain.conf
Dans les dossiers de Swag, créez le fichier `id.subdomain.conf` :
Dans les dossiers de SWAG, créez le fichier `id.subdomain.conf` :
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Astuce :__ utilisez **File Browser Quantum** pour naviguer et modifier les fichiers plutôt que des commandes dans le terminal.
@@ -6,7 +6,9 @@ description: Installer Uptime-Kuma pour surveiller la disponibilité de vos serv
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
![picture](/img/serveex/uptime_kuma.jpg)
[Uptime-Kuma](https://github.com/louislam/uptime-kuma) est un outil de surveillance auto-hébergé qui vérifie régulièrement si vos autres services et sites sont en ligne et joignables, et vous alerte dès que l'un d'eux tombe. Il permet aussi de construire une page de statut publique pour partager l'état de vos services avec d'autres personnes.
![Tableau de bord Uptime-Kuma affichant les services surveillés et leur statut](/img/serveex/uptime_kuma.jpg)
## Installation
@@ -65,7 +67,7 @@ __Si ça ne marche pas :__ vérifiez les règles de votre pare-feu.
### Terminé !
::
## Exposer avec Swag
## Exposer avec SWAG
::note{icon=""}
📋 __Au préalable :__
<br/><br/>
@@ -74,13 +76,13 @@ Nous partons du principe que vous avez le sous-domaine `stats.mondomaine.fr` ave
::warning
Uptime-Kuma n'utilise pas d'authentification multifacteur. L'exposer sur internet pourrait compromettre les machines qu'il surveille. Ne le faites que si vous utilisez un système MFA comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG, utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard).
Uptime-Kuma n'utilise pas d'authentification multifacteur. L'exposer sur internet pourrait compromettre les machines qu'il surveille. Ne le faites que si vous utilisez un système MFA comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG, utilisez plutôt un VPN comme [WireGuard](/serveex/core/wireguard).
::
::steps{level="3"}
### Créer le fichier subdomain.conf
Dans les dossiers de Swag, créez le fichier `stats.subdomain.conf`.
Dans les dossiers de SWAG, créez le fichier `stats.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Astuce pour les allergiques au terminal :__
@@ -104,14 +104,14 @@ Déployez le conteneur. Allez sur `http://ipdevotreserveur:9135`. Et voilà, vot
### Terminé !
::
## Exposer Dozzle avec Swag
## Exposer Dozzle avec SWAG
::warning
Dozzle n'utilise pas d'authentification multifacteur. L'exposer sur internet pourrait compromettre les machines auxquelles il est relié. Ne le faites que si vous utilisez un système d'authentification multifacteur comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG et utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard).
Dozzle n'utilise pas d'authentification multifacteur. L'exposer sur internet pourrait compromettre les machines auxquelles il est relié. Ne le faites que si vous utilisez un système d'authentification multifacteur comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG et utilisez plutôt un VPN comme [WireGuard](/serveex/core/wireguard).
::
Vous voudrez peut-être accéder à Dozzle à distance et sur tous vos appareils. Pour cela, nous allons exposer Dozzle via Swag.
Vous voudrez peut-être accéder à Dozzle à distance et sur tous vos appareils. Pour cela, nous allons exposer Dozzle via SWAG.
::note{icon=""}
📋 __Au préalable :__
@@ -150,7 +150,7 @@ Nous partons du principe que le nom du réseau de Dozzle est `dozzle_default`. V
### Créer le fichier subdomain.conf
Dans le dossier de Swag, créez le fichier `dozzle.subdomain.conf`.
Dans le dossier de SWAG, créez le fichier `dozzle.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Astuce :__ vous pouvez utiliser **File Browser Quantum** pour naviguer et modifier vos fichiers plutôt que des commandes dans le terminal.
@@ -102,7 +102,7 @@ Nous voulons maintenant exposer Speedtest Tracker sur internet pour y accéder
::warning
Speedtest Tracker n'utilise pas d'authentification multifacteur. L'exposer sur internet pourrait compromettre les appareils connectés. Ne le faites que si vous utilisez un système multifacteur comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, évitez SWAG et préférez un VPN comme [Wireguard](/serveex/core/wireguard).
Speedtest Tracker n'utilise pas d'authentification multifacteur. L'exposer sur internet pourrait compromettre les appareils connectés. Ne le faites que si vous utilisez un système multifacteur comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, évitez SWAG et préférez un VPN comme [WireGuard](/serveex/core/wireguard).
::
::steps{level="3"}
@@ -182,14 +182,14 @@ Déployez la stack sur le serveur distant. Les données commenceront à remonter
__Si ça ne marche pas :__ vérifiez les règles de votre pare-feu.
::
## Exposer Beszel avec Swag
## Exposer Beszel avec SWAG
::warning
Beszel ne gère pas l'authentification multifacteur. L'exposer sur internet pourrait compromettre les machines connectées. Ne le faites que si vous utilisez un système comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard).
Beszel ne gère pas l'authentification multifacteur. L'exposer sur internet pourrait compromettre les machines connectées. Ne le faites que si vous utilisez un système comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [WireGuard](/serveex/core/wireguard).
::
Si vous voulez accéder à Beszel à distance depuis tous vos appareils, exposez-le avec Swag.
Si vous voulez accéder à Beszel à distance depuis tous vos appareils, exposez-le avec SWAG.
::note{icon="" to="/general/networking/nat"}
📋 __Au préalable :__
@@ -200,7 +200,7 @@ Vous devez avoir créé un sous-domaine DNS du type `beszel.mondomaine.fr` avec
::steps{level="3"}
### Ajouter le réseau de Beszel à SWAG
Dans Dockge, modifiez le fichier compose de Swag et ajoutez le réseau de Beszel :
Dans Dockge, modifiez le fichier compose de SWAG et ajoutez le réseau de Beszel :
```yaml [compose.yaml]
---
@@ -219,16 +219,16 @@ networks:
external: true
```
Redéployez la stack et attendez que Swag soit pleinement opérationnel.
Redéployez la stack et attendez que SWAG soit pleinement opérationnel.
::note
Nous partons du principe que le nom du réseau est `beszel_default`. Vous pouvez vérifier la connectivité en visitant le tableau de bord de Swag sur `http://ipdevotreserveur:81`.
Nous partons du principe que le nom du réseau est `beszel_default`. Vous pouvez vérifier la connectivité en visitant le tableau de bord de SWAG sur `http://ipdevotreserveur:81`.
::
### Créer le fichier subdomain.conf
Dans les dossiers de configuration de Swag, créez `beszel.subdomain.conf`.
Dans les dossiers de configuration de SWAG, créez `beszel.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Astuce :__ utilisez **File Browser Quantum** pour naviguer et modifier vos fichiers plutôt que des commandes dans le terminal.
@@ -85,14 +85,14 @@ Déployez le conteneur et allez sur `http://ipdevotreserveur:8095`. Suivez simpl
__Si ça ne marche pas :__ vérifiez les règles de votre pare-feu.
::
## Exposer UpSnap avec Swag
## Exposer UpSnap avec SWAG
::warning
UpSnap ne gère pas l'authentification multifacteur. L'exposer sur internet pourrait compromettre les machines connectées. Ne le faites que si vous utilisez un système d'authentification multifacteur comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, évitez de l'exposer avec SWAG et utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard).
UpSnap ne gère pas l'authentification multifacteur. L'exposer sur internet pourrait compromettre les machines connectées. Ne le faites que si vous utilisez un système d'authentification multifacteur comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, évitez de l'exposer avec SWAG et utilisez plutôt un VPN comme [WireGuard](/serveex/core/wireguard).
::
Vous voudrez peut-être y accéder à distance depuis tous vos appareils. Pour cela, nous allons exposer UpSnap via Swag.
Vous voudrez peut-être y accéder à distance depuis tous vos appareils. Pour cela, nous allons exposer UpSnap via SWAG.
::note{icon=""}
📋 __Au préalable :__
@@ -131,7 +131,7 @@ Nous partons ici du principe que le nom du réseau d'upsnap est `upsnap_default`
### Créer le fichier subdomain.conf
Dans les dossiers de Swag, créez le fichier `upsnap.subdomain.conf`.
Dans les dossiers de SWAG, créez le fichier `upsnap.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Astuce :__ vous pouvez utiliser **File Browser Quantum** pour naviguer dans vos fichiers et éditer vos documents plutôt que des commandes dans le terminal.
+1 -1
View File
@@ -16,7 +16,7 @@ Comme toujours, nous utiliserons l'[image linuxserver.io](https://docs.linuxserv
::note{to="/serveex/core/wireguard"}
Contrairement à Plex, Jellyfin n'a pas de relais cloud : pour accéder à votre serveur en dehors de votre réseau local, vous devez l'exposer vous-même (voir plus bas), ou utiliser un VPN comme **Wireguard**.
Contrairement à Plex, Jellyfin n'a pas de relais cloud : pour accéder à votre serveur en dehors de votre réseau local, vous devez l'exposer vous-même (voir plus bas), ou utiliser un VPN comme **WireGuard**.
::
## Installer Jellyfin
+14 -14
View File
@@ -1,24 +1,24 @@
---
title: Qbittorrent
title: qBittorrent
description: Installer qBittorrent avec Gluetun et ProtonVPN pour télécharger des torrents de manière sécurisée derrière un VPN sur votre serveur auto-hébergé.
---
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
![Picture](/img/serveex/qbit-vue.jpeg)
![Interface web de VueTorrent affichant des téléchargements actifs](/img/serveex/qbit-vue.jpeg)
Afin de télécharger vos media favoris en toute sécurité, nous allons monter un système à base de :
- [Qbittorent](https://github.com/linuxserver/docker-qbittorrent) comme logiciel de téléchargement bittorent
- [Proton VPN Plus](https://protonvpn.com/torrenting), VPN pour sécuriser vos échanges, auquel vous devez souscrire (il y a de nombreux codes promo) pour accéder au protocole Bittorent, mais vous pouvez également en choisir un autre, à condition qu'il propose le protocole bittorent.
- [Gluetun](https://github.com/qdm12/gluetun)
- [Qbittorrent port update](https://codeberg.org/TechnoSam/qbittorrent-gluetun-port-update) pour mettre automatiquement à jour le port de votre VPN (qui change régulièrement).
- [qBittorrent port update](https://codeberg.org/TechnoSam/qbittorrent-gluetun-port-update) pour mettre automatiquement à jour le port de votre VPN (qui change régulièrement).
- Et le mode [vuetorrent](https://github.com/gabe565/linuxserver-mod-vuetorrent) pour une interface moderne et intuitive.
Nous monterons ici le système ci-dessous :
![Picture](/img/serveex/qbit.svg)
![Schéma du trafic de qBittorrent passant par le tunnel VPN Gluetun](/img/serveex/qbit.svg)
## Configuration
@@ -34,7 +34,7 @@ tree:
- gluetun/
- compose.yaml
- .env
- "media # relié à Jellyfin et Qbittorrent":
- "media # relié à Jellyfin et qBittorrent":
- "downloads/ # téléchargements génériques, choisis dans les réglages"
- "movies/ # utilisé pour télécharger les films"
- "tvseries/ # utilisé pour télécharger les séries"
@@ -122,7 +122,7 @@ services:
### Configurer la mise à jour du port de téléchargement
Avant de renseigner le `.env` dans Dockge, configurons la mise à jour du port de téléchargement. Proton et la plupart des VPN font tourner le port de redirection, qui doit être communiqué à Qbittorrent.
Avant de renseigner le `.env` dans Dockge, configurons la mise à jour du port de téléchargement. Proton et la plupart des VPN font tourner le port de redirection, qui doit être communiqué à qBittorrent.
Nous avons ajouté le mod `ghcr.io/t-anc/gsp-qbittorent-gluetun-sync-port-mod` au conteneur.
@@ -181,8 +181,8 @@ Détail :
| `UI_PORT` | Port d'accès à l'interface web | `5695` |
| `PR_KEY` | Clé privée fournie par Proton | `buKsjNHLyzKMM1qYnzOy4s7SHfly` |
| `GSP_KEY` | Clé générée pour la mise à jour du port | `MnBa47MeVmk7xiv` |
| `ID` | Identifiant de connexion à l'interface Qbittorrent | `user` |
| `PW` | Mot de passe de l'interface Qbittorrent | `password` |
| `ID` | Identifiant de connexion à l'interface qBittorrent | `user` |
| `PW` | Mot de passe de l'interface qBittorrent | `password` |
### Terminé !
::
@@ -217,7 +217,7 @@ Changez votre identifiant et votre mot de passe dans les réglages « webui ».
### Terminé !
::
C'est terminé ! Dans les réglages de Qbittorrent, section « Téléchargements », définissez `/media/downloads` comme dossier par défaut.
C'est terminé ! Dans les réglages de qBittorrent, section « Téléchargements », définissez `/media/downloads` comme dossier par défaut.
Lors de l'ajout d'un téléchargement, pensez à choisir le bon dossier pour que Jellyfin se synchronise correctement (`/media/movies` ou `/media/tvseries`). Vous pouvez aussi automatiser cela avec des catégories et des dossiers.
@@ -225,10 +225,10 @@ Lors de l'ajout d'un téléchargement, pensez à choisir le bon dossier pour que
::warning
Qbittorrent ne gère pas l'authentification multifacteur. L'exposer sur internet peut mettre votre système en danger. Ne le faites que si vous utilisez du MFA via [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard).
qBittorrent ne gère pas l'authentification multifacteur. L'exposer sur internet peut mettre votre système en danger. Ne le faites que si vous utilisez du MFA via [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [WireGuard](/serveex/core/wireguard).
::
Pour lancer des téléchargements depuis l'extérieur, sans VPN, vous pouvez exposer l'interface web de Qbittorrent.
Pour lancer des téléchargements depuis l'extérieur, sans VPN, vous pouvez exposer l'interface web de qBittorrent.
::note
@@ -334,9 +334,9 @@ Appuyez sur :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"} pour enregistrer, et
### Terminé !
::
Attendez quelques minutes, puis allez sur `https://seedbox.mondomaine.fr`. Vous devriez arriver sur l'interface de Qbittorrent.
Attendez quelques minutes, puis allez sur `https://seedbox.mondomaine.fr`. Vous devriez arriver sur l'interface de qBittorrent.
## Protéger Qbittorrent avec TinyAuth
## Protéger qBittorrent avec TinyAuth
Ajoutez la vérification forward-auth de [TinyAuth](/serveex/security/tinyauth) directement dans `seedbox.subdomain.conf`, de la même façon que dans [le tutoriel TinyAuth](/serveex/security/tinyauth#protéger-une-application-via-le-reverse-proxy) :
```nginx [seedbox.subdomain.conf]{26-38,41-42}
@@ -418,4 +418,4 @@ Le bloc `location /tinyauth` s'exécute dans le conteneur de SWAG lui-même, SWA
Et voilà ! Vous avez maintenant un media center prêt à l'emploi.
![Picture](/img/serveex/seed.svg)
![Schéma complet de la seedbox, de qBittorrent à SWAG](/img/serveex/seed.svg)
+7 -7
View File
@@ -49,7 +49,7 @@ tree:
::warning
__Attention :__ respectez bien cette structure de fichiers, en particulier le dossier `media`. Ce dossier doit être monté **exactement de la même façon** dans le fichier compose de _Qbittorrent_ (`/votre/chemin/media:/media`) et dans les applications _arr_. Sinon, les applications _arr_ risquent de ne pas reconnaître le chemin fourni par Qbittorrent et ne créeront pas de _hardlinks_. Sans hardlinks, les applications _arr_ copieront les fichiers, ce qui **doublera l'espace utilisé** sur votre stockage.
__Attention :__ respectez bien cette structure de fichiers, en particulier le dossier `media`. Ce dossier doit être monté **exactement de la même façon** dans le fichier compose de _Qbittorrent_ (`/votre/chemin/media:/media`) et dans les applications _arr_. Sinon, les applications _arr_ risquent de ne pas reconnaître le chemin fourni par qBittorrent et ne créeront pas de _hardlinks_. Sans hardlinks, les applications _arr_ copieront les fichiers, ce qui **doublera l'espace utilisé** sur votre stockage.
::
::steps{level="3"}
@@ -170,7 +170,7 @@ MEDIA_PATH=
|----------------|-------------------------------------------------------------------------------------------------|-------------|
| `PUID` | À renseigner avec vos informations utilisateur (à vérifier avec `id votreutilisateur`) | `1000` |
| `PGID` | Idem | `1000` |
| `MEDIA_PATH` | Chemin de votre dossier média, ici `/media`. Il doit correspondre à celui utilisé par Qbittorrent. | `/media` |
| `MEDIA_PATH` | Chemin de votre dossier média, ici `/media`. Il doit correspondre à celui utilisé par qBittorrent. | `/media` |
::note
@@ -207,7 +207,7 @@ Créez un compte et choisissez *forms login*.
::warning
__Attention :__ si vous avez déjà des films dans `movies` provenant de Qbittorrent, ne laissez pas Radarr les ajouter. Radarr pourrait les modifier, ce qui interromprait le seed dans Qbittorrent.
__Attention :__ si vous avez déjà des films dans `movies` provenant de qBittorrent, ne laissez pas Radarr les ajouter. Radarr pourrait les modifier, ce qui interromprait le seed dans qBittorrent.
::
#### Configurer les profils
@@ -216,12 +216,12 @@ Allez dans *Settings > Profiles*. Ce sont vos profils de qualité par défaut. Q
![profiles_radarr](/img/serveex/radarr1.png)
#### Ajouter Qbittorrent
#### Ajouter qBittorrent
Dans *Settings > Download Clients*, ajoutez Qbittorrent.
Dans *Settings > Download Clients*, ajoutez qBittorrent.
- Utilisez l'IP de votre serveur comme *Host* et le port `5695` si vous suivez ce guide.
- Renseignez vos *Username* et *Password* Qbittorrent.
- Renseignez vos *Username* et *Password* qBittorrent.
- Cliquez sur *Test*.
- Si le test réussit, cliquez sur *Save*.
@@ -389,7 +389,7 @@ Il peut être utile d'exposer Seerr si vous voulez envoyer des demandes depuis l
::warning
Seerr n'a pas d'authentification à deux facteurs intégrée. Ne l'exposez que si vous utilisez une solution d'authentification robuste comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik). Sinon, ne l'exposez pas avec SWAG, utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard).
Seerr n'a pas d'authentification à deux facteurs intégrée. Ne l'exposez que si vous utilisez une solution d'authentification robuste comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik). Sinon, ne l'exposez pas avec SWAG, utilisez plutôt un VPN comme [WireGuard](/serveex/core/wireguard).
::
::note
+1 -1
View File
@@ -8,7 +8,7 @@ description: Installer Immich, une alternative auto-hébergée à Google Photos
[Immich](https://immich.app/docs/overview/introduction) est une solution auto-hébergée de gestion de photos et de vidéos qui remplace les services cloud comme Google Photos ou iCloud. Elle propose des fonctions puissantes comme la reconnaissance faciale et la géolocalisation.
![Picture](/img/serveex/immich.png)
![Interface web d'Immich affichant la chronologie d'une photothèque](/img/serveex/immich.png)
## Installation
+4 -4
View File
@@ -8,7 +8,7 @@ description: Installer Nextcloud pour auto-héberger vos fichiers, photos et age
[Nextcloud](https://nextcloud.com/) est une solution auto-hébergée qui permet d'accéder à vos données et de les synchroniser sur tous vos appareils. Elle inclut aussi des fonctions de collaboration, un agenda, et bien plus. C'est une excellente alternative à des services comme Google Drive, iCloud ou OneDrive.
![Picture](/img/serveex/nextcloud.png)
![Interface web de Nextcloud affichant fichiers et dossiers](/img/serveex/nextcloud.png)
## Installation
::note{to="https://docs.linuxserver.io/images/docker-nextcloud/"}
@@ -84,8 +84,8 @@ Déployez la stack et visitez `http://ipdevotreserveur:4545` pour terminer la co
__Si ça ne marche pas :__ vérifiez les règles de votre pare-feu.
::
## Exposer Nextcloud avec Swag
L'objectif de cette installation est d'accéder à Nextcloud à distance depuis tous vos appareils. Nous allons utiliser Swag pour exposer l'application.
## Exposer Nextcloud avec SWAG
L'objectif de cette installation est d'accéder à Nextcloud à distance depuis tous vos appareils. Nous allons utiliser SWAG pour exposer l'application.
::note
@@ -155,7 +155,7 @@ Appuyez sur :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"} pour enregistrer, et
### Créer le fichier subdomain.conf
Dans les dossiers de Swag, créez le fichier `nextcloud.subdomain.conf` :
Dans les dossiers de SWAG, créez le fichier `nextcloud.subdomain.conf` :
```bash [Terminal]
sudo nano /srv/docker/swag/config/nginx/proxy-confs/nextcloud.subdomain.conf
@@ -104,14 +104,14 @@ Déployez le conteneur et allez sur `http://ipdevotreserveur:8020`. Connectez-vo
__Si ça ne marche pas :__ vérifiez les règles de votre pare-feu.
::
## Exposer File Browser Quantum avec Swag
## Exposer File Browser Quantum avec SWAG
::warning
File Browser Quantum ne gère pas l'authentification multifacteur. L'exposer publiquement pourrait mettre vos systèmes en danger. Ne le faites que si vous utilisez une solution d'authentification robuste comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard).
File Browser Quantum ne gère pas l'authentification multifacteur. L'exposer publiquement pourrait mettre vos systèmes en danger. Ne le faites que si vous utilisez une solution d'authentification robuste comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [WireGuard](/serveex/core/wireguard).
::
Vous voudrez peut-être accéder à File Browser Quantum à distance depuis tous vos appareils. Pour cela, nous allons l'exposer à travers Swag.
Vous voudrez peut-être accéder à File Browser Quantum à distance depuis tous vos appareils. Pour cela, nous allons l'exposer à travers SWAG.
::note{icon=""}
@@ -149,7 +149,7 @@ Redémarrez la stack en cliquant sur « deploy » et attendez que SWAG soit comp
### Créer le fichier subdomain.conf
Dans les dossiers de Swag, créez le fichier `fbq.subdomain.conf`.
Dans les dossiers de SWAG, créez le fichier `fbq.subdomain.conf`.
```bash [Terminal]
sudo nano /srv/docker/swag/config/nginx/proxy-confs/fbq.subdomain.conf
+9 -9
View File
@@ -8,7 +8,7 @@ description: Installer Pingvin Share, une plateforme de partage de fichiers auto
[Pingvin](https://github.com/stonith404/pingvin-share) est un outil pour partager rapidement des fichiers, à la manière de WeTransfer. Ses nombreuses options de partage (mot de passe, durée d'expiration, lien personnalisé, etc.) en font l'outil idéal pour partager des fichiers rapidement. Pingvin peut aussi créer des _demandes d'envoi_, c'est-à-dire un lien partageable à envoyer à quelqu'un pour qu'il dépose ses fichiers et que vous les récupériez.
![picture](/img/serveex/pingvin.png)
![Interface web de Pingvin Share pour envoyer et partager des fichiers](/img/serveex/pingvin.png)
## Installation
@@ -42,7 +42,7 @@ services:
```
::note
À partir d'ici, nous partons du principe que le nom du réseau de Swag est `swag_default`.
À partir d'ici, nous partons du principe que le nom du réseau de SWAG est `swag_default`.
::
::tip{icon=""}
@@ -74,8 +74,8 @@ Déployez le conteneur et allez sur `http://ipdevotreserveur:3600`. Et voilà !
__Si ça ne marche pas :__ vérifiez les règles de votre pare-feu.
::
## Exposer Pingvin avec Swag
Tout l'intérêt d'une solution comme celle-ci est de pouvoir y accéder à distance, depuis tous vos appareils. Pour cela, nous allons exposer Pingvin à travers Swag.
## Exposer Pingvin avec SWAG
Tout l'intérêt d'une solution comme celle-ci est de pouvoir y accéder à distance, depuis tous vos appareils. Pour cela, nous allons exposer Pingvin à travers SWAG.
::note{icon=""}
📋 __Au préalable :__ <br/><br/>
@@ -113,7 +113,7 @@ Redéployez la stack en cliquant sur « deploy » et attendez que SWAG soit comp
### Créer le fichier subdomain.conf
Dans les dossiers de Swag, créez le fichier `pingvin.subdomain.conf`.
Dans les dossiers de SWAG, créez le fichier `pingvin.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
@@ -224,15 +224,15 @@ Dans l'espace d'administration d'Authentik, créez un provider OAuth2/OpenID.
Remplissez chaque section comme suit, en remplaçant `mondomaine.fr` par votre propre domaine. Copiez les champs `Client ID` et `Client Secret` en lieu sûr.
![picture](/img/serveex/pingvin-auth1.png)
![picture](/img/serveex/pingvin-auth2.png)
![picture](/img/serveex/pingvin-auth3.png)
![Écran de configuration du fournisseur OAuth2/OpenID d'Authentik, partie 1](/img/serveex/pingvin-auth1.png)
![Écran de configuration du fournisseur OAuth2/OpenID d'Authentik, partie 2](/img/serveex/pingvin-auth2.png)
![Écran de configuration du fournisseur OAuth2/OpenID d'Authentik, partie 3](/img/serveex/pingvin-auth3.png)
#### Créer l'application
Enregistrez et créez une application `pingvin` comme suit.
![picture](/img/serveex/pingvin-auth4.png)
![Écran de création de l'application Authentik pour Pingvin Share](/img/serveex/pingvin-auth4.png)
#### Ajouter le provider à votre outpost
@@ -118,8 +118,8 @@ services:
```
Une fois dans VS Code, vous aurez accès au dossier monté.
## Exposer code-server avec Swag
Tout l'intérêt d'une telle solution est d'y accéder à distance depuis n'importe quel appareil. Pour cela, nous allons exposer code-server via Swag.
## Exposer code-server avec SWAG
Tout l'intérêt d'une telle solution est d'y accéder à distance depuis n'importe quel appareil. Pour cela, nous allons exposer code-server via SWAG.
::note
@@ -157,7 +157,7 @@ Redéployez la stack en cliquant sur « deploy » et attendez que SWAG soit plei
### Créer le fichier subdomain.conf
Dans les dossiers de configuration de Swag, créez le fichier `code.subdomain.conf`.
Dans les dossiers de configuration de SWAG, créez le fichier `code.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Astuce :__ vous pouvez utiliser **File Browser Quantum** pour naviguer et modifier vos fichiers plutôt que des commandes dans le terminal.
@@ -73,8 +73,8 @@ Déployez le conteneur et allez sur `http://ipdevotreserveur:3333`. Votre instan
__Si ça ne marche pas :__ vérifiez les règles de votre pare-feu.
::
## Exposer Forgejo avec Swag
L'intérêt de cette installation est de pouvoir y accéder à distance depuis n'importe lequel de vos appareils. Pour cela, nous allons exposer Forgejo à travers Swag.
## Exposer Forgejo avec SWAG
L'intérêt de cette installation est de pouvoir y accéder à distance depuis n'importe lequel de vos appareils. Pour cela, nous allons exposer Forgejo à travers SWAG.
::note
@@ -112,7 +112,7 @@ Redéployez la stack en cliquant sur « Deploy » et attendez que SWAG soit plei
### Créer le fichier subdomain.conf
Dans les dossiers de Swag, créez le fichier `forgejo.subdomain.conf`.
Dans les dossiers de SWAG, créez le fichier `forgejo.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Astuce :__ vous pouvez utiliser **File Browser Quantum** pour naviguer et modifier vos fichiers plutôt que des commandes dans le terminal.
@@ -51,8 +51,8 @@ Déployez le conteneur et visitez `http://ipdevotreserveur:3222`. Voilà, votre
__Si ça ne marche pas :__ vérifiez les règles de votre pare-feu.
::
## Exposer IT Tools avec Swag
Vous voudrez peut-être y accéder à distance sur tous vos appareils. Pour cela, nous allons exposer IT Tools avec Swag.
## Exposer IT Tools avec SWAG
Vous voudrez peut-être y accéder à distance sur tous vos appareils. Pour cela, nous allons exposer IT Tools avec SWAG.
::note
@@ -95,7 +95,7 @@ Redémarrez la stack en cliquant sur « deploy » et attendez que SWAG soit plei
### Créer le fichier subdomain.conf
Dans les dossiers de Swag, créez le fichier `tools.subdomain.conf`.
Dans les dossiers de SWAG, créez le fichier `tools.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Astuce :__ vous pouvez utiliser **File Browser Quantum** pour naviguer et modifier vos fichiers plutôt que des commandes dans le terminal.
+16 -16
View File
@@ -1,5 +1,5 @@
---
title: Adguard Home
title: AdGuard Home
description: Installer AdGuard Home pour bloquer publicités et trackers à l'échelle du réseau avec DNS-over-HTTPS, gestion des clients et règles de filtrage personnalisées.
---
@@ -12,7 +12,7 @@ Il fonctionne comme un serveur DNS qui redirige les domaines de suivi vers un «
En pratique, une fois en place, il vous faudra juste configurer les serveurs DNS de vos appareils, pour que ces derniers l'utilisent.
![adguard](/img/serveex/adguard.png)
![AdGuard](/img/serveex/adguard.png)
**Rappel sur le fonctionnement d'un DNS :**
@@ -20,14 +20,14 @@ Lorsque vous naviguez sur un site, ou une application, des requêtes sont émise
Par défaut, votre appareil utilise le serveur de votre fournisseur d'accès, paramétré dans votre box ou directement sur le CGNAT de votre opérateur si appareil mobile. Cela peut être changé directement dans les réglages de votre navigateur, mais aussi dans le système de votre appareil, et parfois directement dans votre box si votre FAI le permet.
Adguard lui, va s'intercaler entre le serveur de nom et votre appareil. Si vous paramétrez vos appareil, ils contacteront d'abord adguard qui filtrera les requêtes, via des listes régulièrement mises à jour :
AdGuard lui, va s'intercaler entre le serveur de nom et votre appareil. Si vous paramétrez vos appareil, ils contacteront d'abord AdGuard qui filtrera les requêtes, via des listes régulièrement mises à jour :
- Si le domaine n'est pas dans une blocklist, il contactera des serveurs de noms génériques (dit upstreams) et répondra vers vos appareils avec l'adresse IP recherchée.
- Si le domaine est dans une blocklist, il ne contactera pas les DNS upstream et ne répondra pas à vos appareils. Le contenu affilié à cette requête ne s'affichera pas.
C'est ainsi que les pubs et domaines malveillants sont bloqués : leurs domaines sont présents dans la blocklist, le reste de la page lui charge correctement.
![Picture](/img/serveex/adguard.svg)
![Schéma d'AdGuard filtrant une requête DNS selon une liste de blocage](/img/serveex/adguard.svg)
## Installation
@@ -47,7 +47,7 @@ tree:
::note
Nous monterons également le dossier `/srv/docker/swag/config/etc/letsencrypt` pour accéder au certificat SSL de Swag.
Nous monterons également le dossier `/srv/docker/swag/config/etc/letsencrypt` pour accéder au certificat SSL de SWAG.
::
::steps{level="3"}
@@ -102,7 +102,7 @@ L'assistant de configuration vous demande de choisir un port pour l'interface d'
### Terminé !
::
C'est tout ! Adguard est déployé.
C'est tout ! AdGuard est déployé.
## Exposer AdGuard avec SWAG
Pour rendre AdGuard utilisable en dehors de votre réseau domestique, vous devez l'exposer.
@@ -347,23 +347,23 @@ Le bloc `location /tinyauth` s'exécute dans le conteneur de SWAG lui-même, SWA
<br/><br/>
Vous pouvez protéger cette app avec Authentik en ouvrant `adguard.subdomain.conf` et en retirant les `#` devant `include /config/nginx/authentik-server.conf;`{lang=nginx} et `include /config/nginx/authentik-location.conf;`{lang=nginx}. n'oubliez pas de [créer une application et un fournisseur dans Authentik](/serveex/advanced/authentik#protéger-une-app-par-reverse-proxy). Il vous faudra exclure l'url `https://adguard.mondomaine.fr/dns-query` de l'authentification :
- Éditez le fournisseur d'Adguard
- Éditez le fournisseur d'AdGuard
- Dans *paramètres avancés du protocole > chemins authentifiés*, saisissez `^/dns-query`
::
Enregistrez avec :kbd{value="Ctrl+O"} puis :kbd{value="Entrée"}, puis quittez avec :kbd{value="Ctrl+X"}.
Et voilà, vous exposez Adguard à présent !
Et voilà, vous exposez AdGuard à présent !
## Configurer le chiffrement SSL/TLS
Le chiffrement est essentiel si vous souhaitez garder privées les requêtes que vous faites vers adguard. Chiffrer ces requêtes c'est vous assurer que personne, même votre FAI, ne connaisse votre historique. C'est aussi vous assurer que personne d'autre que votre serveur vous répond.
Le chiffrement est essentiel si vous souhaitez garder privées les requêtes que vous faites vers AdGuard. Chiffrer ces requêtes c'est vous assurer que personne, même votre FAI, ne connaisse votre historique. C'est aussi vous assurer que personne d'autre que votre serveur vous répond.
Afin de configurer le chiffrement :
- Allez dans _paramètre_ puis dans _chiffrement_.
- Paramétrez comme suit
![Picture](/img/serveex/adguard-chiffrement.png)
![Écran des réglages de chiffrement d'AdGuard Home](/img/serveex/adguard-chiffrement.png)
- Puis en dessous, dans la section _certificats_ cochez _Définir un emplacement de fichier du certificat_
- Dans le champ de saisie, mettez `/swag-ssl/live/mondomaine.fr/fullchain.pem` en remplaçant `mondomaine.fr` par votre domaine principal.
@@ -376,7 +376,7 @@ Et voilà ! Vous avez protégé vos futures requêtes DNS !
## Configurer les appareils
Pour configurer vos appareils, vous avez plusieurs choix (que vous pouvez cumuler).
### Sécuriser le réseau local
Vous pouvez sécuriser votre réseau local avec adguard en configurant votre box pour que chaque requête DNS soit dirigée par défaut vers adguard plutôt que les services de votre FAI. Attention, votre box doit pouvoir permettre le changement de DNS (Orange ne le permet pas).
Vous pouvez sécuriser votre réseau local avec AdGuard en configurant votre box pour que chaque requête DNS soit dirigée par défaut vers AdGuard plutôt que les services de votre FAI. Attention, votre box doit pouvoir permettre le changement de DNS (Orange ne le permet pas).
Généralement cette option est dans les paramètres _DHCP_ de votre box. Pensez bien à ajouter un serveur secondaire tel que :
@@ -390,14 +390,14 @@ En effet, sans cela, si votre serveur tombe, vos appareils n'arriveraient plus
Des appareils peuvent avoir un autre DNS paramétré et ne pas utiliser ceux de la box.
::
### Forcer un navigateur à utiliser Adguard
### Forcer un navigateur à utiliser AdGuard
Dans votre navigateur, vous pouvez configurer un DNS pour le forcer à utiliser adguard home.
Dans votre navigateur, vous pouvez configurer un DNS pour le forcer à utiliser AdGuard home.
Dans les paramètres, il vous faudra renseigner l'adresse `https://adguard.mondomaine.fr/dns-query`
### Windows, paramétrer Adguard au niveau système
### Windows, paramétrer AdGuard au niveau système
Dans windows, vous devez paramétrer Adguard pour chaque carte réseau que vous souhaitez utiliser.
Dans Windows, vous devez paramétrer AdGuard pour chaque carte réseau que vous souhaitez utiliser.
- Rendez vous dans _accueil > Réseau et internet >_ et choisissez votre carte réseau à modifier
- Cliquez sur _modifier les DNS_ (parfois dans _propriété du matériel_)
@@ -408,7 +408,7 @@ Dans windows, vous devez paramétrer Adguard pour chaque carte réseau que vous
- Désactivez _retour au texte en clair_
- Enregistrez
Tous les programmes de votre machine utilisant cette carte réseau seront filtrés par Adguard.
Tous les programmes de votre machine utilisant cette carte réseau seront filtrés par AdGuard.
## Ajouter des filtres
@@ -25,11 +25,11 @@ Il y a deux modes principaux à connaître :
- Le premier permet aux applications gérant nativement le SSO compatible OpenID de se connecter directement à Authentik. C'est la méthode à privilégier, puisque l'application décide elle-même de ce qui est public et de ce qui est protégé.
![Picture](/img/serveex/auth-native.svg)
![Schéma d'une application se connectant nativement à Authentik via OpenID](/img/serveex/auth-native.svg)
- La seconde méthode injecte l'authentification Authentik via SWAG avant d'atteindre le service cible.
![Picture](/img/serveex/auth-proxy.svg)
![Schéma d'Authentik injectant l'authentification via SWAG en reverse proxy](/img/serveex/auth-proxy.svg)
Les deux modes se configurent application par application.
@@ -375,15 +375,15 @@ Pourquoi faire cela alors que Dockge a déjà une authentification ? Parce que D
- Choisissez _Applications_ puis _Create with wizard_
- Remplissez les champs comme suit :
![Picture](/img/serveex/auth1.png)
![Assistant de création d'application Authentik](/img/serveex/auth1.png)
- À l'étape suivante, choisissez « Forward authentication (single application) » et configurez comme suit (les flows sont importants) :
![Picture](/img/serveex/auth2.png)
![Configuration du fournisseur d'authentification forward-auth d'Authentik](/img/serveex/auth2.png)
- Ensuite, allez dans le menu _Outposts_ à gauche et modifiez _authentik Embedded Outpost_ :
![Picture](/img/serveex/auth3.png)
![Liste des applications de l'outpost intégré d'Authentik](/img/serveex/auth3.png)
- Ajoutez l'application `dockge` en la déplaçant dans la colonne de droite et enregistrez.
@@ -415,7 +415,7 @@ Répétez cette procédure pour chaque application que vous voulez protéger (sa
Votre nouvelle architecture ressemble à ceci :
![Picture](/img/serveex/authentik.svg)
![Schéma de l'architecture obtenue avec Authentik protégeant les applications via SWAG](/img/serveex/authentik.svg)
## Protéger un service sur un serveur distant
Pour une [application native](/serveex/advanced/authentik/#protecting-a-native-app) (via OAuth 2.0 ou autre), rien ne change.
+2 -2
View File
@@ -155,7 +155,7 @@ Le principal intérêt de cette installation est de pouvoir accéder à Arcane
::warning
La connexion locale d'Arcane n'a pas d'authentification multifacteur. Ne l'exposez que si vous utilisez [Pocket ID](/serveex/security/pocket-id) (voir plus bas) ou [Authentik](/serveex/advanced/authentik) pour la connexion. Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard), surtout vu le niveau d'accès qu'Arcane a sur votre hôte.
La connexion locale d'Arcane n'a pas d'authentification multifacteur. Ne l'exposez que si vous utilisez [Pocket ID](/serveex/security/pocket-id) (voir plus bas) ou [Authentik](/serveex/advanced/authentik) pour la connexion. Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [WireGuard](/serveex/core/wireguard), surtout vu le niveau d'accès qu'Arcane a sur votre hôte.
::
::note
@@ -194,7 +194,7 @@ Nous partons ici du principe que le nom du réseau d'Arcane est `arcane_default`
### Créer le fichier subdomain.conf
Dans les dossiers de Swag, créez le fichier `arcane.subdomain.conf` :
Dans les dossiers de SWAG, créez le fichier `arcane.subdomain.conf` :
::tip{icon="" to="/serveex/files/file-browser-quantum"}
__Astuce :__ utilisez **File Browser Quantum** pour naviguer et modifier les fichiers plutôt que des commandes dans le terminal.
+1 -1
View File
@@ -15,5 +15,5 @@ currently writing, come back later...
--
```
<div align="center">
<img src="/img/stockeex/stockeex-raid.svg" alt="Image" style="max-width: 60%;">
<img src="/img/stockeex/stockeex-raid.svg" alt="Schéma d'une grappe RAID" style="max-width: 60%;">
</div>
+1 -1
View File
@@ -32,7 +32,7 @@ Des alertes Discord sur la disponibilité des GPU
::card
---
icon: i-cbi-adguard
title: Adguard CIDRE
title: AdGuard CIDRE
to: /nonsense/python/adguard-cidre
ui:
icon: text-[#68BC71]
@@ -1,33 +1,33 @@
---
title: Adguard CIDRE
title: AdGuard CIDRE
description: Un script Python pour synchroniser automatiquement les listes CIDR d'AdGuard Home et sécuriser votre serveur DNS auto-hébergé exposé sur internet.
---
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
Adguard Home est une solution merveilleuse pour filter ses requêtes DNS et ainsi se débarasser de la publicité ou des DNS des fournisseurs d'accès, ou encore réécrire des requetes.
AdGuard Home est une solution merveilleuse pour filter ses requêtes DNS et ainsi se débarasser de la publicité ou des DNS des fournisseurs d'accès, ou encore réécrire des requetes.
Quand c'est en local, c'est très chouette. Mais quand on veut que tout ses appareils en profitent même à l'exterieur, on est obligé de l'exposer sur le net. Et n'importe qui peut s'en servir et saturer le petit remote à 1€ qu'on a pris pour l'heberger.
Adguard permet d'avoir des listes de clients autorisés ou bloqués. Problème, pour autoriser un client il faut son IP, et dans le cas d'un téléphone sur le réseau mobile, beh elle change régulièrement. L'idée est donc plutot de bloquer des listes générales plutot que d'autoriser des IP qui de toute façon changent régulièrement.
AdGuard permet d'avoir des listes de clients autorisés ou bloqués. Problème, pour autoriser un client il faut son IP, et dans le cas d'un téléphone sur le réseau mobile, beh elle change régulièrement. L'idée est donc plutot de bloquer des listes générales plutot que d'autoriser des IP qui de toute façon changent régulièrement.
CIDRE est un outil qui permet de synchroniser des listes de plages IP géolocalisées mises à jour régulièrement avec un pare feu. Plutot que de faire tourner CIDRE sur le remote complet avec des règles de pare feu complexes, je me suis dit qu'il fallait simplement s'arranger pour ajouter les plages IP à jour que CIDRE propose au systeme de block list d'adguard, selon les pays que l'on souhaite bloquer.
CIDRE est un outil qui permet de synchroniser des listes de plages IP géolocalisées mises à jour régulièrement avec un pare feu. Plutot que de faire tourner CIDRE sur le remote complet avec des règles de pare feu complexes, je me suis dit qu'il fallait simplement s'arranger pour ajouter les plages IP à jour que CIDRE propose au systeme de block list d'AdGuard, selon les pays que l'on souhaite bloquer.
C'est ainsi qu'est né Adguard CIDRE Sync, un conteneur qui synchronise régulièrement la block list d'Adguard avec les plages IP recensées par CIDRE à la fréquence que vous voulez.
C'est ainsi qu'est né AdGuard CIDRE Sync, un conteneur qui synchronise régulièrement la block list d'AdGuard avec les plages IP recensées par CIDRE à la fréquence que vous voulez.
L'idée etant de :
- Backup le fichier de conf d'Adguard au premier lancement (le fichier jamais touché par le robot est ainsi conservé au cas où)
- Backup le fichier de conf d'AdGuard au premier lancement (le fichier jamais touché par le robot est ainsi conservé au cas où)
- Télécharger la liste des pays selectionnés via une variable d'environnement
- Permettre d'ajouter soi-meme des IP "à la main" dans un fichier
- Concaténer le tout, backup le fichier de conf (dernière update), et injecter la liste dans la bonne section du fichier de conf d'Adguard
- Recharger Adguard en relançant le container (accès au socket via docker socket proxy pour limiter les permissions)
- Concaténer le tout, backup le fichier de conf (dernière update), et injecter la liste dans la bonne section du fichier de conf d'AdGuard
- Recharger AdGuard en relançant le container (accès au socket via docker socket proxy pour limiter les permissions)
Tout ceci de manière complètement autonome, avec une fréquence choisie en variable d'environnement dans la conf du compose.
Plus d'infos directement sur le repo :
::card{title="🐋 __Adguard CIDRE Sync__"}
[Robot de synchronisation de la blocklist d'Adguard](https://git.djeex.fr/Djeex/adguard-cidre)
::card{title="🐋 __AdGuard CIDRE Sync__"}
[Robot de synchronisation de la blocklist d'AdGuard](https://git.djeex.fr/Djeex/adguard-cidre)
::
@@ -8,7 +8,7 @@ description: Un script bash pour détecter et corriger les fichiers médias en d
Six mois après avoir téléchargé des térabytes de media, je me suis rendu compte que Sonarr et Radarr les copaient dans ma biblio Plex au lieu de créer des hardlinks. C'est dû à un mécanisme contre intuitif qui est que si vous montez plusieurs dossiers dans Sonarr/Radarr, il les voit comme deux systemes de fichiers différents. Et ne peut donc pas créer de hardlinks. C'est pour cela qu'il ne faut monter qu'un seul dossier parent, qui contient tous les enfants (`downloads`, `movies`, `tvseries` dans le dossier parent `media` par exemple).
J'ai donc restructuré mes dossiers, remis à la main chaque chemin dans Qbittorrent, Plex, et autres. Il restait à trouver un moyen de détecter les doublons existants et d'automatiquement les supprimer et de créer des hardlinks à la place, pour économiser de l'espace.
J'ai donc restructuré mes dossiers, remis à la main chaque chemin dans qBittorrent, Plex, et autres. Il restait à trouver un moyen de détecter les doublons existants et d'automatiquement les supprimer et de créer des hardlinks à la place, pour économiser de l'espace.
::file-tree
---
@@ -23,7 +23,7 @@ Ainsi, un filtre comme Docker Socket Proxy dialogue avec Socat Proxy dans leur p
En gros :
![](/img/nonsense/socat-proxy.svg)
![Schéma de Socat Proxy relayant le socket Docker entre réseaux isolés](/img/nonsense/socat-proxy.svg)
Par exemple, pour Beszel cela rendrait comme ceci :
+2 -2
View File
@@ -21,7 +21,7 @@ Au fil des mois et années, certaines solutions deviennent obsolètes. Soit parc
::card
---
icon: i-simple-icons-wireguard
title: Wireguard 14
title: WireGuard 14
to: /recycled/deprecated/wireguard-14
ui:
icon: text-[#88171A]
@@ -55,7 +55,7 @@ L'alternative payante à Jellyfin
::card
---
icon: i-cbi-qbittorrent
title: Qbittorrent pour Plex
title: qBittorrent pour Plex
to: /recycled/alternatives/qbittorrent-for-plex
ui:
icon: text-[#2F67BA]
@@ -1,5 +1,5 @@
---
title: Wireguard 14
title: WireGuard 14
description: Ancien guide WireGuard 14 conservé à titre archivé, voir le guide WireGuard à jour pour une installation actuelle.
---
@@ -14,12 +14,12 @@ wg-easy 15 est devenu bien plus compliqué, « not so easy » dirait-on. C'est j
## Introduction
L'utilisation d'un VPN permet d'accéder à distance aux ressources locales du serveur sans les exposer sur internet. C'est notamment une manière propre de sécuriser l'accès à la console SSH, plutot que d'exposer le port sur internet. C'est pouvoir se connecter à son réseau où que l'on soit, de maniere sécurisée, et de faire dialoguer des machines qui sont sur des réseaux différents.
Ici nous utiliserons [Wireguard](https://www.wireguard.com/), un serveur VPN sécurisé et très performant, à l'aide des conteneurs :
Ici nous utiliserons [WireGuard](https://www.wireguard.com/), un serveur VPN sécurisé et très performant, à l'aide des conteneurs :
- [wg-easy](https://github.com/wg-easy/wg-easy) pour le serveur, qui propose une interface web très simple pour controler les connexions et télécharger les fichiers de conf (notamment par QR code pour les téléphones)
- [Wireguard](https://docs.linuxserver.io/images/docker-wireguard/?h=wireguard) pour les clients linux
- [WireGuard](https://docs.linuxserver.io/images/docker-wireguard/?h=wireguard) pour les clients Linux
Il existe aussi des clients Windows, MacOS, iOS et Android.
Il existe aussi des clients Windows, macOS, iOS et Android.
Le principe est le suivant :
@@ -32,7 +32,7 @@ Pour cela nous allons créer un **réseau privé virtuel**, ou VPN, c'est à dir
D'autre part, vous pourrez ajouter votre téléphone, un ordinateur portable ou n'importe quel appareil au réseau pour pouvoir utiliser vos ressources depuis vos appareils quotidiens, où que vous soyiez.
![picture](/img/serveex/vpn.svg)
![Schéma d'un tunnel VPN reliant un appareil distant au réseau domestique](/img/serveex/vpn.svg)
Dans cette illustration, la machine 1 est sur deux réseaux :
@@ -257,8 +257,8 @@ Répétez pour chaque client
## Autres appareils
- **Téléphone :** installez Wireguard et scannez le QR code depuis l'interface web (`http://ipdevotreserveur:51821`)
- **PC :** installez le client Wireguard et importez le fichier de configuration
- **Téléphone :** installez WireGuard et scannez le QR code depuis l'interface web (`http://ipdevotreserveur:51821`)
- **PC :** installez le client WireGuard et importez le fichier de configuration
::warning
@@ -268,4 +268,4 @@ __Attention :__ si un appareil client est sur le même réseau local que le serv
Et voici le résultat :
![picture](/img/serveex/wireguard.svg)
![Schéma du tunnel client-serveur WireGuard](/img/serveex/wireguard.svg)
@@ -58,14 +58,14 @@ Déployez le conteneur et allez sur `http://ipdevotreserveur:8010`. Et voilà !
__Si ça ne marche pas :__ vérifiez les règles de votre pare-feu.
::
## Exposer File Browser avec Swag
## Exposer File Browser avec SWAG
::warning
File Browser ne gère pas l'authentification multifacteur. L'exposer publiquement pourrait mettre vos systèmes en danger. Ne le faites que si vous utilisez une solution d'authentification robuste comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard).
File Browser ne gère pas l'authentification multifacteur. L'exposer publiquement pourrait mettre vos systèmes en danger. Ne le faites que si vous utilisez une solution d'authentification robuste comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [WireGuard](/serveex/core/wireguard).
::
Vous voudrez peut-être accéder à File Browser à distance depuis tous vos appareils. Pour cela, nous allons l'exposer à travers Swag.
Vous voudrez peut-être accéder à File Browser à distance depuis tous vos appareils. Pour cela, nous allons l'exposer à travers SWAG.
::note
@@ -103,7 +103,7 @@ Redémarrez la stack en cliquant sur « deploy » et attendez que SWAG soit comp
### Créer le fichier subdomain.conf
Dans les dossiers de Swag, créez le fichier `files.subdomain.conf`.
Dans les dossiers de SWAG, créez le fichier `files.subdomain.conf`.
```bash [Terminal]
sudo nano /srv/docker/swag/config/nginx/proxy-confs/files.subdomain.conf
@@ -15,7 +15,7 @@ C'est une alternative à **Jellyfin**, conservée ici pour référence. Plex n'e
Avec le *Plex Pass*, vous pouvez aussi organiser et écouter votre musique à la manière de Spotify, à la différence que c'est votre contenu, hébergé et diffusé depuis votre serveur.
![picture](/img/serveex/plex.png)
![Interface web de Plex affichant une bibliothèque multimédia](/img/serveex/plex.png)
Nous installerons également [Tautulli](https://docs.linuxserver.io/images/docker-tautulli/), un outil qui fournit des statistiques détaillées sur Plex. Comme toujours, nous utiliserons les images linuxserver.io quand c'est possible.
@@ -150,7 +150,7 @@ Plex propose une série de films et de séries gratuits. Après avoir créé vot
Allez ensuite dans la section _Accès à distance_ et choisissez manuellement un port (nous prendrons `1234`). Mieux vaut ne pas utiliser le port par défaut.
![picture](/img/serveex/plex-port.png)
![Réglages d'accès distant de Plex avec un port choisi manuellement](/img/serveex/plex-port.png)
- Sur votre box, redirigez le port TCP `1234` vers le port `32400` de l'IP de votre serveur avec les [règles NAT](/general/networking/nat).
- Une fois fait, retournez dans Plex pour vérifier que l'accès à distance fonctionne.
@@ -173,7 +173,7 @@ Ajoutez simplement vos médias dans `/media/movies` et `/media/tvseries` sur vot
Si vos médias sont stockés sur un disque réseau (un NAS ou un disque dur externe accessible par le réseau), reportez-vous au **guide de montage Samba** pour que Plex puisse y accéder.
::
## Exposer Tautulli avec Swag
## Exposer Tautulli avec SWAG
Vous n'avez pas besoin d'exposer Plex, il est accessible via votre compte Plex sur plex.tv.
En revanche, vous voudrez peut-être exposer Tautulli pour consulter vos statistiques depuis une simple URL quand vous n'êtes pas chez vous.
@@ -1,5 +1,5 @@
---
title: Qbittorrent pour Plex
title: qBittorrent pour Plex
description: Installer qBittorrent avec Gluetun et ProtonVPN pour télécharger des torrents de manière sécurisée derrière un VPN sur votre serveur auto-hébergé.
---
@@ -8,22 +8,22 @@ description: Installer qBittorrent avec Gluetun et ProtonVPN pour télécharger
::note{to="/serveex/media/qbittorrent"}
C'est l'installation de la seedbox associée à Plex plutôt qu'à Jellyfin, conservée ici pour référence. Voir **Qbittorrent** pour la même installation associée à Jellyfin, l'alternative recommandée puisque Plex n'est pas entièrement auto-hébergé (son propre relais, un compte obligatoire) et enferme des fonctions derrière le paywall du Plex Pass.
C'est l'installation de la seedbox associée à Plex plutôt qu'à Jellyfin, conservée ici pour référence. Voir **qBittorrent** pour la même installation associée à Jellyfin, l'alternative recommandée puisque Plex n'est pas entièrement auto-hébergé (son propre relais, un compte obligatoire) et enferme des fonctions derrière le paywall du Plex Pass.
::
![Picture](/img/serveex/qbit-vue.jpeg)
![Interface web de VueTorrent affichant des téléchargements actifs](/img/serveex/qbit-vue.jpeg)
Afin de télécharger vos media favoris en toute sécurité, nous allons monter un système à base de :
- [Qbittorent](https://github.com/linuxserver/docker-qbittorrent) comme logiciel de téléchargement bittorent
- [Proton VPN Plus](https://protonvpn.com/torrenting), VPN pour sécuriser vos échanges, auquel vous devez souscrire (il y a de nombreux codes promo) pour accéder au protocole Bittorent, mais vous pouvez également en choisir un autre, à condition qu'il propose le protocole bittorent.
- [Gluetun](https://github.com/qdm12/gluetun)
- [Qbittorrent port update](https://codeberg.org/TechnoSam/qbittorrent-gluetun-port-update) pour mettre automatiquement à jour le port de votre VPN (qui change régulièrement).
- [qBittorrent port update](https://codeberg.org/TechnoSam/qbittorrent-gluetun-port-update) pour mettre automatiquement à jour le port de votre VPN (qui change régulièrement).
- Et le mode [vuetorrent](https://github.com/gabe565/linuxserver-mod-vuetorrent) pour une interface moderne et intuitive.
Nous monterons ici le système ci-dessous :
![Picture](/img/serveex/qbit.svg)
![Schéma du trafic de qBittorrent passant par le tunnel VPN Gluetun](/img/serveex/qbit.svg)
## Configuration
@@ -39,7 +39,7 @@ tree:
- gluetun/
- compose.yaml
- .env
- "media # relié à Plex et Qbittorrent":
- "media # relié à Plex et qBittorrent":
- "downloads/ # téléchargements génériques, choisis dans les réglages"
- "movies/ # utilisé pour télécharger les films"
- "tvseries/ # utilisé pour télécharger les séries"
@@ -127,7 +127,7 @@ services:
### Configurer la synchronisation du port
Avant de renseigner le `.env` dans Dockge, configurons la mise à jour du port de téléchargement. Proton et la plupart des VPN font tourner le port de redirection, qui doit être communiqué à Qbittorrent.
Avant de renseigner le `.env` dans Dockge, configurons la mise à jour du port de téléchargement. Proton et la plupart des VPN font tourner le port de redirection, qui doit être communiqué à qBittorrent.
Nous avons ajouté le mod `ghcr.io/t-anc/gsp-qbittorent-gluetun-sync-port-mod` au conteneur.
@@ -186,8 +186,8 @@ Détail :
| `UI_PORT` | Port d'accès à l'interface web | `5695` |
| `PR_KEY` | Clé privée fournie par Proton | `buKsjNHLyzKMM1qYnzOy4s7SHfly` |
| `GSP_KEY` | Clé générée pour la mise à jour du port | `MnBa47MeVmk7xiv` |
| `ID` | Identifiant de connexion à l'interface Qbittorrent | `user` |
| `PW` | Mot de passe de l'interface Qbittorrent | `password` |
| `ID` | Identifiant de connexion à l'interface qBittorrent | `user` |
| `PW` | Mot de passe de l'interface qBittorrent | `password` |
### Terminé !
::
@@ -218,7 +218,7 @@ Changez votre identifiant et votre mot de passe dans les réglages « webui ».
### Terminé !
::
C'est terminé ! Dans les réglages de Qbittorrent, section « Téléchargements », définissez `/media/downloads` comme dossier par défaut.
C'est terminé ! Dans les réglages de qBittorrent, section « Téléchargements », définissez `/media/downloads` comme dossier par défaut.
Lors de l'ajout d'un téléchargement, pensez à choisir le bon dossier pour que Plex se synchronise correctement (`/media/movies` ou `/media/tvseries`). Vous pouvez aussi automatiser cela avec des catégories et des dossiers.
@@ -226,10 +226,10 @@ Lors de l'ajout d'un téléchargement, pensez à choisir le bon dossier pour que
::warning
Qbittorrent ne gère pas l'authentification multifacteur. L'exposer sur internet peut mettre votre système en danger. Ne le faites que si vous utilisez du MFA via [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard).
qBittorrent ne gère pas l'authentification multifacteur. L'exposer sur internet peut mettre votre système en danger. Ne le faites que si vous utilisez du MFA via [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [WireGuard](/serveex/core/wireguard).
::
Pour lancer des téléchargements depuis l'extérieur, sans VPN, vous pouvez exposer l'interface web de Qbittorrent.
Pour lancer des téléchargements depuis l'extérieur, sans VPN, vous pouvez exposer l'interface web de qBittorrent.
::note
@@ -339,8 +339,8 @@ Appuyez sur :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"} pour enregistrer, et
### Terminé !
::
Attendez quelques minutes, puis allez sur `https://seedbox.mondomaine.fr`. Vous devriez arriver sur l'interface de Qbittorrent.
Attendez quelques minutes, puis allez sur `https://seedbox.mondomaine.fr`. Vous devriez arriver sur l'interface de qBittorrent.
Et voilà ! Vous avez maintenant un media center prêt à l'emploi.
![Picture](/img/serveex/seed.svg)
![Schéma complet de la seedbox, de qBittorrent à SWAG](/img/serveex/seed.svg)
@@ -57,7 +57,7 @@ tree:
::warning
__Attention :__ respectez bien cette structure de fichiers, en particulier le dossier `media`. Ce dossier doit être monté **exactement de la même façon** dans le fichier compose de _Qbittorrent_ (`/votre/chemin/media:/media`) et dans les applications _arr_.
Sinon, les applications _arr_ risquent de ne pas reconnaître le chemin fourni par Qbittorrent et ne créeront pas de _hardlinks_.
Sinon, les applications _arr_ risquent de ne pas reconnaître le chemin fourni par qBittorrent et ne créeront pas de _hardlinks_.
Sans hardlinks, les applications _arr_ copieront les fichiers, ce qui **doublera l'espace utilisé** sur votre stockage.
::
@@ -205,7 +205,7 @@ MEDIA_PATH=
|----------------|-------------------------------------------------------------------------------------------------|-------------|
| `PUID` | À renseigner avec vos informations utilisateur (à vérifier avec `id votreutilisateur`) | `1000` |
| `PGID` | Idem | `1000` |
| `MEDIA_PATH` | Chemin de votre dossier média, ici `/media`. Il doit correspondre à celui utilisé par Qbittorrent. | `/media` |
| `MEDIA_PATH` | Chemin de votre dossier média, ici `/media`. Il doit correspondre à celui utilisé par qBittorrent. | `/media` |
Déployez la stack.
@@ -233,7 +233,7 @@ Créez un compte et choisissez *forms login*.
::warning
__Attention :__ si vous avez déjà des films dans `movies` provenant de Qbittorrent, ne laissez pas Radarr les ajouter. Radarr pourrait les modifier, ce qui interromprait le seed dans Qbittorrent.
__Attention :__ si vous avez déjà des films dans `movies` provenant de qBittorrent, ne laissez pas Radarr les ajouter. Radarr pourrait les modifier, ce qui interromprait le seed dans qBittorrent.
::
#### Configurer les profils
@@ -242,12 +242,12 @@ Allez dans *Settings > Profiles*. Ce sont vos profils de qualité par défaut. Q
![profiles_radarr](/img/serveex/radarr1.png)
#### Ajouter Qbittorrent
#### Ajouter qBittorrent
Dans *Settings > Download Clients*, ajoutez Qbittorrent.
Dans *Settings > Download Clients*, ajoutez qBittorrent.
- Utilisez l'IP de votre serveur comme *Host* et le port `5695` si vous suivez ce guide.
- Renseignez vos *Username* et *Password* Qbittorrent.
- Renseignez vos *Username* et *Password* qBittorrent.
- Cliquez sur *Test*.
- Si le test réussit, cliquez sur *Save*.
@@ -75,8 +75,8 @@ Déployez le conteneur et allez sur `http://ipdevotreserveur:3333`. Votre instan
__Si ça ne marche pas :__ vérifiez les règles de votre pare-feu.
::
## Exposer Gitea avec Swag
L'intérêt de cette installation est de pouvoir y accéder à distance depuis n'importe lequel de vos appareils. Pour cela, nous allons exposer Gitea à travers Swag.
## Exposer Gitea avec SWAG
L'intérêt de cette installation est de pouvoir y accéder à distance depuis n'importe lequel de vos appareils. Pour cela, nous allons exposer Gitea à travers SWAG.
::note
@@ -114,7 +114,7 @@ Redéployez la stack en cliquant sur « Deploy » et attendez que SWAG soit plei
### Créer le fichier subdomain.conf
Dans les dossiers de Swag, créez le fichier `gitea.subdomain.conf`.
Dans les dossiers de SWAG, créez le fichier `gitea.subdomain.conf`.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
__Astuce :__ vous pouvez utiliser **File Browser** pour naviguer et modifier vos fichiers plutôt que des commandes dans le terminal.
+1 -1
View File
@@ -17,7 +17,7 @@ seo:
:::::
:::::div{class="my-6 pt-[25px] pb-[25px]"}
![](/img/global/docudjeex-home.svg){.w-full}
![Illustration de la page d'accueil de Docudjeex](/img/global/docudjeex-home.svg){.w-full}
:::::
:::::div{class="flex flex-col sm:flex-row sm:items-center gap-3"}