CalDAV网页客户端AgenDAV

news2024/12/23 12:02:21

在这里插入图片描述

什么是 AgenDAV ?

AgenDAV 是一个类似于 Google 日历的 CalDAV 网络客户端,具有 AJAX 界面,允许用户管理自己的日历和共享的日历。

注意事项

  • AgenDAV依赖于 CalDAV 服务器(BaïkalDAViCal 等),所以需要先安装 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_NAME127.0.0.1
AGENDAV_TITLE"Welcome to Example Agendav Server"
AGENDAV_FOOTER"Hosted by Example Company"
AGENDAV_ENC_KEYmy_encrypt10n_k3y
AGENDAV_CALDAV_SERVERhttps://baikal.example.com/cal.php
AGENDAV_CALDAV_PUBLIC_URLhttps://baikal.example.com
AGENDAV_TIMEZONEUTC, UTC+1,Europe/Berlin
AGENDAV_LANGen
AGENDAV_LOG_DIR/tmp/
  • AGENDAV_ENC_KEY 估摸着应该是类似我们之前用的 JWT_SECRET
  • AGENDAV_CALDAV_SERVER 用的是 cal.php 而不是我们前面用的 dav.php,老苏去看了下源码,这两个文件都存在

在这里插入图片描述

但代码有点小差异

在这里插入图片描述

老苏试了下,不论写哪个都能正常用,但还是建议按官方的示例用cal.php

如果 Baikal反代了,这里 AGENDAV_CALDAV_SERVERAGENDAV_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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/144649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试员在面试中常遇问题

目前&#xff0c;疫情已经逐渐得到了控制&#xff0c;各行各业都掀起了复工大潮。与此同时&#xff0c;软件测试的招聘需求也随着复工的开始而变得紧急起来&#xff0c;而求职者应该怎样抓住机会进行应聘呢&#xff1f;首先最重要的就是多刷面试题&#xff0c;这样才能才面试过…

CSS权威指南(五)字体

文章目录1.字体族2.font-face3.字重&#xff08;font-weight&#xff09;4.字号&#xff08;font-size&#xff09;5.字形&#xff08;font-style&#xff09;6.字体拉伸&#xff08;font-stretch&#xff09;7.字距&#xff08;font-kerning&#xff09;8.字体变形&#xff08…

Python 办公自动化,全网最全整理来了!拒绝无效率加班!

大家好&#xff0c;今天给大家分享一篇 Python 自动化办公干货&#xff0c;整整42个实战项目案例。每一个项目案例都有详细的视频讲解&#xff0c;是一套非常全面的Python自动化办公项目&#xff0c;建议大家收藏后学习&#xff0c;梳理不易&#xff0c;记得点赞支持。详细目录…

【菜菜的CV进阶之路 - 深度学习环境搭建】常用软件安装

四、安装网易云 双系统装完了&#xff0c;下一步当然是&#xff0c;休息一下&#xff0c;听一首歌啦~ 1、连网&#xff1a;只能使用wifi连&#xff0c;网线直连的话&#xff0c;还需要配置 2、安装网易云&#xff1a; 下载最新的Linux安装包&#xff0c;然后 sudo apt inst…

数据的存储(C语言)

数据类型&#xff1a; 要了解数据是如何存储的&#xff0c;我们就得先知道C语言中的数据类型 基本数据类型 基本数据类型&#xff0c;也就是C语言内置类型&#xff1a; char -> 字符型 short -> 短整型 int -> 整…

html textarea 插入字符在光标处

textarea 插入字符在光标处前言深度解析1 效果图上代码前言 深度解析 1 效果图 上代码 <!DOCUMENT><html><head> <link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css&qu…

Semantic Segmentation | 评价指标代码解析

如有错误&#xff0c;恳请指出。 文章目录1. 定义解析2. 代码解析之前有记录过关于图像语义分割的相关评价指标与经典网络&#xff0c;在看PointNet的语义分割训练脚本的时候&#xff0c;图像的语义分割和点云的语义分割其实本质上是一致的。所以这里想记录一下语义分割的评价指…

MySQL下载及使用navicat连接mysql数据库(含下载地址、超具体细节、推荐数据库教程)

目录下载地址安装流程第一步&#xff1a;开始安装第二步&#xff1a;类型选择第三步&#xff1a;developer default第四步&#xff1a;execute第五步&#xff1a;服务器配置窗口第六步&#xff1a;网络类型配置窗口第七步&#xff1a;第八步&#xff1a;服务器密码设置窗口第九…

Vue全家桶 Pinia状态管理

Pinia状态管理1. Pinia和Vuex的对比2. 创建Pinia的Store3. Store 简介与使用4. Pinia核心概念State5. Pinia核心概念Getters6. Pinia核心概念ActionsPinia开始于大概2019年&#xff0c;最初是作为一个实验为Vue重新设计状态管理&#xff0c;让它用起来像组合式API&#xff0c;从…

[C语言]初步的来了解一下指针(多图详解)

目录 1.指针是什么 2.指针类型 2.1指针类型的意义(-整数) 2.2指针的解引用 3.野指针 3.1野指针出现的情况 3.2 如何规避野指针 4.指针运算 4.1指针-整数 4.2指针-(减)指针 5.二级指针 1.指针是什么 指针是内存中最小的单元编号&#xff0c;也就是地址。指针还可以是一种…

录屏软件电脑版免费哪个好?4款免费屏幕录制软件下载

在电脑上经常能使用的录屏功能&#xff1a;录制软件的操作过程、精彩的游戏瞬间、经典的影视故事、网络教学等。许多人都在问&#xff0c;录屏软件电脑版哪个好&#xff1f;Windows平台上有很多录屏软件&#xff0c;如果对录屏需求不高的朋友&#xff0c;可以通过内置的视频软件…

08线性回归+基础优化算法

P2基础优化算法 1.最常见的优化算法——梯度下降&#xff0c;用在模型没有显示解的情况下&#xff08;线性回归有显示解&#xff0c;但是现实中很少有这样理想的情况&#xff09; 2.梯度下降的实现方法&#xff1a;沿着反梯度更新方向参数求解 解释&#xff1a; 超参数&#x…

HTTP_day03

当键入网址后&#xff0c;到网页显示&#xff0c;其间发生了什么&#xff08;下&#xff09; 掘金地址 键入 localhost ,通过 Wireshark 抓包分析&#xff0c;抓包结果如下图所示 抓包结果 我们知道 HTTP 协议是运行在 TCP/IP 基础 之上的。 浏览器 通过 HTTP 接收和发送数据…

怎么才能写出好的代码

前言这是一篇如何写好代码的水文&#xff0c;因为最近输出了不少干货&#xff0c;但是大家点赞太少&#xff0c;我越来越没有激情了&#xff0c;那就放放水啦。所以如果大家觉得我的分享对你有用&#xff0c;动动发财小手&#xff0c;赞起来吧&#xff01;虽然是一篇水文&#…

谷粒学苑项目-第一章数据库设计与项目结构-1.1

一、数据库设计 1、数据库 guli2、数据表 CREATE TABLE edu_teacher (id char(19) NOT NULL COMMENT 讲师ID,name varchar(20) NOT NULL COMMENT 讲师姓名,intro varchar(500) NOT NULL DEFAULT COMMENT 讲师简介,career varchar(500) DEFAULT NULL COMMENT 讲师资历,一句话说…

Java--经典九道练习题

文章内容 一、用户登录 二、遍历字符串 三、统计字符个数 四、拼接字符串 五、字符串反转 六、金额转换&#xff08;较难&#xff09; 七、手机号屏蔽 八、身份证号码信息查看 九、游戏骂人敏感词替换 一、用户登录 一直正确的用户名和密码&#xff0c;请用程序实现模…

获取当前进程的启动程序

本文迁移自本人网易博客&#xff0c;写于2012年3月23日&#xff0c;获取当前进程的启动程序 - lysygyy的日志 - 网易博客 (163.com)1.获取当前进程的启动程序CString sFile;GetModuleFileName(NULL, sFile.GetBuffer(), 255);2.获取文件类型3.Autocad文档交互时&#xff0c;使用…

Camera | 1.Camera基础知识

一口君最近在玩瑞芯微的板子&#xff0c;之前写了几篇基于瑞芯微的文章&#xff0c;大家可以学习一下。 《瑞芯微rk356x板子快速上手》 《Linux驱动|rtc-hym8563移植笔记》 《Linux驱动 | Linux内核 RTC时间架构》 《瑞芯微 | 摄像头ov13850移植笔记》 《rk3568 | 瑞芯微平…

图的生成树与生成森林

文章目录连通图与连通分量强连通图与强连通分量图的连通性判断生成树深度优先生成树邻接表邻接矩阵广度优先生成树邻接表邻接矩阵生成森林获取边弧的权值源代码连通图与连通分量 在无向图中, 若从顶点v到顶点w有路径存在, 则称v和w是连通的. 若图G中任意两个顶点都是连通的, 则…

动态规划--矩阵链相乘问题

明确原始问题A[1:n]&#xff1a;计算矩阵链 所需的最小乘法次数。 &#xff08;1&#xff09;是否满足最优子结构&#xff0c;问题的解是否包含子问题的优化解&#xff1f; 若计算A[1:n]的优化顺序在k处断开矩阵链&#xff0c;即A[1:n]A[1:k]A[k1:n],则在A[1:n]的优化顺序中&a…