PassNAT LogoPassNAT

自托管习惯追踪应用Beaver Habit Tracker,NAS极简部署内网穿透远程打卡

作者

小编

发布时间

Curving abstract shapes with an orange and blue gradient

项目介绍

Beaverhabits(Beaver Habit Tracker)是一个自己部署的习惯打卡板。左边一列是你给自己立的习惯,右边是最近几天,今天做到了就点一下,格子变成勾。它不做目标管理、不做复杂的统计,就是一块「做没做」的板子 —— 要的就是打开两秒点完就走。

坚持下来之后,连成一片的勾本身就是最直观的反馈。数据存在你自己 NAS 的一个目录里,跟着 NAS 一起备份,不用把自己每天干了什么交给别人的服务器。

它基于 Python 和 NiceGUI,一个容器就够,占用很小;页面也适配手机,可以在 iPhone 上「添加到主屏幕」当独立应用用。

项目地址:点我跳转

部署安装

装在自己的 NAS 上之后,它默认只有家里的网能打开 —— 而打卡这件事恰恰是「人在外面,睡前想起来今天还没点」的时候最需要。我家是移动宽带,没有公网 IP,所以用 帕斯内网穿透 把它开放到公网,飞牛的应用中心里就能直接装到插件,不用另外找工具。下面这套流程在飞牛 NAS 上从头到尾走一遍。

第一步:准备编排文件

下面这份编排可以直接用,整段复制走。

1services:
2 beaverhabits:
3 image: daya0576/beaverhabits:latest
4 container_name: beaverhabits
5 user: "1000:1000"
6 restart: unless-stopped
7 ports:
8 - "3044:8080"
9 environment:
10 - HABITS_STORAGE=USER_DISK
11 - INDEX_HABIT_DATE_COLUMNS=5
12 volumes:
13 - ./beaver:/app/.user/

要认的就四处。

镜像:第一行 daya0576/beaverhabits:latest,跟着上游文档写,不用钉版本号。

user:这一行让容器用 1000:1000 这个身份去写文件,也就是飞牛里普通用户的身份 —— 不写的话容器用 root 建目录,以后你在文件管理里想动那些数据会没有权限。

端口:冒号左边的 3044 是 NAS 上对外的端口,浏览器敲它,建隧道时也填它;右边的 8080 是容器内部的端口,不要动。3044 被别的容器占了就换一个没用过的。

数据目录:./beaver 是所有习惯和打卡记录存的地方,相对编排文件所在的目录,所以整个项目文件夹拷走就是一份完整备份。

有一个变量,建议你不要设

TRUSTED_LOCAL_EMAIL:设了它,来自「本地」的请求就不用登录直接进应用。

如果你像下面这样用内网穿透把它开放到公网,一定不要设这个变量 —— 穿透客户端跑在你自己的 NAS 上,它转发进来的请求在容器看来就是「本地」,于是「本地免登录」会变成「谁拿到公网地址谁就能直接进你的应用」。不设它完全不影响使用:第一次打开点一下注册,自己建个账号就行。

第二步:在飞牛上建 Compose 项目

打开飞牛的 Docker 应用,切到上面的 Compose,点新增项目。项目名称填 beaverhabits。

路径这一栏点开,在自己那个文件夹里新建一个空文件夹再选中它,点确认。编排和上面说的 beaver 数据目录以后都放在这儿 —— 一个项目一个文件夹,以后要备份或者搬走,认这个文件夹就行。

来源选「创建 docker-compose.yml」,把上面那份编排整段贴进来。勾上「创建项目后立即启动」,点创建。会弹出一个构建日志的小窗,跑完关掉就行。容器很轻,十秒上下就起来了,端口就是刚才那个 3044。

第三步:用内网穿透开放到公网

容器跑起来之后,先别急着在内网点来点去 —— 下一步直接把它开放到公网,后面注册账号、加习惯、打卡全都在公网地址上做,能省掉一轮返工。

PassNAT 就在飞牛的应用中心里,搜一下装上,打开它,账号登一次就行。

在插件里点创建隧道:名字随便起;传输协议选 TCP;本地 IP 这一栏留空就好,默认就是 127.0.0.1,不用去查自己 NAS 的局域网地址;本地端口填上面那个 3044。

建好之后点开这条隧道的详情,把电源按一下,等它转成运行中。面板上那一行「IP:端口」就是分给你的公网地址,之后在外面打开的就是它。

第四步:在公网地址上把账号建好

用刚拿到的公网地址打开,还是那块板子。第一次打开点一下注册,账号自己建一个,之后直接就进来了。

这一步别拖 —— 从隧道启动到账号建好之间,这台实例是无主的,谁先打开谁就能注册成它的主人,所以隧道一通电就马上把账号建掉。

怎么用

加习惯就在这一页:最下面那个空框里打字,回车就多一条。名字随便写,中文也行。不想要了在旁边的菜单里可以改名或者删掉。

打卡就是点格子。右边默认显示最近五天,今天做到了点一下变成勾,点错了再点一下就取消。想一次看更长的跨度,把编排里的 INDEX_HABIT_DATE_COLUMNS 调大再重建即可。

在外面把今天这一列点上,回头换台设备打开同一个公网地址,刚才点的还在 —— 记录是存在 NAS 上的,不跟着浏览器走。人不在家,打卡也不断签。

一些使用上的细节

数据全在项目文件夹的 beaver 目录里,是普通文件。想搬到另一台机器,把整个文件夹拷过去、用同样的编排起一个容器,打开还是原来那些习惯。

在 iPhone 上用 Safari 打开公网地址,点分享里的「添加到主屏幕」,之后从桌面图标进去就是一个没有浏览器地址栏的独立应用,点起来跟原生 App 差不多。

暂时不想让外面访问的话,去 PassNAT 插件里把那条隧道的电源关掉就行,内网照常用,容器不用动。