# Serveur VPS 2026 OVH

VPS OVH acquit le 22/11/2025 en remplacement d’un VPS OVH 2020.

## Caractéristiques

- Processeur:     6 vCore
- Mémoire: 	    12 Go
- Storage: 	    100 Go
- Bande passante: 1 Gbit/s public


OS installée : **Debian 12**

## Paramètres d'accès :

Eléments initiaux de connexion:
*   Nom du VPS : **vps-c470a9b1.vps.ovh.net**
*   Adresse IPv4 : **217.182.65.158**
*   Adresse IPv6 : **2001:41d0:305:2100::dff1**
*   Nom d'utilisateur : **debian**
*   Mot de passe : MsGAbxKG2ADy (expire le 29/11/2025)

## Installation de YunoHost

Cf. dernière installation de Yunohost sur VPS OVH 2020 [[90_ARCHIVES/CLOS/PERSO/INSTALLATION-VPS-OVH-2020-YUNOHOST]].

Connexion au serveur:
```sh
ssh debian@vps-c470a9b1.vps.ovh.net
```

A la connexion il est demandé de définir un nouveau mot de passe pour l’utilisateur debian : `#06TucCok!`

Pour devenir réellement root:
```sh
sudo su
```


## 2. Paramétrage et configuration initiale de Debian

- Connexion SSH: `ssh debian@vps-c470a9b1.vps.ovh.net`
- Mettre à jour liste des paquets: `sudo apt-get update`
- Appliquer les mises à jour: `sudo apt-get upgrade`
- Installer mode SUDO: `sudo apt-get install sudo`
- Installer Nano: `sudo apt-get install nano`
- Ajouter utilisateur générique "gryckelynck": `sudo adduser gryckelynck` (mot de passe: "shizendo.leeziO?78")
- Ajouter utilisateur générique "datagrandest": `sudo adduser datagrandest` (mot de passe: "#71pocible!")
- Ajouter utilisateur "datagrandest" au groupe "sudo": `usermod -aG sudo datagrandest`
- Modification du fichier de configuration de OpenSSH: `nano /etc/ssh/sshd_config`
  - Empêcher la connexion SSH autre que part "gryckelynck": remplacer `PermitRootLogin prohibit-password` par `PermitRootLogin no` + ajouter en fin de fichier `AllowUsers gryckelynck`
  - Modifier le port de connexion `Port 2022`
  - Enregistrer le fichier: `Ctrl+x`
- Relancer le serveur SSH: `/etc/init.d/ssh restart`
- // A FAIRE dans YunoHost => Installer Fail2ban: `apt-get install fail2ban`. Il est possible de configurer Fail2ban dans le fichier `/etc/fail2ban/jail.conf` (penser à faire une copie avant et à redémarrer le serveur ensuite: `/etc/init.d/fail2ban restart`)
- Il aussi possible d'utiliser le pare-feu interne "iptables" (pour lister les règles: `iptables -L`)

A FAIRE : Il est aussi possible de prévoir des connexions des utilisateurs par clé SSH:
- Suivre <https://docs.ovh.com/fr/dedicated/creer-cle-ssh-serveur-dediees/> pour créer la clé
- Convertir la clé privée en PPK via Puttygen.exe
- Ajouter l'utilisateur à la ligne AllowUsers dans fichier de configuration SSH ("/etc/ssh/sshd_config") et au groupe "ssh" (`sudo usermod -a -G ssh utilisateur`), puis redémarrer le serveur
 

## 3. Test de connexion

- Connexion SSH: `ssh gryckelynck@vps-c470a9b1.vps.ovh.net -p 2022` (password)
- Passage à admin: `su debian` (password) ou  en root : `sudo su` (password)
- Test de SUDO: `sudo apt-get update`

## 4. Installer Yunohost

Lancer la commande:
```bash
curl https://install.yunohost.org | bash
```

lancer la configuration initiale:
```bash
yunohost tools postinstall
```

Main domain: `shizendo.ovh`
Admin username: `shizendo`
Admin full name: `Guillaume RYCKELYNCK`
New administration password: `#06TucCok!`

Se connecter à la Webadmin : `https://vps-c470a9b1.vps.ovh.net`

Aller dans DOMAINE > DNS.
Suivre la document Yunohost pour créer un Token OVH:

API Keys created

```yaml
Application name:        "YunoHost Auto DNS"
Application description: "YunoHost Auto DNS"
Application key:         "70263835945d778a"
Application secret:      "ed4be08cb3716dda12ee2c3ada029ab5"
Consummer key:           "80f1f70e96c027426e524d08aec646c6"
```

Modification du DNS:

#### create
```
* A 217.182.65.158
* AAAA 2001:41d0:305:2100::dff1
@ AAAA 2001:41d0:305:2100::dff1
@ CAA 0 issue "letsencrypt.org"
@ MX 10 shizendo.ovh.
_dmarc TXT "v=DMARC1; p=none"
mail.\_domainkey TXT "v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlNWzT9wkzxI+6fcAXdB1cqjY4lRuvAkgWtmsz4AeJQSxaHY9COJkE6JEu0MpTPkJ5HuJ3vXfeaj1/HcCMBmj1aIt8zHGmP7Vx+d4z5v3jaGjHb54nFsUdtS/bErx4k6fOUx2IDLuGxoeCl4y4co4Jtqt64xI9jfO9p6DdXvwJCwIDAQAB"
@ TXT "v=spf1 a mx -all"
```

#### update
```
@ A 213.186.33.5 --> 217.182.65.158
```

#### delete
```
www A 213.186.33.5
ftp CNAME shizendo.ovh.
@ MX 1 mx1.mail.ovh.net.
@ MX 5 mx2.mail.ovh.net.
@ MX 100 mx3.mail.ovh.net.
@ TXT "1|www.shizendo.ovh"
www TXT "3|welcome"
```

Valider les modifications.


## Installer un certificat Let's Encrypt

A partir de l’interface web de Yunohost, générer un certificat Let’s Encrypt pour le domaine `shizendo.ovh`.

## Configurer le reverse DNS

Dans la console de gestion OVH, dans la section “Adresses IP publiques (https://www.ovh.com/manager/#/dedicated/ip) modifier le Reverse DNS et indiquer le nom de domaine `shizendo.ovh.`.

## Lancer un diagnostic

Attention, certaines erreurs peuvent provenir du temps de propagation de la modification des DNS (de l’ordre d’une à deux heures généralement).

## Installation des applications

Liste des applications à installer : 

- wallabag.shizendo.ovh
- forgejo.shizendo.ovh
- nextcloud.shizendo.ovh
- onlyoffice.shizendo.ovh
- fail2ban.shizendo.ovh
- silverbullet.shizendo.ovh
- guacamole.shizendo.ovh
- superset.shizendo.ovh
- syncthing.shizendo.ovh
- n8n.shizendo.ovh
- nodered.shizendo.ovh

### Sous domaines

Création des sous-domaines pour shizendo.ovh
```bash
sudo yunohost domain add wallabag.shizendo.ovh
sudo yunohost domain add forgejo.shizendo.ovh
sudo yunohost domain add nextcloud.shizendo.ovh
sudo yunohost domain add onlyoffice.shizendo.ovh
sudo yunohost domain add fail2ban.shizendo.ovh
sudo yunohost domain add silverbullet.shizendo.ovh
sudo yunohost domain add guacamole.shizendo.ovh
sudo yunohost domain add superset.shizendo.ovh
sudo yunohost domain add syncthing.shizendo.ovh
sudo yunohost domain add n8n.shizendo.ovh
sudo yunohost domain add nodered.shizendo.ovh
```

Installation des certificats let’s encrypt pour shizendo.ovh
```bash
sudo yunohost domain cert install wallabag.shizendo.ovh --no-checks --force
sudo yunohost domain cert install forgejo.shizendo.ovh --no-checks --force
sudo yunohost domain cert install nextcloud.shizendo.ovh --no-checks --force
sudo yunohost domain cert install onlyoffice.shizendo.ovh --no-checks --force
sudo yunohost domain cert install fail2ban.shizendo.ovh --no-checks --force
sudo yunohost domain cert install silverbullet.shizendo.ovh --no-checks --force
sudo yunohost domain cert install guacamole.shizendo.ovh --no-checks --force
sudo yunohost domain cert install superset.shizendo.ovh --no-checks --force
sudo yunohost domain cert install syncthing.shizendo.ovh --no-checks --force
sudo yunohost domain cert install n8n.shizendo.ovh --no-checks --force
sudo yunohost domain cert install nodered.shizendo.ovh --no-checks --force
```

Création des sous-domaines pour datagrandest.net
```bash
sudo yunohost domain add wallabag.datagrandest.net
sudo yunohost domain add forgejo.datagrandest.net
sudo yunohost domain add nextcloud.datagrandest.net
sudo yunohost domain add onlyoffice.datagrandest.net
sudo yunohost domain add silverbullet.datagrandest.net
sudo yunohost domain add guacamole.datagrandest.net
sudo yunohost domain add syncthing.datagrandest.net
sudo yunohost domain add nodered.datagrandest.net
sudo yunohost domain add superset.datagrandest.net
```

Installation des certificats let’s encrypt pour datagrandest.net
```bash
sudo yunohost domain cert install wallabag.datagrandest.net --no-checks --force
sudo yunohost domain cert install forgejo.datagrandest.net --no-checks --force
sudo yunohost domain cert install nextcloud.datagrandest.net --no-checks --force
sudo yunohost domain cert install onlyoffice.datagrandest.net --no-checks --force
sudo yunohost domain cert install silverbullet.datagrandest.net --no-checks --force
sudo yunohost domain cert install guacamole.datagrandest.net --no-checks --force
sudo yunohost domain cert install superset.datagrandest.net --no-checks --force
sudo yunohost domain cert install syncthing.datagrandest.net --no-checks --force
sudo yunohost domain cert install nodered.datagrandest.net --no-checks --force
```



### forgejo.shizendo.ovh

- [x] Installer forgejo.shizendo.ovh

### nextcloud.shizendo.ovh

- [x] Installer Nextcloud
- [x] Activer modules: Onlyoffice, Contacts et Agenda
- [x] Configurer Onlyoffice
- [x] Configurer un client local et copier les fichiers à partie de nextcloud.datagrandest.net
- [x] Faire une sauvegarde des contacts et du calendrier de nextcloud.datagrandest.net sur Androïd (tél. portable)
- [x] Intégrer les sauvegardes des contacts et du calendrier dans nextcloud.shizendo.org
- [x] Adapter configuration Nextcloud sur Androïd et PC Région

### onlyoffice.shizendo.ovh

- [x] Installer onlyoffice.shizendo.ovh

### fail2ban.shizendo.ovh

- [x] Installer fail2ban.shizendo.ovh

### silverbullet.shizendo.ovh

- [x] Installer silverbullet.shizendo.ovh
- [x] Configurer la synchro avec forgejo.shizendo.org cf. [[PERSO/Ressources/Silverbullet/silverbullet-git-sync]]
- [x] Configurer la synchro avec nextcloud.shizendo.org cf. [[Ressources/Silverbullet/silverbullet-nextcloud-unison-sync]]
- [x] Copier les notes de silverbullet.shogun.ovh vers silverbullet.shizendo.ovh
- [ ] Configurer la synchro avec synthing.shizendo.org cf. [[PERSO/Ressources/Silverbullet/silverbullet-syncthing]]

### syncthing.shizendo.ovh

- [x] Installer syncthing.shizendo.ovh
- [ ] Configurer 

### nodered.shizendo.ovh

- [x] Installer nodered.shizendo.ovh
- [ ] A tester

### guacamole.shizendo.ovh

NB : il faut installer Guacamole dans un dossier (ex.: https://guacamole.shizendo.ovh/guacamole). L’installation à la racine du sous-domaine ne fonctionne pas.

- [x] Installer guacamole.shizendo.ovh
- [x] Configurer l’accès en SSH à shizendo.ovh et ftp.datagrandest.fr

### wallabag.shizendo.ovh

- [x] Installer wallabag.shizendo.ovh
- [ ] Importer les données depuis wallabag.datagrandest.net => Ne fonctionne pas...
Sauvegarde : cf. https://nextcloud.shizendo.ovh/f/11025
      
### superset.shizendo.ovh

- [ ] Installer superset.shizendo.ovh

### n8n.shizendo.ovh

- [ ] Installer n8n.shizendo.ovh

### site.shizendo.ovh

Espace pour publier le site statique shizendo.ovh généré via Mkdocs à partir d’un répertoire stocké dans silverbullet.shizendo.ovh.
Principe : écrire le site en markdown dans un répertoire de silverbullet.shizendo.ovh, le synchroniser régulièrement ou manuellement avec Git et le déployer dans site.shizendo.ovh.

Possibilité d’automatiser en:
* Surveillant les modification dans `silverbullet/notes/projects/SITE-SHIZENDO`
* Synchronisant, à chaque modification, ce dossier avec `/var/www/my_webapp/www`
* Et en synchronisant avec Git 


Eléments de connexion en SFTP (WinSCP):
```yaml
Domain : "site.shizendo.ovh"
Port : 222
User : "my_webapp"
Password : "#06TucCok!"
```

Script PHP pour exécuter un script Bash sur le serveur:

```python
// Chemin absolu vers votre script Bash
$scriptPath = '/home/shizendo/dev/shizendo-site/scripts/update-site.sh';

// Vérifiez la signature du webhook (optionnel mais recommandé pour la sécurité)
$secret = 'shizendo-test';
$signature = $_SERVER['HTTP_X_HUB_SIGNATURE'] ?? '';
$payload = file_get_contents('php://input');
$calculatedSignature = 'sha1=' . hash_hmac('sha1', $payload, $secret);

if (!hash_equals($calculatedSignature, $signature)) {
    http_response_code(403);
    die("Signature invalide.");
}

// Vérifiez que c'est un événement de push (optionnel)
$event = $_SERVER['HTTP_X_GITEA_EVENT'] ?? '';
if ($event !== 'push') {
    http_response_code(400);
    die("Événement non supporté.");
}

// Exécutez le script Bash
//$output = shell_exec('sudo /bin/bash ' . escapeshellarg($scriptPath) . ' 2>&1');
$output = shell_exec('sudo /home/shizendo/dev/shizendo-site/scripts/update-site.sh 2>&1');

echo $output;

// Log (optionnel)
file_put_contents('/var/www/my_webapp/www/scripts/log-deploy-mkdocs.txt', date('Y-m-d H:i:s') . " - Script exécuté. Sortie : " . $output . "\n", FILE_APPEND);

// Réponse HTTP
http_response_code(200);
echo "Script déclenché avec succès.";
```



A FAIRE:
- [x] Installer “My Webapp”
- [ ] #SITE-SHIZENDO Configurer la synchronisation avec silverbullet
- [ ] #SITE-SHIZENDO Configurer le build du site automatique avec Mkdocs
- [ ] #SITE-SHIZENDO Configurer la synchronisation avec Git


