- Un mode d’hébergement où tous les fichiers d’un site web sont compressés en ZIP puis encodés en Base64 avant d’être ajoutés après le domaine, de sorte que l’adresse elle-même devienne un site web complet
- Une architecture qui permet de transmettre un site simplement en partageant son adresse, sans téléverser de fichiers séparés ni les stocker sur un serveur
- La compression ZIP, l’encodage Base64 et la génération de l’URL se font en une seule ligne de commande, avec aussi la prise en charge du glisser-déposer d’un fichier ZIP en l’absence de ligne de commande
- Le serveur ne conserve le contenu qu’en RAM pendant 15 minutes avant de le supprimer, et il ne le retraite que lorsque le même lien est rouvert
- Fait partie du projet de serveur web Lwan, c’est open source, et il est même possible d’imprimer puis de scanner via un QR code
Concept de smolsite
- L’intégralité du site est incluse dans l’URL, si bien qu’en partageant l’adresse, on transmet aussi le site lui-même
- Comme dans l’exemple composé de deux fichiers (
index.html,mylogo.png), on peut regrouper plusieurs fichiers et les convertir en une seule adresse
Comment créer un smolsite
- Compresser tous les fichiers en archive ZIP, les encoder en Base64, puis ajouter le résultat à la suite de
https://smolsite.zip/- Exemple de commande :
$ echo "https://smolsite.zip/\zip -DXjq9 - index.html mylogo.png | base64 --wrap 0`"`
- Exemple de commande :
FAQ
-
Sans ligne de commande
- Il suffit de faire glisser le fichier ZIP sur la barre violette en bas de page pour le partager
-
Peut-on l’héberger sur papier ?
- Oui, et en cliquant sur le QR code, on peut voir une version imprimable et scannable
-
Est-ce open source ?
-
Comment le ZIP est-il traité côté serveur ?
- Le contenu est traité par le serveur et conservé en RAM pendant 15 minutes, puis supprimé
- En revanche, si quelqu’un rouvre le même lien, il est retraité
-
Protection contre les ZIP bombs
- Les données déflatées sont envoyées telles quelles au navigateur sans modification, et comme il n’y a pas de décompression récursive, cela offre une certaine protection
-
Peut-on télécharger ou supprimer le contenu ?
- smolsite essaie autant que possible d’empêcher le partage de l’URL exacte, mais comme le contenu se trouve dans l’URL, une suppression complète est impossible
- Toute personne disposant du lien peut extraire le contenu même sans smolsite
- smolsite essaie autant que possible d’empêcher le partage de l’URL exacte, mais comme le contenu se trouve dans l’URL, une suppression complète est impossible
1 commentaires
Avis de Hacker News
https://smolsite.zip/UEsDBBQAAgAIAFtLJ1daaE7RlwIAAN4EAAAKAAA...
https://tinyurl.com/dmk9e4m2
data:text/html,My%20small%20websiteLook,%20it's%20real!Si on veut, on peut aussi l’encoder en base64 avec un générateur de data URI. L’avantage de smolsite, c’est qu’avec un zip on peut mettre un peu plus de contenu qu’avec une data URI, et que certaines API JavaScript fonctionnent avec une URL smolsite mais pas avec une data URI
data:text/html,Je l’ai mis dans ma barre de favoris et je l’utilise comme ça
[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_...
https://wgx.github.io/anypage/?eyJoMSI6IkhlbGxvIEhOISIsImgyI...
[0] https://nopaste.boris.sh/
Cela dit, comme la partie ancre n’est pas envoyée au serveur, celui-ci ne peut pas inspecter le contenu nuisible transmis par ce biais, même s’il le voulait.
Tous les posts Show HN que j’ai vus jusqu’ici ont été intéressants, et ils m’ont motivé à lancer aussi mon projet et à le peaufiner pour pouvoir le montrer ici. C’est vraiment agréable quand quelqu’un d’autre soumet votre travail et qu’on peut en discuter là-bas.
Bien sûr, on finirait par buter sur la limite de longueur des URL, mais on pourrait ajouter une couche où un curateur assemble des lots d’URL pour créer des textes plus grands. On pourrait aussi ajouter un peu de magie LLM pour générer ces lots, et on obtiendrait alors une bibliothèque contenant non seulement tous les livres déjà écrits, mais aussi tous ceux qui pourraient l’être.
Bien sûr, c’est une blague. Je sais que c’est un peu comme dire que le Bloc-notes contient déjà tous les livres existants, et qu’il suffit simplement de les taper soi-même.
https://mkaandorp.github.io/hdd-of-babel/
https://news.ycombinator.com/item?id=34312546
https://news.ycombinator.com/item?id=2464213
Pour éviter de payer à notre prestataire web le module de calendrier d’événements hors de prix, j’avais codé une page publique qui construisait un calendrier à partir d’un schéma JSON d’événements simple, encodé en base64 dans un attribut
data-events. Les employés utilisaient une page privée qui récupérait les données d’événements existantes de la page publique pour préremplir un générateur de calendrier ; ils les modifiaient, puis extrayaient un nouveau bout de code à coller dans la page publique.En gros, ça fonctionnait bien, mais je crois qu’on a fini par simplement payer l’add-on de calendrier.
https://sonnet.io/projects#:~:text=Laconic!%20(a%20Twitter%2...