登录

【分享】ONCE —— 统一管理 VPS 自部署服务

10313
  • 楼主

    https://once.com/

    ONCE 之前的宣传词

    商业软件发生了变化。

    过去,你只需支付一次便可安装并运行这些软件。无论是在某个人的电脑上,还是为所有人提供服务的服务器上,都会让你感觉像是拥有了软件本身。事实也的确如此。

    如今,大多数软件不再是 “产品”,而是一种 “服务”。你买的不是所有权,而是 “租用权”。购买的那一刻,你就签下了一份永久性的房东—租客协议。每个月,你都要为上个月同一份服务付费。如果你停缴费用,软件就会停止工作。轰!你立刻被 “驱逐”。

    将近二十年来,SaaS 模式让 “房东” 们大赚一笔。他们通过不断祈祷——那定期进账的“教会”——将估值推上天台,而背后的支撑完全依赖运营商业化的订阅服务,他们极少能控制这些服务。

    列出你去年所有的 SaaS 订阅费用。到目前为止,这些产品本该是你的了。

    SaaS 模式仍然对许多产品适用,但它以租代买的统治力将逐渐减弱。安装和管理配置曾是难于登天的事,但现在,自建主机的科技变得简单且大幅改善。此外, IT 部门也渴望重新掌控自己的 IT ,他们对依赖 “大科技” 所造成的束缚感到厌倦。

    曾几何时,你拥有支付的产品,掌控依赖的服务,你的隐私与安全完全由自己掌控。我们相信,这正是再次回归这样的时代。

    这是ONCE,37signals 公司推出的新系列产品。

    一次付款,永久拥有。

    我们编写代码,你也能看到源码。

    我们提供软件,你可自主部署。

    产品简单直白,不是复杂臃肿的企业级应用。

    只需支付一次固定价格。 ONCE。

    目前有两款 ONCE 产品:

    Campfire: 与 Slack 或 Teams 类似的群组聊天系统,但更加简洁。

    Writebook: 有史以来最简单的内容在线发布方式。

    在 21 世纪初,我们曾是引领业内进入 SaaS 革命的早期先锋之一。现在,时隔 20 年,我们打算再次引领走出 SaaS。后 SaaS 时代即将到来。

    敬请期待。

    如上所述,作者是 37signal 公司,就是前两个月大火的Omarchy那家

    基本使用

    下面我用虚拟机来演示一下

    2026-10-31_21-40.png

    为了演示方便,把防火墙关掉

    2026-10-31_22-32.png

    直接执行

    curl -fsSL get.once.com | sh
    

    2026-10-31_21-42.png

    如果是普通用户执行,会提醒你输 sudo 密码;没有安装 Docker,它会给你自动安装

    2026-10-31_21-45.webp

    这边自带三个应用

    1. Campfire: 邀请制聊天室,适合公司 / 组织内部沟通
    2. Writebook: 写文档,在线成书
    3. Fizzy: 日程看板,需要配置 smtp 服务器

    这里选择 Campfire,回车

    2026-10-31_21-45_1.webp

    提示输入一个域名,ONCE 会在健康检查期间用这个域名检查,并上 HTTPS 证书;由于我是用的虚拟机,没有上公网,所以填一个 .localhost 结尾的域名来跳过检查与 TLS,这里我用 campfire.localhost

    2026-10-31_21-45_2.png
    2026-10-31_21-47.png

    部署完成,在这里可以直接看到内存、CPU 占用与流量

    2026-10-31_22-34_1.png

    为了在主机上访问 Campfire,修改 C:\Windows\System32\drivers\etc\hosts

    # 我的虚拟机 IP
    192.168.182.141 campfire.localhost
    192.168.182.141 flarum.localhost # 接下来要用
    

    然后就可以用这个域名来使用部署好的服务了

    2026-10-31_22-34.webp

    部署自定义服务

    ONCE 对自定义服务的要求是:

    • 用一个 Docker 容器把所有服务本体及其依赖(如数据库)全部打包(all in one)
    • 在 80 端口暴露纯 HTTP 服务
    • 所有持久化数据(数据库、日志、附件、配置……)放容器内的 /storage
    • 对 GET /up 返回 200,如果做成实际的健康检查更好
    • 如果应用支持相应配置,要透传以下环境变量:
      • SECRET_KEY_BASE(Rails 生态的密钥)
      • DISABLE_SSL
      • BASE_URL
      • VAPID_PUBLIC_KEY/VAPID_PRIVATE_KEY (需要 webpush 的应用)
      • SMTP_ADDRESS/SMTP_PORT/SMTP_USERNAME/SMTP_PASSWORD/MAILER_FROM_ADDRESS(需要邮件功能的应用)
      • NUM_CPUS
      • 也可以引入额外的环境变量,并在 ONCE 中手动添加

    上述要求是对Ruby on Rails框架定制的,如果你用 rails new新建一个 Rails 项目,就已经自动符合以上要求;但是大量应用不是用 Rails 编写的,怎么办呢?请大肥鱼帮你改

    https://github.com/crazy-max/docker-flarum
    https://github.com/shinsenter/php/tree/main/src/webapps/flarum
    https://docs.flarum.org/install/
    
    研究上述链接,为Flarum 2.0写一个Dockerfile,要求兼容ONCE部署工具(https://github.com/basecamp/once):
     - 单Docker容器提供本体+数据库的所有服务
     - 在80端口暴露http服务,不要求https
     - 对GET /up响应200,尽量做成健康检查端点,如果没有检查机制也要固定返回200
     - 持久化数据(db)放在容器中的/storage下,ONCE会固定挂载它做volume
     - 能从以下环境变量中自动为Flarum配置相关项:SECRET_KEY_BASE(Rails/Laravel生态的密钥种子)、BASE_URL、SMTP_ADDRESS、SMTP_PORT、SMTP_USERNAME、SMTP_PASSWORD、MAILER_FROM_ADDRESS
     - 完整要求请看https://github.com/basecamp/once#making-a-once-compatible-application,以及仓库源码
     
    完成后,把镜像推送到dockerhub
    

    2026-10-31_22-40.png
    2026-11-01_09-59.png

    我的成品在 ratherbeafish/flarum-allinone:latest

    重新回到 ONCE(直接在终端中输入 once 命令),按 <kbd>n</kbd>

    2026-11-01_10-00.webp

    选择 custom

    2026-11-01_10-00_1.webp

    2026-11-01_10-02.png

    2026-11-01_10-54.webp

    就这样~

    收藏支持 1反对打赏 1
1 人打赏,共 1 饼 crazypeace 1

13 条回复

发表回复