Compare commits

...

1 Commits

Author SHA1 Message Date
675ecaee3a First translated batch 2025-06-04 15:04:16 +00:00
19 changed files with 506 additions and 489 deletions

View File

@ -1,43 +1,44 @@
<p align="center">
<img src="https://git.djeex.fr/Djeex/DjeexLab/raw/branch/main/docs/files/img/global/lab.svg" align="center" width="700">
[![docu.djeex.fr](https://img.shields.io/badge/Docu·djeex-00b0f0?style=for-the-badge&logoColor=white&logo=materialformkdocs)](https://docu.djeex.fr/) [![](https://dcbadge.limes.pink/api/server/jvhardware)](https://discord.gg/jvhardware) [![Uptime-Kuma](https://stats.djeex.fr/api/badge/23/status?style=for-the-badge)](https://docu.djeex.fr/)
[![docu.djeex.fr](https://img.shields.io/badge/Docu·djeex-00b0f0?style=for-the-badge&logoColor=white&logo=materialformkdocs)](https://docu.djeex.fr/)
[![](https://dcbadge.limes.pink/api/server/jvhardware)](https://discord.gg/jvhardware)
[![Uptime-Kuma](https://stats.djeex.fr/api/badge/23/status?style=for-the-badge)](https://docu.djeex.fr/)
</p>
# 🔧 De la doc, encore de la doc
# 🔧 Docs, More Docs
**Docu·djeex** c'est avant tout un projet personnel visant à héberger chez soi le plus de services possibles du quotidien sans passer par des plateformes propriétaires (Google, Apple, Netflix...). Cette doc utilise [Nuxt.js](https://nuxt.com/)
**Docu·djeex** is first and foremost a personal project aimed at self-hosting as many everyday services as possible — without relying on proprietary platforms (Google, Apple, Netflix, etc.).
This documentation site is built using [Nuxt.js](https://nuxt.com/).
Ce repo contient de quoi modifier les pages, ajouter vos changements, et redéployer le site.
This repository contains everything you need to edit pages, apply your changes, and redeploy the site.
## Setup
Installer les dépendances
Install dependencies:
```bash
npm install
```
## Environnement de dévelopment (port 3000)
## Development Environment (port 3000)
```bash
npm run dev
```
## Génération des pages statiques
## Generate Static Pages
```bash
npm run generate
```
Les fichiers HTML seront générés dans le dossier .output/public et prêts à être déployés sur n'importe quel hébergement compatible avec un site statique.
The HTML files will be generated in the `.output/public` folder and are ready to be deployed on any static-compatible hosting.
## Preview build
## Preview Build
Si vous voulez voir immédiatement le résultat de la génération du site vous pouvez lancer un serveur de preview :
If you'd like to immediately see the result of your static site build, you can launch a preview server:
```bash
npm run preview
```
```

View File

@ -1,5 +1,5 @@
---
title: Accueil
title: Home
navigation: false
layout: page
main:
@ -11,7 +11,7 @@ main:
::block-hero
---
cta:
- Accéder à la doc
- Access the Docs
- /apropos/bienvenue
secondary:
- Discord →
@ -19,21 +19,21 @@ secondary:
---
#title
Bienvenue sur docu[·]{style="color: #1ad6ff"}djeex
Welcome to docu[·]{style="color: #1ad6ff"}djeex
#description
De la doc, encore de la doc. Des astuces et des expériences. Vous y trouverez entre autre :
Docs, more docs. Tips and experiments. You'll find, among other things:
#extra
::list
- **Installation de Debian** pour votre serveur
- **Docker** pour déployer vos services
- **VPN** pour accéder à votre réseau privé
- **Reverse proxy** et **Zero Trust** pour exposer vos services
- **SSO** et **Multi-facteur** pour protéger vos services exposés
- **Cloud** et **media** pour accéder et synchroniser vos fichiers et media
- _(à venir)_ **Créer votre NAS** de A à Z pour stocker vos données
- _(à venir)_ **Backup 3-2-1**
- **Debian installation** for your server
- **Docker** to deploy your services
- **VPN** to access your private network
- **Reverse proxy** and **Zero Trust** to expose your services
- **SSO** and **Multi-factor** authentication to secure your public services
- **Cloud** and **media tools** to access and sync your files and media
- _(coming soon)_ **Build your own NAS** from scratch to store your data
- _(coming soon)_ **Backup 3-2-1**
::
#support
@ -45,7 +45,6 @@ De la doc, encore de la doc. Des astuces et des expériences. Vous y trouverez e
- sudo docker compose up -d
- sudo rm -rf * /
- Sud.. shit shiiit shiiiiit !!!
---
::
::
::

View File

@ -0,0 +1,44 @@
---
title: About
main:
fluid: false
---
:ellipsis{right=0px width=75% blur=150px}
# docu[·]{style="color: #1ad6ff"}what?
__Docu[·]{style="color: #1ad6ff"}djeex__ is a site containing the documentation of my personal servers, originally created to easily keep track of my configurations and commands.
My infrastructure is built around the Debian 12 + Docker combo, making exporting and deployment simpler.
Special thanks to __Nipah__, __Xenio__, and others for their patience and support. Most of this content comes directly from them.
Join us on [Discord](https://discord.gg/jvhardware)!
## About the documentation
The documentation provided here is experimental and shared in a spirit of open knowledge and experience.
It is not intended to build production-grade or industrialized infrastructure.
It may contain mistakes and/or approximations.
Naturally, this documentation should only be used within a strictly legal framework.
::card-grid
#title
Available or Upcoming Documentation
#root
:ellipsis{left=0px width=40rem top=10rem blur=140px}
#default
::card{icon=noto:microscope}
#title
Serveex
#description
[Step-by-step Homelab Deployment Guide](/serveex/introduction)
::
::card{icon=noto:computer-disk}
#title
Stockeex
#description
*(coming soon)* Build your own home NAS to store your data and media
::
::

3
content/1.about/_dir.yml Normal file
View File

@ -0,0 +1,3 @@
icon: noto:star
navigation.title: About
navigation.redirect: /about/welcome

View File

@ -1,40 +0,0 @@
---
title: A propos
main:
fluid: false
---
:ellipsis{right=0px width=75% blur=150px}
# docu[·]{style="color: #1ad6ff"}quoi ?
__Docu[·]{style="color: #1ad6ff"}djeex__ est le site regroupant la documentation de mes serveurs, pensé à l'origine pour retrouver facilement mes configurations et commandes. Mon infrastructure est construite autour du duo Debian 12 et docker, pour plus de simplicité à l'export et au déploiement. On remerciera principale __Nipah__ et __Xenio__ (et d'autres) pour leur patience et écoute. La majeur partie de ce contenu vient de leurs têtes. Rejoins nous sur [Discord](https://discord.gg/jvhardware) !
## A propos de la documentation
La documentation fournie ici est distribuée à titre expérimentale, dans un esprit de partage d'expérience. Elle n'est en aucun cas faite pour construire une architecture de production ou pour de l'industrialisation. Il est possible qu'elle contienne des erreurs et/ou des approximations.
Evidemment l'usage de cette documentation doit strictement se limiter au cadre légal.
::card-grid
#title
Documentation disponible ou en cours
#root
:ellipsis{left=0px width=40rem top=10rem blur=140px}
#default
::card{icon=noto:microscope}
#title
Serveex
#description
[Votre homelab à déployer pas à pas](/serveex/introduction)
::
::card{icon=noto:computer-disk}
#title
Stockeex
#description
*(à venir)* Votre NAS maison à créer chez vous pour stocker vos données et media
::
::

View File

@ -1,3 +0,0 @@
icon: noto:star
navigation.title: Bienvenue
navigation.redirect: /apropos/bienvenue

View File

@ -0,0 +1,79 @@
---
navigation: true
title: NAT & DHCP
main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
# Router and NAT
::alert{type="info"}
🎯 __Goals:__
- Understand how port forwarding works
- Learn how to configure router NAT
- Learn how to issue DHCP leases (fixed IPs)
::
![picture](/img/global/nat.svg)
## What is a "port"?
---
Ports are different channels through which your router sends and receives data. This allows multiple services to run simultaneously.
When it receives data through a port, your router forwards that data to the machine that:
- either initiated the request,
- or is configured to receive data on a specific port.
Your router has over 65,000 ports available.
Some programs and applications are designed to use specific ports. For example, when your network sends data from an HTML page, the router receives it through port 80 (non-secure) or port 443 (secure via SSL).
So, your router acts as a data dispatcher between the internet and your local machines.
## Port Forwarding
---
Forwarding a `port` means setting a rule that specifies which `source` can send data to which `port` on your router, which will then forward it to a specific `port` on a specific `machine`. The `sources` and `destination machine` are identified by their IP addresses.
| Variable | Description | Example |
|------------------------|---------------------------------------------------------|-------------------------|
| `source machine` | IP of the source machine (from the internet) | `All`<br>`123.45.67.89` |
| `source port` | Incoming port on the router | `443` |
| `destination port` | Port on the destination machine | `3000` |
| `destination machine` | IP of the target machine (on your local network) | `192.168.1.50` |
According to the table:
If we remove `All` and keep the IP `123.45.67.89`, all traffic from this IP sent to port `443` on your router will be forwarded to port `3000` on the local IP `192.168.1.50`.
If we remove the IP and keep `All`, then all traffic from the internet on port `443` will be redirected to port `3000` on `192.168.1.50`.
This is useful when you have a server that must be accessible from the internet. For instance, a website uses port `80` (non-secure) or `443` (SSL-secured).
To make the website accessible, you'll configure your router to redirect the domain request to your local server.
Assume your service runs on port `3000` locally (`http://192.168.1.50:3000`), you would redirect all traffic from port `443` on the router to port `3000` on the local server.
::alert{type="warning"}
:::list{type="warning"}
- __Warning:__ If you have multiple services to expose like `subdomain1.mydomain.com` and `subdomain2.mydomain.com`, your router cannot differentiate requests and forward to different ports.
You must use a [Reverse Proxy](../../serveex/coeur/swag) to route traffic based on the request.
:::
::
## DHCP
---
Every time a device connects to your local network, your router assigns it an IP address using DHCP rules.
This IP is randomly selected from a predefined pool.
At every device reboot, the IP may change — which is problematic if you're forwarding ports, as the target IP may no longer be valid.
To avoid this, use your router's DHCP server to assign a static IP address.
Each device has a physical "MAC address".
To assign a fixed IP, you must know your device's MAC address (visible in your router when it's connected), and assign it a static IP.
This is called a "static DHCP lease."
That way, your machine's IP never changes and your port forwarding rules remain effective.
| Variable | Description | Example |
|---------------|----------------------------------|---------------------|
| `IP` | Fixed local IP to assign | `192.168.1.50` |
| `MAC Address` | Physical address of the device | `5E:FF:56:A2:AF:15` |
For more information, refer to your router's documentation.

View File

@ -0,0 +1,69 @@
---
navigation: true
title: DNS Zone
main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
# Domain Names and DNS Zones
::alert{type="info"}
🎯 __Objectives:__
- Understand how a DNS server works
- Learn how to edit a DNS zone
::
## Introduction
---
When you browse a website or use an app, requests are made to one or more domains to fetch content for the page. Your device doesn't know the IP addresses of these servers, so it contacts a _name server_ (Domain Name Server), which responds with the most up-to-date IP address for the domain being requested.
The DNS zone is like a registry with signposts that direct your requests to the correct destination.
![Picture](/img/global/dns.svg)
## The DNS Zone
---
When you purchase a domain from a registrar (Cloudflare, OVH, etc.), the registrar assigns you a DNS zone that you can customize.
You can enter _records_ into this DNS zone to direct requests properly. You can find [more information here](https://help.ovhcloud.com/csm/fr-dns-servers-general-information?id=kb_article_view&sysparm_article=KB0051661).
Example of a DNS zone for the domain `mydomain.com`:
```
@ IN SOA ns1.dns.me. dns.net. (2024051800 86400 3600 3600000 60)
IN NS ns1.dns.me.
IN NS ns2.dns.me.
IN A 203.0.113.0
www IN CNAME mydomain.com
sousdomaine IN CNAME mydomain.com
```
In this example:
- `$TTL 3600` tells global name servers that the records are valid for 1 hour (after which they need to re-check).
- `IN SOA ns1.dns.me. dns.net. (...)` indicates `ns1.dns.me` as the primary DNS server, with refresh intervals.
- `IN NS` records define the authoritative name servers for the domain.
- `IN A 203.0.113.0` means `mydomain.com` points to IP `203.0.113.0`.
- `subdomain IN CNAME mydomain.com` means `subdomain.mydomain.com` points to the same destination as `mydomain.com`.
So, if you want to point `mydomain.com` to your server, you can do it by adding an `A` record pointing to your server's public IP address.
::alert{type="warning"}
:::list{type="warning"}
- __Warning:__ If your server is hosted at home:
:::
- Your public IP is the one assigned to your home router. Make sure it's static, or configure [DDNS](https://aws.amazon.com/fr/what-is/dynamic-dns/).
- Make sure you've [set up port 443 forwarding to your server's listening port](/generalites/nat).
::
If you're adding a subdomain that should also point to your server, use a `CNAME` record pointing to `mydomain.com`.
::alert{type="info"}
:::list{type="info"}
- __Why not use an `A` record for the subdomain?__ If your subdomain points to the same server as `mydomain.com`, it's better to use a `CNAME` record because if the server's IP changes, you wont need to update the subdomain record.
:::
::
Most registrars offer user-friendly interfaces to manage DNS records. Refer to your registrars documentation for specific instructions.

View File

@ -0,0 +1,227 @@
---
navigation: true
title: Samba
main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
# Samba
Samba is a protocol that allows access to a folder located on a network drive. It can be configured on macOS, Windows, or Linux.
There are many tutorials for setting up Samba on Windows or on NAS systems like Synology, but here we focus on Debian.
::alert{type="info"}
🎯 __Objectives:__
- Create a network folder on a remote machine
- Access the network folder from our server
::
![samba](/img/global/smb.svg)
## Sharing a Network Folder
---
::alert{type="info"}
:::list{type="info"}
- In this example, we will share the `/video` folder from a remote machine called `remote-machine`. We will access this folder from a machine called `local-machine`. The user connecting to the network drive will be `sambauser`.
:::
::
### Install Samba Server
```shell
sudo apt update && sudo apt upgrade
sudo apt install samba smbclient cifs-utils
```
### Create the `/video` Folder
```shell
sudo mkdir /video
```
### Configure the Share
Now, edit the file `/etc/samba/smb.conf`.
**Tip:** You can use [File Browser](/serveex/files/file-browser) to navigate and edit your files instead of using terminal commands.
\::
```shell
sudo vim /etc/samba/smb.conf
```
Find the `workgroup` variable, press `i` to enter insert mode, and name your workgroup (e.g., `workgroup = WORKGROUP`).
Then scroll to the end of the file and add the following configuration:
```properties
[video]
comment = Video folder
path = /video
writable = yes
guest ok = no
valid users = @smbshare
force create mode = 770
force directory mode = 770
inherit permissions = yes
```
Press `Esc` to exit insert mode, then type `:x` and press `Enter` to save and exit.
### Create a Samba User and Group
Since we're using a secured share, we need to create a user and group to access it remotely.
Create the group:
```shell
sudo groupadd smbshare
```
Give the group control over the `/video` folder:
```shell
sudo chgrp -R smbshare /video
```
Set inherited permissions:
```shell
sudo chmod 2775 /video
```
Now add a no-login user — this user cannot log into the server but can access Samba.
```shell
sudo useradd -M -s /sbin/nologin sambauser
```
Add the user to the `smbshare` group:
```shell
sudo usermod -aG smbshare sambauser
```
Set a Samba password:
```shell
sudo smbpasswd -a sambauser
```
Enable the Samba account:
```shell
sudo smbpasswd -e sambauser
```
```shell
sudo ufw allow from remote-ip to any app Samba
::
```
## Accessing a Shared Folder
---
\::
### Install Required Packages
```shell
sudo apt update && sudo apt upgrade
sudo apt install cifs-utils
```
### Create the Mount Destination
We will create a folder on our local machine where the remote `/video` folder will be mounted — e.g., `/mnt/video`.
```shell
sudo mkdir /mnt/video
```
### Prepare the .credentials File
To avoid typing our username and password every time, create a `.credentials` file storing the login info.
Create it in the `/smb` folder:
```shell
sudo mkdir /smb
sudo vi /smb/.credentials
```
Enter insert mode (`i`) and write:
```properties
username=smbuser
password=password
```
* `smbuser`: the user we created on the `remote-machine`
* `password`: the password set earlier
Press `Esc`, then `:x` and `Enter` to save and exit.
Set proper file permissions:
```shell
sudo chmod 600 /smb/.credentials
```
### Mount the Shared Folder
Now mount the folder:
```shell
sudo mount -t cifs -o credentials=/smb/.credentials //remote-ip/video /mnt/video
```
Replace `remote-ip` with your `remote-machine`'s IP address.
Verify the mount:
```shell
sudo mount -t cifs
```
Youll see details confirming the mount is successful.
Now you can access the `/video` folder of the `remote-machine` from your `local-machine`!
### Auto-mount on Boot
By default, shares aren't auto-mounted after reboot. To automate this, edit the `/etc/fstab` file.
First, back it up:
```shell
sudo cp /etc/fstab /etc/fstab.bak
```
Then add the mount configuration line:
```shell
sudo echo //remote-ip/video /mnt/video cifs _netdev,nofail,credentials=/smb/.credentials,x-systemd.automount,x-systemd.device-timeout=15 0 0 >> /etc/fstab
```
Reboot the machine:
```shell
sudo reboot
```
After rebooting, verify the mount:
```shell
sudo mount -t cifs
```
And done!
### Unmount the Shared Folder
```shell
sudo umount -t cifs /mnt/video
```

View File

@ -0,0 +1,3 @@
icon: noto:open-book
navigation.title: General
navigation.redirect: /general/nat

View File

@ -1,66 +0,0 @@
---
navigation: true
title: NAT & DHCP
main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
# Routeur et NAT
::alert{type="info"}
🎯 __Objectifs :__
- Comprendre le principe de la redirection de port
- Savoir configurer le NAT de son routeur
- Savoir émettre des baux DHCP (IP fixes)
::
![picture](/img/global/nat.svg)
## Qu'est-ce qu'un "port" ?
---
Les ports sont différents canaux par lesquels votre routeur envoie et reçoit des données, ce qui permet d'utiliser plusieurs services en meme temps. Lorsqu'il reçoit une donnée via un port, otre routeur transmet ensuite les données à la machine qui :
- soit a émis la requête de départ
- soit est configurée pour recevoir les données reçues par un port spécifique du routeur
Votre routeur dispose de plus de 65 000 ports à utiliser.
Certains programmes et applications sont conçus pour utiliser des ports spécifiques. Par exemple, lorsque votre réseau envoie des données à partir d'une page HTML, le routeur les recevra via le port numéro 80 (non sécurisé) ou 443 (sécurisé via SSL).
Le routeur sert donc de plateforme d'aiguillage des données entre internet et votre machine.
## La redirection de port
---
Rediriger un `port`, c'est émettre une règle qui spécifie que telle `source` peut envoyer des données à tel `port` de votre routeur, qui redirigera les données sur tel `port` de telle `machine`. Les `sources` et la `machine de destination` sont identifiées par leur `adresse IP`.
| Variable | Description | exemple |
|--------------------------|----------------------------------------------------------|-------------------------|
| `machine source` | IP de la machine source (sur internet) | `All`<br>`123.45.67.89` |
| `port source` | Port d'arrivée sur le routeur | `443` |
| `port de destination` | Port d'arrivée sur la machine de destination | `3000` |
| `machine de destination` | IP de la machine de destination (sur votre réseau local) | `192.168.1.50` |
Selon ce tableau, si on enlève le `All` et que l'on garde l'ip `123.45.67.89` en provenance d'internet, tout le traffic envoyé depuis cette IP sur le port `443` du routeur sera redirigé vers le port `3000` de l'IP locale `192.168.1.50`.
Si on enlève l'IP de l'exemple et qu'on laisse le `All`, tout le traffic d'internet envoyé au port `443` du routeur sera redirigé vers le port `3000` de l'IP locale `192.168.1.50`.
C'est utile si par exemple vous avez un serveur qui a un service qui nécessite d'etre accessible par internet. Par exemple, un site web. Le web utilise le port `80` (non sécurisé) et le port 443 (sécurisé par certificat SSL) pour communiquer. Ainsi, si je veux que mon site internet soit accessible, je vais faire en sorte que lorsqu'on tape le nom de domaine de mon site, le routeur redirige bien vers mon serveur local (avec l'exemple de l'IP locale du tableau). Par exemple, imaginons que mon service est sur le port `3000` de mon routeur (accessible en local via `http://192.168.1.50:3000`), je vais donc rediriger comme dans l'exemple toutes les sources (All) qui passent par le port `443` du routeur vers le port `3000` de mon serveur local.
::alert{type="warning"}
:::list{type="warning"}
- __Attention :__ Si vous avez plusieurs services à rendre accessible, avec par exemple `sousdomaine1.mondomaine.fr` et `sousdomaine2.mondomaine.fr`, votre routeur ne peut pas rediriger vers plusieurs port selon la requête. Vous devrez utiliser un [Reverse Proxy](../../serveex/coeur/swag) qui selon la requete redirigera vers le bon service de votre serveur.
:::
::
## Le DHCP
---
A chaque fois que vous connectez un appareil sur votre réseau local, votre routeur lui attribue une adresse IP via les règles DHCP. Celle-ci est aléatoire selon des règles prédéfinies. A chaque redémarrage de l'appareil, l'IP peut changer. C'est embetant si vous exposez un service et que vous avez une redirection de port dans votre routeur car si l'IP change, la redirection enverra les données dans le vide. Le serveur DHCP de votre box permet d'attribuer une IP fixe à un appareil.
Chaque appareil a une adresse physique dite "adressse MAC". Pour fixer l'IP, vous devez connaitre l'adresse physique de votre appareil (visible dans votre routeur si votre machine est connectée au réseau), et lui attribuer une adresse IP fixe, ce qu'on appel un "bail DHCP fixe".
Ainsi, l'IP de votre machine ne changera jamais et la redirection de port sera toujours effective.
| Variable | Description | Exemple |
|---------------|--------------------------------|---------------------|
| `IP` | IP locale fixe à attribuer | `192.168.1.50` |
| `Adresse Mac` | Adresse physique de la machine | `5E:FF:56:A2:AF:15` |
Pour plus d'information sur ces sujets, consultez la documentation de votre routeur.

View File

@ -1,67 +0,0 @@
---
navigation: true
title: Zone DNS
main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
# Noms de domaines et zone DNS
::alert{type="info"}
🎯 __Objectifs :__
- Comprendre le fonctionnement d'un serveur DNS
- Comprendre comment modifier une zone DNS
::
## Introduction
---
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. 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.
La zone DNS, c'est une sorte de registre avec des panneaux qui redirige vos requêtes vers la bonne destination.
![Picture](/img/global/dns.svg)
## La zone DNS
---
Lorsque vous réservez un domaine chez votre registrar (cloudflare, ovh...), ce registrar vous attribue une zone DNS que vous pouvez personnaliser.
Vous pouvez rentrer des _enregistrements_ dans cette zone DNS qui permettront d'orienter les requêtes au bon endroit. Vous trouverez [plus d'information ici](https://help.ovhcloud.com/csm/fr-dns-servers-general-information?id=kb_article_view&sysparm_article=KB0051661).
Exemple d'une zone DNS du domaine mondomaine.fr:
```
@ IN SOA ns1.dns.me. dns.net. (2024051800 86400 3600 3600000 60)
IN NS ns1.dns.me.
IN NS ns2.dns.me.
IN A 203.0.113.0
www IN CNAME mondomaine.fr
sousdomaine IN CNAME mondomaine.fr
```
Dans cet exemple :
- `$TTL 3600` indique aux différents serveurs de noms de la planète que les enregistrement sont valides 1h (et qu'au-delà il faudra rev"rifier).
- `IN SOA ns1.dns.me. dns.net. (2024051800 86400 3600 3600000 60)` indique que `ns1.dns.me` est le serveur dns principal, et les nombres sont des indications de rafraichissement.
- `IN NS ns1.dns.me.` et `IN NS ns2.dns.me.` indique que `ns1.dns.me` et `ns2.dns.me` sont des serveurs de noms pour ce domaine.
- `IN A 203.0.113.0` signifie que `mondomaine.fr` pointe vers l'IP `203.0.113.0`
- `sousdomaine IN CNAME mondomaine.fr` signifie que `sousdomaine.mondomaine.fr` pointe vers `mondomaine.fr` et donc vers l'IP `203.0.113.0`.
Ainsi, si vous choisissez de pointer le domaine `mondomaine.fr` vers votre serveur, vous pouvez le faire en ajoutant un enregistrement `A` pointant vers l'IP publique de votre serveur.
::alert{type="warning"}
:::list{type="warning"}
- __Attention,__ Si votre serveur est chez vous :
:::
- l'IP publique est celle de votre box internet. Assurez-vous auprès de votre opérateur que cette IP est fixe ou configurez un [DDNS](https://aws.amazon.com/fr/what-is/dynamic-dns/).
- assurez-vous d'avoir [redirigé le port 443 vers le port d'écoute de votre serveur](/generalites/nat).
::
Et si vous ajoutez un sous-domaine qui doit pointer vers votre serveur, vous pouvez utiliser un enregistrement `CNAME` vers `mondomaine.fr`.
::alert{type="info"}
:::list{type="info"}
- __Pourquoi ne pas utiliser un enregistrement `A` pour le sous-domaine ?__ Si votre sous domaine pointe sur le meme serveur que `mondomaine.fr`, il vaut mieux utiliser un enregistrement `CNAME` car en cas de changement d'IP du serveur, il n'y aura aucune autre manipulation à faire.
:::
::
La plupart des registrar proposent des interfaces plus lisbles pour modifier ces informations. Renseignez-vous auprès de la documentation de votre registrar.

View File

@ -1,228 +0,0 @@
---
navigation: true
title: Samba
main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
# Samba
Samba est un protocole permettant d'accèder à un dossier situé sur un disque réseau. Il peut être configuré sous Mac, Windows ou Linux.
De nombreux tutorials existent pour configurer Samba sous windows ou sur un NAS type Synology, ici nous nous concentrons sur Debian.
::alert{type="info"}
🎯 __Objectifs :__
- Créer un dossier réseau sur une machine distante
- Accéder au dossier réseau sur notre serveur
::
![samba](/img/global/smb.svg)
## Partager un dossier réseau
---
::alert{type="info"}
:::list{type="info"}
- Ici, nous allons partager le dossier `/video` d'une machine distant que nous appelerons `machine-distante`. Nous accéderons à ce dossier par la machine nommée `machine-locale`. L'utilisateur de connexion au disque réseau sera `sambauser`.
:::
::
### Installer le serveur samba
```shell
sudo apt update && sudo apt upgrade
sudo apt install samba smbclient cifs-utils
```
### Créer le dossier `/video`
```shell
sudo mkdir /video
```
### Configuration du partage
Ensuite nous allons éditer le fichier `/etc/samba/smb.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.
::
```shell
sudo vim /etc/samba/smb.conf
```
Localisez la variable `workgroup` puis passez en mode modification en appuyant sur `i` et nommez votre worgroup, par exemple `::::properties workgroup = WORKGROUP`
Puis allez à la fin du fichier et collez la configuration suivante
```properties
[video]
comment = Dossier video
path = /video
writable = yes
guest ok = no
valid users = @smbshare
force create mode = 770
force directory mode = 770
inherit permissions = yes
```
Appuyez sur `Echap` pour quitter le mode notification puis tapez `:x` et appuyez sur `Entrée` pour sauvegarder et quitter.
### Créer un utilisateur et un groupe pour Samba
Comme nous avons configfuré un partage sécurisé, nous allons devoir créer un utilisateur et un groupe pour pouvoir y accéder à distance.
Creez le groupe.
```shell
sudo groupadd smbshare
```
Nous allons maintenant permettre au groupe d'avoir le controle sur le dossier `/video`.
```shell
sudo chgrp -R smbshare /video
```
Et maintenant nous allons donner les permissions nécessaires aux dossiers et fichier hérités.
```shell
sudo chmod 2775 /video
```
A présent nous allons ajouter un utilisateur nologin c'est à dire que cet utilisateur ne pourra pas se connecter sur le serveur pour faire des opérations, mais pourra tout de meme se connecter au service samba.
```shell
sudo useradd -M -s /sbin/nologin sambauser
```
Puis nous ajoutons l'utilisateur au groupe `sambashare` que nous avons créé précédemment.
```shell
sudo usermod -aG smbshare sambauser
```
Et nous allons configurer un mot de passe.
```shell
sudo smbpasswd -a sambauser
```
Et enfin nous allons activer le compte que nous venons de créer.
```shell
sudo smbpasswd -e sambauser
```
::alert{type="warning"}
:::list{type="warning"}
- __Attention :__ Si vous utilisez un pare-feu, comme ufw, n'oubliez pas d'autoriser les IP des machines qui accéderont à votre dossier partagé :
:::
```shell
sudo ufw allow from ipdelamachine to any app Samba
::
## Accéder à un dossier partagé
---
::alert{type="info"}
:::list{type="info"}
- A présent, nous sommes sur votre `machine-locale` qui nécessite d'accéder au dossier partagé `/video` présent sur la `machine-distante`.
:::
::
### Installer les package nécessaires
```shell
sudo apt update && sudo apt upgrade
sudo apt install cifs-utils
```
### Créer le dossier de destination
Nous allons créer un dossier sur notre serveur sur lequel sera monté le dossier partagé de notre `machine-distante. C'est à dire que dans ce dossier nous retrouverons le contenu du dossier partagé de notre `machine-distante`. Ici nous appellerons ce dossier `/mnt/video`.
```shell
sudo mkdir /mnt/video
```
### Préparer le fichier .credentials
Afin de ne pas avoir systématiquement à rentrer notre utilisateur et mot de passe, nous allons créer un fichier .credentials` stockant ces informations.
Nous allons le créer dans le dossier `/smb`.
```shell
sudo mkdir /smb
sudo vi /smb/.credentials
```
Passez en mode modification en appuyant sur `i` et configurez comme suit :
```properties
username=smbuser
password=motdepasse
```
- `smbuser` : L'utilisateur que nous avons configuré sur la `machine-distante`
- `motdepasse` : Le mot de passe que nous avons configuré sur la `machine-distante`
Appuyez sur `Echap` afin de quitter le mode modification, puis tapez `:x` et appuyez sur `Entrée` pour sauvegarder et quitter.
Nous allons modifier les permissions du dossier afin que seul le propriétaire puis lire et écrire dans ce fichier.
```shell
sudo chmod 600 /smb/.credentials
```
### Monter le dossier partager
A présent nous allons monter le dossier.
```shell
sudo mount -t cifs -o credentials=/smb/.credentials //ip-machine-distante/video /mnt/video
```
Remplacez `ip-machine-distante` par l'adresse IP de votre `machine-distante`
Vérifiez que cela a fonctionné en tapant :
```shell
sudo mount -t cifs
```
Vous verrez différentes informations qui confirmerons le succès du montage.
Et voilà, à présent vous accédez au dossier /video de `votre machine-distante`, depuis votre `machine-locale` !
### Automatiser le montage au boot
Par défaut, les dossiers pattagés ne sont pas connectés automatiquement au redémarrage. Pour autoamtiser cet aspect, nous allons modifier le fichier `/etc/fstab`.
D'abord, sauvegardons notre fichier `fstab`.
```shell
sudo cp /etc/fstab /etc/fstab.bak
```
Puis nous allons ajouter une ligne à la fin du fichier comportant les informations de montages dans le fichier `fstab`.
```shell
sudo echo //ip-machine-distante/video /mnt/video cifs _netdev,nofail,credentials=/smb/.credentials,x-systemd.automount,x-systemd.device-timeout=15 0 0 >> /etc/fstab
```
Redémarrez.
```shell
sudo reboot
```
Une fois redémarré, vérifiez que le montage est correct
```shell
sudo mount -t cifs
```
Et voilà !
### Démonter le dossier partagé
```shell
sudo umount -t cifs /mnt/video
```

View File

@ -1,3 +0,0 @@
icon: noto:open-book
navigation.title: Généralités
navigation.redirect: /generalites/nat

View File

@ -5,29 +5,29 @@ main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
## Un home lab par un débutant pour les débutants
## A Home Lab by a Beginner, for Beginners
<p align="center">
<img src="/img/serveex/serveex.svg" align="center" width="700">
**Serveex** c'est avant tout un projet personnel visant à héberger chez soi le plus de services possibles du quotidien sans passer par des plateformes propriétaires (Google, Apple, Netflix...). L'idée était d'expérimenter, d'apprendre, et de documenter chaque étape. C'est un projet purement pour la science, et n'a pas vocation à être utilisé en production.
**Serveex** is primarily a personal project aimed at hosting as many everyday services as possible at home, without relying on proprietary platforms (Google, Apple, Netflix, etc.). The goal was to experiment, learn, and document every step along the way. This is purely a scientific project and is not intended for production use.
Un grand merci à **Nipah**, pour le partage de ses connaissances infinies, et surtout pour sa patience.
A big thanks to **Nipah** for sharing his infinite knowledge and, above all, for his patience.
::alert{type="info"}
**Pré-requis :**
**Prerequisites:**
:::list{type="primary"}
- Posséder [un VPS en ligne](https://www.it-connect.fr/les-serveurs-prives-virtuels-vps-pour-les-debutants/) ou une machine locale : idéalement un mini PC (on trouve des N100 pour 100€), mais fonctionne aussi sur laptop ou [une machine virtuelle](https://openclassrooms.com/fr/courses/2035806-virtualisez-votre-architecture-et-vos-environnements-de-travail/6313946-installez-virtualbox). Les [Freebox Delta/Ultra proposent des machines virtuelles](https://next.ink/3493/machines-virtuelles-et-freebox-delta-comment-heberger-votre-premiere-page-web/).
- Savoir configurer les [règles NAT d'un routeur et attribuer des baux DHCP](/generalites/nat)
- Savoir configurer la [zone DNS d'un nom de domaine](/generalites/dns)
- Have [an online VPS](https://www.it-connect.fr/les-serveurs-prives-virtuels-vps-pour-les-debutants/) or a local machine: ideally a mini PC (you can find N100 models for around €100), but it also works on a laptop or [a virtual machine](https://openclassrooms.com/fr/courses/2035806-virtualisez-votre-architecture-et-vos-environnements-de-travail/6313946-installez-virtualbox). The [Freebox Delta/Ultra offer virtual machines](https://next.ink/3493/machines-virtuelles-et-freebox-delta-comment-heberger-votre-premiere-page-web/).
- Know how to configure [NAT rules on a router and assign DHCP leases](/generalites/nat)
- Know how to configure the [DNS zone of a domain name](/generalites/dns)
:::
::
L'objectif etant d'etre facilement déployable et facile à migrer, voici sa structure :
The goal is to be easily deployable and easy to migrate, so here is its structure:
::card-grid{grid-template-columns="repeat(2, minmax(0, 1fr));"}
#title
Le coeur du serveur
The Core of the Server
#root
:ellipsis{left=0px width=40rem top=10rem blur=140px}
@ -36,36 +36,36 @@ Le coeur du serveur
::card{icon=logos:debian}
#title
__Système d'exploitation__
__Operating System__
#description
[Installer et configurer Debian 12](/serveex/coeur/installation)
[Install and configure Debian 12](/serveex/coeur/installation)
::
::card{icon=logos:docker-icon}
#title
__Moteur de conteneur__
__Container Engine__
#description
[Installer Docker](/serveex/coeur/docker)
[Install Docker](/serveex/coeur/docker)
::
::card{icon=carbon:container-registry style="color: rgb(41, 194, 243);" }
#title
__Docker GUI__
#description
[Installer et déployer Dockge](/serveex/coeur/docker#installer-dockge-pour-gérer-et-déployer-les-conteneurs)
[Install and deploy Dockge](/serveex/coeur/docker#installer-dockge-pour-gérer-et-déployer-les-conteneurs)
::
::card{icon=noto:globe-showing-americas}
#title
__Reverse Proxy__
#description
[Exposez vos services avec SWAG](/serveex/coeur/swag)
[Expose your services with SWAG](/serveex/coeur/swag)
::
::
::card-grid
#title
La sécurité
Security
#root
:ellipsis{left=0px width=40rem top=10rem blur=140px}
@ -76,21 +76,21 @@ La sécurité
#title
__VPN__
#description
[Installer et déployer Wireguard](/serveex/securite/wireguard)
[Install and deploy Wireguard](/serveex/securite/wireguard)
::
::card{icon=noto:key}
#title
__SSO & MFA__
#description
[Installer et déployer Authentik](/serveex/securite/authentik)
[Install and deploy Authentik](/serveex/securite/authentik)
::
::card{icon=logos:cloudflare-icon}
#title
__Zero Trust__
#description
[Installer et déployer Cloudflared](/serveex/securite/cloudflare)
[Install and deploy Cloudflared](/serveex/securite/cloudflare)
::
::
@ -105,37 +105,37 @@ Monitoring
::card{icon=solar:pulse-linear style="color: rgb(99, 222, 144);"}
#title
__Etat des services__
__Service Status__
#description
[Installer et déployer Uptime-Kuma](/serveex/monitoring/uptime-kuma)
[Install and deploy Uptime-Kuma](/serveex/monitoring/uptime-kuma)
::
::card{icon=lucide:logs style="color: #1AD6FF;"}
#title
__Gestion des logs__
__Log Management__
#description
[Installer et déployer Dozzle](/serveex/monitoring/dozzle)
[Install and deploy Dozzle](/serveex/monitoring/dozzle)
::
::card{icon=noto:rabbit style="color: #1AD6FF;"}
#title
__Gestion de la connexion__
__Connection Management__
#description
[Installer et déployer Speedtest Tracker](/serveex/monitoring/speedtest-tracker)
[Install and deploy Speedtest Tracker](/serveex/monitoring/speedtest-tracker)
::
::card{icon=lucide:chart-column-decreasing style="color:rgb(26, 255, 213);"}
#title
__Etat des ressources__
__Resource Status__
#description
[Installer et déployer Beszel](/serveex/monitoring/beszel)
[Install and deploy Beszel](/serveex/monitoring/beszel)
::
::card{icon=lucide:circle-power style="color:rgb(228, 117, 117);"}
#title
__Wake on Lan__
#description
[Installer et déployer UpSnap](/serveex/monitoring/upsnap)
[Install and deploy UpSnap](/serveex/monitoring/upsnap)
::
::
@ -152,14 +152,14 @@ Media
#title
__Media__
#description
[Installer et déployer Plex](/serveex/media/plex)
[Install and deploy Plex](/serveex/media/plex)
::
::card{icon=cbi:qbittorrent style="color: rgb(#2f67ba);"}
#title
__Seedbox__
#description
[Installer et déployer Qbittorrent](/serveex/media/qbittorrent)
[Install and deploy Qbittorrent](/serveex/media/qbittorrent)
::
::
@ -176,20 +176,20 @@ Cloud Drive & Photos
#title
__Drive__
#description
[Installer et déployer Nextcloud](/serveex/cloud/nextcloud)
[Install and deploy Nextcloud](/serveex/cloud/nextcloud)
::
::card{icon=simple-icons:immich style="color: #ed79b5;"}
#title
__Photos__
#description
[Installer et déployer Immich](/serveex/cloud/immich)
[Install and deploy Immich](/serveex/cloud/immich)
::
::
::card-grid
#title
Fichiers & partage
Files & Sharing
#root
:ellipsis{left=0px width=40rem top=10rem blur=140px}
@ -198,24 +198,23 @@ Fichiers & partage
::card{icon=noto:open-file-folder }
#title
__Explorateur de fichier__
__File Explorer__
#description
[Installer et déployer file-browser](/serveex/files/file-browser)
[Install and deploy file-browser](/serveex/files/file-browser)
::
::card{icon=carbon:share style="color: #47428e;" }
#title
__Partage__
__Sharing__
#description
[Installer et déployer Pingvin](/serveex/files/pingvin)
[Install and deploy Pingvin](/serveex/files/pingvin)
::
::
::card-grid
#title
Outils de développement
Development Tools
#root
:ellipsis{left=0px width=40rem top=10rem blur=140px}
@ -226,27 +225,27 @@ Outils de développement
#title
__Visual Studio Code__
#description
[Installer et déployer code-server](/serveex/development/code-server)
[Install and deploy code-server](/serveex/development/code-server)
::
::card{icon=simple-icons:gitea style="color: #9ee773;"}
#title
__Git Repository__
#description
[Installer et déployer Gitea](/serveex/development/gitea)
[Install and deploy Gitea](/serveex/development/gitea)
::
::card{icon=noto:hammer-and-wrench }
#title
__Outils__
__Tools__
#description
[Installer et déployer IT Tools](/serveex/development/it-tools)
[Install and deploy IT Tools](/serveex/development/it-tools)
::
::
::card-grid
#title
Applications utiles
Useful Applications
#root
:ellipsis{left=0px width=40rem top=10rem blur=140px}
@ -255,23 +254,23 @@ Applications utiles
::card{icon=cbi:adguard style="color: #67b279;"}
#title
__DNS anti-pub et filtres__
__Ad-blocking DNS and Filters__
#description
[Installer et déployer Adguard Home](/serveex/apps/adguard)
[Install and deploy Adguard Home](/serveex/apps/adguard)
::
::card{icon=cbi:bitwarden style="color: rgb(25 128 255);"}
::card{icon=cbi:bitwarden style="color: rgb(25 128 255);" }
#title
__Gestionnaire de mots de passe__
__Password Manager__
#description
[Installer et déployer Vaultwarden](/serveex/apps/vaultwarden)
[Install and deploy Vaultwarden](/serveex/apps/vaultwarden)
::
::
## A venir
## Coming Soon
---
- Homepage, pour avoir tout vos services en un coup d'oeil et y accéder facilement
- Mkdocs pour votre documentation
- Docus, alternative à Mkdocs
- Speedtest-tracker pour vérifier la connexion de votre serveur
- UpSnap pour réveiller vos machines à distance
- Homepage, to have all your services at a glance and access them easily
- Mkdocs for your documentation
- Docus, an alternative to Mkdocs
- Speedtest Tracker to check your server's connection
- UpSnap to remotely wake your machines