日程安排工具Cal.com的安装

在这里插入图片描述

什么是 Cal.com (原 Calendso) ?

Cal.com 是一个现代化、灵活且功能强大的开源日程管理平台,旨在为用户提供全面的控制权和定制能力,是适合每个人的活动日程安排程序,被誉为 Calendly 的继任者。它的最大特点是完全开源,用户可以完全掌控自己的数据、工作流程和外观设计。

Cal.com 就是三年前老苏介绍过的 Calendso。之所以重新写,是因为有网友反馈折腾不成功。老苏抽空看了一下,确实变化有点大。很有必要更新下文档,来适应现在的镜像

文章传送门:日程安排工具Calendso

准备工作

因为要和第三方应用集成,比如老苏选择了 Outlook Calendar,其中的回调地址,必须是可公网访问的 https 协议地址,所以我们第一步需要通过反代处理,实现 https 协议,第二步是获取到Microsoft Graph 客户端 ID 和密钥。

当然你只打算局域网随便用用,这一步可能是非必须的,但老苏没测试过,行不行你得自己试试才知道

反向代理

准备好两个子域名。

不能用 tailscale + npm 方案,因为 tailscale 是私有地址

域名局域网地址备注
cal.laosu.techhttp://192.168.0.197:5554Cal.com 的访问地址
api.laosu.techhttp://192.168.0.197:5555API 的访问地址

没有什么特殊设置,所以就不放图了

集成 Outlook Calendar

可以参考 Calendso集成 Outlook 日历章节,这里就不赘述了

也可以参考官方文档:https://github.com/calcom/cal.com#obtaining-microsoft-graph-client-id-and-secret

官方的文档的集成(Integrations)比较全,如果你要集成其他的应用,例如 Google,也可以参考

安装

在群晖上以 Docker 方式安装。

env.txt

env.txt 中是 Cal.com 的环境变量文件,包含了需要的设置

# Set this value to 'agree' to accept our license:
# LICENSE: https://github.com/calendso/calendso/blob/main/LICENSE
#
# Summary of terms:
# - The codebase has to stay open source, whether it was modified or not
# - You can not repackage or sell the codebase
# - Acquire a commercial license to remove these terms by emailing: license@cal.com
NEXT_PUBLIC_LICENSE_CONSENT=
LICENSE=# BASE_URL and NEXT_PUBLIC_APP_URL are both deprecated. Both are replaced with one variable, NEXT_PUBLIC_WEBAPP_URL
# BASE_URL=http://localhost:3000
# NEXT_PUBLIC_APP_URL=http://localhost:3000NEXT_PUBLIC_WEBAPP_URL=https://cal.laosu.tech
NEXT_PUBLIC_API_V2_URL=https://api.laosu.tech/api/v2# Configure NEXTAUTH_URL manually if needed, otherwise it will resolve to {NEXT_PUBLIC_WEBAPP_URL}/api/auth
# NEXTAUTH_URL=http://localhost:3000/api/auth# It is highly recommended that the NEXTAUTH_SECRET must be overridden and very unique
# Use `openssl rand -base64 32` to generate a key
NEXTAUTH_SECRET=K/63DVPNhaFDT2U//fhOoPE1HeygLPzTOiRkCYNphmw=# Encryption key that will be used to encrypt CalDAV credentials, choose a random string, for example with `dd if=/dev/urandom bs=1K count=1 | md5sum`
CALENDSO_ENCRYPTION_KEY=deLkL83PbUARmr76# Deprecation note: JWT_SECRET is no longer used
# JWT_SECRET=secretPOSTGRES_USER=calendso
POSTGRES_PASSWORD=CYSCJe7kh*!gkdTB
POSTGRES_DB=calendso
DATABASE_HOST=database:5432
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}/${POSTGRES_DB}
# Needed to run migrations while using a connection pooler like PgBouncer
# Use the same one as DATABASE_URL if you're not using a connection pooler
DATABASE_DIRECT_URL=${DATABASE_URL}
GOOGLE_API_CREDENTIALS={}# Set this to '1' if you don't want Cal to collect anonymous usage
CALCOM_TELEMETRY_DISABLED=# Used for the Office 365 / Outlook.com Calendar integration
MS_GRAPH_CLIENT_ID=
MS_GRAPH_CLIENT_SECRET=# Used for the Zoom integration
ZOOM_CLIENT_ID=
ZOOM_CLIENT_SECRET=# E-mail settings
# Configures the global From: header whilst sending emails.
EMAIL_FROM=wbsu2003@88.com# Configure SMTP settings (@see https://nodemailer.com/smtp/).
EMAIL_SERVER_HOST=smtp.88.com
EMAIL_SERVER_PORT=465
EMAIL_SERVER_USER=wbsu2003@88.com
EMAIL_SERVER_PASSWORD=NODE_ENV=production

源文件在:https://github.com/calcom/docker/blob/main/.env.example

这里老苏只简单介绍几个改了的参数

  • NEXT_PUBLIC_WEBAPP_URL:用我们前面反代的 Cal.com 的访问地址;
  • NEXT_PUBLIC_API_V2_URL:在我们设置的 API 访问地址后面还有加上 /api/v2
  • NEXTAUTH_SECRET:密钥,可以用 openssl rand -base64 32 来生成;
  • CALENDSO_ENCRYPTION_KEY:用于加密 CalDAV 凭据的加密密钥;
  • POSTGRES_DATABASE:为数据库设置;
    • POSTGRES_USER:数据库用户;
    • POSTGRES_PASSWORD:数据库用户对应的密码;
    • POSTGRES_DB:数据库库名;
    • DATABASE_HOST:包含主机和端口;
    • DATABASE_URL:数据库访问地址;
  • MS_GRAPH_CLIENT_ID:填入你的 Microsoft Graph 客户端 ID
  • MS_GRAPH_CLIENT_SECRET:填入你的 Microsoft Graph 密钥;
  • EMAIL_FROM:邮件发送用户;
  • EMAIL_SERVER_:邮件相关设置,还是以 88 邮箱为例
    • EMAIL_SERVER_HOSTSMTP 服务器地址;
    • EMAIL_SERVER_PORTSMTP 服务器端口;
    • EMAIL_SERVER_USER:邮件发送用户;
    • EMAIL_SERVER_PASSWORD:邮件中设置的第三方客户端密码;

docker-compose.yml

源文件在:https://github.com/calcom/docker/blob/main/docker-compose.yaml

老苏做了必要的微调,请将下面的内容保存为 docker-compose.yml 文件

# Use postgres/example user/password credentials
version: '3.8'services:database:image: postgrescontainer_name: cal-databaserestart: alwaysvolumes:- ./data:/var/lib/postgresql/data/env_file: env.txtcalcom:image: calcom/cal.comcontainer_name: cal-webrestart: alwaysports:- 5554:3000env_file: env.txtenvironment:- DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}/${POSTGRES_DB}- DATABASE_DIRECT_URL=${DATABASE_URL}depends_on:- database# Optional use of Prisma Studio. In production, comment out or remove the section below to prevent unwanted access to your database.studio:image: calcom/cal.comcontainer_name: cal-prismarestart: alwaysports:- 5555:5555env_file: env.txtenvironment:- DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}/${POSTGRES_DB}- DATABASE_DIRECT_URL=${DATABASE_URL}depends_on:- databasecommand:- npx- prisma- studio
# END SECTION: Optional use of Prisma Studio.

然后执行下面的命令

# 新建文件夹 calcom 和 子目录
mkdir -p /volume1/docker/calcom/data# 进入 calcom 目录
cd /volume1/docker/calcom# 将 docker-compose.yml 和 env.txt 放入当前目录# 一键启动
docker-compose --env-file env.txt up -d

运行

在浏览器中输入 https://cal.laosu.tech ,开始刷总是错误

老苏用的 cloudflared + npm,所以错误界面和局域网访问不一样

从日志看,启动时间

到出现向导界面

差不多用了半小时,首先要设置管理员用户

个人用的话,AGPLv3 License 是免费的

选择与 Cal.com 集成的应用程序,不知道怎么设的话,保持默认就可以

进入主界面

第一次还需要设置一些基本信息

选择集成的日历

根据我们的设置,选择了 Outlook Calendar,会需要登录认证

认证成功后

选择视频应用,老苏没有,直接选 Set up later 跳过了

设置你的可预约时间

默认是周一到周五,每天早上 9 点到下午 5

最后是个人简介,照片

终于完成了

进入左下角的 Setting --> General --> Language,下拉找到中文

Update 之后,界面就是中文了

根据我们的设置,访客可以看到的界面是下面👇这样的

可以根据我们开放的时间段进行预约

参考文档

calcom/cal.com: Scheduling infrastructure for absolutely everyone.
地址:https://github.com/calcom/cal.com

calcom/docker: The Docker configuration for Cal.com is an effort powered by people within the community. Cal.com, Inc. does not provide official support for Docker, but we will accept fixes and documentation. Use at your own risk.
地址:https://github.com/calcom/docker

Cal.com | Open Scheduling Infrastructure
地址:https://cal.com/zh-CN

calcom/cal.com - Docker Image | Docker Hub
地址:https://hub.docker.com/r/calcom/cal.com

Introduction - Cal.com Docs
地址:https://cal.com/docs/developing/introduction

Welcome | Design
地址:https://design.cal.com/

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

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

相关文章

论文阅读:Computational Long Exposure Mobile Photography (二)

这篇文章是谷歌发表在 2023 ACM transaction on Graphic 上的一篇文章,介绍如何在手机摄影中实现长曝光的一些拍摄效果。 Abstract 长曝光摄影能拍出令人惊叹的影像,用运动模糊来呈现场景中的移动元素。它通常有两种模式,分别产生前景模糊或…

Swift雨燕蜂窝无线通信系统介绍

本文博客链接:jdh99-CSDN博客,作者:jdh,转载请注明. 1. 概述 物联网小无线通信技术众多,其中大多是小范围小规模的无线通信技术,而行业难点是如何做到广覆盖、大容量、低功耗。 针对以上难点,宏讯物联研发了Swift雨燕蜂窝无线通信技术&…

基于双向长短期记忆网络(BiLSTM)的时间序列数据预测,15个输入1个输出,可以更改数据集,MATLAB代码

1. 数据收集与预处理 数据清洗:处理缺失值、异常值等。特征工程:提取有助于预测的特征。数据标准化:将时间序列数据标准化,使其具有零均值和单位方差,有助于模型训练。滑动窗口划分:将时间序列数据划分为多…

VMware Workstation 17.0虚拟机安装Ubuntu Server 22.04.5 LTS并配置SSH与XFTP详细过程

文章目录 一、安装VMware虚拟机二、在虚拟机中安装Ubuntu1、下载镜像文件2、“创建新的虚拟机”操作过程3、首次进入虚拟机的初始化配置 三、连接SSH1、下载XShell软件2、使用XShell连接虚拟机服务器 四、连接XFTP1、下载XFTP软件2、使用XFTP连接虚拟机服务器 一、安装VMware虚…

【Linux】编辑器vim 与 编译器gcc/g++

目录 一、编辑器vim: 1、对vim初步理解: 2、vim的模式: 3、进入与退出: 4、vim命令模式下的指令集: 移动光标: 删除: cv: 撤销: 其他: 5、vim底行模…

【单峰序列】

题目 代码 #include <bits/stdc.h> using namespace std;const int mod 1000000007;//快速幂求2的x次方 long long f(int x) {long long ans 1;long long base 2;while (x) {if (x % 2 1) {ans (ans * base) % mod; }base (base * base) % mod;x / 2; }return an…

开源 AI 智能名片 2+1 链动模式 S2B2C 商城小程序与私域流量圈层

摘要&#xff1a;本文探讨了私域流量圈层的特点以及其在当今时代的重要性&#xff0c;分析了开源 AI 智能名片 21 链动模式 S2B2C 商城小程序源码在私域流量圈层构建中的作用&#xff0c;阐述了产品在圈层时代被标签化的现象&#xff0c;并以实例展示了如何利用该小程序源码打造…

Django+websocket实现一个简单聊天

WebSocket是一种在单个TCP连接上进行全双工通信的协议。它由IETF在2011年定为标准RFC 6455&#xff0c;并由RFC7936补充规范&#xff0c;同时WebSocket API也被W3C定为标准。 1、定义与原理 WebSocket是独立的、创建在TCP上的协议&#xff0c;它使用HTTP/1.1协议的101状态码进…

Unreal5从入门到精通之如何解决在VR项目在头显中卡顿的问题

前言 以前我们使用Unity开发VR,Unity提供了非常便利的插件和工具来做VR。但是由于Unity的渲染效果不如Unreal,现在我们改用Unreal来做VR了,所有的VR相关的配置和操作都要重新学习。 今天就来总结一下,我在开发VR过程中碰到的所有问题。 1.编辑器,以VR运行 默认运行方式…

Python毕业设计选题:基于django+vue的宠物寄养平台的设计与实现

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 1. 前台系统功能模块 系统首页界面 用户注册界面 用户登录界面 宠物商城界面 宠物店…

第三届北京国际水利科技博览会将于25年3月在国家会议中心召开

由中国农业节水和农村供水技术协会、北京水利学会、振威国际会展集团等单位联合主办的第三届北京国际水利科技博览会暨供水技术与设备展&#xff08;北京水利展&#xff09;将于2025年3月31日至4月2日在北京•国家会议中心举办&#xff01; 博览会以“新制造、新服务、新业态”…

使用web.dev提供的工具实现浏览器消息推送服务

文章目录 前言实现工具和效果实现原理实现过程前端接收用户订阅请求将用户订阅信息更新到后端后端实现接收并保存订阅信息的接口后端实现消息推送的逻辑前言 对于电商独立站来说,新品上架或者促销活动上线及时通知到用户是很重要的,通知的渠道有很多,其中就包括浏览器消息推…

掌握AI Prompt的艺术:如何有效引导智能助手

开头叙述&#xff1a; 在人工智能的世界里&#xff0c;Prompt&#xff08;提示&#xff09;是沟通人类意图与机器理解之间的桥梁。它不仅是一串简单的文字&#xff0c;而是一把钥匙&#xff0c;能够解锁AI模型的潜力&#xff0c;引导它们执行复杂的任务。本文将探讨Prompt的重…

深度学习优化器【学习率调整和梯度修正,Optimizer】

文章目录 一、学习率调整1 余弦退火&#xff08;1&#xff09;Warm up&#xff08;2&#xff09;Cosine Anneal 2 AdaGrad3 RMSprop算法4 AdaDelta算法 二、梯度估计修正1 动量法2 Nesterov加速梯度3 Adam修正的原因 4 AdamW 三、总结参考资料 在当今快速发展的人工智能领域&am…

运算符重载详解,日期类型的实现

一、运算符重载 当运算符被⽤于类类型的对象时&#xff0c;C语⾔允许我们通过运算符重载的形式指定新的含义。C规定类类型对象使⽤运算符时&#xff0c;必须转换成调⽤对应运算符重载&#xff0c;若没有对应的运算符重载&#xff0c;则会编译报错。 类中含有多种变量&#xff0…

什么是FUSE用户态文件系统

零. 文件系统 1. 为什么要有文件系统 文件系统是操作系统中管理文件和目录的一种机制。它提供了组织、存储、检索和更新文件的方法&#xff0c;主要如下&#xff1a; 数据组织&#xff1a;文件系统将数据组织成文件和目录&#xff0c;使用户能够更方便地管理和查找文件。每个…

HarmonyOS 5.0应用开发——音频播放组件的封装

【高心星出品】 文章目录 音频播放组件的封装开发步骤封装类代码测试代码 音频播放组件的封装 鸿蒙中提供了AVPlayer来实现音频播放的功能&#xff0c;播放的全流程包含&#xff1a;创建AVPlayer&#xff0c;设置播放资源&#xff0c;设置播放参数&#xff08;音量/倍速/焦点模…

KPRCB结构之ReadySummary和DispatcherReadyListHead

ReadySummary: Uint4B DispatcherReadyListHead : [32] _LIST_ENTRY 请参考 _KTHREAD *__fastcall KiSelectReadyThread(ULONG LowPriority, _KPRCB *Prcb)

【染色时间】

题目 代码 #include <bits/stdc.h> using namespace std; #define x first #define y second typedef pair<int,int> PII; const int N 510; int dx[] {0,0,-1,1}, dy[] {-1,1,0,0}; int d[N][N], w[N][N]; int n, m; void bfs() {memset(d, 0x3f, sizeof d);q…

Apache Dubbo (RPC框架)

本文参考官方文档&#xff1a;Apache Dubbo 1. Dubbo 简介与核心功能 Apache Dubbo 是一个高性能、轻量级的开源Java RPC框架&#xff0c;用于快速开发高性能的服务。它提供了服务的注册、发现、调用、监控等核心功能&#xff0c;以及负载均衡、流量控制、服务降级等高级功能。…