# À propos de ce site
Ce site est avant tout un espace de partage.
Je le souhaite humain avant tout.
Pour cela :
* Il est pensé pour être le plus léger possible, sans pub, sans tracker,
sans javascript...
Ça le rend rapide, lisible même sur du matériel très ancien qui ne
supporterait pas un chiffrement imposé. Il est donc accessible via
http et https (et gopher) et peut être consulté sans peine, même avec
une faible bande passante.
Le CSS fait moins de 1000B, et moins de 512B une fois gzippé!
* Écologique. S'il est léger, il consomme peut de ressources.
D'après un testeur, si3t.ch est plus écologique que
[100% des sites webs](https://www.websitecarbon.com/website/si3t-ch/).
* Accessible : le texte avant tout.
* Libre : les sources sont disponibles.
* Utile : J'héberge quelques outils publiquement accessibles ainsi que
des documents que je considère importants pour tous.
## Miroirs
En cas de panne de matériel ou de coupure de courant, le si3tch
est aussi hébergé sur un
HTML miroir
qui n'est aute qu'une VM chez
HTML openbsd.amsterdam
Au niveau des DNS, si le registre ".ch" a un problème,
remplacez "si3t.ch" par "si3tch.eu".
Le si3tch est aussi disponible via TOR. 🧅
HTML URL:http://6gvb6fzoxv72mtlpvr2fgj7ytpeggwuerdawspt24njlkwfxir6jncid.onion/
HTML URL:gopher://of2w2p5f4hsslk63hmo6tid6r7inhlxuxviq4pb5cxg45enswpbrfjad.onion
Les liens ".onion" présentent l'avantage de rester identiques en cas de
changement d'IP ou de panne des DNS.
Vous aurez besoin de
HTML Tor
pour y accéder.
## Site valide
HTML HTML ✓
HTML CSS ✓
HTML ATOM ✓
## Comment fonctionne ce serveur?
### Matériel
Le si3tch fonctionne sur du un apu2 peu gourmand en énergie :
HTML URL:https://pcengines.ch/apu2.htm
BIN Photo du si3tch vu de l'extérieur
J'ai aussi un petit onduleur.
### FAI/DNS
C'est OVH, qui ne m'a jamais déçu.
Ils font office de fournisseur d'accès avec un excellent support, mais
aussi de registre pour tous mes domaines.
### Logiciel
HTML OpenBSD
HTML httpd
HTML geomyidae (gopher)
Les pages sont générées avec un Makefile et quelques script pour
convertir le markdown, mettre les entêtes, générer le blog, le flux
atom...
Voici les sources :
HTML URL:https://git.sr.ht/~prx/si3t.ch
### Génération en détail
Après des tas de tests, au point d'avoir réfléchi à une façon d'écrire
DIR du texte pour toute la vie
exceptions:
* Les pages en Markdown
* Les articles de log/motd en texte brut selon mes règles persos.
Pour rédiger en Markdown, afin d'assurer une lisibilité pérenne et
éviter des écueils dans le rendu final qui desservent la lecture si elle
est trop chargée, je m'impose :
* De ne pas dépasser 3 niveaux d'en-tête (h1, h2, h3)
* De toujours écrire de la même façon (`*` pour les listes et pas `-`)
* D'éviter les listes numérotées.
* D'écrire un lien seul sur sa ligne.
Afin de construire le site, j'abuse des capacités de Makefile.
Le gros avantage de make est qu'il ne génère QUE les pages dont la
source est plus récente. Le gain de temps est énorme.
En voici quelques éléments:
```
SRC=md
INDEX=index.${SRC}
```
Je ne veux convertir que les fichier à l'extension `.md` et seulement
les fichier `index.md`, cela me permet ensuite d'aussi générer des
gophermap. Eh oui, toutes les pages sont en fait des dossiers avec un
index. Depuis que j'ai fait ce choix, la gestion du site est nettement
plus simple.
```
SITE=site
RAW=raw
```
J'ai 2 dossiers : un dossier "site" qui contient ce qui est à
"convertir", un dossier "raw" pour les images et pages html à ne pas
toucher. Cela m'est indispensable pour des applications comme drawio que
je veux rendre disponible.
```
.SUFFIXES: .${SRC} .html .gph
```
Là, c'est toutes les extensions qui seront prises en charge.
```
# converters
TOHTML = cmark --smart
TOGOPHER = awk -f tools/md2gph.awk -v strip=1
TOMOTD = tools/motd.sh
```
On voit ici les outils que j'utilise pour convertir le markdown en
d'autre formats, ou bien encore le script qui me sert à générer le phlog
(modt)
```
# list pages
PAGES != find ${SITE} -type f -name 'index.${SRC}'
LOGS != find ${SITE}/log -type f -name \*.txt -maxdepth 1
HTMLPAGES := ${PAGES:.${SRC}=.html}
HTMLRAW != find ${RAW} -type f -name \*.html -o -name index.php
GOPHERPAGES := ${PAGES:.${SRC}=.gph}
MOTDDIR = ${SITE}/motd
MOTD = ${MOTDDIR}/index.gph
MOTDPOSTS != find ${SITE}/motd/ -type f -name '*.txt' -maxdepth 1
LOGSGZ := ${LOGS:.txt=.txt.gz}
```
On lit ici comment `make` retrouve la liste des pages à convertir :
c'est la commande `find` qui l'aide. Ensuite, des substitutions me
permettent de changer les extensions et même de prévoir la compression
en gzip.
```
.${SRC}.html:
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
```
Ici ça explique comment les pages html son générées. On met d'abord le
haut du fichier html, puis on convertit le markdown, et enfin le bas de
page. On termine en indiquant le titre de la page dans la balise
`<title>` et puis en compressant la page au format gzip.
```
motd: ${MOTD}
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
${MOTD}: ${MOTDPOSTS}
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
```
La gestion du modt est un peu particulière, car je dois d'abord
récupérer les posts avec rsync depuis un autre dossier. En effet, je
synchronise ce dernier sur plusieurs machines. Le génération du
gophermap est le fruit de magie dans un script.
```
# atom depend on logs, only rebuild if there are new entries
atom: ${ATOM}
${ATOM}: ${LOGS}
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
Happy helping ☃ here: You tried to output a spurious TAB character. This will break gopher. Please review your scripts. Have a nice day!
```
Ici je construis le flux atom avec le script
DIR atom.awk
(j'aime bien awk)
Suivent ensuite des règles pour quelques pages spécifiques : l'accueil
du log, le "/sitemap", la publication sur git, l'envoi sur mes serveurs
avec rsync et enfin le nettoyage ou encore le test.
## Y a quoi d'autre?
J'auto-héberge aussi :
* des sites web,
* un serveur mail (smtpd),
* des listes de diffusion (mlmmj),
* un serveur de messagerie instantanée XMPP (prosody), avec quelques groupes de
discussion ou pour papoter avec les copains et la famille,
* un espace de sauvegarde de données (rsync),
* un serveur DNS primaire (nsd).
* un calendrier partagé familial CalDAV
Et pour des copains et copines auto-hébergés :
* un serveur mail backup secondaire pour relayer les messages,
* un serveur DNS secondaire
Tout ceci sert actuellement à la famille et aux amis proches, mais il
reste de l'espace.
Fais-moi signe si tu veux ta petite place au creux du si3tch ;).