通过 npm 全局安装:
$ npm i -g gagu
在 macOS 上你可能需要用到 sudo 命令:
$ sudo npm i -g gagu
显示帮助信息:
$ gagu -h
$ gagu --help
启动服务:
$ gagu
启动并在浏览器中打开:
$ gagu -o
$ gagu --open
使用 HTTPS 打开:
$ gagu -s
$ gagu --security
使用指定 Host 启动:
$ gagu -H 0.0.0.0
$ gagu --Host 0.0.0.0
使用指定端口号启动:
$ gagu -p 80
$ gagu --port 80
显示当前版本号:
$ gagu -v
$ gagu --version
清除 WORKSPACE/.gagu/data 目录:
$ gagu --reset
清除 WORKSPACE/.gagu 目录:
$ gagu --reset-all
停止服务:
# `Ctrl + C` 或关闭终端
GAGU 的运行需要本地提供一个属于自己的根目录 GAGU_PATH.ROOT 来存储一些数据。
每次启动服务时,GAGU 会检测这个根目录是否存在,如不存在,则会自动在工作空间创建一个名为 .gagu 的根目录。
在不同的平台会选择不同的工作空间来创建,此处假设登录设备的用户名为 jay:
C:/Users/jay/.gagu
/Users/jay/.gagu
/home/jay/.gagu
/data/data/com.termux/files/home/.gagu
/data/data/com.termux/files/home/storage/shared 指向的是安卓系统挂载的内部存储,在 Termux 中需要通过 termux-setup-storage 获取。
Termux 的使用可以参考 Termux Wiki 或者 Termux 高级终端安装使用配置教程。
GAGU 的根目录 .gagu 是一个以 . 开头命名的隐藏文件夹,在设备上可以通过具体的设置显示出来,但在 GAGU 的 API 中会被强制过滤,即使是拥有管理员权限的用户也无法在 GAGU 的 Web 页面中访问到它。
根目录创建成功后,会继续创建以下子目录:
.gagu
|- data
|- log
|- public
| |- avatar
| |- image
| |- lib
|- secrets
|- thumbnail
|- users
data 用于持久化存储一些用户、登录、下载通道、设置等 JSON 格式的数据文件log 用于存放 API 日志public/avatar 用于存放用户头像,文件名即用户名public/image 用于存放一些配置图片public/lib 用于存放将来可能会用到的第三方 js 库secrets 用于存放 HTTPS PEM 文件thumbnail 用于存放使用中生成的缩略图users 用于存放用户个人文件在 GAGU 的文件管理器中访问到可显示缩略图的文件时,GAGU 会以该文件的“全路径”加上“修改时间”进行 md5 运算得到一个 32 位长度的字符串,然后请求 .gagu/thumbnail 下与该字符串同名的缩略图文件,如不存在,则调用缩略图接口生成并返回。
const { mtimeMs } = statSync(path)
const thumbnailId = md5(`${path}-${mtimeMs}`)
所以,在文件没有发生变化(移动位置、修改)时,第一次获取缩略图需要一定的时间,你可以在“设置”中对包含需要展示缩略图文件的目录使用“缩略图主动生成”的功能,以提高浏览体验。
GAGU 在生成缩略图时需要借助 ffmpeg 和 GraphicsMagick 的接口,如果是 PDF 文件,还需要安装 Ghostscript。你可以选择性地安装它们,不安装并不会影响到 GAGU 主要功能的使用,所有的文件都有默认的类型图标展示。
GAGU 服务的默认端口号为 9293,服务启动后,在本地可以通过 http://127.0.0.1:9293 访问,局域网内其它设备访问则将其中的 IP 替换为服务设备的内网 IP 即可。
我在家用的路由器中给 13 英寸的 Mac 分配了一个固定 IP
192.168.31.13,并将路由器 hosts 中的mac.io域名指向192.168.31.13,在 Mac 上以80端口启动 GAGU 服务,现在,局域网内的每一台设备都可以通过浏览器访问http://mac.io使用 Mac 上的 GAGU 服务。我还给手机分配指定了更短的i.io。
端口号有两种修改方式:
gagu -p 80 修改(二进制版不支持)命令参数的修改优先级最高,其次为设置中的修改,最后是默认端口号。
第一次启动服务时,GAGU 会自动生成一个拥有全部权限的默认账号。
Username: gagu
Password: 9293
第一次登录时,只能使用该默认账号登录。