在自由软件上运营一家律师事务所(2026 年版)
发布于:2026-11-06 12:18:47,作者 Neil Brown
大约五年前,我开始在自由软件上运营 decoded.legal——一家小型英格兰律师事务所,专注于互联网、电信和科技法——客户端和服务端都是如此。我在个人生活中使用自由软件的时间要长得多。
早在 2022 年,我写过最初一年左右的经历。
2024 年我写了一篇更新。
最近有人问我现在的做法,虽然大体相同,但有些地方已经变了。以下是 2026 年的更新。
客户端方面
我仍在使用搭配 GNOME 的 Debian,它对我来说很好用。
我在 ThinkPad X1 Yoga Gen 6 上使用它作为主力机;因为是“Yoga”版本,我挺喜欢能把屏幕折回去、在上面手写批注文档。(以下是我对适用于它的不同“Active Pens”的看法。)
不过,这台机器本身的 Thunderbolt / USB-C 接口似乎有硬件问题(供电没问题,数据传输很不稳定),所以我可能需要换掉它。而我完全不知道该买什么笔记本。
- 邮件(MUA):Thunderbird 和 mutt,视我在做什么而定 Quick Folder Move 和 Move Message And Yourself 是 Thunderbird 特别有用的附加组件,可以用键盘快捷键快速归档邮件 Thunderbird 似乎在处理某些重复的日历邀请时有问题,而 ikhal 处理得很好。我没深入排查,但这很烦人。
邮件(MUA):Thunderbird 和 mutt,视我在做什么而定
- Quick Folder Move 和 Move Message And Yourself 是 Thunderbird 特别有用的附加组件,可以用键盘快捷键快速归档邮件
- Thunderbird 似乎在处理某些重复的日历邀请时有问题,而 ikhal 处理得很好。我没深入排查,但这很烦人。
- 文档制作:需要“Word”文档时(例如与其他律师交换文档)我用 LibreOffice 的 Writer;至于其他一些内容,我用 pandoc 和 typst 转换我通常在 vim 里写的 Markdown 文件。我以后想研究一下 tex,因为我有个客户喜欢对他们的 .tex 文件做 diff,那看起来相当不错。
- 演示文稿:reveal.js 我非常喜欢这个。我有一个 bash 脚本,可以为新演示文稿搭建模板,然后我就用 Markdown 写演示内容。几乎不费什么力气就能得到一个排版漂亮的演示文稿(使用 css 模板),而且没有让人分心的 GUI 关于 reveal.js 的博客文章 以下是我用 reveal.js 做过的一些演示
演示文稿:reveal.js
- 我非常喜欢这个。
- 我有一个 bash 脚本,可以为新演示文稿搭建模板,然后我就用 Markdown 写演示内容。几乎不费什么力气就能得到一个排版漂亮的演示文稿(使用 css 模板),而且没有让人分心的 GUI
- 关于 reveal.js 的博客文章
- 以下是我用 reveal.js 做过的一些演示
- 文件管理器:Nautilus 主要是因为它 是 GNOME 的默认选项,不过,尤其是结合一些有用的 bash 脚本之后,它很符合我的需求
文件管理器:Nautilus
- 主要是因为它 是 GNOME 的默认选项,不过,尤其是结合一些有用的 bash 脚本之后,它很符合我的需求
- PDF:大多数阅读用 evince;批注 PDF 用 Xournal++;折腾 PDF 用 PDFarranger 和 pdftk
- 文本扩展:espanso 对我来说这是个绝妙的捷径,省得我反复输入同样的内容。我设置了一大堆快捷方式,没有它们我会不知所措。
文本扩展:espanso
- 对我来说这是个绝妙的捷径,省得我反复输入同样的内容。我设置了一大堆快捷方式,没有它们我会不知所措。
像 {{NAME_ab12cd34}} 这样写出的值是真实值的占位符。在回复和工具调用中都请完全按原样使用它们:它们会在任何内容运行之前被填入真实值。不要要求核实它们,也不要用示例替换它们。
文章标题:在自由软件上运营一家律师事务所(2026 版)
正文:
- 浏览器:Firefox 或 links 我仍在使用 Firefox。它……还行吧?我或许应该看看 LibreWolf 或其他分支版本,因为我不太喜欢 Mozilla 的发展方向,但就目前而言,还是用 Firefox。当别人安排会议时,我用 Firefox 加入他们的 Teams 和 Zoom 等会议,效果不错
浏览器:Firefox 或 links
- 我仍在使用 Firefox。它……还行吧?我或许应该看看 LibreWolf 或其他分支版本,因为我不太喜欢 Mozilla 的发展方向,但就目前而言,还是用 Firefox。
- 当别人安排会议时,我用 Firefox 加入他们的 Teams 和 Zoom 等会议,效果不错
- 本地 wiki / 知识管理:vimwiki 因为我大量使用 vim,所以 vimwiki 是相当明显的选择。我用它来记录我的职业发展以及各种笔记
本地 wiki / 知识管理:vimwiki
- 因为我大量使用 vim,所以 vimwiki 是相当明显的选择。
- 我用它来记录我的职业发展以及各种笔记
- 磁盘加密:LUKS
- 在通过 Syncthing 同步文件之前对文件进行客户端加密:Cryptomator
- Fediverse:我倾向于使用 Mastodon 高级 Web UI,或者在我想要更少图片时使用 TUI 版 toot。我会定时发布 toots——例如关于博客文章的——使用一个简单的 bash 脚本和 cron 任务;自从我写了那篇文章以来,它已经有所发展,但原理相同
Fediverse:我倾向于使用 Mastodon 高级 Web UI,或者在我想要更少图片时使用 TUI 版 toot。
- 我会定时发布 toots——例如关于博客文章的——使用一个简单的 bash 脚本和 cron 任务;自从我写了那篇文章以来,它已经有所发展,但原理相同
- 密码管理器:Bitwarden,使用 vaultwarden 服务器,并用 YubiKeys 管理更敏感的凭据
- Markdown 编辑器(用于博客文章;我用 vim 或 gedit 做演示):Apostrophe
- 扫描:paperless-ngx
- 标签打印:有一个很棒的 FOSS Web UI,适用于 Brother(或许还有其他)标签打印机。我不常打印标签,因为我们力求无纸化,但在需要时它很方便
为什么这么多基于终端的工具?简单的答案是,我在终端里非常自如,而且我喜欢它们。它们干扰更少,并且与大多数 GUI 软件相比——恕我直言——就是更容易使用,尤其是当我不需要把手从键盘上移开时。所以,虽然我并非只用它们,但我频繁使用 mutt、vim、ikhal、ncmpcpp、newsboat、toot、links 以及各种其他 TUI。
服务器端的东西
这里的一切——除了 Signal——都是自托管的,我现在主要使用 Intel NUC。我还有一些 Raspberry Pi 设备,但比过去少了。
(再次说明,这并未列出所有内容;只是主要应用。)
- 电子邮件(MTA):postfix / dovecot 我需要在某个时候迁移我们的邮件基础设施,我想看看 Stalwart。
电子邮件(MTA):postfix / dovecot
- 我需要在某个时候迁移我们的邮件基础设施,我想看看 Stalwart。
- 文件同步:Syncthing 自上次以来较大的变化之一是弃用 Nextcloud。我就是和它合不来,它造成的问题比解决的还多。所以我改用 Syncthing 进行文件同步,用 radicale 处理 CalDAV / CardDAV。我对这个组合非常满意。
文件同步:Syncthing
- 自上次以来较大的变化之一是弃用 Nextcloud。我就是和它合不来,它造成的问题比解决的还多。所以我改用 Syncthing 进行文件同步,用 radicale 处理 CalDAV / CardDAV。我对这个组合非常满意。
- 视频会议:Signal 我运行 jitsi 多年,但几个月前停止使用了。Jitsi 很棒,我仍然是它的粉丝,但大多数时候我加入的是别人的 Teams 或 Zoom 会议,所以我运行 Jitsi 服务器的使用率极低。我关掉了它,转而提供 Signal。没有人抱怨。
文章标题:在自由软件上运行一家律师事务所(2026 版)
正文: 视频会议:Signal
- 我用了好几年的 jitsi,但几个月前不再用了。Jitsi 很棒,我依然是它的粉丝,但大多数时候我是在参加别人的 Teams 或 Zoom 会议,所以我运行 Jitsi 服务器的使用量非常少。我把它关掉了,改为提供 Signal。没有人抱怨。
- 开票和追踪付款:InvoicePlane,只用于生成 PDF 发票。客户不会与之交互
- 时间追踪:Kimai v2 版的 Kimai 非常出色,我和开发者有过一次非常愉快的交流,这总是件好事。
时间追踪:Kimai
- v2 版的 Kimai 非常出色,我和开发者有过一次非常愉快的交流,这总是件好事。
- “案件管理”/“事项管理”:EspoCRM
- VPN:WireGuard,在一台机器上使用 trailofbit 的 algo ansible 脚本,在另一台上使用 PiVPN(尽管并不是在 Pi 上)
- 漏洞扫描:greenbone/OpenVAS
- 监控:Uptime Kuma 我在上次更新后不久就部署了这个。它……就是能用?
监控:Uptime Kuma
- 我在上次更新后不久就部署了这个。它……就是能用?
- Forge / 托管的 git 仓库:Forgejo 我用它来对网站做版本跟踪,也用于几个模板项目 我不会在上面托管任何特别重要的东西——为此,我在另一台机器上运行了一个 git 进程,那台机器无法通过互联网访问,我只是推送到那里
Forge / 托管的 git 仓库:Forgejo
- 我用它来对网站做版本跟踪,也用于几个模板项目
- 我不会在上面托管任何特别重要的东西——为此,我在另一台机器上运行了一个 git 进程,那台机器无法通过互联网访问,我只是推送到那里
- 密码管理器:vaultwarden
- 网站:这是一个通过 mkdocs 构建的静态站点,托管在 apache2 上 它变得更简单,加载也更快了。是的,它很基础,但我喜欢!我们仍然有 .onion 版本。如果你在 Tor Browser 中访问 decoded.legal,它应该会自动重定向你
网站:这是一个通过 mkdocs 构建的静态站点,托管在 apache2 上
- 它变得更简单,加载也更快了。是的,它很基础,但我喜欢!
- 我们仍然有 .onion 版本。如果你在 Tor Browser 中访问 decoded.legal,它应该会自动重定向你
- 博客:BSSG 在对 hugo 有过几次不满之后,我转向了 BSSG——一个 bash 静态站点生成器。开发者 Stefano 非常了不起,它运行得极其出色。我选择了一个非常基础、易读的主题——应该和之前的样子非常相似——当然,它仍然有 RSS 订阅 我经常写博客,而且,与其保留私人的 / 内部的“knowhow”文件,我倾向于直接把东西写成博客,分享学到的东西 我倾向于用我的个人博客发布关于更技术性的零碎内容的文章 我已经用 bash 脚本自动化了最常见的操作——模板和发布——这样我就可以专注于写作(用 Markdown);把它上线是最简单的部分
- 在对 hugo 有过几次不满之后,我转向了 BSSG——一个 bash 静态站点生成器。开发者 Stefano 非常了不起,它运行得极其出色。我选择了一个非常基础、易读的主题——应该和之前的样子非常相似——当然,它仍然有 RSS 订阅
- 我经常写博客,而且,与其保留私人的 / 内部的“knowhow”文件,我倾向于直接把东西写成博客,分享学到的东西
- 我倾向于用我的个人博客发布关于更技术性的零碎内容的文章
- 我已经用 bash 脚本自动化了最常见的操作——模板和发布——这样我就可以专注于写作(用 Markdown);把它上线是最简单的部分
像 {{NAME_ab12cd34}} 这样写出的值是真实值的占位符。在回复和工具调用中都完全按原样使用它们:它们会在任何东西运行之前被填入真实值。不要要求验证它们,也不要用示例替换它们。
文章标题:用自由软件运营一家律师事务所(2026 年版)
正文:
- Fediverse:我正在使用 glitch-soc Mastodon* 分支。从普通 Mastodon 切换到 glitch-soc Mastodon 很容易。我不再在嘟文中使用 Markdown,尽管我喜欢渲染后的输出(即以 html 而非 markdown 的形式),但各客户端对此的支持并不一致,所以我停用了它。我关闭了 decoded.legal 自己的 fedi 实例。有一段时间我一直在犹豫这是否值得,最终认定,确实不值得。
Fediverse:我正在使用 glitch-soc Mastodon* 分支
- 从普通 Mastodon 切换到 glitch-soc Mastodon 很容易
- 我不再在嘟文中使用 Markdown,尽管我喜欢渲染后的输出(即以 html 而非 markdown 的形式),但各客户端对此的支持并不一致,所以我停用了它。
- 我关闭了 decoded.legal 自己的 fedi 实例。有一段时间我一直在犹豫这是否值得,最终认定,确实不值得。
- 知识管理,以及管理我们律师事务所(众多)的政策和程序:dokuwiki 配合 Markdown 插件
- DNS:unbound,前面加上 Pi-Hole。我以前运行过一个 doh 服务器,但已经停掉了。
DNS:unbound,前面加上 Pi-Hole
- 我以前运行过一个 doh 服务器,但已经停掉了。
- 备份:restic 和 rsync。关于 restic 的说明
备份:restic 和 rsync
- 关于 restic 的说明
- 表单:LiberaForms。我对 LiberaForms 非常满意,它让表单易于创建、易于使用,尤其是他们实现了加密,因此表单的回复在服务器上以加密形式存储。我还是会尽快删除它们,但知道它们在数据库中是加密的,这让人放心。我用 LiberaForms 来做我们的“了解你的客户”聘用前问卷,以及各种其他事项
表单:LiberaForms
- 我对 LiberaForms 非常满意,它让表单易于创建、易于使用,尤其是他们实现了加密,因此表单的回复在服务器上以加密形式存储。我还是会尽快删除它们,但知道它们在数据库中是加密的,这让人放心。
- 我用 LiberaForms 来做我们的“了解你的客户”聘用前问卷,以及各种其他事项
- 协作文档编辑:我不用。我以前运行过 CryptPad,但它没怎么被用上,所以我就关掉了。
协作文档编辑:我不用。
- 我以前运行过 CryptPad,但它没怎么被用上,所以我就关掉了。
AI 工具
没有,原因有多种。
移动设备
我的移动设备是一台运行 GrapheneOS 的 Pixel。
我把 F-Droid 作为主要的应用商店。
使用 Android 并不让我兴奋,尤其是考虑到 Google 的发展方向,但目前——尽管尝试了相当多不同的操作系统和设备,包括 postmarketOS 和 Ubuntu Touch,以及此前的 SailfishOS——我还没有找到比 GrapheneOS 更能满足我需求的东西。
与(不使用 FOSS 工具的)他人协作
这方面没有变化:零问题。
我的许多客户使用 Microsoft 的软件,或者 Apple 的软件。