Rallly 日程投票工具搭建教程
Rallly(注意三个 l)是一款开源的日程投票和会议安排工具,类似 Doodle 的自托管替代方案。它让组织者创建包含多个候选时间的投票,参与者选择自己可以参加的时间段,系统自动统计最适合所有人的时间。界面简洁现代,无需注册即可参与投票。本教程将在搬瓦工 VPS 上通过 Docker 部署 Rallly。
一、Rallly 核心功能
- 日程投票:创建包含多个候选日期/时间的投票,参与者选择可用时间。
- 无需注册:参与者无需创建账户即可投票,降低参与门槛。
- 三级选择:参与者可以对每个时间选择"可以"、"也许"或"不行"。
- 自动统计:实时统计每个候选时间的投票结果,高亮最佳选项。
- 评论功能:参与者可以在投票中留下评论说明偏好。
- 邮件通知:新投票和结果变更时通过邮件通知组织者和参与者。
- 响应式设计:完美适配手机和平板,随时随地参与投票。
二、环境准备
- 操作系统:Ubuntu 20.04+(推荐 Ubuntu 22.04)。
- 内存:至少 512MB RAM。
- 磁盘:至少 2GB 可用空间。
- Docker:已安装 Docker 和 Docker Compose(参考 Docker 安装教程)。
购买搬瓦工 VPS 请参考 全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 折扣。
三、Docker Compose 部署
3.1 创建项目目录
mkdir -p /opt/rallly && cd /opt/rallly
3.2 创建 Docker Compose 文件
cat > docker-compose.yml <<'EOF'
version: '3.8'
services:
rallly:
image: lukevella/rallly:latest
container_name: rallly
restart: always
ports:
- "3000:3000"
environment:
DATABASE_URL: "postgresql://rallly:your_db_password@db:5432/rallly"
SECRET_PASSWORD: "your_secret_password_at_least_32_chars"
NEXT_PUBLIC_BASE_URL: "http://your-domain.com"
NOREPLY_EMAIL: "noreply@example.com"
SMTP_HOST: "smtp.example.com"
SMTP_PORT: "587"
SMTP_SECURE: "false"
SMTP_USER: "your-email@example.com"
SMTP_PWD: "your-email-password"
SUPPORT_EMAIL: "support@example.com"
depends_on:
- db
db:
image: postgres:16-alpine
container_name: rallly-db
restart: always
environment:
POSTGRES_USER: rallly
POSTGRES_PASSWORD: your_db_password
POSTGRES_DB: rallly
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
EOF
生成密码和密钥:
openssl rand -base64 32
3.3 启动服务
docker compose up -d
docker compose logs -f rallly
启动完成后,访问 http://你的服务器IP:3000 即可使用 Rallly。
四、Nginx 反向代理
cat > /etc/nginx/sites-available/rallly <<'EOF'
server {
listen 80;
server_name poll.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF
ln -s /etc/nginx/sites-available/rallly /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d poll.example.com
五、使用 Rallly
5.1 创建投票
在首页点击"Create Poll",输入投票标题和描述(如"团队周会时间")。在日历上选择候选日期,可以为每天设置具体的时间段。确认候选时间后生成投票链接,将链接分享给参与者。
5.2 参与投票
参与者点击链接后输入姓名,然后对每个候选时间选择可用状态。投票结果实时更新,所有参与者都可以看到统计情况。组织者可以根据投票结果确定最终时间。
5.3 管理投票
组织者可以在投票管理页面修改候选时间、删除参与者的投票或关闭投票。确定最终时间后可以标记为最终结果,系统会通知所有参与者。
六、备份与升级
# 备份数据库
docker exec rallly-db pg_dump -U rallly rallly > /opt/rallly/backup_$(date +%Y%m%d).sql
# 升级
cd /opt/rallly
docker compose pull
docker compose down
docker compose up -d
总结
Rallly 简洁高效地解决了团队日程协调的难题,部署在搬瓦工 VPS 上完全自主可控。如果你需要更完整的日程预约功能,可以参考 Cal.com。购买搬瓦工 VPS 请参考 全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 折扣。更多教程请访问 搬瓦工VPS中文网。