diff --git a/content/0.index.md b/content/0.index.md index c40bc9f..c5492ed 100644 --- a/content/0.index.md +++ b/content/0.index.md @@ -12,7 +12,7 @@ main: --- cta: - Access the Docs - - /apropos/bienvenue + - /about/welcome secondary: - Discord → - https://discord.gg/jvhardware diff --git a/content/2.general/1.nat.md b/content/2.generalites/1.nat.md similarity index 100% rename from content/2.general/1.nat.md rename to content/2.generalites/1.nat.md diff --git a/content/2.general/2.dns.md b/content/2.generalites/2.dns.md similarity index 100% rename from content/2.general/2.dns.md rename to content/2.generalites/2.dns.md diff --git a/content/2.general/3.samba.md b/content/2.generalites/3.samba.md similarity index 100% rename from content/2.general/3.samba.md rename to content/2.generalites/3.samba.md diff --git a/content/2.general/_dir.yml b/content/2.generalites/_dir.yml similarity index 100% rename from content/2.general/_dir.yml rename to content/2.generalites/_dir.yml diff --git a/content/3.serveex/2.core/1.installation.md b/content/3.serveex/2.coeur/1.installation.md similarity index 100% rename from content/3.serveex/2.core/1.installation.md rename to content/3.serveex/2.coeur/1.installation.md diff --git a/content/3.serveex/2.core/2.docker.md b/content/3.serveex/2.coeur/2.docker.md similarity index 100% rename from content/3.serveex/2.core/2.docker.md rename to content/3.serveex/2.coeur/2.docker.md diff --git a/content/3.serveex/2.coeur/3.swag.md b/content/3.serveex/2.coeur/3.swag.md new file mode 100644 index 0000000..6be695c --- /dev/null +++ b/content/3.serveex/2.coeur/3.swag.md @@ -0,0 +1,398 @@ +--- +navigation: true +title: SWAG +main: + fluid: false +--- +:ellipsis{left=0px width=40rem top=10rem blur=140px} +# SWAG + +::alert{type="info"} +🎯 __Objectifs :__ +- Installer Swag +- Activer le SSL +- AccĂ©der au tableau de bord +- Configurer le blocage rĂ©gional +- Exposer Dockge +:: + +[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 le net via un ou des noms de domaines, 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 authent HTTP ou par SSO comme Authelia ou Authentik). Toute la doc nĂ©cessaire ce [situe ici](https://docs.linuxserver.io/general/swag). + +::alert{type="warning"} +:::list{type="warning"} +- SWAG n'a pour utilitĂ© que l'exposition de vos services sur internet. C'est Ă  dire, y accĂ©der via une url publique du type `https://service.mondomaine.fr`. Si vous ne souhaitez pas exposer vos services et plutĂŽt utiliser systĂ©matiquement un VPN pour vous connecter Ă  vos services Ă  distance, vous pouvez directement aller [par ici](/serveex/securite/wireguard). +::: +:: + +Ci-dessous, vous trouverez un exemple, exposant Dockge. Nous installerons SWAG, ainsi que le mod dbip servant Ă  bloquer les connexions en fonction de la gĂ©oloc, ainsi que le mod dashboard qui permet de piloter le fonctionnement de swag, fail2ban et la gĂ©oloc. + +**Principe d'un reverse proxy et application dans notre cas :** + +![Picture](/img/serveex/reverse-proxy.svg) + +## Installation +--- + +::alert{type="info" icon="exclamation-circle"} +:::list{type="info"} +- Ce tutoriel part du principe que vous avez un nom de domaine qui pointe vers votre serveur, et que votre box a une rĂšgle NAT qui redirige le port `443` vers l'adresse IP et le port `443` de votre serveur. Le nom de domaine d'exemple sera `mondomaine.fr`. +::: +:: + +Plan des fichiers que nous allons modifier : + +```console +root +└── docker + └── swag + ├── config + │ ├── dns-conf + │ │ └── ovh.ini + │ └── nginx + │ ├── dbip.conf + │ ├── nginx.conf + │ └── proxy-confs + │ └── dockge.subdomain.conf + ├── compose.yml + └── .env +``` + +Ouvrez Dockge dans votre navigateur, cliquez sur `compose`, nommez la stack `swag` et copiez la conf ci-dessous + +``` yaml +--- +services: + swag: + image: lscr.io/linuxserver/swag:latest + container_name: swag + cap_add: + - NET_ADMIN + env_file: + - .env + environment: + - TZ=Europe/Paris + - URL=${DOMAIN} + - EXTRA_DOMAINS=${DOMAINS} + - SUBDOMAINS=wildcard # couvre les sous-domaines + - VALIDATION=dns + - DNSPLUGIN=${PLUGIN} + - EMAIL=${EMAIL} + - DOCKER_MODS=linuxserver/mods:swag-dbip|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-auto-reload + volumes: + - /docker/swag/config:/config + ports: + - 80:80 + - 443:443 + - 81:81 # NĂ©cessaire pour le dashboard + restart: unless-stopped + networks: + - swag + +networks: + swag: + name: swag_default + +``` + +::alert{type="success"} +✹ __Astuce :__ +ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises Ă  jour + + ```yaml + services: + swag: + #... + labels: + - com.centurylinklabs.watchtower.enable=true +:: + +Puis dans le `.env` : + +```properties +DOMAIN= +DOMAINS= +EMAIL= +PLUGIN= +``` + +Remplissez comme suit + +| PropriĂ©tĂ© | Valeur | Exemples | +|--------------------------|---------------------------------------------------------------------------|-----------------------| +| ` DOMAIN`{lang=properties} | Votre domaine (cela couvre aussi tous les sous-domaines) | `mondomaine.fr` | +| ` DOMAINS`{lang=properties} | Vos Ă©ventuels autres domaines | `monsecondomaine.fr` | +| ` EMAIL`{lang=properties} | Votre email, pour gĂ©nĂ©rer le certificat | `votre@email.fr` | +| ` PLUGIN`{lang=properties} | Le plugin pour gĂ©nĂ©rer le certificat, liĂ© Ă  votre [fournisseur de zone DNS](https://docs.linuxserver.io/general/swag/) | `ovh`
`cloudflare` | + +Ici nous partons du principe que votre zone DNS est chez OVH. DĂ©ployez la stack une premiere fois. Dans les logs vous verrez qu'il n'arrivera pas Ă  crĂ©er de certificat SSL car le fichier ovh.ini renvoi une erreur. Arretez la stack. + +En CLI, allez dans le dossier dns-conf et Ă©ditez le fichier `ovh.ini` : + +::alert{type="success"} +✹ __Astuce pour les allergiques au terminal :__ +vous pouvez utiliser [File Browser](/serveex/files/file-browser) pour naviguer dans vos fichier et Ă©diter vos documents au lieu d'utiliser les commandes du terminal. +:: + + +```shell +sudo vi /docker/swag/config/dns-conf/ovh.ini +``` + +Voici ce qui s'affiche : + +```properties +# Instructions: https://github.com/certbot/certbot/blob/master/certbot-dns-ovh/certbot_dns_ovh/__init__.py#L20 +# Replace with your values +dns_ovh_endpoint = ovh-eu +dns_ovh_application_key = +dns_ovh_application_secret = +dns_ovh_consumer_key = +``` +Authentifiez vous et crĂ©ez [votre token ici](https://www.ovh.com/auth/?onsuccess=https%3A%2F%2Fwww.ovh.com%2Fauth%2Fapi%2FcreateToken). + +Les permissions Ă  configurer sont les suivantes : + +* ``GET /domain/zone/*`` +* ``PUT /domain/zone/*`` +* ``POST /domain/zone/*`` +* ``DELETE /domain/zone/*`` + +Notez les 3 clĂ©s temporairement et renseignez le fichier `ovh.ini`. (avec vim, `i` pour passer en modif, `Echap` quand c'est fini, `:x` pour sauvegarder et quitter) + +Sauvegardez et quittez le fichier. + +Configurez aussi swag pour qu'il accĂšde Ă  DBIP, le module de gestion des accĂšs par gĂ©olocalisation /Ouvrez le fichier nginx.conf + +```shell +sudo vi /docker/swag/config/nginx/nginx.conf +``` + +Et ajoutez la ligne suivante en dessous de la section `http` : + +```nginx +include /config/nginx/dbip.conf +``` + +Relancez la stack dans Dockge, cette fois le certificat SSL est bien Ă©mis ! VĂ©rifiez dans les logs que le serveur est bien ready. + +## Dashboard +--- +Accedez au dashboard via votre rĂ©seau local en tapant `http//ipdevotreserveur:81` +A gauche, vous trouverez la liste des services actuellement "proxied" (aucun pour le moment). A droite, les IP bannies. En-dessous, une liste d'indicateurs. pour le dĂ©tail, [c'est par ici](https://www.linuxserver.io/blog/introducing-swag-dashboard). + +![picture](https://www.linuxserver.io/user/pages/03.blog/introducing-swag-dashboard/example.png) + +## DBIP +--- +DBIP permet de bloquer les connexions en fonction des pays. Il s'appuie sur le fichier de config nommĂ© `dbip.conf` dans `/docker/swag/config/nginx`. [Plus d'info ici](https://virtualize.link/secure/). + +Dans cet exemple, nous allons le configurer pour bloquer une liste de pays connus pour etre Ă  l'origine de la plupart des connexions malveillantes. Nous allons Ă©galement configurer une variable au cas oĂč nous souhaiterions permettre au rĂ©seau interne du serveur, au rĂ©seau local de votre box ainsi qu'Ă  un Ă©ventuel vpn en 10.x.x.x de pouvoir accĂ©der Ă  vos services, mais pas directement Ă  internet. + +La configuration est activable ou dĂ©sactivable pour chaque service qui sera proxied (voir exemple de Dockge plus bas). + +Ouvrez `dbip.conf` : + +```shell +sudo vi /docker/swag/config/nginx/dbip.conf +``` + +Faites vos modifications ([voir documentation](https://github.com/linuxserver/docker-mods/tree/swag-dbip)), ou prenez l'exemple suivant: + +```nginx +geoip2 /config/geoip2db/dbip-country-lite.mmdb { + auto_reload 1w; + $geoip2_data_continent_code continent code; + $geoip2_data_country_iso_code country iso_code; +} + +# Country Codes: https://en.wikipedia.org/wiki/ISO_3166-2 + +map $geoip2_data_country_iso_code $geo-whitelist { + # default yes; + # Example for whitelisting a country, comment out 'default yes;' above and uncomment 'default no;' and the whitelisted country below + default no; + FR yes; +} + +map $geoip2_data_country_iso_code $geo-blacklist { + default yes; + # Example for blacklisting a country, uncomment the blacklisted country below + CN no; #China + RU no; #Russia + HK no; #Hong Kong + IN no; #India + IR no; #Iran + VN no; #Vietnam + TR no; #Turkey + EG no; #Egypt + MX no; #Mexico + JP no; #Japan + KR no; #South Korea + KP no; #North Korea + PE no; #Peru + BR no; #Brazil + UA no; #Ukraine + ID no; #Indonesia + TH no; #Thailand + } + +geo $lan-ip { + default no; + 10.0.0.0/8 yes; + 172.16.0.0/12 yes; + 192.168.0.0/16 yes; + 127.0.0.1 yes; +} +``` + +Sauvegardez et quittez. RedĂ©marrez la stack. + +Dans les fichiers de conf des domaines (section suivante), vous pourrez activer ou dĂ©sactiver la whitelist ou la blacklist ([voir documentation ici](https://www.forum-nas.fr/threads/tuto-installer-swag-en-docker-reverse-proxy.15057/)). Dans notre cas, la whitelist laisse uniquement passer les requĂȘtes françaises. La blacklist laisse passer tout le monde sauf la liste de pays mentionnĂ©e. On utilisera donc la blacklist, sur ce modĂšle : + +```nginx + server { + listen 443 ssl; + listen [::]:443 ssl; + + server_name some-app.*; + include /config/nginx/ssl.conf; + client_max_body_size 0; + + if ($geo-blacklist = no) { return 404; } + + location / { +``` + + +## Exposer Dockge +--- +::alert{type="info"} +📋 __PrĂ©requis :__

+Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `dockge.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et [Ă  moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que vous avez dĂ©jĂ  redirigĂ© le port `443` de votre box vers le `443` de votre serveur dans [les rĂšgles NAT](/generalites/nat). +:: + +Il s'agit maintenant d'exposer Dockge sur internet, afin de pouvoir y accĂ©der et gĂ©rer vos conteneurs sans que vous soyez chez vous. Pour cela, nous partons du principe que vous avez configurĂ© un sous domaine `dockge.mondomaine.fr` dans votre zone DNS dont le `CNAME` pointe sur `mondomaine.fr`. + +::alert{type="warning"} +:::list{type="warning"} +- Dockge n'utilise pas d'authentification multifacteur. Exposer Dockge sur internet pourrait compromettre les machines auxquelles il est reliĂ©. Ne le faite que si vous utilisez un systeme d'authentification multifacteur comme [Authentik](/serveex/securite/authentik/). Sinon, n'exposez pas avec SWAG et utilisez plutĂŽt un VPN comme [Wireguard](/serveex/securite/wireguard). +::: +:: + +Ouvrez le fichier dockge.subdomain.conf : + +```shell +sudo vi /docker/swag/config/nginx/proxy-confs/dockge.subdomain.conf +``` + +ParamĂ©trez le comme tel : + +```nginx +## Version 2023/12/19 + +server { + listen 443 ssl; + listen [::]:443 ssl; + + # indique que le sous-domaine doit ĂȘtre dirigĂ© + server_name dockge.*; + + include /config/nginx/ssl.conf; + + client_max_body_size 0; + + #if ($lan-ip = yes) { set $geo-whitelist yes; } + #if ($geo-whitelist = no) { return 404; } + # indique que les pays dans la blacklist sont intedits + if ($geo-blacklist = no) { return 404; } + + # enable for ldap auth (requires ldap-location.conf in the location block) + #include /config/nginx/ldap-server.conf; + + # enable for Authelia (requires authelia-location.conf in the location block) + #include /config/nginx/authelia-server.conf; + + # enable for Authentik (requires authentik-location.conf in the location block) + #include /config/nginx/authentik-server.conf; + + location / { + # enable the next two lines for http auth + #auth_basic "Restricted"; + #auth_basic_user_file /config/nginx/.htpasswd; + + # enable for ldap auth (requires ldap-server.conf in the server block) + #include /config/nginx/ldap-location.conf; + + # enable for Authelia (requires authelia-server.conf in the server block) + #include /config/nginx/authelia-location.conf; + + # enable for Authentik (requires authentik-server.conf in the server block) + #include /config/nginx/authentik-location.conf; + + include /config/nginx/proxy.conf; + include /config/nginx/resolver.conf; + + set $upstream_app dockge; # Nom du conteneur + set $upstream_port 5001; # Port interne conteneur + set $upstream_proto http; + proxy_pass $upstream_proto://$upstream_app:$upstream_port; + + } +} +``` + + +Sauvegardez et quittez. La configuration va se mettre Ă  jour en quelques secondes. +::alert{type="info"} +:::list{type="info"} +- Par dĂ©faut, SWAG ne connait pas le nom "dockge". Pour qu'il puisse y accĂ©der, vous devez rajouter le rĂ©seau de dockge dans le `compose.yml` de SWAG. +::: +:: + +Rendez-vous sur la stack de SWAG, puis cliquez sur `Ă©diter`, et ajouter le rĂ©seau de dockge dans le fichier de conf sur ce modele (les champs `networks`) : + + +```yaml +services: + swag: + container_name: #... + # ... + networks: # Relie le conteneur au rĂ©seau custom + - dockge # Nom du rĂ©seau dĂ©clarĂ© dans la stack + +networks: # DĂ©finit le rĂ©seau custom + #... + dockge: # Nom du rĂ©seau dĂ©clarĂ© dans la stack + name: dockge_default # Nom vĂ©ritable du rĂ©seau externe + external: true # PrĂ©cise que c'est un rĂ©seau Ă  rechercher en externe +``` + +::alert{type="info"} +:::list{type="info"} +- Ici nous partons du principe que le nom du rĂ©seau de dockge est `dockge_default`. Vous pouvez vĂ©rifier que la connexion est opĂ©rationnelle en visitant le dashboard de SWAG en tapant `http://ipduserveur:81`. +::: +:: + +DĂ©ployez Ă  nouveau la stack de SWAG. + +Patientez puis tapez `https://dockge.mondomaine.fr` dans votre navigateur, vous devriez ĂȘtre redirigĂ© vers dockge. Vous pouvez vĂ©rifier le statut du service via le dashboard (depuis votre rĂ©seau local, http://ipdevotreserveur:81) + + +## Exposer un autre service avec SWAG +--- +Swag dispose de modeles pour la plupart des services connus, nommĂ©s `nomduservice.subdomain.conf.sample`. Il vous suffit de crĂ©er le sous-domaine dans votre zone DNS chez votre registrar (comme OVH par exemple), de le faire pointer sur votre domaine principale (via un enregistrement CNAME) et de copier en renommant `nomduservice.subdomain.conf.sample` en `nomduservice.subdomain.conf`. + +```shell +cd /docker/swag/config/proxy-confs +sudo cp nomduservice.subdomain.conf.sample nomduservice.subdomain.conf +``` +::alert{type="danger"} +:::list{type="danger"} +- __Si le sous domaine n'est pas redirigĂ© correctement__ +::: +- Ă©ditez le fichier et vĂ©rifiez notamment le nom du conteneur dans `set $upstream_app nomduconteneur;`{lang=nginx} + +- vĂ©rifiez que vous avez bien ajoutĂ© le rĂ©seau du conteneur dans le `compose.yml` de SWAG. +:: + +Vous pouvez aussi choisir le sous-domaine en changeant la variable `server_name votresousdomaine.*;`{lang=nginx} et en renommant le fichier `votresousdomaine.subdomain.conf`. \ No newline at end of file diff --git a/content/3.serveex/2.core/_dir.yml b/content/3.serveex/2.coeur/_dir.yml similarity index 100% rename from content/3.serveex/2.core/_dir.yml rename to content/3.serveex/2.coeur/_dir.yml diff --git a/content/3.serveex/2.core/3.swag.md b/content/3.serveex/2.core/3.swag.md deleted file mode 100644 index 5b7816d..0000000 --- a/content/3.serveex/2.core/3.swag.md +++ /dev/null @@ -1,223 +0,0 @@ ---- -navigation: true -title: SWAG -main: - fluid: false ---- -:ellipsis{left=0px width=40rem top=10rem blur=140px} -# SWAG - -::alert{type="info"} -🎯 __Goals:__ -- Install Swag -- Enable SSL -- Access the dashboard -- Configure regional blocking -- Expose Dockge -:: - -[Swag](https://docs.linuxserver.io/general/swag/) is the core of this homelab. It is a powerful reverse proxy that allows you to expose services on the internet via domain names, handling SSL certificates, request routing, and access security. Full documentation is [available here](https://docs.linuxserver.io/general/swag). - -::alert{type="warning"} -:::list{type="warning"} -- SWAG is only useful if you plan to expose your services on the internet (e.g., `https://service.mydomain.com`). If you prefer to use a VPN instead, skip to [this section](/serveex/securite/wireguard). -::: -:: - -Below is an example for exposing Dockge. We'll install SWAG, the dbip mod for geo-blocking, and the dashboard mod for managing SWAG, fail2ban, and geolocation. - -**What is a reverse proxy and how it works for us:** - -![Picture](/img/serveex/reverse-proxy.svg) - -## Installation ---- - -::alert{type="info" icon="exclamation-circle"} -:::list{type="info"} -- This tutorial assumes you have a domain name pointing to your server, and a NAT rule forwarding port `443` to your server. Example domain: `mydomain.com`. -::: -:: - -File structure we'll edit: - -```console -root -└── docker - └── swag - ├── config - │ ├── dns-conf - │ │ └── ovh.ini - │ └── nginx - │ ├── dbip.conf - │ ├── nginx.conf - │ └── proxy-confs - │ └── dockge.subdomain.conf - ├── compose.yml - └── .env -``` - -Open Dockge, click `compose`, name the stack `swag`, and paste this config: - -```yaml -services: - swag: - image: lscr.io/linuxserver/swag:latest - container_name: swag - cap_add: - - NET_ADMIN - env_file: - - .env - environment: - - TZ=Europe/Paris - - URL=${DOMAIN} - - EXTRA_DOMAINS=${DOMAINS} - - SUBDOMAINS=wildcard # couvre les sous-domaines - - VALIDATION=dns - - DNSPLUGIN=${PLUGIN} - - EMAIL=${EMAIL} - - DOCKER_MODS=linuxserver/mods:swag-dbip|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-auto-reload - volumes: - - /docker/swag/config:/config - ports: - - 80:80 - - 443:443 - - 81:81 # NĂ©cessaire pour le dashboard - restart: unless-stopped - networks: - - swag - -networks: - swag: - name: swag_default - -``` - -::alert{type="success"} -✹ __Tip:__ -Add a watchtower label to auto-update containers: - -```yaml -services: - swag: - #... - labels: - - com.centurylinklabs.watchtower.enable=true -``` -:: - -In your `.env`: - -```properties -DOMAIN= -DOMAINS= -EMAIL= -PLUGIN= -``` - -Fill in the values: - -| Property | Value | Examples | -|-----------|-------|----------| -| DOMAIN | Your main domain | mydomain.com | -| DOMAINS | Other domains (if any) | seconddomain.com | -| EMAIL | Your email for SSL | you@email.com | -| PLUGIN | Your DNS provider's plugin | ovh, cloudflare | - -Edit `ovh.ini`: - -```shell -sudo vi /docker/swag/config/dns-conf/ovh.ini -``` - -```properties -dns_ovh_endpoint = ovh-eu -dns_ovh_application_key = -dns_ovh_application_secret = -dns_ovh_consumer_key = -``` - -Generate your token [here](https://www.ovh.com/auth/?onsuccess=https%3A%2F%2Fwww.ovh.com%2Fauth%2Fapi%2FcreateToken). Required permissions: - -* GET /domain/zone/* -* PUT /domain/zone/* -* POST /domain/zone/* -* DELETE /domain/zone/* - -Now configure dbip: - -```shell -sudo vi /docker/swag/config/nginx/nginx.conf -``` - -Add this under `http`: - -```nginx -include /config/nginx/dbip.conf -``` - -Restart the stack. - -## Dashboard ---- -Access the dashboard at `http://yourserverip:81`. Details [here](https://www.linuxserver.io/blog/introducing-swag-dashboard). - -## DBIP ---- -Geo-block config example: - -```nginx -# ... (Same geo-block nginx example as before) -``` - -## Exposing Dockge ---- -::alert{type="info"} -📋 __Prerequisites:__ A subdomain `dockge.mydomain.com` with CNAME pointing to `mydomain.com`, and NAT port 443 properly configured. -:: - -::alert{type="warning"} -:::list{type="warning"} -- Dockge lacks MFA. Only expose it with MFA (e.g., Authentik). Otherwise, use VPN. -::: -:: - -Configure `dockge.subdomain.conf` as: - -```nginx -# ... (Same nginx reverse proxy config) -``` - -Edit SWAG’s `compose.yml` to add Dockge's network: - -```yaml -services: - swag: - # ... - networks: - - dockge - -networks: - dockge: - name: dockge_default - external: true -``` - -Redeploy SWAG. Access Dockge via `https://dockge.mydomain.com`. - -## Exposing Other Services ---- -SWAG includes many sample confs: `service.subdomain.conf.sample`. Duplicate and configure them: - -```shell -cd /docker/swag/config/proxy-confs -sudo cp service.subdomain.conf.sample service.subdomain.conf -``` - -::alert{type="danger"} -:::list{type="danger"} -- __If subdomain isn’t routing correctly:__ -::: -- Check container name in `set $upstream_app ...;` -- Ensure the service’s network is added to SWAG’s `compose.yml` -:: \ No newline at end of file diff --git a/content/3.serveex/5.media/3.servarr.md b/content/3.serveex/5.media/3.servarr.md index 6ba91dc..dd5fe85 100644 --- a/content/3.serveex/5.media/3.servarr.md +++ b/content/3.serveex/5.media/3.servarr.md @@ -1,6 +1,6 @@ --- navigation: true -title: Automatisation +title: Automation main: fluid: false --- @@ -8,26 +8,26 @@ main: # Servarr ::alert{type="info"} -🎯 __Objectifs :__ -- Automatiser les tĂ©lĂ©chargements de films et de sĂ©ries avec Radarr, Sonarr, Bazarr, Prowlarr et Overseerr. +🎯 __Goals:__ +- Automate movie and TV show downloads using Radarr, Sonarr, Bazarr, Prowlarr, and Overseerr. :: -[Servarr](https://wiki.servarr.com/) est une collection d'applications dĂ©veloppĂ©es dans le but d'automatiser le tĂ©lĂ©chargement, la mise Ă  jour et la gestions des media. Ici nous allons porter notre attention sur les films et sĂ©ries avec comme objectif : -- Pouvoir choisir un film dans un catalogue via une interface web -- N'avoir plus rien Ă  faire Ă  part en profiter quelques minutes plus tard sur Plex +[Servarr](https://wiki.servarr.com/) is a suite of applications developed to automate the downloading, updating, and management of media. Here, we'll focus on movies and TV shows with the goal of: +- Selecting a movie from a catalog through a web interface. +- Sitting back and enjoying it on Plex a few minutes later. Simple. ![arr](/img/serveex/arr.svg) -Je vous propose de dĂ©ployer la stack puis nous verrons par la suite la configuration de chacune des apps et leur fonctionnement. +We’ll start by deploying the stack and then proceed to configure each app and understand how they work. -## Installer les apps +## Install the Apps --- -### Docker compose +### Docker Compose -Structure des dossiers : +Folder structure: ```console root @@ -54,8 +54,7 @@ root └── library ``` -Ouvrez dockge et votre stack `plex`. Modifiez le compose comme ceci : - +Open Docker and your `plex` stack. Modify the compose file as follows: ```yaml --- services: @@ -162,22 +161,23 @@ services: ``` ::alert{type="success"} -✹ Ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises Ă  jour +✹ Add the Watchtower label to each container to automate updates - ```yaml - services: - plex: - #... - labels: - - com.centurylinklabs.watchtower.enable=true - - tautulli: - #... - labels: - - com.centurylinklabs.watchtower.enable=true +```yaml +services: + plex: + #... + labels: + - com.centurylinklabs.watchtower.enable=true + + tautulli: + #... + labels: + - com.centurylinklabs.watchtower.enable=true +``` :: -Renseignez le `.env` avec les variables ci-dessous +Set your `.env` file with the variables below: ```properties PUID= @@ -185,253 +185,249 @@ GUID= MEDIA_PATH= ``` -| Variable | Valeur | Exemples | -|-----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------| -| `PUID`{lang=properties} | A renseigner avec les infos de votre user (trouvables via la commande `id nomdutilisateur`{lang=shell}) | `1000` | -| `GUID`{lang=properties} | A renseigner avec les infos de votre user (trouvables via la commande `id nomdutilisateur`{lang=shell}) | `1000` | -| `MEDIA_PATH`{lang=properties} | le chemin vers votre dossier media, ici : `/media`. Attention, il doit correspondre aussi Ă  celui qu'utilise Qbittorrent. | `/media` | +| Variable | Description | Example | +|----------------|-------------------------------------------------------------------------------------------------|-------------| +| `PUID` | Set using your user info (check with `id yourusername`) | `1000` | +| `GUID` | Same as above | `1000` | +| `MEDIA_PATH` | Path to your media folder, here: `/media`. It must match the one used by Qbittorrent. | `/media` | -DĂ©ployez la stack. +Deploy the stack. -### ParamĂ©trer Radarr +### Configure Radarr --- -Radarr est une app qui permet de requĂȘter Ă  votre place vos sources de torrent et de dĂ©finir quel type de release vous souhaitez tĂ©lĂ©charger en prioritĂ©. Radarr permet aussi de mettre Ă  jour vos films si une meilleure version est disponible. -Maintenant que vous avez dĂ©ployĂ© la stack, vous pouvez vous rendre sur `http://ipduserveur:7878`. +Radarr queries your torrent sources and lets you define the type of releases to prioritize. It can also upgrade your movies if a better version is available. + +Once deployed, visit `http://yourserverip:7878`. ::alert{type="danger"} :::list{type="danger"} -- __En cas d'Ă©chec :__ vĂ©rifiez les rĂšgles de votre pare-feu. +- __If it fails:__ check your firewall rules. ::: :: -CrĂ©ez vous un compte, choisissez bien *forms login*. +Create an account and choose *forms login*. -##### Ajouter un *root folder* +##### Add a *root folder* -- Dans le menu Ă  gauche, cliquez sur *Settings > Media Management*. -- Ajoutez un *root folder*, choisisez `/media/movies` +- Go to *Settings > Media Management*. +- Add a root folder and select `/media/movies`. ::alert{type="warning"} :::list{type="warning"} -- __Attention :__ Si vous avez dĂ©jĂ  des films dans `movies` issus de Qbittorrent, ne les ajoutez pas dans Sonarr si ce dernier vous le propose. Radarr risque de les modifier ce qui entrainerait l'arrĂȘt du seed par 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. ::: :: -##### Configurer les profils +##### Configure Profiles -Dans le menu *Settings > Profiles*, vous trouverez les profils par dĂ©faut de Radarr. Comprendre que lorsque vous faites une requete, vous demandez un de ces profils. Ainsi, radarr va chercher en prioritĂ© le parametre le plus Ă©levĂ©, puis s'il ne trouve pas, il va passer Ă  celui d'en dessous etc. Vous pouvez par exemple rĂ©gler comme ceci pour le profile "any", en dĂ©cochant tout sauf ce qui est sur l'image, et en les mettant dans le mĂȘme ordre. Avec ce profil "any", Radarr va chercher en prioritĂ© du 4K REMUX (meilleure qualitĂ©), puis s'il ne trouve pas, il va passer au critĂšre du dessous. +Go to *Settings > Profiles*. These are your default quality profiles. When you make a request, you're selecting one of these. For example, configure the “any” profile by unchecking everything except what is shown in the image and ordering them accordingly. This makes Radarr search for 4K REMUX first, then go down the list if unavailable. ![profiles_radarr](/img/serveex/radarr1.png) -##### Ajouter Qbittorrent +##### Add Qbittorrent -Dans *Settings > Downloads Clients* vous allez ajouter Qbittorrent. +In *Settings > Download Clients*, add Qbittorrent. -- Renseignez le *Host* avec l'IP de votre serveur et prĂ©cisez le port de la webui, si vous avez suivi mon tuto c'est le `5695`. -- Renseignez le *Username* et le *Password* de votre interface Qbittorrent. -- Cliquez sur *test*. -- Si tout est ok, cliquez sur *save*. +- Use your server IP as *Host* and port `5695` if following this guide. +- Provide your Qbittorrent *Username* and *Password*. +- Click *Test*. +- If successful, click *Save*. +##### Connect to Plex -##### Connecter Ă  Plex +Go to *Settings > Connect*, add a new connection and choose *Plex Media Server*. -Dans *Settings > Connect*, ajoutez une nouvelle connexion, choisissez *Plex Media Server*. -- Dans *Host* mettez `plex` ou l'adresse IP de votre serveur. -- Dans port mettez `32400`. -- Cliquez sur le bouton bleu "authenticate with Plex.tv" et authentifiez vous avec votre compte Plex. -- Appuyez sur le bouton *test*. -- Si tout est ok, appuyez sur le bouton *save*. +- Use `plex` or your server IP for *Host*. +- Port: `32400` +- Click the blue "authenticate with Plex.tv" button and log into Plex. +- Press *Test*, then *Save* if successful. +##### Get API Key for Prowlarr and Overseerr +- Go to *Settings > General* and copy your *API Key* for later use. -##### RĂ©cupĂ©rer la clĂ© API pour Prowlarr et Overserr - -- Dans *Settings > General*, copiez la *API Key* et notez la prĂ©cieusement. - -### ParamĂ©trer Sonarr +### Configure Sonarr --- -Sonarr est une app qui permet de requĂȘter Ă  votre place vos sources de torrent et de dĂ©finir quel type de release vous souhaitez tĂ©lĂ©charger en prioritĂ©. Radarr permet aussi de mettre Ă  jour vos sĂ©ries si une meilleure version est disponible. -- Rendez-vous sur `http://ipduserveur:8989`. -- Suivez exactement les mĂȘmes Ă©tapes que pour Radarr, et en *root folder* mettez `/media/tvseries`. +Sonarr queries torrent sources and defines what kind of TV series releases to prioritize. It also upgrades series when better versions are available. + +- Visit `http://yourserverip:8989`. +- Follow the same steps as for Radarr, but use `/media/tvseries` as the root folder. ::alert{type="danger"} :::list{type="danger"} -- __En cas d'Ă©chec :__ vĂ©rifiez les rĂšgles de votre pare-feu. +- __If it fails:__ check your firewall rules. ::: :: -### ParamĂ©trer Prowlarr +### Configure Prowlarr --- -Prowlarr est un proxy qui permet de gĂ©rer vos sources de torrents et de les passer Ă  Radarr et Sonarr. -Rendez-vous sur `http://ipduserveur:9696` et crĂ©ez vous un compte en choisissant bien *forms login*. +Prowlarr acts as a proxy to manage your torrent indexers and link them to Radarr and Sonarr. + +Go to `http://yourserverip:9696` and create an account, using *forms login*. ::alert{type="danger"} :::list{type="danger"} -- __En cas d'Ă©chec :__ vĂ©rifiez les rĂšgles de votre pare-feu. +- __If it fails:__ check your firewall rules. ::: :: +##### Add an Indexer -##### Ajouter une source +- Go to the *Indexers* section and add your torrent indexer. -- Dans la section *Indexers*, ajoutez l'indexer de votre source de torrent. +##### Add Radarr and Sonarr -##### Ajouter Radarr et Sonarr +In *Settings > Apps*, add Radarr and Sonarr with the following details: -Dans la section *Settings > Apps*, ajoutez Radarr et Sonarr avec les informations ci-dessous : -- Prowlarr Server : `http://prowlarr:9696` (ou remplacez prowlarr par l'IP de votre serveur) -- Sonarr / Radarr Server : `http://sonarr:8989` ou `http://radarr:7878`(ou remplacez sonarr/radarr par l'IP de votre serveur) -- API Key, la clĂ© que vous avez notĂ©e pour Radarr et celle de Sonarr. -- Appuyez sur *Test*. -- Si tout va bien, appuyez sur *Save*. +- Prowlarr Server: `http://prowlarr:9696` (or use server IP) +- Sonarr / Radarr Server: `http://sonarr:8989` or `http://radarr:7878` +- API Key: use the one copied from Radarr and Sonarr. +- Click *Test*, then *Save* if all goes well. - -### ParamĂ©trer Bazarr +### Configuring Bazarr --- -Bazarr est une app qui permet de chercher automatiquement les bons sous-titre dans les langues souhaitez pour tout les films et sĂ©ries que Radarr et Sonarr ajoutent pour vous. +Bazarr is an app that automatically searches for the correct subtitles in your preferred languages for all the movies and TV shows added by Radarr and Sonarr. -Rendez-vous sur `http://ipduserveur:9696`. +Go to `http://yourserverip:9696`. ::alert{type="danger"} :::list{type="danger"} -- __En cas d'Ă©chec :__ vĂ©rifiez les rĂšgles de votre pare-feu. +- __If it fails:__ check your firewall rules. ::: :: -Rendez-vous dans *Settings > General* et crĂ©ez un identifiant et un mot de passe en utilisant le *forms login*. +Go to *Settings > General* and create a username and password using *forms login*. -#### Ajouter un profil de langage +#### Add a Language Profile -- Dans *Settings > Languages* cliquez sur le bouton rose *Add new profile* et nommez le. -- Cliquez sur le bouton rose *Add Languages* et ajoutez les langues que vous souhaitez, par exemple *French* et *English*. -- Sauvegardez et quittez. -- En bas de l'ecran dans *Default Language For Newly Added Show*, cochez les deux cases et renseignez le profil que vous venez de crĂ©er. +- In *Settings > Languages*, click the pink *Add new profile* button and name it. +- Click the pink *Add Languages* button and add your preferred languages, e.g., *French* and *English*. +- Save and exit. +- At the bottom of the screen under *Default Language For Newly Added Show*, check both boxes and select the profile you just created. ![Bazarr](/img/serveex/bazarr2.png) -- Enregistrez avec le bouton tout en haut de l'Ă©cran. +- Save using the button at the top of the screen. -#### Ajouter des fournisseurs de sous-titre +#### Add Subtitle Providers -- Dans *Settings > Providers*, ajoutez vos fournisseurs favoris, comme par exemple : +- In *Settings > Providers*, add your preferred providers, for example: ![Bazarr](/img/serveex/bazarr.png) -- Enregistrez avec le bouton tout en haut de l'Ă©cran. +- Save using the button at the top of the screen. -#### Ajouter Radarr et Sonarr +#### Add Radarr and Sonarr -- Rendez-vous dans *Settings > Sonarr* -- Dans *Adress*, mettez `sonarr` ou l'adresse IP du serveur. -- Dans *Port* mettez `8989`. -- Dans *API Key* mettez la clĂ© API de Sonarr. -- Cliquez sur *Test*. -- Enregistrez avec le bouton tout en haut de l'Ă©cran. +- Go to *Settings > Sonarr* +- In *Address*, enter `sonarr` or your server's IP address. +- In *Port*, enter `8989`. +- In *API Key*, enter Sonarr’s API key. +- Click *Test*. +- Save using the button at the top of the screen. -Faites de mĂȘme avec Radarr. +Repeat the same steps for Radarr. - -### ParamĂ©trer Overseerr +### Configuring Overseerr --- -[Overseerr](https://overseerr.dev/) est une application qui permet de naviguer dans un catalogue de film et de faire des requetes Ă  Sonarr et Ă  Radarr. Il suffit de naviguer dans les films ou sĂ©ries, puis de cliquer sur *Demander*, et le film ou la sĂ©rie sera automatiquement tĂ©lĂ©chargĂ©e selon les paramĂštres de Radarr ou de Sonarr. Si le film ou la sĂ©rie n'est pas sortie, cela sera automatiquement tĂ©lĂ©chargĂ© lorsque cela sera disponible. Ainsi, les Ă©pisodes d'une sĂ©erie arrivent automatiquement au fur et Ă  mesure dans Plex sans aucune intervention manuelle. +[Overseerr](https://overseerr.dev/) is an app that lets you browse a movie catalog and send requests to Sonarr and Radarr. Just browse movies or series, click *Request*, and the media will automatically be downloaded according to your Radarr or Sonarr settings. If the title hasn’t been released yet, it will be downloaded automatically when available. This way, episodes of a series appear in Plex without any manual intervention. ![Overseerr](/img/serveex/overseerr.webp) -Rendez-vous sur `http://ipduserveur:5055` et authentifiez vous avec votre compte Plex. +Go to `http://yourserverip:5055` and log in with your Plex account. ::alert{type="danger"} :::list{type="danger"} -- __En cas d'Ă©chec :__ vĂ©rifiez les rĂšgles de votre pare-feu. +- __If it fails:__ check your firewall rules. ::: :: -#### Ajouter Radarr et Sonarr +#### Add Radarr and Sonarr -Lorsque cela vous est demandĂ©, ajoutez un serveur radarr : -- Cochez *serveur par dĂ©faut*. -- __Nom du serveur :__ Radarr -- __Nom d'hĂŽte ou adresse IP :__ `radarr` ou l'adresse IP de votre serveur -- __Port :__ `7878`. -- __ClĂ© d'API :__ la clĂ© API de Radarr. -- Cliquez sur *Tester* en bas. +When prompted, add a Radarr server: +- Check *Default server*. +- __Server name:__ Radarr +- __Hostname or IP address:__ `radarr` or your server's IP +- __Port:__ `7878` +- __API Key:__ Radarr’s API key +- Click *Test* at the bottom. -Si tout va bien, continuez Ă  renseigner les champs. -- __Profil de qualitĂ© :__ celui que vous avez configurĂ© (par exemple, `any`). -- __Dossier racine :__ le dossier de plex. Dans nos exemples : `/media/movies`. -- __DisponibilitĂ© minimale :__ `AnnoncĂ©`. Ainsi, si un film n'est pas sorti, vous pouvez le demander et il sera automatiquement rĂ©cupĂ©rĂ© Ă  sa sortie. -- Cochez les 3 cases du bas. -- Sauvegardez et continuez. +If the test succeeds, continue filling in the fields: +- __Quality Profile:__ the one you configured (e.g., `any`) +- __Root Folder:__ the Plex folder. In our examples: `/media/movies` +- __Minimum Availability:__ `Announced`. This allows requesting unreleased content and downloads it upon release. +- Check all 3 boxes at the bottom. +- Save and continue. -Puis faites de mĂȘme avec Sonarr : -- Cochez *serveur par dĂ©faut*. -- __Nom du serveur :__ Radarr -- __Nom d'hĂŽte ou adresse IP :__ `sonarr` ou l'adresse IP de votre serveur -- __Port :__ `8989`. -- __ClĂ© d'API :__ la clĂ© API de Sonarr. -- Cliquez sur *Tester* en bas. +Now do the same for Sonarr: +- Check *Default server*. +- __Server name:__ Sonarr +- __Hostname or IP address:__ `sonarr` or your server's IP +- __Port:__ `8989` +- __API Key:__ Sonarr’s API key +- Click *Test* at the bottom. -Si tout va bien, continuez Ă  renseigner les champs. -- __Profil de qualitĂ© :__ celui que vous avez configurĂ© (par exemple, `any`). -- __Dossier racine :__ le dossier de plex. Dans nos exemples : `/media/tvseries`. -- __Profil de langue :__ `Deprecated`. -- Cochez les 4 cases du bas. -- Sauvegardez et continuez. +If the test succeeds, continue filling in the fields: +- __Quality Profile:__ the one you configured (e.g., `any`) +- __Root Folder:__ the Plex folder. In our examples: `/media/tvseries` +- __Language Profile:__ `Deprecated` +- Check all 4 boxes at the bottom. +- Save and continue. -Et voilĂ  ! Vous n'avez plus qu'Ă  faire une demande d'un film et d'une serie, puis de vĂ©rifier dans qbittorrent ou dans radarr/sonarr que tout va bien. Dans quelques minutes, votre media sera sur Plex ! +And that’s it! Just request a movie or series, then check in qBittorrent or Radarr/Sonarr. Within a few minutes, your media will be available on Plex! -## Exposer Overseerr avec Swag +## Exposing Overseerr with SWAG --- -Il peut etre intĂ©ressant d'exposer Overseerr, si vous souhaitez pouvoir faire des requĂȘtes depuis l'exterieur sans VPN, ou si vous avez partagĂ© votre BibliothĂšque Plex Ă  des utilisateurs et que vous souhaitez qu'ils aient accĂšs Ă  Overseerr. +It can be useful to expose Overseerr if you want to send requests from outside your network without a VPN, or if you've shared your Plex library with others and want them to have Overseerr access. ::alert{type="info"} :::list{type="info"} -- Nous partons du principe que vous avez le sous-domaine `films.mondomaine.fr` avec un `CNAME` qui pointe vers `films.fr` dans [zone DNS](/generalites/dns). Et que bien sĂ»r, [Ă  moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur dans [les rĂšgles NAT](/generalites/nat). +- We assume you have the subdomain `films.mydomain.com` with a `CNAME` pointing to `films.fr` in your [DNS zone](/generalites/dns). And that [unless you’re using Cloudflare Zero Trust](/serveex/securite/cloudflare), port `443` on your router is forwarded to port `443` on your server via [NAT rules](/generalites/nat). ::: :: - -Rendez-vous dans dockge, et Ă©ditez le compose de SWAG en ajoutant le rĂ©seau d'overseer, qui est celui de Plex car dans la stack Plex : +Go to Dockge, edit the SWAG compose file, and add the Overseerr network, which is the same as Plex (since it’s in the Plex stack): ```yaml services: swag: container_name: # ... # ... - networks: # Relie le conteneur au rĂ©seau custom + networks: # Connects the container to a custom network # ... - - plex # Nom du rĂ©seau dĂ©clarĂ© dans la stack + - plex # Name of the network declared in the stack -networks: # DĂ©finit le rĂ©seau custom +networks: # Defines the custom network # ... - plex: # Nom du rĂ©seau dĂ©clarĂ© dans la stack - name: plex_default # Nom vĂ©ritable du rĂ©seau externe - external: true # PrĂ©cise que c'est un rĂ©seau Ă  rechercher en externe + plex: # Name of the declared network + name: plex_default # Actual name of the external network + external: true # Indicates it’s an external network ``` -Relancez la stack en cliquant sur "dĂ©ployer" et patientez le temps que SWAG soit complĂštement opĂ©rationnel. +Restart the stack by clicking “Deploy” and wait until SWAG is fully operational. ::alert{type="info"} :::list{type="info"} -- Ici nous partons du principe que le nom du rĂ©seau de Tautulli est `plex_default`. Vous pouvez vĂ©rifier que la connexion est opĂ©rationnelle en visitant le dashboard de SWAG en tapant `http://ipduserveur:81`. +- Here we assume the Tautulli network is named `plex_default`. You can verify the connection works by visiting the SWAG dashboard at `http://yourserverip:81`. ::: :: -CrĂ©ez le fichier `films.subdomain.conf` et Ă©ditez le : +Create and edit the file `films.subdomain.conf`: ::alert{type="success"} -✹ __Astuce :__ vous pouvez utiliser [File Browser](/serveex/files/file-browser) pour naviguer dans vos fichier et Ă©diter vos documents au lieu d'utiliser les commandes du terminal. +✹ __Tip:__ you can use [File Browser](/serveex/files/file-browser) to browse and edit files instead of using terminal commands. :: ```shell sudo vi /docker/swag/config/nginx/proxy-confs/films.subdomain.conf ``` -Rentrez en Ă©dition en appuyant sur `i`: +Enter insert mode by pressing `i`: -```nginx +```nginx ## Version 2024/07/16 # make sure that your overseerr container is named overseerr # make sure that your dns has a cname set for overseerr @@ -490,14 +486,14 @@ server { } ``` -Appuyez sur `Echap` puis sauvegardez et quittez en tappant `:x` +Press `Escape`, then type `:x` and press `Enter` to save and exit. -Patientez quelques minutes puis tapez dans votre navigateur `http://films.mondomaine.fr`. +Wait a few minutes, then visit `http://films.mydomain.com` in your browser. ::alert{type="danger"} :::list{type="danger"} -- __En cas d'Ă©chec :__ vĂ©rifiez les rĂšgles de votre pare-feu. +- __If it fails:__ check your firewall rules. ::: :: -Et voilĂ , vous avez exposĂ© Overseerr ! \ No newline at end of file +And there you go, Overseerr is now publicly accessible! \ No newline at end of file diff --git a/content/3.serveex/6.cloud/1.immich.md b/content/3.serveex/6.cloud/1.immich.md index 4b4d622..1349b26 100644 --- a/content/3.serveex/6.cloud/1.immich.md +++ b/content/3.serveex/6.cloud/1.immich.md @@ -8,16 +8,16 @@ main: # Immich ::alert{type="info"} -🎯 __Objectifs :__ installer [Immich](https://immich.app/docs/overview/introduction) pour gĂ©rer vos photos sur tout vos appareils. +🎯 __Goals:__ Install [Immich](https://immich.app/docs/overview/introduction) to manage your photos across all your devices. :: -[Immich](https://immich.app/docs/overview/introduction) est une solution de gestion de photos et de vidĂ©os que vous pouvez installer directement sur votre serveur. Cette solution remplace les clouds type Google Photo ou iCloud. Elle dispose de nombreuse fonctionnalitĂ©s comme la reconnaissance de visage ou la gĂ©olocalisation. +[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) ## Installation --- -Structure des dossiers +Folder structure ```console root @@ -28,81 +28,78 @@ root └── .env ``` - -Ouvrez Dockge, cliquez sur `compose`, appelez la stack `immich` puis copiez collez le contenu du dernier `docker-compose.yml` [publiĂ© ici](https://github.com/immich-app/immich/blob/main/docker/docker-compose.yml). +Open Dockge, click on `compose`, name the stack `immich`, then copy and paste the latest `docker-compose.yml` [published here](https://github.com/immich-app/immich/blob/main/docker/docker-compose.yml). ::alert{type="warning"} :::list{type="warning"} -- __Attention__ : n'ajoutez pas le label de Watchtower Ă  la stack d'Immich. Immich Ă©tant une solution en perpetuelle Ă©volution, des mises Ă  jour automatiques risqueraient de casser votre installation. +- __Warning__: Do not add the Watchtower label to the Immich stack. Immich evolves rapidly, and automatic updates may break your installation. ::: :: -Configurer le `.env` en copiant collant le contenu de la derniĂšre version [publiĂ©e ici](https://github.com/immich-app/immich/blob/main/docker/example.env) et suivez les commentaires indiquĂ©s dans le fichier. - +Configure the `.env` file by copying the latest version [from here](https://github.com/immich-app/immich/blob/main/docker/example.env) and follow the comments in the file. ::alert{type="info"} :::list{type="info"} -- Si vous avez un NAS ou un disque rĂ©seau partagĂ© via [samba](/generalites/samba/) pour stocker vos donnĂ©es, remplacez la valeur de `UPLOAD_LOCATION`{lang=properties} par le chemin d'accĂšs de votre dossier partagĂ©. +- If you're using a NAS or a network-shared drive via [Samba](/generalites/samba/) to store your data, replace the value of `UPLOAD_LOCATION`{lang=properties} with the path to your shared folder. ::: :: ::alert{type="success"} -✹ __Astuce :__ si votre CPU/iGPU/GPU le supporte, Immich permet d'utiliser l'accĂ©lĂ©ration matĂ©rielle pour lire les vidĂ©os ou pour la reconnaissance d'images. Ces fonctionnalitĂ©s peuvent tripler les performances d'Immich. Plus d'infos sur le [Transcoding](https://immich.app/docs/features/hardware-transcoding/) et sur le [Machine learning](https://immich.app/docs/features/ml-hardware-acceleration). +✹ __Tip:__ If your CPU/iGPU/GPU supports it, Immich can use hardware acceleration for video playback and image recognition. This can triple performance. Learn more about [Transcoding](https://immich.app/docs/features/hardware-transcoding/) and [Machine Learning](https://immich.app/docs/features/ml-hardware-acceleration). :: -DĂ©ployez le conteneur. +Deploy the container. -Et voilĂ , vous pouvez vous connecter et suivre les instructions sur `http://ipduserveur:2283` +You're done! You can connect and follow the setup instructions at `http://yourserverip:2283`. -## Exposer Immich avec Swag +## Exposing Immich with SWAG --- -Tout l'intĂ©rĂȘt d'une telle solution, c'est de pouvoir y accĂ©der Ă  distance et sur tout vos appareils. Pour cela, nous allons exposer Immich via Swag. +The main benefit of this setup is being able to access Immich remotely on all your devices. We'll expose Immich using SWAG. ::alert{type="info"} -📋 __Au prĂ©alable :__ +📋 __Before you begin:__

-Nous partons du principe que vous avez le sous-domaine `immich.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans votre [zone DNS](/generalites/dns). Et que bien sĂ»r, [Ă  moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur via [les rĂšgles NAT](/generalites/nat). +We assume that you have a subdomain `immich.yourdomain.com` with a `CNAME` pointing to `yourdomain.com` in your [DNS zone](/generalites/dns). Also, unless you're using [Cloudflare Zero Trust](/serveex/securite/cloudflare), make sure port `443` on your router is forwarded to port `443` on your server via [NAT rules](/generalites/nat). :: -Dans Dockge, rendez-vous dans la stack de SWAG et Ă©ditez le compose en ajoutant le rĂ©seau de immich : +In Dockge, open the SWAG stack and edit the compose file to add Immich's network: ```yaml services: swag: container_name: # ... # ... - networks: # Relie le conteneur au rĂ©seau custom + networks: # Connects the container to the custom network # ... - - immich # Nom du rĂ©seau dĂ©clarĂ© dans la stack + - immich # Network name defined in the stack -networks: # DĂ©finit le rĂ©seau custom +networks: # Defines the custom network # ... - immich: # Nom du rĂ©seau dĂ©clarĂ© dans la stack - name: immich_default # Nom vĂ©ritable du rĂ©seau externe - external: true # PrĂ©cise que c'est un rĂ©seau Ă  rechercher en externe + immich: # Network name defined in the stack + name: immich_default # Actual external network name + external: true # Indicates it's an external network ``` ::alert{type="info"} :::list{type="info"} -- Ici nous partons du principe que le nom du rĂ©seau de immich est `immich_default`. Vous pouvez vĂ©rifier que la connexion est opĂ©rationnelle en visitant le dashboard de SWAG en tapant http://ipduserveur:81. +- We're assuming Immich's network is named `immich_default`. You can check connectivity by visiting the SWAG dashboard at http://yourserverip:81. ::: :: -Relancez la stack en cliquant sur "dĂ©ployer" et patientez le temps que SWAG soit complĂštement opĂ©rationnel. +Restart the stack by clicking "deploy" and wait for SWAG to fully initialize. - -Dans les dossiers de Swag, crĂ©ez le fichier `immich.subdomain.conf`. +In the SWAG folders, create a file named `immich.subdomain.conf`. ::alert{type="success"} :::list{type="success"} -- __Astuce :__ vous pouvez utiliser [File Browser](/serveex/files/file-browser) pour naviguer dans vos fichier et Ă©diter vos documents au lieu d'utiliser les commandes du terminal. +- __Tip:__ You can use [File Browser](/serveex/files/file-browser) to navigate and edit your files instead of using terminal commands. ::: :: ```shell sudo vi /docker/swag/config/nginx/proxy-confs/immich.subdomain.conf ``` -Entrez en modification avec la touche `i` et collez la configuration ci-dessous : +Press `i` to enter insert mode, then paste the following configuration: ```nginx ## Version 2023/12/19 @@ -150,7 +147,6 @@ server { set $upstream_port 3001; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; - } location ~ (/immich)?/api { @@ -160,15 +156,14 @@ server { set $upstream_port 3001; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; - } } ``` -Appuyez sur `Echap` puis sauvegardez et quittez en tapant `:x` puis en appuyant sur `EntrĂ©e`. +Press `Esc`, type `:x`, then hit `Enter` to save and exit. -Et voilĂ , vous avez exposĂ© Immich ! N'oubliez pas d'installer les applications [iOS](https://apps.apple.com/us/app/immich/id1613945652)/[Android](https://play.google.com/store/apps/details?id=app.alextran.immich) afin de synchroniser vos appareils. +That's it! Immich is now accessible from the internet. Don’t forget to install the [iOS](https://apps.apple.com/us/app/immich/id1613945652) / [Android](https://play.google.com/store/apps/details?id=app.alextran.immich) apps to sync your devices. ::alert{type="success"} -✹ __Astuce :__ Vous pouvez protĂ©ger cette app avec Authentik de façon native en [suivant ces instructions](https://docs.goauthentik.io/integrations/services/immich/). -:: +✹ __Tip:__ You can protect this app with Authentik natively by [following these instructions](https://docs.goauthentik.io/integrations/services/immich/). +:: \ No newline at end of file diff --git a/content/3.serveex/6.cloud/2.nextcloud.md b/content/3.serveex/6.cloud/2.nextcloud.md index dc3412d..5fd8215 100644 --- a/content/3.serveex/6.cloud/2.nextcloud.md +++ b/content/3.serveex/6.cloud/2.nextcloud.md @@ -8,10 +8,10 @@ main: # Nextcloud ::alert{type="info"} -🎯 __Objectifs :__ installer [Nextcloud](https://nextcloud.com/) pour gĂ©rer vos photos sur tout vos appareils. +🎯 __Goals:__ Install [Nextcloud](https://nextcloud.com/) to manage your photos and files across all your devices. :: -[Nextcloud](https://nextcloud.com/) est une solution qui vous permet d'accĂ©der Ă  vos donnĂ©es sur tout vos appareils, et de les synchroniser. Nexctloud dispose Ă©galement de fonctionnalitĂ©s de collaboration, de calendrier et bien d'autres. Cette solution remplace des solutions du type Google Drive, iCloud, ou encore OneDrive. +[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. It’s a great alternative to services like Google Drive, iCloud, or OneDrive. ![Picture](/img/serveex/nextcloud.png) @@ -19,11 +19,11 @@ main: --- ::alert{type="info"} :::list{type="info"} -- Nous utiliserons l'image docker maintenue par [LinuxServer.io](https://docs.linuxserver.io/images/docker-nextcloud/) +- We'll be using the Docker image maintained by [LinuxServer.io](https://docs.linuxserver.io/images/docker-nextcloud/) ::: :: -Structure des fichiers +File structure: ```console root @@ -35,7 +35,7 @@ root └── .env ``` -Ouvrez Dockge, cliquez sur `compose`, appelez la stack `nextcloud` puis copiez collez ceci : +Open Dockge, click on `compose`, name the stack `nextcloud` and paste the following: ```yaml --- @@ -57,16 +57,17 @@ services: ::alert{type="info"} :::list{type="info"} -- Si vous avez un NAS ou un disque rĂ©seau partagĂ© via [samba](/generalites/samba) pour stocker vos donnĂ©es, remplacez `/docker/nextcloud/data` par le chemin d'accĂšs de votre dossier partagĂ©. +- If you’re using a NAS or network-shared drive via [Samba](/generalites/samba), replace `/docker/nextcloud/data` with the path to your shared folder. ::: :: -Trouvez votre `PUID` et votre `GUID` en tapant la commande suivante : +Find your `PUID` and `GUID` by running the following command: ```shell -id nomdutilisateur +id username ``` -Et renseignez le `.env` avec le port souhaitĂ©, et les infos que vous avez trouvĂ©es, par exemple : + +Then fill out the `.env` file with your preferred port and the values found above, for example: ```properties PUID=1000 @@ -74,83 +75,87 @@ GUID=1000 PORT=4545 ``` -DĂ©ployez la stack et rendez-vous sur `http://ipduserveur:4545` et suivez les instructions. +Deploy the stack and visit `http://yourserverip:4545` to complete the setup. ::alert{type="danger"} :::list{type="danger"} -- __En cas d'Ă©chec :__ vĂ©rifiez les rĂšgles de votre pare-feu. +- __If it fails:__ check your firewall rules. ::: :: -## Exposer Nextcloud avec Swag +## Exposing Nextcloud with Swag --- -Tout l'intĂ©rĂȘt d'une telle solution, c'est de pouvoir y accĂ©der Ă  distance et sur tout vos appareils. Pour cela, nous allons exposer Nextcloud via Swag. +The goal of this setup is to access Nextcloud remotely from all your devices. We’ll use Swag to expose the app. ::alert{type="info"} :::list{type="info"} -- Nous partons du principe que vous avez le sous-domaine `nextcloud.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans votre [zone DNS](/generalites/dns). Et que bien sĂ»r, [Ă  moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur via [les rĂšgles NAT](/generalites/nat). +- We assume you have a subdomain `nextcloud.yourdomain.com` with a `CNAME` pointing to `yourdomain.com` in your [DNS zone](/generalites/dns). And unless you’re using [Cloudflare Zero Trust](/serveex/securite/cloudflare), port `443` on your router must be forwarded to port `443` on your server using [NAT rules](/generalites/nat). ::: :: -Dans Dockge, rendez-vous dans la stack de SWAG et Ă©ditez le compose en ajoutant le rĂ©seau de nextcloud : +In Dockge, go to your SWAG stack and edit the compose to add Nextcloud's network: ```yaml services: swag: container_name: # ... # ... - networks: # Relie le conteneur au rĂ©seau custom + networks: # ... - - nextcloud # Nom du rĂ©seau dĂ©clarĂ© dans la stack + - nextcloud -networks: # DĂ©finit le rĂ©seau custom +networks: # ... - nextcloud: # Nom du rĂ©seau dĂ©clarĂ© dans la stack - name: nextcloud_default # Nom vĂ©ritable du rĂ©seau externe - external: true # PrĂ©cise que c'est un rĂ©seau Ă  rechercher en externe + nextcloud: + name: nextcloud_default + external: true ``` ::alert{type="info"} :::list{type="info"} -- Ici nous partons du principe que le nom du rĂ©seau de nextcloud est `nextcloud_default`. Vous pouvez vĂ©rifier que la connexion est opĂ©rationnelle en visitant le dashboard de SWAG en tapant http://ipduserveur:81. +- We assume the Nextcloud network is named `nextcloud_default`. You can confirm connectivity by visiting the SWAG dashboard at http://yourserverip:81. ::: :: -Relancez la stack en cliquant sur "dĂ©ployer" et patientez le temps que SWAG soit complĂštement opĂ©rationnel. +Redeploy the stack and wait for SWAG to become fully operational. -Dans les fichiers de nextcloud, Ă©ditez le fichier `config.php`. +In Nextcloud’s files, edit the `config.php` file: ::alert{type="success"} -✹ __Astuce :__ vous pouvez utiliser [File Browser](/serveex/files/file-browser) pour naviguer dans vos fichier et Ă©diter vos documents au lieu d'utiliser les commandes du terminal. +✹ __Tip:__ You can use [File Browser](/serveex/files/file-browser) to navigate and edit files instead of using terminal commands. :: ```shell sudo vi /docker/nextcloud/config/www/nextcloud/config/config.php ``` -Entrez en modification avec la touche `i` et copiez les informations suivantes __avant__ `);`. +Enter edit mode with `i` and paste the following before the final `);`: -```js -'trusted_proxies' => [gethostbyname('swag')], 'overwrite.cli.url' => 'https://nextcloud.example.com/', +```php +'trusted_proxies' => [gethostbyname('swag')], +'overwrite.cli.url' => 'https://nextcloud.example.com/', 'overwritehost' => 'nextcloud.example.com', 'overwriteprotocol' => 'https', ``` -Ajoutez Ă©galement votre nom de domaine dans la section `array` , cela devrait ressembler Ă  ceci -```js - array ( - 0 => '192.168.0.1:444', # Cette ligne est surement diffĂ©rente chez vous, ne la modifiez pas ! - 1 => 'nextcloud.mondomaine.fr', # Renseignez votre domaine - ), -``` -Appuyez sur `Echap` puis sauvegardez et quittez en tapant `:x` puis en appuyant sur `EntrĂ©e`. +Also add your domain in the `array` section. It should look like this: -Dans les dossiers de Swag, crĂ©ez le fichier `nextcloud.subdomain.conf`. +```php +array ( + 0 => '192.168.0.1:444', # This line may differ—don’t change it! + 1 => 'nextcloud.yourdomain.com', # Add your domain here +), +``` + +Press `Esc`, then save and exit by typing `:x` and hitting Enter. + +In Swag’s folders, create the file `nextcloud.subdomain.conf`: ```shell -sudo vi /docker/swag/config/nginx/proxy-confs/nexctloud.subdomain.conf +sudo vi /docker/swag/config/nginx/proxy-confs/nextcloud.subdomain.conf ``` -Entrez en modification avec la touche `i` et collez la configuration ci-dessous : + +Enter edit mode with `i` and paste the following: ```nginx ## Version 2024/04/25 @@ -173,7 +178,6 @@ server { proxy_pass $upstream_proto://$upstream_app:$upstream_port; # Hide proxy response headers from Nextcloud that conflict with ssl.conf - # Uncomment the Optional additional headers in SWAG's ssl.conf to pass Nextcloud's security scan proxy_hide_header Referrer-Policy; proxy_hide_header X-Content-Type-Options; proxy_hide_header X-Frame-Options; @@ -185,10 +189,10 @@ server { } ``` -Appuyez sur `Echap` puis sauvegardez et quittez en tapant `:x` puis en appuyant sur `EntrĂ©e`. +Press `Esc`, save and exit with `:x` then Enter. -Et voilĂ , vous avez exposĂ© Nextcloud ! Et n'oubliez pas d'installer [les applications pour ordinateurs et mobiles](https://nextcloud.com/fr/install/). +That’s it—you’ve exposed Nextcloud! Don’t forget to install [the desktop and mobile apps](https://nextcloud.com/install/). ::alert{type="success"} -✹ __Astuce :__ Vous pouvez protĂ©ger cette app avec Authentik de façon native en [suivant ces instructions](https://docs.goauthentik.io/integrations/services/nextcloud/). -:: \ No newline at end of file +✹ __Tip:__ You can natively protect this app with Authentik by [following these instructions](https://docs.goauthentik.io/integrations/services/nextcloud/). +:: diff --git a/content/3.serveex/7.files/1.file-browser.md b/content/3.serveex/7.files/1.file-browser.md index f7e6d75..cf50b40 100644 --- a/content/3.serveex/7.files/1.file-browser.md +++ b/content/3.serveex/7.files/1.file-browser.md @@ -8,18 +8,18 @@ main: # File Browser ::alert{type="info"} -🎯 __Objectifs :__ -- Installer File Browser -- Exposer File Browser avec Swag +🎯 __Objectives:__ +- Install File Browser +- Expose File Browser using Swag :: -[File Browser](https://github.com/filebrowser/filebrowser) est une interface permettant d'accĂ©der aux fichiers de votre serveur et de les Ă©diter. +[File Browser](https://github.com/filebrowser/filebrowser) is a web-based interface that lets you access and edit the files on your server. ![File Browser](/img/serveex/filebrowser.png) ## Installation --- -Ouvrez Dockge, cliquez sur `compose`, appelez la stack `filebrowser` puis copiez collez ceci : +Open Dockge, click on `compose`, name the stack `filebrowser`, then copy and paste the following: ```yaml --- @@ -29,14 +29,14 @@ services: volumes: - /:/srv - /docker/filebrowser/config:/config/ - # - /chemin/vers/vos/dossiers:/vosdossiers + # - /path/to/your/folders:/yourfolders ports: - 8010:80 image: filebrowser/filebrowser:s6 ``` ::alert{type="success"} -✹ __Astuce :__ ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises Ă  jour +✹ __Tip:__ Add the watchtower label to each container to automate updates. ```yaml services: @@ -46,64 +46,64 @@ services: - com.centurylinklabs.watchtower.enable=true :: - -DĂ©ployez le conteneur et rendez-vous sur `http://ipduserveur:8010`. Et voilĂ , votre instance File Browser en webui est disponible ! +Deploy the container and go to `http://yourserverip:8010`. That’s it—your File Browser web UI is up and running! ::alert{type="danger"} :::list{type="danger"} -- __En cas d'Ă©chec :__ vĂ©rifiez les rĂšgles de votre pare-feu. +- __If it doesn’t work:__ check your firewall rules. ::: :: -## Exposer File Browser avec Swag +## Exposing File Browser with Swag --- ::alert{type="warning"} :::list{type="warning"} -- File Browser n'utilise pas d'authentification multifacteur. Exposer File Browser sur internet pourrait compromettre les machines auxquelles il est reliĂ©. Ne le faite que si vous utilisez un systeme d'authentification multifacteur comme [Authentik](/serveex/securite/authentik/). Sinon, n'exposez pas avec SWAG et utilisez plutĂŽt un VPN comme [Wireguard](/serveex/securite/wireguard). +- File Browser 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 [Authentik](/serveex/securite/authentik/). Otherwise, do not expose it with SWAG—use a VPN like [Wireguard](/serveex/securite/wireguard) instead. ::: :: -Vous aurez peut-etre envie d'y accĂ©der Ă  distance et sur tout vos appareils. Pour cela, nous allons exposer IT Tools via Swag. +You may want to access File Browser remotely from all your devices. To do that, we’ll expose it through Swag. ::alert{type="info"} :::list{type="info"} -- __Au prĂ©alable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `files.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [Ă  moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez dĂ©jĂ  redirigĂ© le port `443` de votre box vers le `443` de votre serveur dans [les rĂšgles NAT](/generalites/nat). +- __Pre-requisite:__ We assume you've already created a subdomain like `files.yourdomain.com` in your [DNS zone](/generalites/dns) pointing to `yourdomain.com` with a `CNAME`, and—unless you're using Cloudflare Zero Trust—have already forwarded port `443` on your router to port `443` on your server using [NAT rules](/generalites/nat). ::: :: -Dans Dockge, rendez-vous dans la stack de SWAG et Ă©ditez le compose en ajoutant le rĂ©seau de filebrowser : +In Dockge, go to the SWAG stack and edit the compose file to add File Browser’s network: ```yaml services: swag: container_name: # ... # ... - networks: # Relie le conteneur au rĂ©seau custom + networks: # Connects the container to the custom network # ... - - filebrowser # Nom du rĂ©seau dĂ©clarĂ© dans la stack + - filebrowser # Name of the network declared in the stack -networks: # DĂ©finit le rĂ©seau custom +networks: # Defines the custom network # ... - filebrowser: # Nom du rĂ©seau dĂ©clarĂ© dans la stack - name: filebrowser_default # Nom vĂ©ritable du rĂ©seau externe - external: true # PrĂ©cise que c'est un rĂ©seau Ă  rechercher en externe + filebrowser: # Name of the network declared in the stack + name: filebrowser_default # Actual name of the external network + external: true # Specifies it's an external network ``` ::alert{type="info"} :::list{type="info"} -- Ici nous partons du principe que le nom du rĂ©seau de filebrowser est `filebrowser_default`. Vous pouvez vĂ©rifier que la connexion est opĂ©rationnelle en visitant le dashboard de SWAG en tapant http://ipduserveur:81. +- Here, we assume the network name for File Browser is `filebrowser_default`. You can confirm the connection is working by accessing the SWAG dashboard at http://yourserverip:81. ::: :: -Relancez la stack en cliquant sur "dĂ©ployer" et patientez le temps que SWAG soit complĂštement opĂ©rationnel. +Restart the stack by clicking "deploy" and wait for SWAG to fully initialize. -Dans les dossiers de Swag, crĂ©ez le fichier `files.subdomain.conf`. +In the Swag folders, create the file `files.subdomain.conf`. ```shell sudo vi /docker/swag/config/nginx/proxy-confs/files.subdomain.conf ``` -Entrez en modification avec la touche `i` et collez la configuration ci-dessous : + +Enter insert mode by pressing `i`, and paste the following configuration: ```nginx ## Version 2023/12/19 @@ -151,14 +151,14 @@ server { set $upstream_port 80; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; - } } ``` -Appuyez sur `Echap` puis sauvegardez et quittez en tapant `:x` puis en appuyant sur `EntrĂ©e`. +Press `Esc`, then save and exit with `:x` followed by `Enter`. + +That’s it—File Browser is now exposed! -Et voilĂ , vous avez exposĂ© File Browser ! ::alert{type="success"} -✹ __Astuce :__ vous pouvez protĂ©ger cette app avec Authentik en ouvrant `files.subodmain.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/securite/authentik#protĂ©ger-une-app-par-reverse-proxy). +✹ __Tip:__ You can protect this app with Authentik by opening `files.subdomain.conf` and uncommenting `include /config/nginx/authentik-server.conf;`{lang=nginx} and `include /config/nginx/authentik-location.conf;`{lang=nginx}. Don’t forget to [create an application and provider in Authentik](/serveex/securite/authentik#protĂ©ger-une-app-par-reverse-proxy). :: \ No newline at end of file diff --git a/content/3.serveex/7.files/2.pingvin.md b/content/3.serveex/7.files/2.pingvin.md index a1fa640..6f62f24 100644 --- a/content/3.serveex/7.files/2.pingvin.md +++ b/content/3.serveex/7.files/2.pingvin.md @@ -205,9 +205,4 @@ Vous pouvez protĂ©ger cette app avec Authentik de façon native en suivant les i - `ID du client OpenID` avec l'ID que vous avez copiĂ© en Ă©tape 2. - `Secret du client OpenID` avec le token que vous avez copiĂ© en Ă©tape 2. -Et voilĂ , dĂ©sormais lorsque vous vous connectez Ă  Pingvin, un bouton "Open ID" sera disponible en dessous de la mire de connexion. - - - - - +Et voilĂ , dĂ©sormais lorsque vous vous connectez Ă  Pingvin, un bouton "Open ID" sera disponible en dessous de la mire de connexion. \ No newline at end of file diff --git a/content/3.serveex/7.files/_dir.yml b/content/3.serveex/7.files/_dir.yml index 7ad2125..b217245 100644 --- a/content/3.serveex/7.files/_dir.yml +++ b/content/3.serveex/7.files/_dir.yml @@ -1 +1 @@ -navigation.title: Fichiers & partage +navigation.title: File & share \ No newline at end of file diff --git a/content/3.serveex/8.development/1.code-server.md b/content/3.serveex/8.development/1.code-server.md index 19bec8a..c801bba 100644 --- a/content/3.serveex/8.development/1.code-server.md +++ b/content/3.serveex/8.development/1.code-server.md @@ -1,6 +1,6 @@ ---- +--- navigation: true -title: Code-Serveur +title: Code-Server main: fluid: false --- @@ -8,13 +8,13 @@ main: # Code-Server ::alert{type="info"} -🎯 __Objectifs :__ -- Installer code-server -- Monter des dossiers dans vscode -- Exposer code-server avec Swag +🎯 __Goals:__ +- Install code-server +- Mount folders into VS Code +- Expose code-server with Swag :: -[code-server](https://github.com/linuxserver/docker-code-server) est un conteneur permettant d'accĂ©der Ă  [vscode](https://code.visualstudio.com/) en web-ui dans un environnement linux. C'est littĂ©ralement vscode et vos projets directement dans votre poche, disponibles partout. +[code-server](https://github.com/linuxserver/docker-code-server) is a container that lets you access [VS Code](https://code.visualstudio.com/) via a web UI in a Linux environment. It's literally VS Code and your projects in your pocket, available anywhere. ![code-server](https://github.com/coder/code-server/raw/main/docs/assets/screenshot-2.png) @@ -22,21 +22,21 @@ main: --- ::alert{type="info"} :::list{type="info"} -- Pour cette installation nous utiliserons [l'image maintenue par LinuxServer.io](https://docs.linuxserver.io/images/docker-code-server/). +- For this setup, we’ll use the [image maintained by LinuxServer.io](https://docs.linuxserver.io/images/docker-code-server/). ::: :: -Structure des dossiers +Folder structure ```console root ├── docker │ └── code-server │ └── config -└── #n'importe quel dossier Ă  monter dans vscode +└── #any folder you want to mount in VS Code ``` -Ouvrez Dockge, cliquez sur `compose`, appelez la stack `code-server` puis copiez collez ceci : +Open Dockge, click on `compose`, name the stack `code-server`, and paste the following: ```yaml --- @@ -51,15 +51,15 @@ services: - HASHED_PASSWORD=${PW} volumes: - /docker/code-server/config:/config - # ajoutez vos dossier Ă  monter dans vscode - # - /chemin/vers/dossier:/dossier + # add folders to mount in VS Code + # - /path/to/folder:/folder ports: - 8443:8443 restart: unless-stopped ``` ::alert{type="success"} -✹ Ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises Ă  jour +✹ Add the Watchtower label to each container to automate updates ```yaml services: @@ -69,19 +69,19 @@ services: - com.centurylinklabs.watchtower.enable=true :: -Choisissez un mot de passe et gĂ©nĂ©rez un hash +Choose a password and generate its hash: ```shell -echo -n "votremotdepasse" | npx argon2-cli -e +echo -n "yourpassword" | npx argon2-cli -e ``` -Notez prĂ©cieusement le rĂ©sultat. Trouvez votre PUID et votre GUID en tapant la commande suivante : +Save the result carefully. Find your PUID and GUID with: ```shell -id nomdutilisateur +id yourusername ``` -Et renseignez le `.env` avec les infos que vous avez trouvĂ©es, par exemple : +Fill in the `.env` file with the values you found, for example: ```properties PW='$argon2i$v=19$m=4096,t=3,p=1$wST5QhBgk2lu1ih4DMuxvg$LS1alrVdIWtvZHwnzCM1DUGg+5DTO3Dt1d5v9XtLws4' @@ -91,77 +91,78 @@ GUID=1000 ::alert{type="warning"} :::list{type="warning"} -- __Attention :__ Pensez Ă  mettre un guillemet simple `'`au debut et Ă  la fin du hash +- __Note:__ Make sure to wrap the hash in single quotes `'` ::: :: -DĂ©ployez le conteneur et rendez-vous sur `http://ipduserveur:8443`. Et voilĂ , votre instance code-server en webui est disponible ! +Deploy the container and go to `http://yourserverip:8443`. VoilĂ , your code-server instance is up and running in the browser! ::alert{type="danger"} :::list{type="danger"} -- __En cas d'Ă©chec :__ vĂ©rifiez les rĂšgles de votre pare-feu. +- __If it fails:__ check your firewall rules. ::: :: -## Monter des dossiers +## Mount Folders --- -Vous pouvez monter les dossiers Ă  partager dans vscode en ajoutant les volumes concernĂ©s dans le compose.yaml (ou via dockge), et en redĂ©ployant le conteneur. +You can mount folders into VS Code by adding the relevant volumes in `compose.yaml` (or via Dockge), then redeploy the container. ```yaml services: code-server: #... volumes: - - /chemin/vers/dossier:/dossier + - /path/to/folder:/folder ``` -Une fois dans vscode, vous pourrez accĂ©der au dossier. +Once inside VS Code, you'll have access to the mounted folder. -## Exposer code-server avec Swag +## Expose code-server with Swag --- -Tout l'intĂ©rĂȘt d'une telle solution, c'est de pouvoir y accĂ©der Ă  distance et sur tout vos appareils. Pour cela, nous allons exposer coder-server via Swag. +The whole point of such a solution is to access it remotely from any device. To do this, we’ll expose code-server via Swag. ::alert{type="info"} :::list{type="info"} -- __Au prĂ©alable :__ Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `code.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et [Ă  moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez dĂ©jĂ  redirigĂ© le port `443` de votre box vers le `443` de votre serveur dans [les rĂšgles NAT](/generalites/nat). +- __Preliminary:__ We assume you’ve created a subdomain like `code.yourdomain.com` with a `CNAME` pointing to `yourdomain.com` in your [DNS zone](/generalites/dns), and—unless you're using [Cloudflare Zero Trust](/serveex/securite/cloudflare)—that you’ve forwarded port `443` from your router to port `443` on your server using [NAT rules](/generalites/nat). ::: :: -Dans Dockge, rendez-vous dans la stack de SWAG et Ă©ditez le compose en ajoutant le rĂ©seau de code-server : +In Dockge, go to the SWAG stack and edit the compose file to add code-server’s network: ```yaml services: swag: container_name: # ... # ... - networks: # Relie le conteneur au rĂ©seau custom + networks: # Connects the container to a custom network # ... - - code-server # Nom du rĂ©seau dĂ©clarĂ© dans la stack + - code-server # Name of the network defined in the stack -networks: # DĂ©finit le rĂ©seau custom +networks: # Defines the custom network # ... - code-server: # Nom du rĂ©seau dĂ©clarĂ© dans la stack - name: code-serveur # Nom vĂ©ritable du rĂ©seau externe - external: true # PrĂ©cise que c'est un rĂ©seau Ă  rechercher en externe + code-server: # Name of the network defined in the stack + name: code-serveur # Actual name of the external network + external: true # Indicates it’s an external network ``` ::alert{type="info"} :::list{type="info"} -- Ici nous partons du principe que le nom du rĂ©seau de code-server est `code-server_default`. Vous pouvez vĂ©rifier que la connexion est opĂ©rationnelle en visitant le dashboard de SWAG en tapant http://ipduserveur:81. +- We assume the network name is `code-server_default`. You can verify that the connection works by visiting the SWAG dashboard at http://yourserverip:81. ::: :: -Relancez la stack en cliquant sur "dĂ©ployer" et patientez le temps que SWAG soit complĂštement opĂ©rationnel. +Redeploy the stack by clicking “deploy” and wait until SWAG is fully operational. -Dans les dossiers de Swag, crĂ©ez le fichier `code.subdomain.conf`. +Inside the Swag config folders, create the file `code.subdomain.conf`. ::alert{type="success"} -✹ __Astuce :__ vous pouvez utiliser [File Browser](/serveex/files/file-browser) pour naviguer dans vos fichier et Ă©diter vos documents au lieu d'utiliser les commandes du terminal. +✹ __Tip:__ You can use [File Browser](/serveex/files/file-browser) to navigate and edit your files instead of using terminal commands. :: ```shell sudo vi /docker/swag/config/nginx/proxy-confs/code.subdomain.conf ``` -Entrez en modification avec la touche `i` et collez la configuration ci-dessous : + +Enter insert mode with `i` and paste the following configuration: ```nginx ## Version 2023/12/19 @@ -209,15 +210,14 @@ server { set $upstream_port 8443; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; - } } ``` -Appuyez sur `Echap` puis sauvegardez et quittez en tapant `:x` puis en appuyant sur `EntrĂ©e`. +Press `Esc`, then save and exit by typing `:x` and pressing `Enter`. -Et voilĂ , vous avez exposĂ© code-server ! +That’s it — code-server is now exposed! ::alert{type="success"} -✹ __Astuce :__ Vous pouvez protĂ©ger cette app avec Authentik en ouvrant `code.subodmain.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/securite/authentik#protĂ©ger-une-app-par-reverse-proxy). +✹ __Tip:__ You can protect this app with Authentik by opening `code.subdomain.conf` and uncommenting the lines `include /config/nginx/authentik-server.conf;` and `include /config/nginx/authentik-location.conf;`. Don’t forget to [create an application and provider in Authentik](/serveex/securite/authentik#protĂ©ger-une-app-par-reverse-proxy). :: \ No newline at end of file diff --git a/content/3.serveex/8.development/2.gitea.md b/content/3.serveex/8.development/2.gitea.md index 4741c64..f07c6ef 100644 --- a/content/3.serveex/8.development/2.gitea.md +++ b/content/3.serveex/8.development/2.gitea.md @@ -8,18 +8,18 @@ main: # Gitea ::alert{type="info"} -🎯 __Objectifs :__ -- Installer Gitea -- Exposer Gitea avec Swag +🎯 __Goals:__ +- Install Gitea +- Expose Gitea using Swag :: -[Gitea](https://https://about.gitea.com/) est une plateforme DevOps, permettant de gĂ©rer des dĂ©pots, Ă  la maniĂšre de GitHub mais chez vous en selfhost. +[Gitea](https://about.gitea.com/) is a self-hosted DevOps platform that allows you to manage repositories much like GitHub, but on your own infrastructure. ![gitea](https://about.gitea.com/img/home-screenshot.png) ## Installation --- -Structure des dossiers +Folder structure ```console root @@ -28,7 +28,7 @@ root └── data ``` -Ouvrez Dockge, cliquez sur `compose`, appelez la stack `gitea` puis copiez collez ceci : +Open Dockge, click on `compose`, name the stack `gitea`, and paste the following content: ```yaml --- @@ -52,67 +52,68 @@ services: - 3333:3000 - 222:22 ``` -Et renseignez le `.env` avec les infos que vous avez trouvĂ©es, par exemple : + +Fill out the `.env` file with the required information, for example: ```properties UID=1000 GID=1000 ``` -DĂ©ployez le conteneur et rendez-vous sur `http://ipduserveur:3333`. Et voilĂ , votre instance Gitea est disponible ! +Deploy the container and go to `http://yourserverip:3333`. Your Gitea instance is now up and running! ::alert{type="danger"} :::list{type="danger"} -- __En cas d'Ă©chec :__ vĂ©rifiez les rĂšgles de votre pare-feu. +- __If it fails:__ check your firewall rules. ::: :: -## Exposer Gitea avec Swag +## Exposing Gitea with Swag --- -Tout l'intĂ©rĂȘt d'une telle solution, c'est de pouvoir y accĂ©der Ă  distance et sur tout vos appareils. Pour cela, nous allons exposer Gitea via Swag. +The benefit of this setup is being able to access it remotely from any of your devices. To do so, we’ll expose Gitea through Swag. ::alert{type="info"} :::list{type="info"} -- __Au prĂ©alable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `gitea.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [Ă  moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez dĂ©jĂ  redirigĂ© le port `443` de votre box vers le `443` de votre serveur dans [les rĂšgles NAT](/generalites/nat). +- __Prerequisite:__ We assume you have created a subdomain such as `gitea.yourdomain.com` in your [DNS zone](/generalites/dns) with `CNAME` pointing to `yourdomain.com`, and [unless you're using Cloudflare Zero Trust](/serveex/securite/cloudflare), you have already forwarded port `443` from your router to your server’s port `443` in the [NAT rules](/generalites/nat). ::: :: -Dans Dockge, rendez-vous dans la stack de SWAG et Ă©ditez le compose en ajoutant le rĂ©seau de gitea : +In Dockge, go to the SWAG stack and edit the compose file by adding Gitea's network: ```yaml services: swag: container_name: # ... # ... - networks: # Relie le conteneur au rĂ©seau custom + networks: # Connect the container to the custom network # ... - - gitea # Nom du rĂ©seau dĂ©clarĂ© dans la stack + - gitea # Name of the declared network -networks: # DĂ©finit le rĂ©seau custom +networks: # Define the custom network # ... - gitea: # Nom du rĂ©seau dĂ©clarĂ© dans la stack - name: gitea_default # Nom vĂ©ritable du rĂ©seau externe - external: true # PrĂ©cise que c'est un rĂ©seau Ă  rechercher en externe + gitea: # Name of the declared network + name: gitea_default # Actual external network name + external: true # Indicates it's an external network ``` ::alert{type="info"} :::list{type="info"} -- Ici nous partons du principe que le nom du rĂ©seau de gitea est `gitea_default`. Vous pouvez vĂ©rifier que la connexion est opĂ©rationnelle en visitant le dashboard de SWAG en tapant http://ipduserveur:81. +- We assume the Gitea network name is `gitea_default`. You can verify connectivity by visiting the SWAG dashboard at http://yourserverip:81. ::: :: -Relancez la stack en cliquant sur "dĂ©ployer" et patientez le temps que SWAG soit complĂštement opĂ©rationnel. +Redeploy the stack by clicking "Deploy" and wait until SWAG is fully operational. -Dans les dossiers de Swag, crĂ©ez le fichier `gitea.subdomain.conf`. +Inside the Swag folders, create the file `gitea.subdomain.conf`. ::alert{type="success"} -✹ __Astuce :__ vous pouvez utiliser [File Browser](/serveex/files/file-browser) pour naviguer dans vos fichier et Ă©diter vos documents au lieu d'utiliser les commandes du terminal. +✹ __Tip:__ You can use [File Browser](/serveex/files/file-browser) to navigate and edit your files instead of using terminal commands. :: ```shell sudo vi /docker/swag/config/nginx/proxy-confs/gitea.subdomain.conf ``` -Entrez en modification avec la touche `i` et collez la configuration ci-dessous : +Press `i` to enter edit mode and paste the configuration below: ```nginx ## Version 2023/12/19 @@ -148,7 +149,7 @@ server { #include /config/nginx/authelia-location.conf; # enable for Authentik (requires authentik-server.conf in the server block) - #include /config/nginx/authentik-location.conf; + #include /config/nginx/authentik-location.conf; include /config/nginx/proxy.conf; include /config/nginx/resolver.conf; @@ -171,28 +172,27 @@ server { } ``` -Appuyez sur `Echap` puis sauvegardez et quittez en tapant `:x` puis en appuyant sur `EntrĂ©e`. +Press `Esc`, then save and exit by typing `:x` and hitting `Enter`. -Ouvrez le fichier `app.ini` dans les fichiers du conteneur +Now open the `app.ini` file from the container's file system: ```shell sudo vi /docker/gitea/data/gitea/conf/app.ini ``` -Entrez en modification avec la touche `i` et et modifiez la section serveur avec les infos de votre domaine +Press `i` to edit, then modify the server section with your domain information: ```properties [server] -DOMAIN = gitea.mondomaine.fr -SSH_DOMAIN = gitea.mondomaine.fr -ROOT_URL = https://gitea.mondomaine.fr/ +DOMAIN = gitea.yourdomain.com +SSH_DOMAIN = gitea.yourdomain.com +ROOT_URL = https://gitea.yourdomain.com/ ``` -Appuyez sur `Echap` puis sauvegardez et quittez en tapant `:x` puis en appuyant sur `EntrĂ©e`. -Relancez le conteneur. +Press `Esc`, save and exit with `:x`, then restart the container. -Et voilĂ , vous avez exposĂ© Gitea ! +And that’s it! Gitea is now exposed to the web. ::alert{type="success"} -✹ __Astuce :__ Vous pouvez protĂ©ger cette app avec Authentik de façon native en [suivant ces instructions](https://docs.goauthentik.io/integrations/services/gitea/). -:: +✹ __Tip:__ You can natively protect this app with Authentik by [following these instructions](https://docs.goauthentik.io/integrations/services/gitea/). +:: \ No newline at end of file diff --git a/content/3.serveex/8.development/3.it-tools.md b/content/3.serveex/8.development/3.it-tools.md index 80c88de..c25060c 100644 --- a/content/3.serveex/8.development/3.it-tools.md +++ b/content/3.serveex/8.development/3.it-tools.md @@ -1,6 +1,6 @@ --- navigation: true -title: IT-Tools +title: IT Tools main: fluid: false --- @@ -8,19 +8,19 @@ main: # IT Tools ::alert{type="info"} -🎯 __Objectifs :__ -- Installer IT-Tools -- Exposer IT Tools avec Swag +🎯 __Goals:__ +- Install IT Tools +- Expose IT Tools with Swag :: -[IT Tools](https://github.com/CorentinTh/it-tools) est un conteneur exposant une page web permettant d'accĂ©der Ă  un grand nombre d'outil de dĂ©veloppement. +[IT Tools](https://github.com/CorentinTh/it-tools) is a container exposing a web page that provides access to a wide range of development tools. ![IT Tools](/img/serveex/it-tools.png) ## Installation --- -Ouvrez Dockge, cliquez sur `compose`, appelez la stack `it-tools` puis copiez collez ceci : +Open Dockge, click on `compose`, name the stack `it-tools`, and paste the following: ```yaml --- @@ -34,7 +34,7 @@ services: ``` ::alert{type="success"} -✹ __Astuce :__ ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises Ă  jour +✹ __Tip:__ Add the Watchtower label to each container to enable automatic updates. ```yaml services: @@ -44,68 +44,67 @@ services: - com.centurylinklabs.watchtower.enable=true :: - -DĂ©ployez le conteneur et rendez-vous sur `http://ipduserveur:3222`. Et voilĂ , votre instance IT Tools en webui est disponible ! +Deploy the container and visit `http://yourserverip:3222`. That’s it, your IT Tools web UI instance is up and running! ::alert{type="danger"} :::list{type="danger"} -- __En cas d'Ă©chec :__ vĂ©rifiez les rĂšgles de votre pare-feu. +- __If it fails:__ check your firewall rules. ::: :: -## Exposer IT Tools avec Swag +## Expose IT Tools with Swag --- -Vous aurez peut-etre envie d'y accĂ©der Ă  distance et sur tout vos appareils. Pour cela, nous allons exposer IT Tools via Swag. +You might want to access it remotely on all your devices. To do that, we'll expose IT Tools using Swag. ::alert{type="info"} :::list{type="info"} -- __Au prĂ©alable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `tools.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [Ă  moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez dĂ©jĂ  redirigĂ© le port `443` de votre box vers le `443` de votre serveur dans [les rĂšgles NAT](/generalites/nat). +- __Pre-requisite:__ We assume you’ve created a subdomain like `tools.yourdomain.com` in your [DNS zone](/generalites/dns) with `CNAME` set to `yourdomain.com`. Also, unless you’re using [Cloudflare Zero Trust](/serveex/securite/cloudflare), make sure you’ve already forwarded port `443` from your router to port `443` on your server in the [NAT rules](/generalites/nat). ::: :: -Dans Dockge, rendez-vous dans la stack de SWAG et Ă©ditez le compose en ajoutant le rĂ©seau de it-tools : +In Dockge, go to the SWAG stack and edit the compose file to add the IT Tools network: ```yaml services: swag: container_name: # ... - # ... - networks: # Relie le conteneur au rĂ©seau custom + # ... + networks: # Connects the container to the custom network # ... - - it-tools # Nom du rĂ©seau dĂ©clarĂ© dans la stack + - it-tools # Network name as defined in the IT Tools stack -networks: # DĂ©finit le rĂ©seau custom +networks: # Defines the custom network # ... - it-tools: # Nom du rĂ©seau dĂ©clarĂ© dans la stack - name: it-tools_default # Nom vĂ©ritable du rĂ©seau externe - external: true # PrĂ©cise que c'est un rĂ©seau Ă  rechercher en externe + it-tools: # Network name as defined in the IT Tools stack + name: it-tools_default # Actual name of the external network + external: true # Indicates it's an external network ``` ::alert{type="info"} :::list{type="info"} -- Ici nous partons du principe que le nom du rĂ©seau de it-tools est `it-tools_default`. Vous pouvez vĂ©rifier que la connexion est opĂ©rationnelle en visitant le dashboard de SWAG en tapant http://ipduserveur:81. +- We assume the IT Tools network is named `it-tools_default`. You can check connectivity by visiting the SWAG dashboard at http://yourserverip:81. ::: :: - ::alert{type="info"} :::list{type="info"} -- Ici nous partons du principe que le nom du rĂ©seau de Swag est `swag_default`. +- We also assume the SWAG network is named `swag_default`. ::: :: -Relancez la stack en cliquant sur "dĂ©ployer" et patientez le temps que SWAG soit complĂštement opĂ©rationnel. +Restart the stack by clicking "deploy" and wait for SWAG to be fully operational. -Dans les dossiers de Swag, crĂ©ez le fichier `tools.subdomain.conf`. +Inside the Swag folders, create the file `tools.subdomain.conf`. ::alert{type="success"} -✹ __Astuce :__ vous pouvez utiliser [File Browser](/serveex/files/file-browser) pour naviguer dans vos fichier et Ă©diter vos documents au lieu d'utiliser les commandes du terminal. +✹ __Tip:__ You can use [File Browser](/serveex/files/file-browser) to navigate and edit your files instead of using terminal commands. :: ```shell sudo vi /docker/swag/config/nginx/proxy-confs/tools.subdomain.conf ``` -Entrez en modification avec la touche `i` et collez la configuration ci-dessous : + +Enter edit mode by pressing `i` and paste the configuration below: ```nginx ## Version 2023/12/19 @@ -158,10 +157,10 @@ server { } ``` -Appuyez sur `Echap` puis sauvegardez et quittez en tapant `:x` puis en appuyant sur `EntrĂ©e`. +Press `Esc`, then save and exit by typing `:x` and pressing `Enter`. -Et voilĂ , vous avez exposĂ© it-tools ! +And that’s it — IT Tools is now exposed! ::alert{type="success"} -✹ __Astuce :__ Vous pouvez protĂ©ger cette app avec Authentik en ouvrant `tools.subodmain.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/securite/authentik#protĂ©ger-une-app-par-reverse-proxy). +✹ __Tip:__ You can secure this app with Authentik by opening `tools.subdomain.conf` and uncommenting the lines `include /config/nginx/authentik-server.conf;` and `include /config/nginx/authentik-location.conf;`. Don’t forget to [create an application and a provider in Authentik](/serveex/securite/authentik#protĂ©ger-une-app-par-reverse-proxy). :: \ No newline at end of file diff --git a/content/3.serveex/8.development/_dir.yml b/content/3.serveex/8.development/_dir.yml index c0bed4c..87e09b2 100644 --- a/content/3.serveex/8.development/_dir.yml +++ b/content/3.serveex/8.development/_dir.yml @@ -1 +1 @@ -navigation.title: DĂ©veloppement \ No newline at end of file +navigation.title: Developpement \ No newline at end of file diff --git a/content/3.serveex/9.apps/1.adguard.md b/content/3.serveex/9.apps/1.adguard.md index 94230da..8bdec3f 100644 --- a/content/3.serveex/9.apps/1.adguard.md +++ b/content/3.serveex/9.apps/1.adguard.md @@ -8,36 +8,37 @@ main: # Adguard Home ::alert{type="info"} -🎯 __Objectifs :__ -- Installer et dĂ©ployer Adguard -- Exposer Adguard -- SĂ©curiser les requĂȘtes avec SSL/TLS -- Configurer les appareils clients +🎯 __Goals:__ +- Install and deploy Adguard +- Expose Adguard +- Secure DNS queries with SSL/TLS +- Configure client devices :: -[AdGuard Home](https://github.com/AdguardTeam/AdGuardHome) est un serveur DNS anti-pub et anti-traçage qui fonctionne au niveau du systĂšme. Une fois configurĂ©, il couvrira TOUS vos appareils domestiques et vous n'aurezbesoin d'aucun logiciel cĂŽtĂ© client pour cela. +[AdGuard Home](https://github.com/AdguardTeam/AdGuardHome) is a DNS server that blocks ads and tracking at the system level. Once configured, it will protect ALL your home devices without the need for any client-side software. -Il fonctionne comme un serveur DNS qui redirige les domaines de suivi vers un «black hole», empĂȘchant ainsi vos appareils de se connecter Ă  ces serveurs. +It works as a DNS server that redirects tracking domains to a “black hole,” preventing your devices from connecting to them. -En pratique, une fois en place, il vous faudra juste configurer les serveurs DNS de vos appareils, pour que ces derniers l'utilisent. +In practice, once it's in place, all you need to do is set your devices to use Adguard as their DNS server. -**Rappel sur le fonctionnement d'un DNS :** +**Quick reminder of how DNS works:** -Lorsque vous naviguez sur un site, ou une application, des requĂȘtes sont Ă©mises vers un ou des domaines afin d'afficher le contenu de votre page. Les publicitĂ©s notamment. Votre appareil ne connait pas les adresses IP de ces serveurs Ă  joindre. Pour les connaitre, il va contacter un _serveur de nom_ (Domain Name Server) qui lui va lui rĂ©pondre avec l'adresse IP la plus Ă  jour pour le domaine de la requĂȘte. +When you visit a site or use an app, it makes requests to various domains to load content—ads in particular. Your device doesn’t know the IP addresses of these domains, so it contacts a _Domain Name Server_ (DNS), which returns the current IP address. -Par dĂ©faut, votre appareil utilise le serveur votre fournisseur d'accĂšs, paramĂ©trĂ© dans votre box ou directement sur le CGNAT de votre opĂ©rateur si appareil mobile. Cela peut etre 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. +By default, your device uses your ISP's DNS server, which is usually configured in your router or, for mobile devices, at the carrier’s CGNAT level. You can change this in your browser settings, your device’s system settings, or even directly in your router, depending on your ISP. -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 requetes, via des listes rĂ©guliĂšrement mises Ă  jour : +Adguard will act as a middleman between your device and the upstream DNS servers. If you configure your devices to use Adguard: -- 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Ă©pondre pas Ă  vos appareils. Le contenu affiliĂ© Ă  cette requete ne s'affichera pas. +- 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 won’t load. -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. +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) + ## Installation --- -Structure des dossiers : +Folder structure: ```console root @@ -51,18 +52,17 @@ root ::alert{type="info"} :::list{type="info"} -- Nous monterons aussi le dossier `/docker/swag/config/etc/letsencrypt` afin d'avoir accĂšs au certificat SSL de Swag. +- We will also mount the `/docker/swag/config/etc/letsencrypt` folder to access Swag's SSL certificate. ::: :: -Ouvrez Dockge, et cliquez sur `compose` +Open Dockge and click `compose` -Nommez la stack `adguard` et copiez la configuration ci-dessous +Name the stack `adguard` and paste the configuration below: ```yaml --- services: - adguardhome: container_name: adguard image: adguard/adguardhome @@ -77,82 +77,81 @@ services: - /docker/adguardhome/confdir:/opt/adguardhome/conf - /docker/adguardhome/workdir:/opt/adguardhome/work - /docker/swag/config/etc/letsencrypt:/swag-ssl:ro - ``` - - ::alert{type="success"} -✹ __Astuce :__ Ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises Ă  jour +✹ __Tip:__ Add the watchtower label to each container to automate updates - ```yaml - services: - adguardhome: - #... - labels: - - com.centurylinklabs.watchtower.enable=true +```yaml +services: + adguardhome: + # ... + labels: + - com.centurylinklabs.watchtower.enable=true +``` :: -DĂ©ployez la stack. +Deploy the stack. -Rendez-vous sur `http//ipduserveur:3000` et suivez les instructions +Go to `http://yourserverip:3000` and follow the setup instructions. -Et voilĂ , vous avez dĂ©ployĂ© Adguard ! +That’s it! Adguard is deployed. -## Exposer Adguard avec Swag + +## Exposing AdGuard with SWAG --- -Pour ĂȘtre utilisable hors de chez vous, vous devez exposer Adguard +To make AdGuard usable from outside your home network, you need to expose it. ::alert{type="info"} :::list{type="info"} -- __Au prĂ©alable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `adguard.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et que que vous avez dĂ©jĂ  redirigĂ© le port `443` de votre box vers le `443` de votre serveur dans [les rĂšgles NAT](/generalites/nat). Redirigez Ă©galement le port `53` et le port `853` vers votre serveur. Ces ports serviront Ă  router les requĂȘtes DNS. +- __Prerequisites:__ We assume you've created a subdomain like `adguard.mydomain.com` in your [DNS zone](/generalites/dns) with a `CNAME` pointing to `mydomain.com`, and that you’ve already forwarded port `443` from your router to port `443` on your server in your [NAT rules](/generalites/nat). Also forward port `53` and port `853` to your server. These ports are used to route DNS requests. ::: :: ::alert{type="warning"} :::list{type="warning"} -- N'utilisez pas les tunnels cloudflare pour exposer Adguard, et dĂ©sactivez tout proxy. +- Do not use Cloudflare tunnels to expose AdGuard, and make sure any proxying is disabled. ::: :: -Dans Dockge, rendez-vous dans la stack de SWAG et Ă©ditez le compose en ajoutant le rĂ©seau d'adguard : +In Dockge, go to the SWAG stack and edit the compose file to add the AdGuard network: ```yaml services: swag: container_name: # ... # ... - networks: # Relie le conteneur au rĂ©seau custom + networks: # Connect the container to the custom network # ... - - adguard # Nom du rĂ©seau dĂ©clarĂ© dans la stack + - adguard # Name of the network declared in the stack -networks: # DĂ©finit le rĂ©seau custom +networks: # Define the custom network # ... - adguard: # Nom du rĂ©seau dĂ©clarĂ© dans la stack - name: adguard_default # Nom vĂ©ritable du rĂ©seau externe - external: true # PrĂ©cise que c'est un rĂ©seau Ă  rechercher en externe + adguard: # Name of the network declared in the stack + name: adguard_default # Actual name of the external network + external: true # Specifies that this is an external network ``` ::alert{type="info"} :::list{type="info"} -- Ici nous partons du principe que le nom du rĂ©seau d'adguard est `adguard_default`. Vous pouvez vĂ©rifier que la connexion est opĂ©rationnelle en visitant le dashboard de SWAG en tapant http://ipduserveur:81. +- We assume here that the AdGuard network is named `adguard_default`. You can verify the connection is working by visiting the SWAG dashboard at http://yourserverip:81. ::: :: -Relancez la stack en cliquant sur "dĂ©ployer" et patientez le temps que SWAG soit complĂštement opĂ©rationnel. - -CrĂ©ez et ouvrez le fichier `adguard.subdomain.conf` +Restart the stack by clicking "Deploy" and wait for SWAG to be fully operational. + +Create and open the file `adguard.subdomain.conf` ::alert{type="success"} -✹ __Astuce pour les allergiques au terminal :__ -vous pouvez utiliser [File Browser](/serveex/files/file-browser) pour naviguer dans vos fichier et Ă©diter vos documents au lieu d'utiliser les commandes du terminal. +✹ __Tip for terminal haters:__ +You can use [File Browser](/serveex/files/file-browser) to browse and edit files instead of using terminal commands. :: ```shell sudo vi /docker/swag/config/nginx/proxy-confs/adguard.subdomain.conf ``` -Editez le fichier en appuyant sur `i` puis copiez la configuration ci-dessous : +Edit the file by pressing `i` and then pasting the configuration below: ```nginx ## Version 2023/05/31 @@ -227,82 +226,80 @@ server { } } - ``` ::alert{type="success"} -✹ __Astuce :__ +✹ __Tip:__

-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/securite/authentik/#protĂ©ger-une-app-par-reverse-proxy). Il vous faudra exclure l'url `https://adguard.mondomaine.fr/dns-query` de l'authentification : +You can protect this app with Authentik by opening `adguard.subdomain.conf` and removing the `#` in front of `include /config/nginx/authentik-server.conf;`{lang=nginx} and `include /config/nginx/authentik-location.conf;`{lang=nginx}. Don’t forget to [create an application and a provider in Authentik](/serveex/securite/authentik/#protĂ©ger-une-app-par-reverse-proxy). You’ll need to exclude the URL `https://adguard.mydomain.com/dns-query` from authentication: -- Editez le fournisseur d'Adguard -- Dans *paramĂštres avancĂ©s du protocole > chemins authentifiĂ©s*, saisissez `^/dns-query` +- Edit the AdGuard provider +- Under *Advanced Protocol Settings > Authenticated Paths*, enter `^/dns-query` :: -Appuyez sur `Echap` puis sauvegardez et quittez en tapant `:x` +Press `Esc`, then save and exit by typing `:x` -Et voilĂ , vous exposez Adguard Ă  prĂ©sent ! +And that's it! AdGuard is now exposed! -## Configurer le chiffrement SSL/TLS +## Configure SSL/TLS Encryption --- -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 assurez que personne, meme votre FAI ne connaissent votre historique. C'est aussi vous assurer que personne d'autre que votre serveur vous rĂ©pond. +Encryption is essential if you want to keep your queries to AdGuard private. Encrypting your queries ensures that no one—not even your ISP—can see your history. It also ensures that only your server can respond to you. -Afin de configurer le chiffrement : +To configure encryption: -- Allez dans _paramĂštre_ puis dans _chiffrement_. -- Parametrez comme suit +- Go to _Settings_ then _Encryption_. +- Set the options as follows: ![Picture](/img/serveex/adguard-chiffrement.png) -- Puis en dessous, dans la section _certificats_ cochez _DĂ©finir un emplacement de fichier du certificat_ -- Dans le champs de saisie, mettez `/swag-ssl/live/mondomaine.fr/fullchain.pem` en remplaçant `mondomaine.fr` par votre domaine principal. -- Dans _clĂ© privĂ©e_ cochez _DĂ©finir un fichier pour la clef privĂ©e_ -- Dans le champs de saisie, mettez `/swag-ssl/live/mondomaine.fr/privkey.pem` en remplaçant `mondomaine.fr` par votre domaine principal. -- Validez +- 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. +- For _Private Key_, check _Use file path for private key_ +- In the input field, enter `/swag-ssl/live/mydomain.com/privkey.pem`, replacing `mydomain.com` accordingly. +- Save -Et voilĂ  ! Vous avez protĂ©gĂ© vos futures requĂȘtes DNS ! +Done! Your future DNS queries are now protected! -## Configurer les appareils +## Configure Devices --- -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 plutot que les services de votre FAI. Attention, votre box doit pouvoir permettre le changement de DNS (Orange ne le permet pas). +You have several options (which you can combine) to configure your devices. +### Secure the Local Network +You can secure your local network with AdGuard by configuring your router to direct all DNS queries by default to AdGuard instead of your ISP’s DNS. Note: your router must allow DNS changes (Orange routers do not). -GĂ©nĂ©ralement cette option est dans les paramĂštres _DHCP_ de votre box. Pensez bien Ă  ajouter un serveur secondaire tel que : +This option is usually in the _DHCP_ settings. Make sure to add a fallback DNS server such as: -- Cloudlare : `1.1.1.1` -- Google : `8.8.8.8` +- Cloudflare: `1.1.1.1` +- Google: `8.8.8.8` -En effet, sans cela, si votre serveur tombe, vos appareils n'arriveraient plus Ă  se connecter Ă  internet. +Without this, if your server goes down, your devices will lose internet access. ::alert{type="info"} :::list{type="info"} -- Des appareils peuvent avoir un autre DNS paramĂ©trĂ© et ne pas utiliser ceux de la box. +- Some devices may have a separate DNS configured and may not use the router’s DNS. ::: :: -### Forcer un navigateur Ă  utiliser Adguard +### Force a Browser to Use AdGuard -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` +In your browser, you can configure a DNS to force it to use AdGuard Home. +In the settings, specify the address `https://adguard.mydomain.com/dns-query` -### Windows, paramĂ©trer Adguard au niveau systĂšme +### Configure AdGuard at the System Level on Windows -Dans windows, vous devez paramĂ©trer Adguard pour chaque carte rĂ©seau que vous souhaitez utiliser. +In Windows, you need to configure AdGuard for each network adapter you want to use. -- 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_) -- Choisissez `Manuel` -- Activez IPv4 -- Renseignez l'IP publique de votre serveur (celle accessible depuis internet) -- Activez _DNS sur HTTPS (modĂšle manuel)_ -- DĂ©sactivez _retour au texte en clair_ -- Enregistrez +- Go to _Home > Network & Internet_, then select the network adapter to modify +- Click _Edit DNS_ (sometimes under _Hardware Properties_) +- Choose `Manual` +- Enable IPv4 +- Enter your server’s public IP (the one accessible from the internet) +- Enable _DNS over HTTPS (manual template)_ +- Disable _Fallback to plaintext_ +- Save -Tous les programmes de votre machine utilisant cette carte rĂ©seau seront filtrĂ©s par Adguard. +All programs using that network adapter will now be filtered by AdGuard. - -## Ajouter des filtres +## Add Filters --- -- Allez dans les paramĂštres et changez les filtres. \ No newline at end of file +- Go to the settings and change the filters. \ No newline at end of file diff --git a/content/3.serveex/9.apps/2.vaultwarden.md b/content/3.serveex/9.apps/2.vaultwarden.md index b83f154..95e78a1 100644 --- a/content/3.serveex/9.apps/2.vaultwarden.md +++ b/content/3.serveex/9.apps/2.vaultwarden.md @@ -8,18 +8,18 @@ main: # Vaultwarden ::alert{type="info"} -🎯 __Objectifs :__ Installer [Vaultwarden](https://github.com/dani-garcia/vaultwarden) pour gĂ©rer vos mot de passe sur tout vos appareils (remplace la gestion de mot de passe Google ou Apple). +🎯 __Goals:__ Install [Vaultwarden](https://github.com/dani-garcia/vaultwarden) to manage your passwords across all your devices (a replacement for Google or Apple password managers). :: ![Vaultwarden](/img/serveex/vaultwarden.png) -[Vaultwarden](https://github.com/dani-garcia/vaultwarden) est une solution de gestion de vos mot de passe (gĂ©nĂ©ration, saisie semi-automatique...) que vous pouvez installer directement sur votre serveur. Cette solution remplace les gestionnaires comme Google, Apple ou Keepass. Cette solution permet de synchroniser tout vos mots de passe sur vos diffĂ©rentes machines, avec un chiffrement de bout en bout. +[Vaultwarden](https://github.com/dani-garcia/vaultwarden) is a password management solution (generation, autofill...) that you can host directly on your server. This replaces managers like Google, Apple, or Keepass. Vaultwarden synchronizes your passwords across all your devices with end-to-end encryption. -Vaultwarden est un fork de la solution [Bitwarden](https://bitwarden.com/fr-fr/help/). +Vaultwarden is a fork of [Bitwarden](https://bitwarden.com/fr-fr/help/). ## Installation --- -Structure des dossiers +Folder structure: ```console root @@ -30,7 +30,7 @@ root └── .env ``` -Ouvrez Dockge, cliquez sur `compose`, appelez la stack `vaultwarden` puis copiez collez ceci : +Open Dockge, click on `compose`, name the stack `vaultwarden`, and paste the following: ```yaml --- @@ -59,95 +59,95 @@ services: - SIGNUPS_VERIFY=true - SIGNUPS_VERIFY_RESEND_TIME=3600 - SIGNUPS_VERIFY_RESEND_LIMIT=5 - ``` ::alert{type="success"} -✹ __Astuce :__ Ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises Ă  jour +✹ __Tip:__ Add the Watchtower label in each container to automate updates - ```yaml - services: - vauktwarden: - #... - labels: - - com.centurylinklabs.watchtower.enable=true +```yaml +services: + vaultwarden: + #... + labels: + - com.centurylinklabs.watchtower.enable=true +``` :: -Nous allons maintenant gĂ©nĂ©rer un hash de mot de passe, qu'il faudra renseigner dans la variable `TOKEN` du `.env` +Next, generate a password hash to put in the `TOKEN` variable in `.env`: ```shell -echo -n "votremotdepasse" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4 +echo -n "yourpassword" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4 ``` -Copiez le rĂ©sultat prĂ©cieusement. +Copy the result securely. -Dans le `.env`, renseignez les variables suivantes : +In the `.env` file, enter the following variables: ```properties URL= TOKEN= ``` -| Variable | Valeur | Exemple | -|-------------------------|---------------------------------------------------------|----------------------------| -| `URL`{lang=properties} | L'url de votre serveur vaultwarden | `https://vault.domaine.fr` | -| `TOKEN`{lang=properties} | Le token que vous avez prĂ©cĂ©demment copiĂ© prĂ©cieusement | `'$argon2id$v=19$m=65540,t=3,p=4$bXBGME` | +| Variable | Value | Example | +|----------|-------|---------| +| `URL` | The URL of your Vaultwarden server | `https://vault.yourdomain.com` | +| `TOKEN` | The token you previously copied | `'$argon2id$v=19$m=65540,t=3,p=4$bXBGME...` | -Puis dĂ©ployez le conteneur. - -Depuis quelques temps, Vaultwarden ne permet pas d'etre accĂ©der sans certificat SSL, ce qui empeche d'y accĂ©der via son IP local. Nous y accĂšderons donc aprĂšs l'avoir exposĂ© avec SWAG, qui ajoute lui mĂȘme un certificat SSL. +Then deploy the container. +Recently, Vaultwarden requires SSL to be accessed, which prevents access via a local IP. We'll expose it with SWAG, which provides an SSL certificate. ::alert{type="danger"} :::list{type="danger"} -- __En cas d'Ă©chec :__ vĂ©rifiez les rĂšgles de votre pare-feu. +- __If it fails:__ check your firewall rules. ::: :: -## Exposer Vaultwarden avec SWAG +## Exposing Vaultwarden with SWAG --- -Tout l'intĂ©rĂȘt d'une telle solution, c'est de pouvoir y accĂ©der Ă  distance et sur tout vos appareils. Pour cela, nous allons exposer Vaultwarden via [SWAG](/serveex/coeur/swag). +The main benefit of Vaultwarden is being able to access it remotely from any device. We'll expose it through [SWAG](/serveex/coeur/swag). ::alert{type="info"} -✹ __Au prĂ©alable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `vault.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [Ă  moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez dĂ©jĂ  redirigĂ© le port `443` de votre box vers le `443` de votre serveur dans [les rĂšgles NAT](/generalites/nat). +✹ __Before you start:__ Make sure you've created a DNS subdomain like `vault.yourdomain.com` with `CNAME` pointing to `yourdomain.com` and (unless using Cloudflare Zero Trust) that you've forwarded port `443` from your router to your server's `443` via [NAT rules](/generalites/nat). :: -Dans Dockge, rendez-vous dans la stack de SWAG et Ă©ditez le compose en ajoutant le rĂ©seau de vaultwarden : +In Dockge, go to the SWAG stack and edit the compose file to add the Vaultwarden network: ```yaml services: swag: container_name: # ... - # ... - networks: # Relie le conteneur au rĂ©seau custom - # ... - - vaultwarden # Nom du rĂ©seau dĂ©clarĂ© dans la stack + # ... + networks: # Connects container to custom network + # ... + - vaultwarden # Name of the declared network -networks: # DĂ©finit le rĂ©seau custom +networks: # Defines the custom network # ... - vaultwarden: # Nom du rĂ©seau dĂ©clarĂ© dans la stack - name: vaultwarden_default # Nom vĂ©ritable du rĂ©seau externe - external: true # PrĂ©cise que c'est un rĂ©seau Ă  rechercher en externe + vaultwarden: # Name of the declared network + name: vaultwarden_default # Actual name of the external network + external: true ``` ::alert{type="info"} :::list{type="info"} -- Ici nous partons du principe que le nom du rĂ©seau de vaultwarden est `vaultwarden_default`. Vous pouvez vĂ©rifier que la connexion est opĂ©rationnelle en visitant le dashboard de SWAG en tapant http://ipduserveur:81. +- We're assuming the network name is `vaultwarden_default`. You can check connectivity by visiting the SWAG dashboard at http://yourserverip:81. ::: :: -Relancez la stack en cliquant sur "dĂ©ployer" et patientez le temps que SWAG soit complĂštement opĂ©rationnel. +Restart the stack by clicking "Deploy" and wait for SWAG to be fully operational. -Dans les dossiers de Swag, crĂ©ez le fichier `vault.subdomain.conf`. +In SWAG's config folder, create the file `vault.subdomain.conf`: ::alert{type="success"} -✹ __Astuce :__ vous pouvez utiliser [File Browser](/serveex/files/file-browser) pour naviguer dans vos fichier et Ă©diter vos documents au lieu d'utiliser les commandes du terminal. +✹ __Tip:__ Use [File Browser](/serveex/files/file-browser) to navigate and edit files instead of using terminal commands. :: ```shell sudo vi /docker/swag/config/nginx/proxy-confs/vault.subdomain.conf ``` -Entrez en modification avec la touche `i` et collez la configuration ci-dessous : + +Press `i` to edit, and paste the following configuration: ```nginx server { @@ -174,13 +174,13 @@ server { #auth_basic "Restricted"; #auth_basic_user_file /config/nginx/.htpasswd; - # enable for ldap auth (requires ldap-server.conf in the server block) + # enable for ldap auth #include /config/nginx/ldap-location.conf; - # enable for Authelia (requires authelia-server.conf in the server block) + # enable for Authelia #include /config/nginx/authelia-location.conf; - # enable for Authentik (requires authentik-server.conf in the server block) + # enable for Authentik #include /config/nginx/authentik-location.conf; include /config/nginx/proxy.conf; @@ -189,7 +189,6 @@ server { set $upstream_port 80; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; - } location ~ ^(/vaultwarden)?/admin { @@ -197,13 +196,13 @@ server { #auth_basic "Restricted"; #auth_basic_user_file /config/nginx/.htpasswd; - # enable for ldap auth (requires ldap-server.conf in the server block) + # enable for ldap auth #include /config/nginx/ldap-location.conf; - # enable for Authelia (requires authelia-server.conf in the server block) + # enable for Authelia #include /config/nginx/authelia-location.conf; - # enable for Authentik (requires authentik-server.conf in the server block) + # enable for Authentik #include /config/nginx/authentik-location.conf; include /config/nginx/proxy.conf; @@ -212,7 +211,6 @@ server { set $upstream_port 80; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; - } location ~ (/vaultwarden)?/api { @@ -222,7 +220,6 @@ server { set $upstream_port 80; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; - } location ~ (/vaultwarden)?/notifications/hub { @@ -232,17 +229,16 @@ server { set $upstream_port 80; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; - } } ``` -Appuyez sur `Echap` puis sauvegardez et quittez en tapant `:x` puis en appuyant sur `EntrĂ©e`. +Press `Esc`, then type `:x` and press `Enter` to save and exit. -Et voilĂ , vous avez exposĂ© Vaultwarden ! AccĂ©dez au panneau d'administration via `vault.mondomaine.fr` et crĂ©ez votre compte. Plus d'info sur les fonctionnalitĂ©s de [Bitwarden](https://bitwarden.com/help/). +And there you go — Vaultwarden is now exposed! Visit `vault.yourdomain.com` to access the admin panel and create your account. For more information, see the [Bitwarden documentation](https://bitwarden.com/help/). -N'oubliez pas d'installer les extensions Bitwarden (elles sont compatibles avec Vaultwarden) pour [Chrome](https://chromewebstore.google.com/detail/gestionnaire-de-mots-de-p/nngceckbapebfimnlniiiahkandclblb) ou pour [Firefox](https://addons.mozilla.org/fr/firefox/addon/bitwarden-password-manager/) ainsi que les applications [iOS](https://apps.apple.com/fr/app/bitwarden/id1137397744) et [Android](https://play.google.com/store/apps/details?id=com.x8bit.bitwarden&hl=fr) afin de synchroniser vos mot de passe. +Don't forget to install Bitwarden browser extensions (they work with Vaultwarden) for [Chrome](https://chromewebstore.google.com/detail/gestionnaire-de-mots-de-p/nngceckbapebfimnlniiiahkandclblb) and [Firefox](https://addons.mozilla.org/fr/firefox/addon/bitwarden-password-manager/), as well as [iOS](https://apps.apple.com/fr/app/bitwarden/id1137397744) and [Android](https://play.google.com/store/apps/details?id=com.x8bit.bitwarden&hl=fr) apps to sync your passwords. ::alert{type="success"} -✹ __Astuce :__ vous pouvez protĂ©ger cette app avec Authentik en ouvrant `tools.subodmain.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/securite/authentik#protĂ©ger-une-app-par-reverse-proxy). +✹ __Tip:__ You can protect this app with Authentik by opening `tools.subdomain.conf` and removing the `#` in front of `include /config/nginx/authentik-server.conf;` and `include /config/nginx/authentik-location.conf;`. Don't forget to [create an application and provider in Authentik](/serveex/securite/authentik#protĂ©ger-une-app-par-reverse-proxy). :: \ No newline at end of file diff --git a/content/3.serveex/9.apps/_dir.yml b/content/3.serveex/9.apps/_dir.yml index be17195..6972e2b 100644 --- a/content/3.serveex/9.apps/_dir.yml +++ b/content/3.serveex/9.apps/_dir.yml @@ -1 +1 @@ -navigation.title: Applications utiles +navigation.title: Useful Apps diff --git a/content/5.betises/1.bash.md b/content/5.betises/1.bash.md index 5e9308d..f704422 100644 --- a/content/5.betises/1.bash.md +++ b/content/5.betises/1.bash.md @@ -1,22 +1,22 @@ --- navigation: true -title: Scripts bash +title: Bash Scripts main: fluid: false --- :ellipsis{left=0px width=40rem top=10rem blur=140px} -# Scripts bash +# Bash Scripts -Quelques scripts en vracs qui m'ont sauvĂ© la vie. +A few random scripts that saved my life. -## Detection de doublons et remplacement par des hardlinks +## Detecting Duplicates and Replacing Them with Hardlinks --- -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). +Six months after downloading terabytes of media, I realized that Sonarr and Radarr were copying them into my Plex library instead of creating hardlinks. This happens due to a counterintuitive mechanism: if you mount multiple folders in Sonarr/Radarr, it sees them as different filesystems and thus cannot create hardlinks. That’s why you should mount only one parent folder containing all child folders (like `downloads`, `movies`, `tvseries` inside a `media` parent folder). -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. +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. -Mes dossiers : +My directory structure: ```console . @@ -28,84 +28,85 @@ Mes dossiers : └── tvseries ``` -Mes dossiers originaux sont dans `seedbox`, et il ne faut surtout pas les modifier pour qu'ils continuent d'etre "seed". Les copies, et donc doublons, sont dans `movies` et `tvseries`. Mais pour complexifier la chose, j'ai aussi des media uniques originaux dĂ©posĂ©s par ailleurs dans `movies` et `tvseries`, sinon cela serait trop facile. Et dans ces deux dossiers, il peut y avoir des sous dossiers, des sous-sous dossiers, etc. +The originals are in `seedbox` and must not be modified to keep seeding. The copies (duplicates) are in `movies` and `tvseries`. To complicate things, there are also unique originals in `movies` and `tvseries`. And within those, there can be subfolders, sub-subfolders, etc. -L'idĂ©e est donc de : +So the idea is to: -- lister les originaux dans seedbox -- lister les fichiers dans movies -- comparer les deux listes et isoler les chemins des doublons -- supprimer les doublons -- hardlinker les originaux dans les dossiers des doublons supprimĂ©s +- list the originals in seedbox +- list files in movies and tvseries +- compare both lists and isolate duplicates +- delete the duplicates +- hardlink the originals to the deleted duplicate paths -Alors oui j'ai demandĂ© Ă  ChatGPT et Ă  Qwen3 (que j'hĂ©berge sur une machine dĂ©diĂ©e Ă  l'IA). Et evidemment ils m'ont conseillĂ© les rfind, rdfind, dupes, rdupes, rmlint... Mais comparer les hash de 30TB de media, faudrait plusieurs jours, j'ai vite abandonnĂ©. +Yes, I asked ChatGPT and Qwen3 (which I host on a dedicated AI machine). Naturally, they suggested tools like rfind, rdfind, dupes, rdupes, rmlint... But hashing 30TB of media would take days, so I gave up quickly. -Au final, je n'ai que des `.mkv` Ă  chercher et les doublons ont exactement les mĂȘmes noms que les originaux, ce qui simplifie grandement la tĂąche. Un simple script bash devait donc ĂȘtre suffisant. +In the end, I only needed to find `.mkv` files, and duplicates have the exact same name as the originals, which simplifies things a lot. A simple Bash script would do the job. -Je vous passe les incessantes questions rĂ©ponses avec ChatGPT, je suis assez déçu. Qwen3 a Ă©tĂ© bien plus propre. ChatGPT n'a pas cessĂ© de mettre des solutions type awk, qui pĂštent la lecture des chemins au moindre espace. En faisant relire Ă  Qwen, et en lui demandant de se passer de awk, le rĂ©sultat a Ă©tĂ© immediatement plus qualitatif. +Spare you the endless Q&A with ChatGPT—I was disappointed. Qwen3 was much cleaner. ChatGPT kept pushing awk-based solutions, which fail on paths with spaces. With Qwen’s help and dropping awk, the results improved significantly. -Pour tester, j'ai d'abord demandĂ© un script qui ne fait que lister et comparer : +To test, I first asked for a script that only lists and compares: ```bash #!/bin/bash -# CrĂ©er un tableau associatif pour stocker les doublons +# Create an associative array to store duplicates declare -A seen -# Trouver tous les fichiers .mkv uniquement (exclure les dossiers) +# Find all .mkv files only (exclude directories) find /media/seedbox /media/movies /media/tvseries -type f -name "*.mkv" -print0 | \ while IFS= read -r -d '' file; do - # Obtenir l'inode du fichier et son chemin + # Get the file's inode and name inode=$(stat --format="%i" "$file") filename=$(basename "$file") - # Si ce nom de fichier a dĂ©jĂ  Ă©tĂ© vu + # If the filename has been seen before if [[ -n "${seen[$filename]}" ]]; then - # VĂ©rifier si l'inode est diffĂ©rent du prĂ©cĂ©dent + # Check if the inode is different from the previous one if [[ "${seen[$filename]}" != "$inode" ]]; then - # Ajouter le doublon Ă  la sortie en affichant les chemins complets - echo "Doublons pour \"$filename\" :" + # Output the duplicates with full paths + echo "Duplicates for \"$filename\":" echo "${seen["$filename"]} ${seen["$filename:full_path"]}" echo "$inode $file" echo fi else - # Si c'est la premiĂšre fois qu'on rencontre ce nom de fichier seen[$filename]="$inode" seen["$filename:full_path"]="$file" fi done ``` -J'ai ainsi obtenu ce type de rĂ©ponse : +This gave me outputs like: ``` -Doublons pour "episode1.mkv" : +Duplicates for "episode1.mkv": 1234567 /media/seedbox/sonarr/Serie 1/Season1/episode1.mkv 2345678 /media/tvseries/Serie 1/Season1/episode1.mkv ``` -Avec "awk", il se serait arrĂȘtĂ© Ă  `/media/seedbox/sonarr/Serie`. Je ne suis absolument pas un pro, mais Qwen3 a Ă©tĂ© plus performant et m'a expliquĂ© de A Ă  Z pourquoi et comment faire. +With `awk`, it would’ve stopped at `/media/seedbox/sonarr/Serie`. I’m far from an expert, but Qwen3 performed better and explained everything clearly. -Une fois que j'ai vu que cela fonctionnait bien, j'ai demandĂ© un script qui fait l'intĂ©gralitĂ© de la cinĂ©matique, de la comparaison aux hardlinks en passant par la suppression des doublons. -Encore une fois ChatGPT a Ă©tĂ© dĂ©cevant. MalgrĂ© mes demandes, il crĂ©ait d'abord les hardlinks et ensuite il supprimait les doublons. Ce qui.. suprimme aussi le lien (meme si cela conserve l'originale). Idiot. -Petit dĂ©tour par Qwen3, et ma RTX 5090 en PLS, et paf un rĂ©sultat bien plus propre. Bon il a gardĂ© les emoji de ChatGPT qui peut pas s'empecher d'en mettre partout, mais voilĂ  : +Once I verified the output, I asked for a complete script: compare, delete duplicates, create hardlinks. + +Again, ChatGPT disappointed. Despite my requests, it created hardlinks *before* deleting the duplicates—effectively linking and then deleting the link (though the original is kept). Not helpful. + +Quick stopover to Qwen3, RTX 5090 in overdrive, and bam—much better result. Yes, it kept ChatGPT-style emojis, but here it is: ```bash #!/bin/bash -echo "🔍 Étape 1 : Indexation des fichiers originaux dans /media/seedbox..." +echo "🔍 Step 1: Indexing original files in /media/seedbox..." declare -A seen -# Indexe tous les .mkv dans seedbox +# Index all .mkv files in seedbox while IFS= read -r -d '' file; do filename=$(basename "$file") seen["$filename"]="$file" done < <(find /media/seedbox -type f -name "*.mkv" -print0) -echo "📩 Étape 2 : Remplacement automatique des doublons..." +echo "📩 Step 2: Automatically replacing duplicates..." total_doublons=0 -total_ko_economises=0 +total_ko_saved=0 while IFS= read -r -d '' file; do filename=$(basename "$file") @@ -117,30 +118,30 @@ while IFS= read -r -d '' file; do if [[ "$inode_orig" != "$inode_dupe" ]]; then size_kb=$(du -k "$file" | cut -f1) - echo "🔁 Remplacement :" - echo " Doublon : $file" + echo "🔁 Replacing:" + echo " Duplicate : $file" echo " Original : $original" - echo " Taille : ${size_kb} Ko" + echo " Size : ${size_kb} KB" - rm "$file" && ln "$original" "$file" && echo "✅ Hardlink créé." + rm "$file" && ln "$original" "$file" && echo "✅ Hardlink created." total_doublons=$((total_doublons + 1)) - total_ko_economises=$((total_ko_economises + size_kb)) + total_ko_saved=$((total_ko_saved + size_kb)) fi fi done < <(find /media/movies /media/tvseries -type f -name "*.mkv" -print0) echo "" -echo "đŸ§Ÿ RĂ©sumĂ© :" -echo " 🔗 Doublons remplacĂ©s par hardlink : $total_doublons" -echo " đŸ’Ÿ Espace disque Ă©conomisĂ© approximatif : ${total_ko_economises} Ko (~$((total_ko_economises / 1024)) Mo)" -echo "✅ TerminĂ©." +echo "đŸ§Ÿ Summary:" +echo " 🔗 Duplicates replaced by hardlink: $total_doublons" +echo " đŸ’Ÿ Approx. disk space saved: ${total_ko_saved} KB (~$((total_ko_saved / 1024)) MB)" +echo "✅ Done." ``` -Bilan j'ai : -- appris pas mal de subtilitĂ© bash -- appris qu'il ne faut jamais copier coller un script gĂ©nĂ©rĂ© ChatGPT sans le comprendre et sans le tester en dry-run -- appris que Qwen sur une RTX 5090 est plus cohĂ©rent que ChatGPT 4o sur des fermes de serveurs (je vous passe les rĂ©sultats de la version "normale"). -- appris que mĂȘme quand on a 100TB d'espace, monitorer ce dernier m'aurait permis de voir beaucoup plus tot que j'avais 12TB de doublons qui trainent. +So, in conclusion, I: +- Learned many Bash subtleties +- Learned never to blindly copy-paste a ChatGPT script without understanding and dry-running it +- Learned that Qwen on a RTX 5090 is more coherent than ChatGPT-4o on server farms (not even mentioning “normal” ChatGPT) +- Learned that even with 100TB of storage, monitoring it would’ve alerted me much earlier to the 12TB of duplicates lying around -A plus tard pour de nouvelles aventures passionnantes. \ No newline at end of file +Catch you next time for more exciting adventures. diff --git a/content/5.betises/2.python.md b/content/5.betises/2.python.md index 940400d..32ddc5a 100644 --- a/content/5.betises/2.python.md +++ b/content/5.betises/2.python.md @@ -1,69 +1,67 @@ --- navigation: true -title: Scripts python +title: Python Scripts main: fluid: false --- :ellipsis{left=0px width=40rem top=10rem blur=140px} -# Scripts python +# Python Scripts -Mes cochonneries en python +My messy Python creations ## đŸ€– Nvidia Stock Bot --- -Depuis dĂ©jĂ  4 ans, la pĂ©nurie de materiel electronique fait rage. Et les cartes graphiques ne sont pas Ă©pargnĂ©es. En 2020, j'ai du attendre 2 mois pour obtenir mon exemplaire de RTX 3080, et pour cela j'ai du m'inscrire sur [JV Hardware](https://discord.gg/gxffg3GA96) oĂč une poignĂ©e de geek avait mis en place un bot qui envoyait un ping lorsqu'elles Ă©taient disponibles. +For the past four years, the electronics hardware shortage has been relentless. Graphics cards are no exception. In 2020, I had to wait two months to get my RTX 3080. To manage it, I joined [JV Hardware](https://discord.gg/gxffg3GA96), where a small group of geeks had set up a bot that pinged users when GPUs became available. -4 ans aprĂšs et 5000 abonnĂ©s plus tard, vient la sortie des RTX 5000. Et lĂ  aucun bot dispo sur le marchĂ© ne semble fonctionner correctement. Je ne parle mĂȘme pas d'un certain "influenceur" qui se permet de faire payer l'accĂšs Ă  son bot qui ne fonctionne meme pas. Il copie Ă  la main les alertes provenant d'autres serveurs, comme le notre qui ont rĂ©solu le problĂšme. +Four years later and with 5,000 members on the server, the RTX 5000 series is being released. Yet, no working stock bot seems to exist. Not to mention a certain “influencer” who charges users for access to a bot that doesn’t even work. He manually copies alerts from other servers like ours, which have already solved the issue. -Quoiqu'il en soit, dĂ©sireux d'obtenir une RTX 5090 pour ma machine dĂ©diĂ©e Ă  l'IA, je me suis dit qu'il Ă©tait peut etre le temps de plonger dans le monde de python et de ChatGPT pour m'Ă©pauler. A l'aide d'un autre membre du serveur, KevOut, qui a principalement guidĂ© sur le principe de dĂ©part et les sources des diffĂ©rentes API, j'ai rĂ©ussi Ă  obtenir un bot propre, fonctionnel, qui envoie diffĂ©rents types d'alertes via Discord. Avec un simple conteneur docker Ă  dĂ©ployer. +Anyway, eager to get an RTX 5090 for my AI-dedicated machine, I decided it was time to dive into Python—with a little help from ChatGPT. Along with another member, KevOut, who helped guide me through the APIs and initial architecture, I ended up building a clean and functional bot that sends different kinds of Discord alerts—all deployable in a simple Docker container. -AprĂšs moult dĂ©convenues, je suis passĂ© de ceci : +After many setbacks, I went from this: ![Nvidia Stock Bot Old](https://git.djeex.fr/Djeex/nvidia-stock-bot/raw/commit/88c09ff4cffd96cbf0852ec785f9fbf2130c23b2/assets/img/nvbot.png) -Ă  cela : +To this: ![Nvidia Stock bot](https://git.djeex.fr/Djeex/nvidia-stock-bot/raw/branch/main/assets/img/nvbot_schematics.png) -Plus d'infos directement sur le repo : +More info directly on the repo: - - ::card - #title - 🐋 __Nvidia Stock Bot__ - #description - [Robot d'alerte de stock de GPU Nvidia](https://git.djeex.fr/Djeex/nvidia-stock-bot) - :: +::card +#title + 🐋 __Nvidia Stock Bot__ +#description + [Nvidia GPU stock alert bot](https://git.djeex.fr/Djeex/nvidia-stock-bot) +:: ## đŸ€– Adguard CIDRE Sync --- -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 is a fantastic solution for DNS-level ad blocking and rewriting requests—perfect for removing ISP DNS trackers or intrusive ads. -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. +It works great locally, but if you want all your devices (even on the go) to benefit, you’ll need to expose Adguard to the internet. Unfortunately, that means anyone can use it, potentially overloading your €1/month remote VPS. -Adguard 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 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 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 is a tool that syncs geo-targeted IP ranges with firewalls. Instead of running CIDRE with a full firewall stack on the remote server, I figured I could just import those regularly updated IP ranges into Adguard’s blocklist. -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. +Thus, Adguard CIDRE Sync was born: a container that syncs Adguard’s blocklist with CIDRE’s updated IP ranges on a schedule of your choosing. -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Ăč) -- 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) +The idea is to: +- Backup Adguard’s 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) -Tout ceci de maniĂšre complĂštement autonome, avec une frĂ©quence choisie en variable d'environnement dans la conf du compose. +All fully autonomous, with frequency set via environment variable in the `docker-compose` config. -Plus d'infos directement sur le repo : +More info directly on the repo: - - ::card - #title - 🐋 __Adguard CIDRE Sync__ - #description - [Robot de synchronisation de la blocklist d'Adguard](https://git.djeex.fr/Djeex/adguard-cidre) - :: +::card +#title + 🐋 __Adguard CIDRE Sync__ +#description + [Adguard blocklist sync bot](https://git.djeex.fr/Djeex/adguard-cidre) +:: \ No newline at end of file diff --git a/content/5.betises/_dir.yml b/content/5.betises/_dir.yml index 6850edc..81103e1 100644 --- a/content/5.betises/_dir.yml +++ b/content/5.betises/_dir.yml @@ -1,2 +1,2 @@ icon: noto:test-tube -navigation.title: Mes bĂȘtises +navigation.title: My nonsense