惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Troy Hunt's Blog
Scott Helme
Scott Helme
T
Threat Research - Cisco Blogs
T
Tenable Blog
L
LINUX DO - 热门话题
V
Visual Studio Blog
I
Intezer
Blog — PlanetScale
Blog — PlanetScale
Cisco Talos Blog
Cisco Talos Blog
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
F
Fortinet All Blogs
aimingoo的专栏
aimingoo的专栏
Know Your Adversary
Know Your Adversary
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
N
Netflix TechBlog - Medium
SecWiki News
SecWiki News
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Project Zero
Project Zero
W
WeLiveSecurity
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
Recorded Future
Recorded Future
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Vercel News
Vercel News
S
Securelist
Spread Privacy
Spread Privacy
L
LangChain Blog
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
MongoDB | Blog
MongoDB | Blog
Google DeepMind News
Google DeepMind News
Recent Commits to openclaw:main
Recent Commits to openclaw:main
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CERT Recently Published Vulnerability Notes
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
The Last Watchdog
The Last Watchdog
Attack and Defense Labs
Attack and Defense Labs
博客园 - 司徒正美
Help Net Security
Help Net Security
L
Lohrmann on Cybersecurity
人人都是产品经理
人人都是产品经理
Forbes - Security
Forbes - Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
PCI Perspectives
PCI Perspectives
博客园 - 【当耐特】
T
Tor Project blog

Log4D

2025 年终总结 - 临界点 实用软件项目管理最佳实践 李飞飞如何获得成功? - 读「我看见的世界」 2024 年终总结 2023 年终总结 如何免费用云服务搭建博客评论系统 GitOps 和版本管理 架构设计 the Easy Way 实用 Web API 规范 从 Toodledo 到 Obsidian Tasks - 我的 GTD 最佳实践 让 Apple Music 播放豆瓣音乐 Top 250 2022 年终总结 读《历代经济变革得失》 码转电子厂 - 教你修键盘 跟 Google 学开公司 - 谈谈方向、文化和人 20 21 如何做好 PRR(Production Rediness Review)? Python 的类型系统 浅谈 Code Review 之事前准备
私有化在线协同画图平台 Excalidraw
alswl · 2022-10-17 · via Log4D

首先感谢岳父岳母带家中神兽去过暑假了,我才能有周末的时间来改这个系统。

另外感谢老婆,周末我两天都搞自己的事情,也没批评我。

最后感谢公司团建,提供酒店住,花了一个晚上时间搞定了中文手写体。

注:这是魔改私有化 excalidraw 开源版本,感谢社区

介绍一下 Excalidraw,产品特性

什么是 Excalidraw,这(可能)是最强的在线协同画图工具 ,你可以访问 Excalidraw 试试看。

anatomy_of_an_azure_function.png

如果你觉得打开来都是空白,那么也可以访问这个公共面板 Excalidraw 参与一起创作。

excalidraw-share-room.png

Excalidraw 非常好用,我总结几个点:

  • 手写风格(Hand Writing)避免了强迫症,什么一像素差异,都没了躺平到底
  • 无延迟在线协作,非常适合后疫情时代的沟通协作
  • 产品素质过硬,快捷键、对象连接粘滞、选定文件直接存储到本地等细节都有,挑不出毛病

excalidraw-homepage.png

这个产品我们经内部同学内部安利之后,大家迅速的喜欢上了,在 Excalidraw 上面了好多图,但也引来一个问题。

「公有 SaaS 服务存在数据安全隐患」 怎么办?我要把他私有化部署!

#2 部署之前,先来了解一下 Excalidraw 的工作原理

Excalidraw 工作原理和私有化原理

excalidraw-arch.png

那私有化的核心难点是什么:

解决 excalidraw-storage 的数据存储问题,即替换掉 Google Cloud Platform 的 firebase 服务。

#3 私有化尝试

事有不顺反求诸己

- 孟子

求与诸己,不如求于 GayHub

- alswl

让我们先先研究 Excalidraw 的存储系统。 Firebase 是 Google 的 Serverless 服务,以前是独立公司(还挺火),后来给 GCP 收购了。

firebase.png

firebase-features.png

我一开始想法是替换 Firebase,找了一个社区服务 Supabase(意外发现还有免费的 SaaS 服务,良心啊)

supabase.png

但是仔细研究一下,发现 Supabase 的 API 和 firebase 不兼容,并 不能平替

Excalidraw 还要靠 Excalidraw+ 卖钱(Plus 服务),怎么可能让你这么轻松就私有化,官方原来有个 excalidraw-json 的仓库,现在也被移除了。但是我们不怕,我们有来自社区的力量:

他们给了条路(虽然后来被证实还是有歪路的):

于是我开始检视他们方案,打开代码一看,思路正确(替换 firebase 的几个接口),使用自己的 KV 存储(Redis / MySQL / Mongo)替换。

jing-shen.png

尝试部署,立马遇到问题:

Dockerfile 无法正常构建 版本落后 upstream 太久(2020 -\> 2022) Rebase 方式 merge 上游无法 follow

怎么这么巧,我是 前端实习生 // 社区打补丁专家 // Kubernetes 清洁工 // YAML 资深专家 ,专治这么几个毛病。

#4 你让开,我来写

改造代码设计图

self-hosted-excalidraw.png

#5 未来(可能不存在)

Excalidraw 是 SaaS 服务的免费版, Excalidraw+ 是付费版 ,有什么区别呢

excalidraw-price.png

总结:

  • 更可靠的存储,集成到云存储(比如 Dropbox / iCloud)
  • 用户身份识别,连接到通用的身份系统
  • 更个性化的权限控制(密码访问、定向分享)、租户控制、项目组控制
  • 域内共享的 Library
  • 跟其他系统集成(语雀、钉钉文档、飞书等等)

或者还是直接购买 Excalidraw 企业版本服务吧,少折腾多享受。

#6 中文手写体优化

有个问题, 中文字体不是手写体 ,很违和。先看看哪些字体能用吧:

macOS 支持的中文手写体:

cursive 家族:

  • PanziPen
  • LingWai
  • Hannotate

hanzipen-sc.png

windows 中文支持手写体比较差劲,必须安装 Office 才有更多选择:
华文行楷;方正舒体;(Office)

不行的话,只有系统自带的楷体 KaiTi 可以工作。

最后,靠我三脚猫的前端水平,做了一个 PoC,并给官方提交了一个 PR:feat: simple impl of multi font support, for chinese font by alswl · Pull Request #5604 · excalidraw/excalidraw

这是最终的效果:

chinese-hand-writing.png

可以访问 excalidraw.alswl.com 查看效果,这是一个静态站点, 支持中文字体,但是无法在线协作。


Update 2022-12

有几个网友来咨询如何进行部署。于是基于上述的方案,我提供了一套基于 Docker Compose 的一键拉起服务:带协作、中文字体支持。 仓库见 alswl/excalidraw-collaboration


原文链接: 私有化在线协同画图平台 Excalidraw | Log4D

3a1ff193cee606bd1e2ea554a16353ee

欢迎关注我的微信公众号:窥豹

窥豹