{"id":1185,"date":"2026-05-18T20:57:12","date_gmt":"2026-05-18T18:57:12","guid":{"rendered":"https:\/\/seecret.it\/blog\/?p=1185"},"modified":"2026-05-18T20:57:41","modified_gmt":"2026-05-18T18:57:41","slug":"seecret-it-est-maintenant-open-source-code-sur-github-version-auto-hebergeable-chez-soi","status":"publish","type":"post","link":"https:\/\/seecret.it\/blog\/seecret-it-est-maintenant-open-source-code-sur-github-version-auto-hebergeable-chez-soi\/","title":{"rendered":"Seecret.it est maintenant open-source : code sur GitHub + version auto-h\u00e9bergeable chez soi"},"content":{"rendered":"<p>Quand on partage un mot de passe via un service en ligne, la m\u00eame question revient toujours :<br \/>\n<em>\u00ab Mais en fait, comment je sais que vous ne lisez pas mes secrets ? \u00bb<\/em><\/p>\n<p>Bonne question. Et franchement, la seule r\u00e9ponse honn\u00eate \u00e0 \u00e7a, c&#8217;est : <strong>regarde le code<\/strong>.<br \/>\nAlors on l&#8217;a fait. Tout est sur GitHub, lisible, auditable, et m\u00eame installable chez toi.<\/p>\n<p>Bienvenue dans <strong>l&#8217;\u00e8re open-source de Seecret.it<\/strong>. \ud83c\udf89<\/p>\n<hr \/>\n<h2><strong>Pourquoi on a publi\u00e9 le code ?<\/strong><\/h2>\n<p>Honn\u00eatement ? Parce que <strong>la confiance, \u00e7a se m\u00e9rite<\/strong>.<\/p>\n<p>On peut \u00e9crire \u00ab chiffrement zero-knowledge \u00bb dans toutes les pages marketing du monde, \u00e7a reste des mots tant que personne ne peut le v\u00e9rifier. Maintenant tu peux :<\/p>\n<ul>\n<li>\ud83d\udcc2 lire les <strong>~1 500 lignes de code<\/strong> qui composent la version open-source<\/li>\n<li>\ud83d\udd0d v\u00e9rifier toi-m\u00eame que la cl\u00e9 de d\u00e9chiffrement <strong>ne quitte jamais ton navigateur<\/strong><\/li>\n<li>\ud83c\udfe0 installer Seecret.it <strong>sur ton propre serveur<\/strong>, m\u00eame chez Free, OVH ou ton Raspberry Pi \u00e0 la cave<\/li>\n<\/ul>\n<p>(Et bonus : c&#8217;est aussi un gros pas pour le r\u00e9f\u00e9rencement et la communaut\u00e9 dev. On assume.)<\/p>\n<hr \/>\n<h2><strong>O\u00f9 trouver le code ?<\/strong><\/h2>\n<p>Sur GitHub, \u00e0 cette adresse :<br \/>\n\ud83d\udc49 <a href=\"https:\/\/github.com\/Seecret-it\/seecret.it\" target=\"_blank\" rel=\"noopener\"><strong>github.com\/Seecret-it\/seecret.it<\/strong><\/a><\/p>\n<p>Le repo contient une version <strong>minimaliste<\/strong> de Seecret.it \u2014 pas les comptes utilisateurs, pas l&#8217;upload de fichiers, pas l&#8217;inbox publique. Juste le c\u0153ur : partager du texte chiffr\u00e9 via un lien \u00e0 usage unique, avec expiration configurable et mot de passe optionnel.<\/p>\n<p>C&#8217;est volontaire : on voulait quelque chose de <strong>simple \u00e0 auditer<\/strong>. Un dev peut lire l&#8217;int\u00e9gralit\u00e9 du projet en 20 minutes. Pas de framework lourd, pas de NPM, pas de Composer.<\/p>\n<hr \/>\n<h2><strong>Comment \u00e7a marche techniquement ?<\/strong><\/h2>\n<h3><strong>Frontend : vanilla JavaScript<\/strong><\/h3>\n<p>Z\u00e9ro framework. Juste de l&#8217;HTML, du CSS et du JavaScript pur. Le chiffrement utilise l&#8217;<strong>API Web Crypto<\/strong> native du navigateur (pr\u00e9sente sur tous les navigateurs modernes depuis 2017), donc pas besoin d&#8217;embarquer une lib crypto en JS. Plus l\u00e9ger, plus rapide, plus auditable.<\/p>\n<p>Algo : <strong>AES-GCM 256 bits<\/strong> (chiffrement authentifi\u00e9). Pour la d\u00e9rivation de cl\u00e9 quand un mot de passe est fourni : <strong>PBKDF2 SHA-256 avec 600 000 it\u00e9rations<\/strong> (la recommandation OWASP 2023, pas une valeur sortie du chapeau).<\/p>\n<h3><strong>Backend : PHP + SQLite (un seul fichier)<\/strong><\/h3>\n<p>L&#8217;API tient dans <strong>200 lignes de PHP<\/strong>. Un fichier <code>api.php<\/code> qui g\u00e8re deux endpoints : POST pour cr\u00e9er un secret, GET pour le lire et le d\u00e9truire dans la foul\u00e9e. La base SQLite vit dans un seul fichier <code>seecrets.sqlite<\/code>. Pas de MySQL \u00e0 configurer, pas de Redis, pas de serveur de cache.<\/p>\n<p>Et surtout : <strong>le serveur ne voit jamais la cl\u00e9 de d\u00e9chiffrement<\/strong>. Elle reste dans le fragment <code>#<\/code> de l&#8217;URL, partie qui \u2014 par spec HTTP \u2014 n&#8217;est JAMAIS envoy\u00e9e au serveur. C&#8217;est \u00e7a, le vrai zero-knowledge : m\u00eame si quelqu&#8217;un volait la BDD compl\u00e8te, il n&#8217;aurait que des blobs chiffr\u00e9s incassables.<\/p>\n<hr \/>\n<h2><strong>Installation en 30 secondes (pour les press\u00e9s)<\/strong><\/h2>\n<p>Trois commandes, n&#8217;importe quel h\u00e9bergement PHP qui tra\u00eene :<\/p>\n<pre style=\"background: #0f172a; color: #e2e8f0; padding: 1rem; border-radius: 8px; overflow-x: auto; font-family: monospace; font-size: .9rem; line-height: 1.6;\">git clone https:\/\/github.com\/Seecret-it\/seecret.it.git\r\ncd seecret.it\r\nphp -S localhost:8000<\/pre>\n<p>Et c&#8217;est tout. Va sur <code>http:\/\/localhost:8000<\/code>, cr\u00e9e ton premier seecret, partage-le, regarde-le se d\u00e9truire. Pr\u00e9-requis : <strong>PHP \u2265 8.0 avec <code>pdo_sqlite<\/code><\/strong> (d\u00e9j\u00e0 install\u00e9 dans 99% des h\u00e9bergements mutualis\u00e9s).<\/p>\n<p>Si tu veux faire tourner \u00e7a sur un vrai domaine, point le DocumentRoot de ton Apache ou ton Nginx vers le dossier, et c&#8217;est pli\u00e9. (Pense quand m\u00eame \u00e0 activer HTTPS \u2014 il y a un bloc comment\u00e9 dans le <code>.htaccess<\/code> pour forcer la redirection.)<\/p>\n<hr \/>\n<h2><strong>Qu&#8217;est-ce qui change concr\u00e8tement ?<\/strong><\/h2>\n<p>Pour <strong>les utilisateurs grand public<\/strong> : rien. Le service h\u00e9berg\u00e9 sur seecret.it ne bouge pas. Tu continues \u00e0 cr\u00e9er tes liens comme avant.<\/p>\n<p>Pour les <strong>\u00e9quipes IT, DSI, RSSI<\/strong> qui doivent justifier l&#8217;utilisation d&#8217;un outil tiers : maintenant tu peux auditer, ou m\u00eame h\u00e9berger chez toi. <strong>RGPD natif<\/strong>, donn\u00e9es qui ne quittent jamais ton infrastructure, conformit\u00e9 totale.<\/p>\n<p>Pour <strong>les devs curieux<\/strong> : tu peux contribuer, signaler des bugs, proposer des features. Le repo est ouvert aux PR.<\/p>\n<p>Pour <strong>les parano\u00efaques (l\u00e9gitimes)<\/strong> : tu peux d\u00e9sormais v\u00e9rifier de tes propres yeux qu&#8217;on ne ment pas sur le \u00ab zero-knowledge \u00bb. Et installer ta propre instance pour ne d\u00e9pendre de personne.<\/p>\n<hr \/>\n<h2><strong>Open-source vs version SaaS : quelles diff\u00e9rences ?<\/strong><\/h2>\n<p>La version open-source couvre le besoin de base. La version h\u00e9berg\u00e9e sur seecret.it ajoute tout ce qui demande une infra et de la maintenance (et donc un mod\u00e8le \u00e9conomique pour tenir dans le temps).<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 1rem 0;\">\n<thead>\n<tr style=\"background: #4ac4f3; color: #fff;\">\n<th style=\"padding: .6rem; text-align: left; border: 1px solid #ddd;\">Fonctionnalit\u00e9<\/th>\n<th style=\"padding: .6rem; text-align: center; border: 1px solid #ddd;\">Open-source<\/th>\n<th style=\"padding: .6rem; text-align: center; border: 1px solid #ddd;\">seecret.it<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: .6rem; border: 1px solid #ddd;\">Texte chiffr\u00e9, lien \u00e0 usage unique<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u2705<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u2705<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: .6rem; border: 1px solid #ddd;\">Expiration 5 min \u00e0 30 jours<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u2705<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u2705<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: .6rem; border: 1px solid #ddd;\">Mot de passe optionnel<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u2705<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u2705<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: .6rem; border: 1px solid #ddd;\">Upload de fichiers chiffr\u00e9s<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u274c<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u2705<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: .6rem; border: 1px solid #ddd;\">Comptes utilisateurs &amp; historique<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u274c<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u2705<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: .6rem; border: 1px solid #ddd;\">Inbox publique <code>@votreslug<\/code><\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u274c<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u2705<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: .6rem; border: 1px solid #ddd;\">Extensions Chrome\/Firefox\/Thunderbird<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u274c<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u2705<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: .6rem; border: 1px solid #ddd;\">API REST + webhooks<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">Basique<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">Compl\u00e8te<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: .6rem; border: 1px solid #ddd;\">Partage \u00e0 plusieurs (Shamir)<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u274c<\/td>\n<td style=\"text-align: center; border: 1px solid #ddd;\">\u2705<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>L&#8217;id\u00e9e n&#8217;est pas de remplacer le SaaS par l&#8217;open-source \u2014 c&#8217;est de proposer les deux selon ton besoin.<\/p>\n<hr \/>\n<h2><strong>Et la s\u00e9curit\u00e9, justement ?<\/strong><\/h2>\n<p>On a fait un audit complet avant de publier. Le d\u00e9tail est dans le README, mais en r\u00e9sum\u00e9 :<\/p>\n<ul>\n<li>\ud83d\udd10 <strong>AES-GCM 256 + PBKDF2 600k it\u00e9rations<\/strong> (rec. OWASP 2023)<\/li>\n<li>\ud83d\udee1\ufe0f <strong>Prepared statements PDO<\/strong> partout \u2014 z\u00e9ro injection SQL possible<\/li>\n<li>\ud83d\udeab <strong>CSP stricte<\/strong>, <code>X-Frame-Options: DENY<\/code>, <code>Referrer-Policy: no-referrer<\/code><\/li>\n<li>\u23f1\ufe0f <strong>Rate-limit par IP hash\u00e9e<\/strong> (sel quotidien \u2014 on ne stocke jamais d&#8217;IP en clair)<\/li>\n<li>\ud83d\udca5 <strong>Destruction atomique<\/strong> via transaction SQLite <code>BEGIN IMMEDIATE<\/code><\/li>\n<li>\ud83e\udd16 <strong>Gate anti-robot<\/strong> pour \u00e9viter que les previews de Discord\/Slack consomment les liens<\/li>\n<li>\ud83d\udd04 <code>history.replaceState<\/code> apr\u00e8s lecture : la cl\u00e9 dispara\u00eet de l&#8217;historique navigateur<\/li>\n<\/ul>\n<p>Si tu trouves une faille, ouvre une issue sur GitHub. On r\u00e9pond.<\/p>\n<hr \/>\n<h2><strong>Ce que \u00e7a veut dire pour le futur<\/strong><\/h2>\n<p>L&#8217;open-source, c&#8217;est un engagement long terme. On va continuer \u00e0 faire \u00e9voluer le repo en parall\u00e8le du SaaS, ajouter des features quand \u00e7a a du sens, et accepter des PRs des contributeurs.<\/p>\n<p>Si tu veux soutenir le projet sans forc\u00e9ment contribuer du code, le moyen le plus simple reste de :<\/p>\n<ul>\n<li>\u2b50 <strong>mettre une \u00e9toile sur GitHub<\/strong> (\u00e7a aide \u00e9norm\u00e9ment pour la visibilit\u00e9)<\/li>\n<li>\ud83d\udce2 partager autour de toi si tu connais des sysadmins ou des DSI qui cherchent ce type d&#8217;outil<\/li>\n<li>\ud83d\udcac utiliser le SaaS sur <a href=\"\/\">seecret.it<\/a> si tu n&#8217;as pas envie de g\u00e9rer ton propre h\u00e9bergement<\/li>\n<\/ul>\n<hr \/>\n<h2><strong>En r\u00e9sum\u00e9<\/strong><\/h2>\n<p><strong>Seecret.it est open-source.<\/strong> Le code est sur <a href=\"https:\/\/github.com\/Seecret-it\/seecret.it\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>. Tu peux l&#8217;auditer, l&#8217;installer chez toi, ou simplement continuer \u00e0 utiliser le service h\u00e9berg\u00e9.<\/p>\n<p>L&#8217;id\u00e9e de fond, c&#8217;est simple : <strong>partager des secrets, \u00e7a demande de la confiance<\/strong>. Et la confiance, \u00e7a se prouve. Voil\u00e0 notre preuve, \u00e9crite en clair, ligne par ligne.<\/p>\n<p>\ud83d\udc49 <a href=\"\/fr\/version-auto-hebergee\"><strong>Voir la page d\u00e9di\u00e9e \u00e0 la version auto-h\u00e9berg\u00e9e<\/strong><\/a><br \/>\n\ud83d\udc49 <a href=\"https:\/\/github.com\/Seecret-it\/seecret.it\" target=\"_blank\" rel=\"noopener\"><strong>Voir le repo GitHub<\/strong><\/a><\/p>\n<p>Si tu testes la version auto-h\u00e9berg\u00e9e et que tu trouves un truc bizarre, dis-le moi. C&#8217;est en testant qu&#8217;on rend les outils meilleurs. \ud83d\ude4f<\/p>\n<p><script type=\"application\/ld+json\">{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"Seecret.it passe en open-source : code GitHub + version auto-h\u00e9bergeable\",\n  \"description\": \"Seecret.it publie son code source sur GitHub avec une version auto-h\u00e9bergeable l\u00e9g\u00e8re (PHP + SQLite + vanilla JavaScript). Chiffrement AES-GCM 256, zero-knowledge, d\u00e9ployable en 30 secondes.\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"Seecret.it\"\n  },\n  \"publisher\": {\n    \"@type\": \"Organization\",\n    \"name\": \"Seecret.it\",\n    \"logo\": {\n      \"@type\": \"ImageObject\",\n      \"url\": \"https:\/\/seecret.it\/img\/logo.webp\"\n    }\n  },\n  \"datePublished\": \"2026-05-18\",\n  \"mainEntityOfPage\": \"https:\/\/seecret.it\/blog\/seecret-it-open-source-github-version-auto-hebergee\",\n  \"keywords\": \"seecret it open source, github seecret it, partage s\u00e9curis\u00e9 open source, version auto-h\u00e9berg\u00e9e, self-hosted, chiffrement zero-knowledge, AES-GCM, PHP SQLite, alternative open source, PrivateBin alternative\"\n}<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quand on partage un mot de passe via un service en ligne, la m\u00eame question revient toujours : \u00ab Mais en fait, comment je sais que vous ne lisez pas mes secrets ? \u00bb Bonne question. Et franchement, la seule r\u00e9ponse honn\u00eate \u00e0 \u00e7a, c&#8217;est : regarde le code. Alors on l&#8217;a fait. Tout est&#8230;<\/p>\n","protected":false},"author":1,"featured_media":1188,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"none","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","footnotes":""},"categories":[16],"tags":[301,297,298,296,300,299,198],"class_list":["post-1185","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-seecret-it","tag-alternative-privatebin","tag-github-seecret-it","tag-partage-securise-open-source","tag-seecret-it-open-source","tag-self-hosted","tag-version-auto-hebergee","tag-zero-knowledge"," c-blog-1-item  nt-post-class"],"_links":{"self":[{"href":"https:\/\/seecret.it\/blog\/wp-json\/wp\/v2\/posts\/1185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/seecret.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/seecret.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/seecret.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/seecret.it\/blog\/wp-json\/wp\/v2\/comments?post=1185"}],"version-history":[{"count":1,"href":"https:\/\/seecret.it\/blog\/wp-json\/wp\/v2\/posts\/1185\/revisions"}],"predecessor-version":[{"id":1189,"href":"https:\/\/seecret.it\/blog\/wp-json\/wp\/v2\/posts\/1185\/revisions\/1189"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/seecret.it\/blog\/wp-json\/wp\/v2\/media\/1188"}],"wp:attachment":[{"href":"https:\/\/seecret.it\/blog\/wp-json\/wp\/v2\/media?parent=1185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/seecret.it\/blog\/wp-json\/wp\/v2\/categories?post=1185"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/seecret.it\/blog\/wp-json\/wp\/v2\/tags?post=1185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}