services:drop.chapril.org
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| services:drop.chapril.org [2026/04/11 17:40] – supprimée - modification externe (Date inconnue) 127.0.0.1 | services:drop.chapril.org [2026/04/11 17:40] (Version actuelle) – ↷ Page déplacée de admin:services:drop.chapril.org à services:drop.chapril.org pitchum | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Service drop.chapril.org ====== | ||
| + | |||
| + | ===== Introduction ===== | ||
| + | |||
| + | Création de la VM avec la procédure [[admin: | ||
| + | |||
| + | ===== Préparation ===== | ||
| + | |||
| + | Pour le stockage, nous utilisons un second disque. | ||
| + | Il est ajouté à la VM via l' | ||
| + | |||
| + | Création de la partition de stockage : | ||
| + | <code bash> | ||
| + | fdisk /dev/vdb | ||
| + | </ | ||
| + | |||
| + | Choisir '' | ||
| + | |||
| + | Création du //Volume Group// et //Logic Volume// | ||
| + | <code bash> | ||
| + | pvcreate | ||
| + | vgcreate drop-data-vg /dev/vdb1 | ||
| + | lvcreate -L 49G -n data drop-data-vg | ||
| + | </ | ||
| + | |||
| + | Création du FS et du répertoire de montage : | ||
| + | <code bash> | ||
| + | mke2fs -L drop -e remount-ro -m 0 / | ||
| + | mkdir /var/drop/ | ||
| + | </ | ||
| + | |||
| + | Ajout dans ''/ | ||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Essai de montage : | ||
| + | <code bash> | ||
| + | mount /var/drop/ | ||
| + | </ | ||
| + | |||
| + | Ajout d'un dossier pour le stockage futur des fichiers : | ||
| + | <code bash> | ||
| + | mkdir / | ||
| + | chown -R app:app / | ||
| + | </ | ||
| + | |||
| + | Installation de NodeJS et NPM : | ||
| + | <code bash> | ||
| + | apt install -y nodejs npm | ||
| + | </ | ||
| + | |||
| + | Ajout d'un utilisateur pour exécuter l' | ||
| + | <code bash> | ||
| + | useradd | ||
| + | </ | ||
| + | |||
| + | ===== Installation ===== | ||
| + | |||
| + | Récupération du code : | ||
| + | <code bash> | ||
| + | mkdir / | ||
| + | chown -R app:app /srv/drop/ | ||
| + | sudo -u app git clone https:// | ||
| + | cd / | ||
| + | sudo -u app git checkout v3.0.21 | ||
| + | </ | ||
| + | |||
| + | Récupération des dépendances et complication : | ||
| + | <code bash> | ||
| + | sudo -u app npm install | ||
| + | sudo -u app npm run build | ||
| + | </ | ||
| + | |||
| + | Création du service dans ''/ | ||
| + | <code ini> | ||
| + | [Unit] | ||
| + | Description=drop | ||
| + | After=network.target | ||
| + | |||
| + | [Service] | ||
| + | Type=simple | ||
| + | User=app | ||
| + | WorkingDirectory=/ | ||
| + | ExecStart=npm run prod | ||
| + | Restart=always | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | </ | ||
| + | |||
| + | Démarrage et activation du service : | ||
| + | <code bash> | ||
| + | systemctl start drop.service | ||
| + | systemctl enable drop.service | ||
| + | </ | ||
| + | |||
| + | ===== Personnalisation ===== | ||
| + | |||
| + | <WRAP todo> | ||
| + | À faire. | ||
| + | </ | ||
| + | |||
| + | ==== Favicon ==== | ||
| + | |||
| + | Remplacement des fichiers suivants : | ||
| + | < | ||
| + | assets/ | ||
| + | assets/ | ||
| + | public/ | ||
| + | </ | ||
| + | |||
| + | Puis : | ||
| + | <code bash> | ||
| + | sudo -u app npm run build | ||
| + | systemctl restart drop | ||
| + | </ | ||
| + | |||
| + | ==== Titre de page ==== | ||
| + | |||
| + | Remplacement dans le fichier '' | ||
| + | < | ||
| + | - title: ' | ||
| + | + title: ' | ||
| + | </ | ||
| + | |||
| + | Puis : | ||
| + | <code bash> | ||
| + | sudo -u app npm run build | ||
| + | systemctl restart drop | ||
| + | </ | ||
| + | |||
| + | ==== Fichier CSS Chapril ==== | ||
| + | |||
| + | L' | ||
| + | <code nginx> | ||
| + | include / | ||
| + | |||
| + | location / { | ||
| + | proxy_set_header Host $host; | ||
| + | proxy_set_header X-Real-IP $remote_addr; | ||
| + | proxy_set_header X-Forwarded-Proto https; | ||
| + | proxy_pass http:// | ||
| + | subs_filter '</ | ||
| + | sub_filter_once on; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Bannière Chapril ==== | ||
| + | |||
| + | FirefoxSend est pleinement du NodeJS. | ||
| + | C'est à dire que les pages sont complètement générées par du Javascript. | ||
| + | Ce code Javascript supprime supprime le code déjà existant, ce qui rend très difficile l' | ||
| + | Suite à différents échecs, il a été décidé de modifier le code de FirefoxSend pour y mettre directement le code de la bannière. | ||
| + | |||
| + | Ça se passe dans le fichier '' | ||
| + | |||
| + | < | ||
| + | | ||
| + | - const title = | ||
| + | - platform() === ' | ||
| + | - ? html` | ||
| + | - <a class=" | ||
| + | - <img src=" | ||
| + | - <svg class=" | ||
| + | - <use xlink: | ||
| + | - </ | ||
| + | - </a> | ||
| + | - ` | ||
| + | - : html` | ||
| + | - <a class=" | ||
| + | - <img | ||
| + | - alt=" | ||
| + | - src=" | ||
| + | - /> | ||
| + | - <svg class=" | ||
| + | - <use xlink: | ||
| + | - </ | ||
| + | - </a> | ||
| + | - `; | ||
| + | | ||
| + | < | ||
| + | - class=" | ||
| + | + class=" | ||
| + | > | ||
| + | - ${title} ${this.account.render()} | ||
| + | + <!-- Chapril banner code: starting… --> | ||
| + | + <div id=" | ||
| + | + <div id=" | ||
| + | + <div id=" | ||
| + | + <a href=" | ||
| + | + ><img | ||
| + | + src="/ | ||
| + | + alt=" | ||
| + | + /></ | ||
| + | + </ | ||
| + | + <div id=" | ||
| + | + <ul> | ||
| + | + < | ||
| + | + <li> | ||
| + | + <a href=" | ||
| + | + > | ||
| + | + > | ||
| + | + </li> | ||
| + | + <li> | ||
| + | + <a href=" | ||
| + | + </li> | ||
| + | + < | ||
| + | + <li> | ||
| + | + <a href=" | ||
| + | + > | ||
| + | + > | ||
| + | + </li> | ||
| + | + <li> | ||
| + | + <a href=" | ||
| + | + >Nous contacter</ | ||
| + | + > | ||
| + | + </li> | ||
| + | + </ul> | ||
| + | + </ | ||
| + | + <div id=" | ||
| + | + <a href=" | ||
| + | + ><img | ||
| + | + src="/ | ||
| + | + class=" | ||
| + | + alt=" | ||
| + | + /></ | ||
| + | + </ | ||
| + | + </ | ||
| + | + </ | ||
| + | + <!-- Chapril banner code: done. --> | ||
| + | </ | ||
| + | `; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Pied de page ==== | ||
| + | |||
| + | Ça se passe dans le fichier '' | ||
| + | |||
| + | < | ||
| + | - const translate = this.state.translate; | ||
| + | - const browser = browserName(); | ||
| + | - const feedbackUrl = `https:// | ||
| + | | ||
| + | < | ||
| + | - class=" | ||
| + | + class=" | ||
| + | > | ||
| + | - <a class=" | ||
| + | - Mozilla | ||
| + | - </a> | ||
| + | - <ul | ||
| + | - class=" | ||
| + | + <a | ||
| + | + href=" | ||
| + | + rel=" | ||
| + | + alt=" | ||
| + | + target=" | ||
| + | > | ||
| + | - <li class=" | ||
| + | - <a href=" | ||
| + | - ${translate(' | ||
| + | - </a> | ||
| + | - </li> | ||
| + | - <li class=" | ||
| + | - <a href="/ | ||
| + | - </li> | ||
| + | - <li class=" | ||
| + | - <a href=" | ||
| + | - ${translate(' | ||
| + | - </a> | ||
| + | - </li> | ||
| + | - <li class=" | ||
| + | - <a href=" | ||
| + | - </li> | ||
| + | - <li class=" | ||
| + | - <a | ||
| + | - href=" | ||
| + | - rel=" | ||
| + | - class=" | ||
| + | - alt=" | ||
| + | - target=" | ||
| + | - > | ||
| + | - ${translate(' | ||
| + | - </a> | ||
| + | - </li> | ||
| + | - </ul> | ||
| + | + FirefoxSend chapril-${version} | ||
| + | + </a> | ||
| + | </ | ||
| + | `; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Encart de promo ==== | ||
| + | |||
| + | Ça se passe dans le fichier '' | ||
| + | |||
| + | < | ||
| + | class Promo extends Component { | ||
| + | | ||
| + | @@ -15,24 +15,8 @@ class Promo extends Component { | ||
| + | | ||
| + | | ||
| + | < | ||
| + | - class=" | ||
| + | - > | ||
| + | - <div class=" | ||
| + | - <img | ||
| + | - src=" | ||
| + | - class=" | ||
| + | - alt=" | ||
| + | - /> | ||
| + | - <span class=" | ||
| + | - ${this.state.translate(' | ||
| + | - <a | ||
| + | - class=" | ||
| + | - href=" | ||
| + | - > | ||
| + | - > | ||
| + | - </ | ||
| + | - </ | ||
| + | - </ | ||
| + | + class=" | ||
| + | + ></ | ||
| + | `; | ||
| + | } | ||
| + | } | ||
| + | diff --git a/ | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | Retirer le '' | ||
| + | </ | ||
| + | |||
| + | ==== Texte d' | ||
| + | |||
| + | Ça se passe dans le fichier '' | ||
| + | |||
| + | < | ||
| + | -introDescription = { -send-brand } vous permet de partager des fichiers chiffrés de bout en bout ainsi qu’un lien qui expire automatiquement. Ainsi, vous pouvez garder ce que vous partagez en privé et vous assurer que vos contenus ne restent pas en ligne pour toujours. | ||
| + | +introDescription = DropChaprilOrg vous permet de partager des fichiers chiffrés de bout en bout ainsi qu’un lien qui expire automatiquement. Ainsi, vous pouvez garder ce que vous partagez en privé et vous assurer que vos contenus ne restent pas en ligne pour toujours. | ||
| + | </ | ||
| + | |||
| + | ===== Configuration ===== | ||
| + | |||
| + | ==== Journaux ==== | ||
| + | |||
| + | Les journaux du démon drop sont envoyés dans '' | ||
| + | Ils contiennent quelques informations relatives au démarrage. | ||
| + | Pour les consulter on utilise : | ||
| + | <code bash> | ||
| + | journalctl -u drop | ||
| + | </ | ||
| + | |||
| + | Les journaux d' | ||
| + | Les journaux sont envoyés dans le dossier ''/ | ||
| + | Logrotate est configuré pour créer un fichier de journaux par mois et ne conserver que 4 mois. | ||
| + | |||
| + | La configuration se trouve dans ''/ | ||
| + | < | ||
| + | / | ||
| + | / | ||
| + | { | ||
| + | monthly | ||
| + | missingok | ||
| + | rotate 4 | ||
| + | compress | ||
| + | delaycompress | ||
| + | notifempty | ||
| + | create 640 root adm | ||
| + | sharedscripts | ||
| + | postrotate | ||
| + | if invoke-rc.d apache2 status > /dev/null 2>& | ||
| + | invoke-rc.d apache2 reload > /dev/null 2>& | ||
| + | fi; | ||
| + | endscript | ||
| + | prerotate | ||
| + | if [ -d / | ||
| + | run-parts / | ||
| + | fi; \ | ||
| + | endscript | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Cron ==== | ||
| + | |||
| + | Comme indiqué dans le [[https:// | ||
| + | |||
| + | En attendant une correction officielle, solution de contournement avec un fichier Cron : | ||
| + | < | ||
| + | # Suppression des fichiers expirés (tous les jours à 00h30). | ||
| + | 30 0 * * * root / | ||
| + | </ | ||
| + | |||
| + | De plus, Redis doit être configuré de manière à transmettre des notifications en cas d' | ||
| + | < | ||
| + | --- a/ | ||
| + | +++ b/ | ||
| + | @@ -1063,7 +1063,7 @@ latency-monitor-threshold 0 | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | -notify-keyspace-events "" | ||
| + | +notify-keyspace-events Ex | ||
| + | </ | ||
| + | |||
| + | Et le script ''/ | ||
| + | <code bash> | ||
| + | cp / | ||
| + | systemctl enable drop-remove-expired-files.service | ||
| + | systemctl start drop-remove-expired-files.service | ||
| + | </ | ||
| + | |||
| + | ===== Modération ===== | ||
| + | |||
| + | Il n'y a pas d' | ||
| + | |||
| + | En cas de demande de retrait de fichier, identifier l' | ||
| + | |||
| + | Par exemple, pour '' | ||
| + | |||
| + | Se connecter en SSH sur le serveur et supprimer le fichier de l' | ||
| + | <code bash> | ||
| + | redis-cli DEL c255369c68c0f7d7 | ||
| + | </ | ||
| + | |||
| + | ===== Rapport d' | ||
| + | |||
| + | FIXME À faire. | ||
| + | |||
| + | ===== Gestion des mises à jour ===== | ||
| + | |||
| + | Le code de la version officielle ce trouve sur GitHub : https:// | ||
| + | Il est situé dans la branche '' | ||
| + | Pour détecter les mises à jour, la supervision vérifie l' | ||
| + | |||
| + | Pour chaque nouvelle version, nous créons une branche qui a comme nom le nom de l’étiquette préfixé par '' | ||
| + | Par exemple pour l’étiquette '' | ||
| + | Ces branches permettent de garder les personnalisations pour Chapril. | ||
| + | |||
| + | Sur le serveur, le dépôt Git est configuré pour utiliser deux dépôts distants : | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | |||
| + | Mise à jour depuis le dépôt distant de Mozilla : | ||
| + | <code bash> | ||
| + | cd / | ||
| + | git pull mozilla | ||
| + | </ | ||
| + | |||
| + | Mise à jour de la branche '' | ||
| + | <code bash> | ||
| + | git checkout origin/ | ||
| + | git merge mozilla/ | ||
| + | git checkout -b master_updated | ||
| + | git push origin master_updated: | ||
| + | </ | ||
| + | |||
| + | |||
| + | Mettre à jour les étiquettes : | ||
| + | <code bash> | ||
| + | git push --tags origin | ||
| + | </ | ||
| + | |||
| + | Créer une nouvelle branche et répéter nos modifications de personnalisation : | ||
| + | <code bash> | ||
| + | git checkout -b chapril-v3.0.22 v3.0.22 | ||
| + | git cherry-pick a00127f4a8^..9c4a8bfa26 | ||
| + | # résoudre éventuels conflits | ||
| + | git push origin chapril-v3.0.22 | ||
| + | git checkout chapril-v3.0.22 | ||
| + | </ | ||
| + | |||
| + | Déployer la nouvelle version : | ||
| + | <code bash> | ||
| + | git checkout chapril-v3.0.22 | ||
| + | sudo -u app npm install | ||
| + | sudo -u app npm run build | ||
| + | systemctl restart drop | ||
| + | </ | ||
