Compare commits

...
7 Commits
Author SHA1 Message Date
mathieuandClaude Sonnet 5 aed16efdfc Ajoute le script de publication vers akbar (SFTP via rclone)
Le compte SSH de déploiement est restreint au SFTP côté serveur
(ForceCommand internal-sftp, YunoHost) : rsync/scp échouent car ils ont
besoin d'exécuter une commande shell distante. rclone en backend SFTP
ne parle que le protocole SFTP et fonctionne avec ce type de compte.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-08 01:25:47 +02:00
Mathieu Limonier e91d644531 Rendre encore plus visible les liens web 2026-07-23 00:35:40 +02:00
Mathieu Limonier 585946f2a0 ### Sécurité
- [x] Permissions (fichiers : 644 - dossiers : 755)
- [x] .htaccess
2026-07-23 00:35:20 +02:00
Mathieu Limonier ec737536db ### Légal
- [x] Rédiger les mentions légales
- [x] Rédiger la politique de confidentialité
- [x] Vérifier qu'aucun cookie n'est utilisé
2026-07-22 23:46:30 +02:00
Mathieu Limonier 395ba6a756 Pas d'icone 2026-07-22 20:06:19 +02:00
Mathieu Limonier a09a30e515 - [x] Définir les titres des pages
- [x] Définir les descriptions
- [x] Vérifier les balises Open Graph
- [ ] Ajouter favicon : Je m'en passe
- [ ] Ajouter image Open Graph : Je m'en passe

+ passe de Sillycone-village à Sillycone VIllage
2026-07-22 20:05:13 +02:00
Mathieu Limonier 670eb62a78 ### Search Engine Optimization (SEO)
- [x] Définir les titres des pages
- [x] Définir les descriptions
- [x] Vérifier les balises Open Graph
- [ ] Ajouter favicon : Je m'en passe
- [ ] Ajouter image Open Graph : Je m'en passe

+ passe de Sillycone-village à Sillycone VIllage
2026-07-22 20:04:31 +02:00
14 changed files with 384 additions and 28 deletions
+7 -1
View File
@@ -34,6 +34,13 @@ Modifier `.env.exemple` en `.env`
### publish.sh
`./script/publish.sh` : Publie le site dans le _PUBLISH_DIR_ de _.env_
### publish-akbar.sh
`./script/publish-akbar.sh` : build (`publish.sh`) puis déploiement de `PUBLISH_DIR` vers akbar via `rclone`/SFTP (`SSH_USER`, `SSH_HOST`, `SSH_PORT`, `SSH_REMOTE_PATH` dans `.env`). Le compte de déploiement est restreint au SFTP côté serveur (YunoHost), d'où `rclone` plutôt que `rsync`/`scp` qui nécessitent un shell distant.
Ne pas oublier de vérifier que les
- dossiers sont en 755 (`find /var/www -type d -exec chmod 755 {} \;`)
- fichiers sont en 644 (`find /var/www -type f -exec chmod 644 {} \;`)
## Spécificités
### Page 404 et Yunohost
La page 404.html, si l'option _Activer l'utilisation du fichier d'erreur personnalisé_ est activée, doit être déplacée sur www/error/404.html
@@ -81,7 +88,6 @@ En mode incognito sur Chromium, <kbd>F12</kbd> puis Lighthouse. Tester smartphon
Document does not have a meta description
## Idées d'évolutions
- Témoignages
+17 -19
View File
@@ -2,32 +2,30 @@
## À faire
### Identité visuelle
---
## Fait
### Sécurité
- [x] Permissions (fichiers : 644 - dossiers : 755)
- [x] .htaccess
### Légal
- [x] Rédiger les mentions légales
- [x] Rédiger la politique de confidentialité
- [x] Vérifier qu'aucun cookie n'est utilisé
### Identité visuelle (Je n'en veux pas pour le moment)
- [ ] Ajouter un logo
- [ ] Ajouter un favicon
- [ ] Définir l'image de partage (Open Graph)
### Search Engine Optimization (SEO)
- [x] Définir les titres des pages
- [x] Définir les descriptions
- [x] Vérifier les balises Open Graph
- [ ] Ajouter favicon : Je m'en passe
- [ ] Ajouter image Open Graph : Je m'en passe
- [ ] Définir les titres des pages
- [ ] Définir les descriptions
- [ ] Vérifier les balises Open Graph
### Légal
- [ ] Rédiger les mentions légales
- [ ] Rédiger la politique de confidentialité
- [ ] Vérifier qu'aucun cookie n'est utilisé
### Sécurité
- [ ] Permissions (fichiers : 644 - dossiers : 755)
- [ ] .htaccess
---
## Fait
### Accessibilité & performances
- [x] Audit Lighthouse
- [x] Mesurer l'impact écologique ([Website Carbon](https://www.websitecarbon.com/website/))
+56
View File
@@ -0,0 +1,56 @@
#!/usr/bin/env bash
#
# Build le site (publish.sh) puis déploie le résultat vers akbar en une
# seule commande.
#
# Le compte SSH de déploiement (webapp YunoHost) est restreint au SFTP
# (ForceCommand internal-sftp côté serveur) : ni scp, ni rsync-sur-ssh ne
# fonctionnent (la commande distante est refusée, la connexion est coupée).
# On utilise donc rclone en backend SFTP, qui ne parle que le protocole
# SFTP et ne tente jamais d'exécuter de commande shell distante.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "${SCRIPT_DIR}")"
if ! command -v rclone >/dev/null 2>&1; then
echo "Erreur : rclone est requis (apt install rclone)."
exit 1
fi
if [[ ! -f "${PROJECT_DIR}/.env" ]]; then
echo "Erreur : fichier .env introuvable."
exit 1
fi
set -a
source "${PROJECT_DIR}/.env"
set +a
: "${SSH_USER:?Variable SSH_USER manquante dans .env}"
: "${SSH_HOST:?Variable SSH_HOST manquante dans .env}"
: "${SSH_PORT:=22}"
: "${SSH_REMOTE_PATH:?Variable SSH_REMOTE_PATH manquante dans .env}"
PUBLISH_PATH="${PROJECT_DIR}/${PUBLISH_DIR}"
echo "=== Étape 1/2 : build du site ==="
(cd "${PROJECT_DIR}" && "${SCRIPT_DIR}/publish.sh")
echo
echo "=== Étape 2/2 : déploiement (SFTP) vers ${SSH_USER}@${SSH_HOST}:${SSH_REMOTE_PATH} ==="
rclone sync \
"${PUBLISH_PATH}" \
":sftp:${SSH_REMOTE_PATH}" \
--sftp-host "${SSH_HOST}" \
--sftp-user "${SSH_USER}" \
--sftp-port "${SSH_PORT}" \
--sftp-ask-password \
--sftp-shell-type none \
--sftp-disable-hashcheck \
--progress
echo
echo "Déployé. Site visible sur :"
echo " https://${SSH_HOST}/"
+11 -1
View File
@@ -1,3 +1,13 @@
:root {
--link: light-dark(#005a9c, #8cc8ff);
--link: light-dark(#005fcc, #8ab4f8);
/* --link: light-dark(#005a9c, #8cc8ff); */
a {
text-decoration: underline;
}
a:hover,
a:focus {
text-decoration-thickness: 2px;
}
}
+3 -2
View File
@@ -1,5 +1,6 @@
---
title: "Sillycone-village"
title: "Sillycone Village"
description: "Sillycone Village accompagne les indépendants, associations et projets locaux avec des outils numériques simples, humains, locaux et durables."
---
## Un numérique simple, humain, local et durable.
@@ -27,4 +28,4 @@ Privilégier les circuits courts, c'est aussi valable pour vos outils numérique
---
<small>*Sillycone-village : Un clin d'oeil à la Silicon Valley, mais avec **des valeurs complètement inverses**. Ici, pas de serveurs géants. Je vise une éco-responsabilité maximale, un ancrage local fort et un numérique accessible à toutes et tous.*</small>
<small>*Sillycone Village : Un clin d'oeil à la Silicon Valley, mais avec **des valeurs complètement inverses**. Ici, pas de serveurs géants. Je vise une éco-responsabilité maximale, un ancrage local fort et un numérique accessible à toutes et tous.*</small>
+3 -2
View File
@@ -1,5 +1,6 @@
---
title: 'À propos'
title: 'À propos de Sillycone Village'
description: "Découvrez la démarche de Sillycone Village : le libre, le Slow Computing et la sobriété numérique au service d'un numérique plus humain."
---
## Qui suis-je?
@@ -7,7 +8,7 @@ Passionné par les technologies transparentes et durables, je mets mes compéten
Vous pouvez découvrir mon parcours complet sur mon [site personnel](https://limonier.be/).
## Pourquoi Sillycone-village ?
## Pourquoi Sillycone Village ?
C'est un clin d'oeil humoristique à la célèbre *Silicon Valley* américaine, mais avec **des valeurs complètement inverses**.
Là-bas, tout est basé sur la croissance infinie, la surconsommation technologique et les serveurs géants et une industrie publicitaire agressive qui pille, utilise et vend vos données personnelles sans votre consentement.
+2 -1
View File
@@ -1,5 +1,6 @@
---
title: "Mes réalisations"
title: "Réalisations numériques"
description: "Découvrez les projets numériques réalisés par Sillycone Village, des outils pensés pour être simples, utiles et durables."
---
Découvrez des exemples concrets d'outils, d'infrastructures et d'appareils configurés avec un objectif central : mettre **la technologie au service de l'humain**, sans fioritures et dans le respect de vos données.
+1
View File
@@ -1,5 +1,6 @@
---
title: "Contact"
description: "Contactez Sillycone Village par courriel pour discuter d'un projet numérique, d'un besoin ou d'une question."
---
## Discutons de votre projet
+86
View File
@@ -0,0 +1,86 @@
---
title: "Mentions légales"
description: "Informations légales concernant le site Sillycone Village."
url: "/mentions-legales/"
---
## Éditeur du site
Le présent site est édité par :
**Mathieu Limonier**
Sillycone Village
Belgique
**Contact**
Courriel : [info@sillycone-village.be](mailto:info@sillycone-village.be)
Le responsable de la publication est Mathieu Limonier.
## Hébergement
Le site est hébergé par :
**OVHcloud**
2 rue Kellermann
59100 Roubaix
France
Site web : https://www.ovhcloud.com/
## Objet du site
Sillycone Village accompagne les indépendants, associations et projets locaux dans la création d'outils numériques simples, durables et respectueux de leurs utilisateurs.
Les services proposés comprennent notamment :
* la création de sites web légers ;
* l'accompagnement de projets numériques ;
* le conseil en sobriété numérique ;
* la promotion et l'utilisation de logiciels libres.
La démarche privilégie des solutions simples, pérennes et adaptées aux besoins réels plutôt qu'une accumulation de technologies.
## Philosophie
Ce site reflète les valeurs de Sillycone Village :
* simplicité ;
* proximité ;
* logiciels libres ;
* sobriété numérique ;
* transparence.
Il a été conçu pour fonctionner avec un minimum de ressources, sans publicité, sans pisteurs et sans dépendances externes inutiles, afin de limiter son impact environnemental tout en restant accessible au plus grand nombre.
## Propriété intellectuelle
Les contenus éditoriaux de ce site (textes, organisation des pages et autres contenus rédigés) sont la propriété de Mathieu Limonier.
Ce site est construit à l'aide de logiciels libres, notamment :
* **Hugo**, distribué sous licence **Apache License 2.0** ;
* le thème **nojs** pour Hugo, développé par Andy Balaam et distribué sous licence **MIT**.
Sillycone Village utilise ce thème avec des surcharges et des développements spécifiques réalisés pour ce site, conformément aux mécanismes de personnalisation proposés par Hugo.
Le code spécifique développé pour Sillycone Village, y compris les modifications apportées au thème, est publié sous licence libre **GNU Affero General Public License version 3 (AGPLv3)**.
Les logiciels et composants tiers utilisés conservent les licences et les droits de leurs auteurs respectifs.
## Liens externes
Ce site peut contenir des liens vers des sites externes.
Sillycone Village ne peut être tenu responsable du contenu, des services ou du fonctionnement de ces sites tiers.
## Responsabilité
Les informations publiées sur ce site sont rédigées avec le plus grand soin et reflètent les connaissances disponibles au moment de leur publication.
Malgré cette attention, des erreurs ou omissions peuvent subsister. Si vous constatez une information inexacte ou souhaitez suggérer une amélioration, vous pouvez me contacter par courriel.
---
Dernière mise à jour : juillet 2026
+48
View File
@@ -0,0 +1,48 @@
---
title: "Politique de confidentialité"
description: "Politique de confidentialité et protection des données personnelles de Sillycone Village."
url: "/confidentialite/"
---
## Respect de la vie privée
Sillycone Village applique une démarche de sobriété numérique et de respect de la vie privée.
Ce site est un site statique qui ne collecte aucune donnée personnelle.
## Données personnelles
Aucune donnée personnelle n'est collectée automatiquement lors de la consultation du site.
Le site n'utilise :
- aucun outil de suivi d'audience ;
- aucun système publicitaire ;
- aucun outil de profilage ;
- aucun traqueur tiers.
## Cookies
Ce site n'utilise aucun cookie.
## Contact par courriel
Si vous contactez Sillycone Village par courrier électronique, les données que vous choisissez de transmettre dans votre message sont utilisées uniquement afin de répondre à votre demande.
Ces informations ne sont ni vendues, ni utilisées à des fins commerciales autres que votre échange avec Sillycone Village.
## Hébergement
Le site est hébergé par OVHcloud.
Comme tout serveur web, l'hébergeur peut traiter des informations techniques nécessaires au fonctionnement et à la sécurité de l'infrastructure conformément à ses obligations légales.
## Vos droits
Conformément au RGPD, vous disposez de droits concernant vos données personnelles.
Dans la mesure où Sillycone Village ne collecte pas de données personnelles via ce site, aucune base de données utilisateur n'est constituée.
Pour toute question : info@sillycone-village.be
Dernière mise à jour : juillet 2026
+3 -2
View File
@@ -1,7 +1,8 @@
---
title: "Mes services"
title: "Services numériques simples et durables"
description: "Création de sites vitrines légers, formation au numérique libre, accompagnement de projets et conseil en sobriété numérique."
---
Découvrez les prestations de Sillycone-village à Silly : création web éco-conçue, outils sur-mesure, migrations GNU/Linux et formations.
Découvrez les prestations de Sillycone Village à Silly : création web éco-conçue, outils sur-mesure, migrations GNU/Linux et formations.
## Conception d'outils numériques personnalisés
L'informatique doit s'adapter à l'humain, et non l'inverse. Je développe des applications et des solutions fluides qui vont droit au but, répondent à vos besoins réels et restent utilisables sans fonctionnalités superflues.
+8
View File
@@ -7,5 +7,13 @@
<a href="{{ .Site.Params.copyrightUrl }}" target="_blank">
{{.Site.Copyright}}
</a>
-
{{ with site.GetPage "/legal" }}
<a href="{{ .RelPermalink }}">Mentions légales</a>
{{ end }}
-
{{ with site.GetPage "/privacy" }}
<a href="{{ .RelPermalink }}">Confidentialité</a>
{{ end }}
</p>
</div>
+2
View File
@@ -6,6 +6,8 @@
<meta name="description" content="{{ .Description | plainify }}">
{{- end }}
{{ template "_internal/opengraph.html" . }}
{{- $styles := slice "css/vars.css" "css/syntax.css" "css/main.css" "css/nav.css" "css/custom.css" -}}
{{- range $styles }}
{{- with resources.Get . }}
+137
View File
@@ -0,0 +1,137 @@
# =====================================================
# Sillycone Village
# Configuration Apache sécurisée pour site statique Hugo
# =====================================================
# -----------------------------------------------------
# 1. Forcer HTTPS
# -----------------------------------------------------
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# -----------------------------------------------------
# 2. Protection contre accès fichiers sensibles
# -----------------------------------------------------
<FilesMatch "(^\.|\.git|\.env|\.bak|\.backup|\.old|\.sql|\.log|composer\.json|package\.json)">
Require all denied
</FilesMatch>
# Bloquer l'accès au fichier .htaccess lui-même
<Files ".htaccess">
Require all denied
</Files>
# -----------------------------------------------------
# 3. Headers de sécurité HTTP
# -----------------------------------------------------
<IfModule mod_headers.c>
# Empêche le navigateur de deviner les types MIME
Header always set X-Content-Type-Options "nosniff"
# Protection contre certaines attaques XSS anciennes
Header always set X-XSS-Protection "1; mode=block"
# Contrôle des informations envoyées aux sites externes
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# Désactive les fonctionnalités navigateur inutiles
Header always set Permissions-Policy "geolocation=(), microphone=(), camera=(), payment=(), usb=()"
# Protection contre l'intégration dans une iframe externe
Header always set X-Frame-Options "SAMEORIGIN"
# Politique de sécurité du contenu
# - pas de JS
# - pas de CDN
# - pas de police externe
# - CSS local uniquement
Header always set Content-Security-Policy "default-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'"
</IfModule>
# -----------------------------------------------------
# 4. Compression
# -----------------------------------------------------
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE \
text/html \
text/plain \
text/css \
text/javascript \
application/javascript \
application/json \
application/xml \
image/svg+xml
</IfModule>
# -----------------------------------------------------
# 5. Cache navigateur
# -----------------------------------------------------
<IfModule mod_expires.c>
ExpiresActive On
# HTML : court pour faciliter les mises à jour
ExpiresByType text/html "access plus 1 hour"
# CSS
ExpiresByType text/css "access plus 1 month"
# SVG
ExpiresByType image/svg+xml "access plus 1 month"
# Fichiers statiques
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
# -----------------------------------------------------
# 6. Désactiver le listing des répertoires
# -----------------------------------------------------
Options -Indexes
# -----------------------------------------------------
# 7. Bloquer certains robots agressifs
# -----------------------------------------------------
<IfModule mod_setenvif.c>
SetEnvIfNoCase User-Agent "MJ12bot" bad_bot
SetEnvIfNoCase User-Agent "AhrefsBot" bad_bot
<RequireAll>
Require all granted
Require not env bad_bot
</RequireAll>
</IfModule>