Aller au contenu principal

一整年的更新

Jimmy Kmi
Give it a try, how will you know if you don't try?

好久不见,2024年一整年没有更新 bubble,因为实在是经历了太多丰富的事情了。

具体干啥了

首先我的网站虽然首页没有更新,但我的 self-host 清单却变多了,而这些服务大多数都运行良好,SLA也超过了 99.9%。这些服务包括但不限于邮件的收发、CICD、运维监控、笔记、工作流等,并且这些业务中的绝大多数都能完美接入 SSO 服务,我想如果我有时间,我会分享一下这些项目。

与此同时我发起并参与的项目“米物百科”也上线了小程序和网页版,并且新增了几位核心合作伙伴。这个项目应该会持续下去,并且后续会继续新增更多的功能。如检索、更多的信息、对比等。可以去围观一下:https://mijia.wiki

2024年我还参与了一个较大的开源项目发布前的开发工作,感谢小米及生态链的各位大佬以及米粉朋友们,我也认识了不少可爱的小伙伴~ 另外欢迎点 Star(虽然点了我也不会有奖金):https://github.com/XiaoMi/ha_xiaomi_home

对,还有之前画的饼。

limail 的项目其实已经可以用了,并且我也在用,非常好用。但未公开,因为成本实在是太太太高了。 其实项目主要分为两部分:

  1. 邮件匿名平台:提供一个匿名邮件地址,类似 iCloud 的隐私转发邮箱。可以实现一网站一邮箱,有效避免垃圾广告。
  2. 消息处理平台:将接收到的邮件或其它通知,经过大模型进行分类及压缩,对推送的消息进行压缩,并推送到指定渠道(比如飞书、bark等)以实现验证码、邮件的摘要发送。避免每次阅读验证码需要花费大量时间寻找。

看到这里各路大佬们应该猜到成本巨高的部分了。我正在考虑将第一部分开放出来,允许注册与非注册用户使用。

几个新的框架

Jimmy Kmi
Give it a try, how will you know if you don't try?
  • 如果你有统一身份管理信息,可以到 https://scarborough.lzj.ac.cn/ 使用
  • 出于合规原因,下面提及的功能目前不对互联网开放注册使用(仅科研及测试使用)。如果你是高校、科研机构的导师、或者我的朋友,请通过其它方式或邮件与我联系 jimmy@lzj.ac.cn。我会很高兴收到你的信息。

Scarborough 斯卡布罗

Scarborough 是服务台框架,类似一个 Console,用户可以在 Scarborough 平台使用各种科学研究与服务工具。

平台作用

我规划了许多的项目正在开发,包括知识库、数据仓、智能流控制系统、Limail 等工具。这些工具可以相互配合使用,比如可以使用 数据仓 的指定内容可以使用 智能流控制系统 自动归纳到个人的知识库中。

如果为每个平台独立开发一个 Console 将会无限增大开发与维护难度,也会造成使用的割裂感(特别是在移动端,不方便切换多页面的时候)。Scarborough 就像 一个巨大的集市一样,为各种工具提供一个统一的使用入口。以后会可能会陆续提及这些功能。

Limail 身份系统

Limail 狸猫是一个消息与身份管理平台,旨在合法的情况下从根源上解决账号安全问题、消息混杂问题。

  • 统一信息管理拟解决的问题:
  1. 消息来源渠道过多,过于混乱问题。
  2. 信息或通知信息熵与信息价混乱,错过重要信息或被无关消息浪费时间问题。
  3. 验证码在一堆无关文字中无法迅速找到的问题。
  4. 通过邮件或其它方式发送的验证码,无法快速复制的问题。
  5. 消息来源无法验证,消息内容可能存在有害信息的问题。
  • 在信息安全方面拟解决的问题:
  1. 当你的一些识别信息,比如电子邮箱、手机号或者用户名被知晓后,这些信息可能会被用于尝试登录其他平台,以检查你是否在那些平台上也拥有账号的问题。
  2. 在网购活动后,可能会出现频繁接到自动语音电话的情况的问题。
  3. 点开一份邮件后,对方就已经收到你已读邮件的信息的问题。

上面的问题只是冰山一角,狸猫系统需要解决的问题不仅仅于此。

上图了

这个网站终于终于,我把图片功能开发好了,丢张AI生成的图纪念一下:

注意

图片由人工智能 DALL·E 3 生成。

提示词: 想象一个古代欧洲宫廷风格的数据中心油画:一座豪华的大厅,墙壁上挂着精美的壁毯和典雅的画作,天花板上有精致的雕刻和金箔装饰。在大厅中央,放置着服务器大型机柜排列着,上面装满了服务器设备。机柜之间,穿着传统宫廷服饰的人物(男性和女性,展现不同种族)忙碌地在机柜间来回走动,手持羽毛笔和硬盘。在一角,一个穿着华丽服饰的贵族(白人男性)正凝视着一个装饰繁复的屏幕,侧面还有几个人在使用MacBook。整个场景融合了古代欧洲宫廷的奢华与现代数据中心的科技感,展现了一种独特的时空融合。

让我们根据这个描述来生成相应的图像。

Utiliser l'authentification unique

Jimmy Kmi
Give it a try, how will you know if you don't try?

Récemment, j'ai été occupé par l'apprentissage de l'anglais ainsi que par les devoirs soudains et abondants de l'école. La page d'accueil sera temporairement mise à jour avec du contenu, et les fonctionnalités seront ajoutées ultérieurement si nécessaire.

Voici un historique de mon évolution dans la gestion de compte. Si vous souhaitez uniquement connaître la technologie que j'utilise actuellement, veuillez passer cette section.

Historique

  • En 2008, lors de la création de ma première page, je souhaitais déjà implémenter des fonctionnalités de connexion et d'inscription. À l'époque, j'étais en école primaire et le maximum que je pouvais faire était une gestion de compte via Excel.
  • Puis, au collège, j'ai découvert VisualBasic, ce qui m'a permis de mettre en place facilement une authentification. Mais j'ai rencontré deux problèmes : primo, les programmes VB étaient facilement décompilables, exposant les mots de passe, et je ne savais pas (ou même écrire côté serveur) comment faire une authentification en ligne. Secundo, un programme exe, surtout celui qui est fréquemment mis à jour, était difficile à présenter à des amis ou à partager (après tout, qui sait si votre programme contient un virus).
  • Toujours au collège, j'ai utilisé VisualBasic pour surveiller et gérer plusieurs serveurs Windows et créer des back-ends Web basiques (retournant une simple chaîne de caractères, sans aucune norme ou format JSON). Bien sûr, j'ai aussi mis en place une authentification sur le web : une vérification de mot de passe basée sur l'erreur 404 ne trouvant pas xxx.com/password.html.
  • Au lycée, PHP était considéré comme "le meilleur langage du monde". J'ai également implémenté la connexion, mais les mots de passe étaient stockés dans des fichiers. En y repensant, l'utilisation d'une base de données aurait été bien plus simple que ma méthode de stockage basée sur des fichiers, mais j'ai choisi le chemin le plus étrange et difficile parmi les options les plus simples et les plus courantes.
  • À l'université, j'ai eu plus de temps libre. Désormais, j'utilise non seulement des bases de données, mais aussi diverses méthodes de bases de données et de cryptage. Voici la dernière mise à jour de mon mécanisme de gestion de compte.

Utilisation de la gestion de compte open-source

Présentation du choix

Actuellement, ma méthode de gestion de compte repose sur le contrôle de domaine combiné à l'authentification unique. Bien que je comprenne la plupart des principes et que j'aie déjà mis en œuvre ces techniques, créer une interface utilisateur complète serait un projet énorme. J'ai donc porté mon attention sur des projets open-source tels que Zitadel. Grâce au SDK de Zitadel, j'ai réussi à intégrer plusieurs plateformes, mais j'ai également rencontré de nombreux obstacles. Je n'entrerai pas dans les détails de l'intégration et du déploiement dans ce blog, j'organiserai ces informations une fois que je serai plus avancé dans ce domaine.

Points d'inquiétude et solutions (tant que je ne regarde pas, tout va bien)

  1. Ces projets pourraient-ils soudainement exploiter leurs utilisateurs ? Je pense que si cela arrive, il sera temps de construire le mien (ou de trouver un autre).
  2. Rencontrer un bug que je ne peux pas corriger est problématique ? Étant donné que c'est un projet open-source, il suffit de proposer une PR et de devenir membre de la communauté open-source.
  3. La divulgation de ma pile technologique pourrait-elle entraîner des attaques ciblées ? Oui, mais c'est inévitable. Même en construisant moi-même, il est difficile d'éviter les vulnérabilités, et cacher intentionnellement ma pile technologique serait compliqué, nécessitant des modifications substantielles au niveau de base ou au cœur du système. Personnellement, pour la plupart de mes projets, je ne choisis pas de cacher sciemment la technologie utilisée. Je me concentre plutôt sur la mise en place de pots de miel, la traçabilité des attaques, les pare-feu et la séparation des services et des données.
  4. Le système d'authentification pourrait-il subir une attaque par le trafic ? Oui, le passage par un CDN est juste pour accélérer la réponse statique. Les étapes de défense incluent : d'abord une purification par secteur (région, ASN, opérateur), puis une purification globale, suivie d'une traçabilité des attaques et de l'enregistrement des caractéristiques (le reste dépend de la loi). L'intention de l'attaque est également importante, je la divise en trois catégories : accidentelle, inévitable. Pour les attaques aléatoires, si c'est pour le plaisir... pourquoi ne pas me contacter et devenir amis, réduisant ainsi le nombre d'ennemis ? Pour les attaques malveillantes... je vous remercie ?

Attribution de compte

Actuellement, je rends publiques autant de ressources que possible, mais certaines, en raison de leur coût élevé ou pour des raisons de protection (comme le contenu de mon projet de fin d'études), nécessitent une authentification, veuillez me pardonner.

Puis-je avoir un compte ? Pour des raisons de conformité, je ne fournirai pas de canal d'enregistrement d'informations pour le moment. Si vous êtes un enseignant d'une université ou d'un institut de recherche, ou un bon ami, veuillez me contacter par e-mail ou d'autres moyens à jimmy@lzj.ac.cn. Je serai heureux de recevoir votre message.

Migrer vers Docusaurus

Jimmy Kmi
Give it a try, how will you know if you don't try?

J'ai migré l'architecture de mon site Web de Next.js vers l'open source Docusaurus, et j'ai également déplacé le serveur d'une architecture précédente de services et CDN vers un environnement entièrement sans serveur.

1. À propos de la migration vers Docusaurus

Actuellement, ma vitesse de développement en solo n'est pas suffisante pour soutenir la plateforme que j'ai en tête. C'est pourquoi j'ai décidé d'allouer davantage de ressources au développement de fonctionnalités que je considère comme cruciales et passionnantes. Cela pourrait entraîner certaines inconvénients, tels que l'impossibilité de réaliser certaines opérations Web avancées que j'avais précédemment, mais cela n'empêchera pas de continuer à utiliser la conception précédente et la conception de mon interface utilisateur (UI). En même temps, mon travail de développement se poursuivra, y compris la conception de composants et d'icônes.

Si vous n'êtes pas un développeur professionnel et que vous ne savez pas ce qu'est Docusaurus :

  • Docusaurus est un outil complet de création de pages qui me permet, en tant qu'utilisateur, de me concentrer pleinement sur la création de contenu, sans avoir à me soucier de la mise en page. Bien sûr, si j'ai besoin de mises en page spécifiques ou de fonctionnalités supplémentaires, je peux personnaliser la base.
  • Ce que je considère comme le plus grand avantage, c'est que Docusaurus est basé sur la communauté open source, ce qui signifie que je peux bénéficier à tout moment des nouvelles fonctionnalités proposées par la communauté, telles que de nouveaux boutons, champs de saisie, etc., sans avoir à y consacrer beaucoup de temps.

2. À propos de l'abandon de l'architecture de service traditionnelle

L'un des changements les plus significatifs de cette mise à jour est que j'ai abandonné l'architecture de service traditionnelle précédente au profit d'une architecture totalement sans serveur. Bien que du point de vue théorique, je puisse énumérer de nombreuses raisons d'adopter le sans serveur, voici les raisons qui m'ont véritablement convaincu :

1. Problème de coût

Passer de l'architecture de serveur traditionnelle à l'architecture de microservices a réduit mes dépenses réelles d'environ 60 %, pour la même capacité de calcul.

2. Simplification de la gestion

Il n'est pratiquement plus nécessaire de s'occuper de la gestion fastidieuse.

  • Tout d'abord, l'équilibrage de charge : Nous devons prendre en compte l'équilibrage de charge, mais sans nous soucier de l'équilibrage de charge au niveau du serveur. Bien sûr, si cela concerne par hasard des services sans état, nous pouvons effectuer l'équilibrage de charge au niveau du CDN, ce qui réduit considérablement la charge de maintenance et les coûts.
  • Ensuite, les problèmes liés aux serveurs eux-mêmes : Cela inclut le réseau, le système, la sécurité et les mises à jour du système. Même si nous rencontrons toujours ces problèmes de gestion lors de l'utilisation du self-hosted serverless, nous n'avons pas à craindre qu'une erreur de service unique provoque un crash de l'ensemble du serveur, grâce à une solution d'équilibrage de charge simple et économique. Bien sûr, pour les grandes entreprises riches qui ont toujours utilisé un équilibrage de charge dédié, ce problème peut ne pas se poser.
  • Enfin, il y a la question du déploiement : La méthode de déploiement traditionnelle implique généralement d'arrêter le service, de copier des fichiers et de le redémarrer. Mais avec l'aide de la technologie des conteneurs et du serverless, ces processus sont presque obsolètes. En plus des processus de déploiement automatisés modernes, la plupart de mes sites Web (environ 90 %) sont maintenant déployés automatiquement.

3. Sécurité

C'est un point très intéressant. Bien que le passage au sans serveur ne garantisse pas nécessairement une sécurité accrue, au moins les problèmes de sécurité au niveau du système deviennent plus abstraits. Je vais rapidement énumérer la chronologie de l'évolution de la sécurité :

  • En 2020 : Connexion au serveur via mot de passe sur un réseau public, la base de données étant également sur le serveur.
  • En 2021 : Connexion au serveur via certificat, la base de données étant déplacée vers un autre serveur isolé de l'Internet.
  • En 2022 : Connexion au serveur via certificat, plus de serveur dédié pour la base de données.
  • En 2023 : Tous les services publics ne dépendent plus d'un serveur dédié.

Il y a Bien Longtemps

Jimmy Kmi
Give it a try, how will you know if you don't try?

Voici quelques pensées du passé

  • 22/05/2023 Le titre de la page s'adapte progressivement, avec un taux de mise en cache côté client de 98 %.
  • 16/05/2023 Une tonne de mises à jour ont été effectuées, vraiment, une tonne.
  • 12/05/2023 Parfait, cette page peut désormais être éditée avec un outil dédié, sans nécessiter de modification du code !
  • 09/05/2023 Lorsque vous lisez ce texte, cela signifie que la partie frontale de ce site web a été réorganisée une fois de plus avec Next.js :
    1. Le front-end prend désormais en charge le rendu côté serveur (SSR), le rendu côté client (CSR) et le rendu côté serveur dynamique (SSD), ce qui a considérablement réduit le temps de chargement initial et amélioré le référencement. Nous utilisons la technologie Next.js.
    2. Étant donné que nous utilisons le rendu côté serveur, la vieille méthode d'hébergement sur un service de stockage en ligne (OSS) n'est plus aussi efficace. Nous avons donc mis en place une solution sans serveur (Serverless) avec des conteneurs virtuels dans le cloud.
    3. La gestion de l'authentification et de l'inscription est toujours en cours de recherche, en utilisant Single Sign-On (SSO) et Active Directory (AD), car il y a trop de plates-formes à intégrer.
    4. L'orientation principale de ce site web est de partager des connaissances techniques et des ressources. Il comprendra également quelques petits outils personnels et des fonctionnalités privées. Je ne suis pas pressé, car mon petit site n'a pas encore beaucoup de visiteurs. Les technologies mentionnées ci-dessus feront l'objet d'articles ultérieurs (à prendre avec des pincettes !).
  • 23/02/2023 Mise en place de plusieurs systèmes privés, le clustering est presque terminé. La refonte de la page d'accueil en utilisant React est en cours pour permettre une mise en œuvre rapide des fonctionnalités inter-pages.
  • 22/02/2023 Migration du système de connexion de la pile technologique OAuth locale à l'étude LDAP/SSO.
  • 11/02/2022 Les fonctionnalités sont assez compliquées, mais ce site web ne sera probablement pas négligé, car l'hébergement du serveur coûte de l'argent.
  • 10/08/2022 La conception de l'interface utilisateur du site web est en phase initiale.
  • 30/01/2022 Récemment, je travaille sur le module de stockage cloud. J'ai mis en ligne quelques petites fonctionnalités pour des tests et pour quelques amis qui chattent régulièrement. La stabilité est bonne, mais la sauvegarde des données pose un problème majeur (principalement en raison des coûts élevés).