什么是 AgenDAV ?
AgenDAV
是一个类似于CalDAV
网络客户端,具有AJAX
界面,允许用户管理自己的日历和共享的日历。
注意事项
AgenDAV
依赖于CalDAV
服务器(Baïkal
、DAViCal
等),所以需要先安装Baïkal
;- 使用
Baïkal
作为后端的CalDAV
服务器,WebDAV authentication type
必须Basic
类型;
低版本内核( Linux kernel < 3.16
)上会出现下面的错误
[Tue Nov 01 05:44:11.089128 2022] [:crit] [pid 268] (38)Function not implemented: AH00141: Could not initialize random number generator
Action '-D FOREGROUND' failed.
这个 AH00141
错误除了换机器折腾外,老苏也没有更好的办法
你可以在
SSH
客户端,输入uname -a
查看内核版本
安装
ghcr.io 镜像下载
·AgenDAV
官方的镜像没有发布在 docker hub
,而是在 ghcr.io
,所以直接用命令行来安装。
在 SSH
客户端中依次执行下面的命令
# 下载镜像
docker pull ghcr.io/nagimov/agendav-docker:latest
如果没有科学上网,很可能会拉不动,可以试试 docker
代理网站:https://dockerproxy.com/,但是会多几个步骤
# 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/nagimov/agendav-docker:latest
# 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/nagimov/agendav-docker:latest ghcr.io/nagimov/agendav-docker:latest
# 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/nagimov/agendav-docker:latest
docker cli 安装
# 运行容器
docker run -d \
--name=agendav \
--restart always \
-p 13280:80 \
-e AGENDAV_SERVER_NAME=127.0.0.1 \
-e AGENDAV_TITLE="老苏的 Agendav Server" \
-e AGENDAV_FOOTER="老苏的日历" \
-e AGENDAV_ENC_KEY=my_encrypt10n_k3y \
-e AGENDAV_CALDAV_SERVER=http://192.168.0.197:13281/cal.php \
-e AGENDAV_CALDAV_PUBLIC_URL=http://192.168.0.197:13281 \
-e AGENDAV_TIMEZONE=Asia/Shanghai \
-e AGENDAV_LANG=en \
-e AGENDAV_LOG_DIR=/tmp/ \
ghcr.io/nagimov/agendav-docker:latest
环境变量 | 官方的示例 |
---|---|
AGENDAV_SERVER_NAME | 127.0.0.1 |
AGENDAV_TITLE | "Welcome to Example Agendav Server" |
AGENDAV_FOOTER | "Hosted by Example Company" |
AGENDAV_ENC_KEY | my_encrypt10n_k3y |
AGENDAV_CALDAV_SERVER | https://baikal.example.com/cal.php |
AGENDAV_CALDAV_PUBLIC_URL | https://baikal.example.com |
AGENDAV_TIMEZONE | UTC , UTC+1 ,Europe/Berlin |
AGENDAV_LANG | en |
AGENDAV_LOG_DIR | /tmp/ |
AGENDAV_ENC_KEY
估摸着应该是类似我们之前用的JWT_SECRET
;AGENDAV_CALDAV_SERVER
用的是cal.php
而不是我们前面用的dav.php
,老苏去看了下源码,这两个文件都存在
但代码有点小差异
老苏试了下,不论写哪个都能正常用,但还是建议按官方的示例用cal.php
如果 Baikal
反代了,这里 AGENDAV_CALDAV_SERVER
和 AGENDAV_CALDAV_PUBLIC_URL
填域名
docker-compose 安装
将下面的内容保存为 docker-compose.yml
文件
如果你和老苏一样使用了中文,记得文件保存要用
utf-8
格式;
version: "2"
services:
agendav:
image: ghcr.io/nagimov/agendav-docker:latest
container_name: agendav
restart: always
ports:
- "13280:80"
environment:
- AGENDAV_SERVER_NAME=127.0.0.1
- AGENDAV_TITLE=老苏的 Agendav Server
- AGENDAV_FOOTER=老苏的日历
- AGENDAV_ENC_KEY=my_encrypt10n_k3y
- AGENDAV_CALDAV_SERVER=http://192.168.0.197:13281/cal.php
- AGENDAV_CALDAV_PUBLIC_URL=http://192.168.0.197:13281
- AGENDAV_TIMEZONE=Asia/Shanghai
- AGENDAV_LANG=en
- AGENDAV_LOG_DIR=/tmp/
然后执行下面的命令
# 新建文件夹 kavita 和 子目录
mkdir -p /volume2/docker/agendav
# 进入目录
cd /volume2/docker/agendav
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
运行
在浏览器中输入 http://群晖IP:13280
就能看到登录界面
用之前在
Baikal
后台创建的用户登录
登录成功之后
新建一个日程
保存之后可以在日历上看到
打开小米手机,手动同步后就能看到了
自动同步多久能看到,取决于你设置的同步时间;
参考文档
agendav/agendav: A CalDAV web client similar to Google Calendar
地址:https://github.com/agendav/agendav
nagimov/agendav-docker: Docker image for agendav
地址:https://github.com/nagimov/agendav-docker