轻松搭建你的黑客马拉松挑战板Dribdat

今天是大年初一,祝大家新年快乐,蛇年吉祥,阖家幸福安康!新的一年所行皆坦途,所遇皆美好!🧧🧧🧧


简介

什么是 Dribdat ?

Dribdat 是一个开源的网络应用程序,旨在支持技术项目合作,特别是在帮助组织和管理短期冲刺、共创会议、黑客日和精彩的黑客马拉松(hackathon)等活动。

主要特点:

  • 挑战板:提供一个互动的挑战和创意板,帮助组织短期项目和协作会议。
  • 集成功能:支持文件上传、数据导入/导出、团队组建等功能,能够与各种开发工具和社交媒体集成。
  • 灵活性:可以作为一个 Python 后端,聚合来自 GitHubGitLab 等平台的数据,并提供多种用户界面选项(如 Vue.jsNode.js 聊天机器人)。
  • 安全与开放性:内置行为规范,支持开放许可证和社区开发模板,确保活动的透明性和包容性。

Dribdat 旨在成为一个可定制的工具,适应不同的需求和活动,是瑞士开放数据和开源社区的重要平台。用户可以快速部署并在社区活动中使用,促进协作和创新。

什么是 Honeycomb ?

Honeycomb 挑战板是 Dribdat 平台上的一个核心功能,设计用于支持和促进黑客马拉松(hackathon)等活动中的团队合作和项目管理。通过其可视化和互动功能,帮助组织和参与者更有效地管理和完成项目,提升活动的整体体验和效率。

安装

在群晖上以 Docker 方式安装。

本文写作时, dribdat/dribdat:latest 版本对应为 v0.8.5

采用 docker-compose 安装方式。官方提供了 docker-compose.yml,但运行时默认绑定的是 IPv6 地址,在不支持 IPv6 的机器上会报错

1
2
3
dribdat-web | [2024-12-02 02:29:52 +0000] [1] [INFO] Starting gunicorn 23.0.0
dribdat-web | [2024-12-02 02:29:52 +0000] [1] [ERROR] Invalid address: ('::1', 5000)
dribdat-web | [2024-12-02 02:29:52 +0000] [1] [ERROR] connection to ('::1', 5000) failed: [Errno 99] Cannot assign requested address

老苏做了一些调整,请将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
version: '3'

services:
dribdat:
image: dribdat/dribdat
container_name: dribdat-web
# restart: unless-stopped
ports:
- 5323:5000
environment:
- SERVER_URL=192.168.0.197:5323
- DATABASE_URL=postgres://dribdat_user:changeme@db:5432/dribdat
- DRIBDAT_ENV=prod
- DRIBDAT_SECRET=changeme
- DRIBDAT_APIKEY=changeme
- TIME_ZONE=Asia/Shanghai
depends_on:
db:
condition: service_healthy
command: ["/usr/local/bin/gunicorn", "--bind", "0.0.0.0:5000", "--config=gunicorn.conf.py", "patched:init_app()"]

db:
image: postgres
container_name: dribdat-db
# restart: unless-stopped
volumes:
- ./data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=dribdat
- POSTGRES_USER=dribdat_user
- POSTGRES_PASSWORD=changeme
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}']
interval: 10s
timeout: 5s
retries: 5

CMD

通过新增更新 CMD 指令来解决只能监听 IPv6 的问题:

  • command 指定了 Gunicorn 的启动命令和参数。这将覆盖 Dockerfile 中的 CMD 指令;
  • 通过 --bind", "0.0.0.0:5000 指定 Gunicorn 监听所有可用的 IPv4 网络接口;
  • 如果你希望同时监听,可以改为 --bind "0.0.0.0:5000" --bind "::":5000

环境变量

dribdat-db 的环境变量

可变
POSTGRES_DB PostgreSQL 数据库的名称
POSTGRES_USER 连接数据库的用户名
POSTGRES_PASSWORD 连接数据库的用户密码
  • dribdat-web 的环境变量
可变
SERVER_URL 指定 Dribdat 应用的访问 URL
DATABASE_URL 数据库的连接字符串,根据 PostgreSQL 数据库的参数拼接而成
DRIBDAT_ENV 指定运行环境,用于区分开发环境和生产环境
DRIBDAT_SECRET 应用的密钥,建议修改
DRIBDAT_APIKEY API 密钥,用于身份验证,建议修改
TIME_ZONE 时区设置,国内用户建议用 Asia/Shanghai

一键启动

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 dribdat 和 子目录
mkdir -p /volume1/docker/dribdat/data

# 进入 dribdat 目录
cd /volume1/docker/dribdat

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:5323 就能看到主界面

Login –> Create an account

创建一个自己的账号

第一个账号是有管理员权限的

接下来就可以愉快的使用了。大致的使用流程如下:

  • 创建活动

    • 发布活动:管理员可以创建新的活动,设定时间、地点和主题,并邀请参与者。
    • 定义挑战:在活动中,组织者可以发布各种挑战,供参与者选择和参与。
  • 团队组建

    • 组队功能:参与者可以选择感兴趣的挑战并组成团队,Dribdat 提供了团队管理功能,方便团队协作。
  • 项目跟踪

    • 实时追踪:活动期间,Dribdat 提供计时器、进度跟踪和日志记录功能,帮助团队实时了解项目进展。
    • 数据整合:支持从各类代码仓库和数据源获取信息,确保团队能够集中管理项目材料和进展。
  • 成果展示与反馈

    • 结果分享:活动结束后,团队可以通过 Dribdat 分享他们的项目成果,提供展示平台。
    • 社区反馈:组织者和参与者可以在平台上讨论和反馈,促进未来活动的改进和优化。

Dribdat 主要解决:

  • 提高协作效率:通过集中管理项目和任务,Dribdat 减少了信息孤岛,有助于团队成员之间的沟通和协作。
  • 促进开放与透明Dribdat 支持开放许可证和社区规范,确保活动的透明性和参与者的公平性。
  • 灵活适应不同需求:其可定制性使得 Dribdat 可以适应各种类型的活动,无论是小型聚会还是大型黑客马拉松。
  • 数据驱动的决策:集成的数据追踪和分析功能支持组织者根据实时数据做出决策,从而优化活动流程。

参考文档

dribdat/dribdat: Honeycomb challenge board for awesomely open hackathons 🐝
地址:https://github.com/dribdat/dribdat

Purpose | dribdat.cc
地址:https://dribdat.cc/

Hello, World / Project Board
地址:https://demo.dribdat.cc/event/1