关于 AI、软件、系统与持续思考的个人笔记

知乎姨姨

用 Rallly 收集可用时间,少在群里来回问

多人会议的时间不用逐个在群里问。自托管 Rallly,列出候选时段,让参加者填写可用时间。

文章目录

约一个多人会议,群里问“周四还是周五”很快就会出现几组互相冲突的回复。Rallly 把候选时间放在同一张投票表里,参加者勾选自己的可用时段,组织者再确定最终安排。

这里采用项目维护的完整 Docker 栈。它包含数据库和对象存储,不能把网上旧版的“一个应用容器加 PostgreSQL”例子照搬到当前版本。官方要求至少 2GB 内存,还需要可用的 SMTP 服务。

下载官方部署栈,配好邮件服务

Rallly 的应用和数据库会一起运行,选 VPS 时要留意内存与邮件发送条件。还没有服务器,可以从 雨云云服务器 查看 Linux 实例,选好后再配置域名和发信服务。 优惠码 KuZhuJi。如有消费返利,以购买页所选规格显示的金额为准。

以下命令在 Linux VPS 上执行,需要有 Docker 操作权限。先运行 docker version 和 docker compose version,确认引擎与 Compose v2 都能工作。没有安装 Docker 时,按 Docker 官方安装说明选择对应发行版;不要把其他发行版的仓库配置直接复制过来。

示例工作目录为 /opt/rallly,所有相对路径都以这个目录为基准。VPS_IP、SSH 用户和示例域名需要换成自己的值。端口 3003 若已被占用,只改映射左侧的宿主机端口,并同步修改访问地址。

sudo install -d -m 0750 -o "$(id -u)" -g "$(id -g)" /opt/rallly
cd /opt/rallly
umask 077

在工作目录下载官方部署仓库,查看脚本后运行配置向导:

git clone https://github.com/lukevella/rallly-selfhosted.git stack
cd stack
less rallly.sh
./rallly.sh setup

向导选择使用已有反向代理。检查生成的 .env,以下字段按自己的环境填写:

PROXY_MODE=external
WEB_PORT=127.0.0.1:3003
DOMAIN=poll.example.com
[email protected]
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=REPLACE_WITH_SMTP_USERNAME
SMTP_PWD=REPLACE_WITH_SMTP_PASSWORD
[email protected]
[email protected]

587 的 SMTP_SECURE=false 对应 STARTTLS,465 的隐式 TLS 使用 true,以邮件服务商要求为准。保留向导生成的数据库、对象存储和会话密钥,不要用示例密码覆盖它们。

chmod 600 .env
./rallly.sh start
./rallly.sh status
./rallly.sh logs web

官方部署更新会改动栈文件,日常配置集中在 .env。不要为了换端口改一堆内部服务参数。

让域名通过 HTTPS 访问

把 poll.example.com 的 DNS 指向 VPS。下面是已经安装在宿主机上的 Caddy可添加的站点配置;已有网站时只添加这一段,不覆盖整个配置文件。若反向代理也在 Docker 中,容器内的 127.0.0.1 不是宿主机,需要改用共享网络中的服务名。

poll.example.com {
    reverse_proxy 127.0.0.1:3003
}

确认服务器允许访问 80、443,检查 Caddy 配置并按现有服务方式重载,再访问 https://poll.example.com。应用端口仍绑定在宿主机回环地址,数据库端口不向公网发布。应用中的外部地址也要设置为这个 HTTPS 地址,否则邀请链接或登录回调可能指向错误位置。

先验证邮件,再发会议链接

用组织者邮箱登录,确认邮件中的登录链接指向自己的 HTTPS 域名。创建一次测试投票,候选时间包含明确时区,再用另一个浏览器以参加者身份回答。

让一位时区不同的朋友或自己的另一台设备检查时间显示。投票标题可写会议用途,说明里交代时长和线上会议工具;最终时间确定后再发日历邀请,别让参与者一直猜是否已经定下来。

ALLOWED_EMAILS 用来约束账号准入,不能据此断言所有投票都只有这些邮箱能看。分享投票前,用未登录窗口实际检查链接权限。投票里避免放身份证号、私人电话等不需要的信息。

数据库与文件存储分开核对

在 stack 目录执行 ./rallly.sh backup,数据库备份进入 backups。这个命令不能代替整个栈的备份:同时保留 .env、部署版本和 Garage 使用的存储卷。用 docker compose config --volumes、docker volume inspect 确认当前卷,不要猜旧教程里的卷名。

迁移或升级前停止栈,对存储卷制作一致的副本,并把数据库备份和配置加密复制到另一台机器。恢复到独立测试实例后,检查登录邮件、投票结果以及上传文件。

PostgreSQL 的主版本升级走官方 ./rallly.sh upgrade-db 流程。不要自行把数据目录挂到一个不同主版本镜像;升级前保留原数据库备份和原卷。普通应用更新使用 ./rallly.sh update,同样先看更新说明和备份。

安装参数和数据路径可对照Rallly 自托管仓库。

继续阅读 · 软件工具 返回顶部