今天给大家分享一个基于 Markdown 文件的自托管任务管理看板 Tasks.md。
介绍
Tasks.md 的作者在寻找自托管的任务管理程序的时候,没有找到完全符合需求的—有些应用程序功能过于臃肿,有些操作不便,还有些安装过程太复杂,因此他决定自己开发一个。尽管它还处于早期开发阶段,但他对目前已有的几个功能感到非常满意。
Tasks.md 是一个任务管理应用程序,它使用 Markdown 文件作为卡片,只需一个 Docker 容器即可轻松安装。
特点
- 在现代化、响应迅速的界面中创建卡片、看板和标签;
- 使用 Markdown 文件编写卡片内容;
- 只需一个 Docker 镜像即可轻松安装;
- 提供与操作系统设置同步的明暗主题;
- 支持高度自定义,内置 3 种默认配色方案(Adwaita、Nord 和 Catppuccin);
- 支持基于子路径的反向代理配置,并提供用于设置基本路径的环境变量;
- 可以作为渐进式网页应用(PWA)安装使用。
地址
GitHub:https://github.com/BaldissaraMatheus/Tasks.md
Docker Hub:https://hub.docker.com/r/baldissaramatheus/tasks.md
Tasks.md 展示

安装
1. SSH 登入服务器
这里使用一款基础的 1 CPU Core,2G RAM 的 VPS,运行 Debian 12 系统,来进行安装测试 Tasks.md。
首先使用 SSH 客户端登入 VPS 终端。
下面的步骤也适用于可以安装和使用 Docker 的系统,例如可以安装 Docker Desktop 的 Windows 或 Mac。
2. 安装 Docker 与 Docker Compose
参考下面文章安装好 Docker 与 Docker Compose:
3. 创建安装目录
我们给 Tasks.md 创建一个安装目录存放 Compose 配置文件,推荐创建在 /home
目录下,
cd /home mkdir tasks cd tasks
4. 创建 Compose 配置文件
创建 docker-compose.yml
文件,
touch docker-compose.yml
参考项目给出的配置,使用文本编辑器写入以下内容,
version: "3" services: tasks.md: image: baldissaramatheus/tasks.md container_name: tasks.md environment: - PUID=1000 - PGID=1000 volumes: - ./tasks:/tasks - ./config:/config restart: unless-stopped ports: - 8080:8080
在配置段 '8080:8080'
中,前面的数字是我们访问 的端口,可以修改成任意未被占用的端口号。
这里可以通过 Linux 系统上的文本编辑器,如 vi 打开 docker-compose.yml
,
vi docker-compose.yml
按 i 切换到编辑模式,将上面的内容粘贴进去,完成后先按一下 esc,然后输入 :wq
保存退出;
也可以使用 FinalShell 等 SSH 客户端的可视化编辑功能,双击打开 /home/tasks/docker-compose.yml
,直接将上面的内容粘贴进去。
5. 启动容器
最后 Docker Compose 创建、启动容器,
docker-compose up -d
等待几分钟,打开本地浏览器输入 IP:8080 即可开始访问搭建好的 Tasks.md。
配置反向代理
搭建好的 Tasks.md 以IP:端口
的形式暴露访问,为了方便和安全,推荐为 Tasks.md 配置反向代理,实现使用带 SSL/TLS 证书的域名来访问、使用容器。
为 Docker 容器配置反向代理的时候,假如我们有一个域名 example.com 用来反向代理,最佳实践是通过这个主域名的子域名来访问某个 Docker 容器。例如我有一个域名 044447.xyz,就可以通过子域名 tasks.044447.xyz 来访问 Tasks.md。
Cloudflare Tunnel
参考下面文章配置 Cloudflare Tunnel 进行反向代理:
Caddy
参考下面文章配置 Caddy 进行反向代理:
Nginx
暂未更新。
配置完,就可以使用域名访问 Tasks.md 了。

更新、备份与卸载
更新
进入项目目录,
cd /home/tasks
拉取最新的容器镜像,
docker-compose pull
热更新容器,
docker-compose up -d
删除所有未被容器使用的镜像。
docker image prune
备份
Tasks.md 的程序文件存储到了这两个文件夹,我们备份一下这两个文件夹即可。
卸载
进入项目目录,
cd /home/tasks
停止正在运行中的容器,
docker-compose down
回到根目录,删除所有停止的容器、镜像及容器数据。
cd .. docker image prune -a