教程

使用 Docker 部署 Fizzy : 一个轻量、漂亮、可自托管的看板工具

2026-06-23 #Docker#Fizzy

Fizzy 介绍

Fizzy (https://fizzy.do) 是由著名软件公司 37signals(开发过 Basecamp 和 HEY 的团队)推出的一款全新 看板 任务管理工具。主打快速、简单、色彩鲜明,非常适合用来跟踪 Bug、想法、小项目和内容流程。

与 Jira、ClickUp、Asana 堆叠型项目管理工具不同,Fizzy 使用的是 卡片 + 列 的 UI 界面,使用只需要创建看板、添加卡片、移动状态、分配任务、接收通知,适合小型、轻量、边界清晰的工作流。

Fizzy 界面预览:

Fizzy 界面预览

Fizzy 的优势

  • 极简与速度: 没有复杂的菜单层级、AI 总结或多余的分析图表。界面色彩丰富且直观,专注于卡片和列的 Kanban 体验。
  • 人性化默认设置: 它支持自动关闭长期无人处理的卡片、Webhook、浏览器通知、公开看板链接、卡片记录等功能。保持看板的清爽,非常符合人类工作习惯。
  • 支持自托管: Fizzy 的 代码 完全开源,支持自己部署,官方提供预构建 Docker 镜像,适合 Selfhost 爱好者自己部署使用。
  • 实惠的价格: 如果你不想自己部署,使用官方服务前 1000 张卡片免费;超出后的付费方案为 每月 20 美元买断式(包含无限用户、无限卡片),没有令人头疼的按人头计费阶梯。

使用 Docker 部署

下面将介绍使用 Docker 部署 Fizzy 应用,使用 Caddy / Nginx 反代进行访问的方式。

验证 Docker 环境

Docker 环境验证命令:

1
2
docker --version
docker compose version

创建 docker-compose.yaml 文件

本文选择将容器部署在 /opt/fizzy 目录下,数据目录保存在相同的目录中,便于一键打包备份。

1
2
3
4
5
6
7
8
9
10
11
# 创建容器目录
sudo mkdir -p /opt/fizzy

# 进入容器目录
cd /opt/fizzy

# 创建数据目录
sudo mkdir storage

# 调整数据目录权限
sudo chown 1000:1000 storage
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
services:
fizzy:
image: ghcr.io/basecamp/fizzy:main
container_name: fizzy
restart: unless-stopped
ports:
- "127.0.0.1:3080:80"
# - "443:443"
environment:
# 必填:Rails secret
SECRET_KEY_BASE: "<SECRET_KEY_BASE>"
# 访问域名
BASE_URL: "https://fizzy.example.com"

# SMTP(用于 magic link 登录邮件)
# SMTP_ADDRESS: "mail.example.com"
# SMTP_USERNAME: "user"
# SMTP_PASSWORD: "pass"
# MAILER_FROM_ADDRESS: "Fizzy <[email protected]>"

# 可选:Web Push(如果你想要浏览器推送通知)
# VAPID_PUBLIC_KEY: "..."
# VAPID_PRIVATE_KEY: "..."

volumes:
- ./storage:/rails/storage

需要设置的部分:

  • SECRET_KEY_BASE: 使用 openssl rand -hex 32 命令生成,或是通过 简易工具 - Session Secret 网页生成
  • BASE_URL: 设置访问时的域名,Fizzy 注重安全设计,需要使用 https 访问

Fizzy 通过邮件发送 验证码 的方式进行登陆,如果希望发送邮件需要设置 SMTP 部分,但不是必须的,如果不设置 SMTP 可以使用后文随附 docker 命令查询。

启动 Docker 镜像

只需一行 Docker Compose 命令即可后台常驻启动

1
docker compose up -d

访问 Fizzy

首先我们设置 web 服务器的代理指向 3080

Nginx 反向代理配置

如果使用 Nginx 作为反向代理,可以创建一个新的站点配置,例如:

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
server {
listen 80;
server_name fizzy.example.com;

# 将 HTTP 自动跳转到 HTTPS
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
server_name fizzy.example.com;

ssl_certificate /etc/nginx/ssl/fizzy.example.com/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/fizzy.example.com/privkey.pem;

client_max_body_size 50M;

location / {
proxy_pass http://127.0.0.1:3080;

proxy_http_version 1.1;
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 https;

# WebSocket 支持
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}

如果你使用的是 Certbot 申请证书,也可以先配置 HTTP 站点,再执行:

1
sudo certbot --nginx -d fizzy.example.com

证书配置完成后,访问 https://fizzy.example.com 即可打开 Fizzy。

Caddy

Caddy 反向代理配置

如果使用 Caddy,配置会更加简单。编辑 Caddyfile:

1
2
3
fizzy.example.com {
reverse_proxy 127.0.0.1:3080
}

Caddy 会自动申请和续期 HTTPS 证书,只需要确保域名已经正确解析到服务器,并且服务器的 80443 端口已经放行。

修改完成后,重新加载 Caddy:

1
sudo systemctl reload caddy

然后访问:

1
https://fizzy.example.com

即可进入 Fizzy 登录页面。

注册登录

然后打开浏览器即可 BASE_URL 的域名即可打开登录页面

fizzy-login.png

Fizzy 只能通过邮箱接收验证码进行登陆,如果你设置了正确的 SMTP,在邮箱查看验证码即可。

使用 Docker 命令获取验证码

如果觉得只是个人使用,不想设置 SMTP,可以通过下面的命令手动查询最后生成的验证码:

1
docker compose exec fizzy bin/rails runner 'p MagicLink.column_names; p MagicLink.last&.attributes'

输出内容

1
{"id" => "abcdefg.....", "code" => "ABCEFG",

使用 code 后面的六个字符登陆即可。

使用介绍

输入验证码登陆后,即可进入 Fizzy 的 Playground 主面板,目前 Fizzy 仅支持英文界面。

fizzy-playgroud.png

在 Fizzy 中,每一列是一个看板,可以用于表示任务的状态或是属性,自带的卡片会介绍 Fizzy 的使用方法。简

单的来说,对于默认三个看板:

  • NotNow: 现在不需要处理的任务,超过 30 天没有更新卡片将自动移动到这里
  • MAYBE?: 可能需要处理的任务
  • DONE: 已完成的任务

可以点击 DONE 右侧的 + 可以根据需要创建自定义看板

现在就开始规划整理你的任务吧!

安全提示

如果将 Fizzy 部署在云端服务器中, Docker 容器端口不要使用 "3080:80" 直接监听公网,建议使用 "127.0.0.1:3080:80",再通过 Nginx 或 Caddy 反向代理提供 HTTPS 访问。

评论
分享

评论