使用记录: 用 Baikal 部署 CalDev 时踩的坑

摘要

想在自己服务器上部署日历服务, 选了较为轻量的 Baikal. 部署过程遇到大量错误与困难, 多方求索最后解决.

第一次用 docker 的方式部署, 结果没做好数据持久化, 导致软件重启后, 之前的日程全部丢失.

第二次用普通方式部署, 遇到大量 nginx 的配置问题, 文件权限问题, php环境问题.

最后发现官方的部署教程是最正确的, 只是有一个路径与实际不符(差了3个字符). 终于部署完成

关键词: CalDAV; Baikal; docker 与数据持久化; ngnix 配置; PHP;

使用 docker 部署

Hexo 使用记录: 安装和简单配置

Hexo 是一个快速, 简洁且高效的博客框架. 使用 Markdown 解析文章,依照配置好的主题来生成静态网页.

本博客用的就是 Hexo.

安装

安装 Hexo 之前要先安装 Git 和 Node.js. Git 的安装不在这里说明, 只说明安装 Node.js.

1
2
3
4
5
6
7
8
9
10
# 如果没有curl, 要先安装curl
sudo apt-get install -y curl
# 下载安装脚本
curl -fsSL https://deb.nodesource.com/setup_23.x -o nodesource_setup.sh
# 运行安装脚本
sudo -E bash nodesource_setup.sh
# 安装Node.js
sudo apt-get install -y nodejs
# 验证安装结果
node -v

安装好 Node.js 后, 开始安装 Hexo

1
2
3
4
5
6
7
8
# 安装 hexo
npm install -g hexo-cli
# 启动 hexo
cd ~
mkdir hexo
hexo init hexo
cd hexo
npm install

配置和使用

可以在 _config.yml 中修改大部分的配置. 具体配置项及其含义见官方文档配置章节.

最开始, 这个网站主要修改了:

1
2
3
4
5
6
7
8
9
10
11
12
# Site
title: Ker's site.
subtitle: 'ker0123的个人网站, 记载了他一段时间的所学.'
description: '网站开始于2025年5月, 自己大学毕业的后几天. 实际上已经工作快半年了. 这段时间发觉自己的技术栈还是太浅了, 对于软件这一块, 尤其是互联网软件, 相关知识及其欠缺. 于是租了个服务器, 开始一边学习一边尝试自己写一些东西.'
keywords:
author: ker0123
language: ch
timezone: 'Asia/Shanghai'

# URL
## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
url: http://www.kers.site

在命令行使用new命令来生成新文章:

1

AList/OpenList 使用记录: 部署 & 服务器本机存储 & SFTP访问个人电脑文件 & 作为图床.

安装

参考官方文档进行手动安装

安装时, 由于云服务器没有配置代理, 所以使用个人电脑从github上下载, 并使用ssh协议进行上传.

1
2
3
4
5
6
7
8
9
10
11
# 在浏览器中选择最新Realse, 云服务器是Linux系统, x86架构的64位机器, 因此选择`alist-linux-amd64.tar.gz`并复制链接.
curl "https://github.com/AlistGo/alist/releases/download/v3.45.0/alist-linux-amd64.tar.gz"
# scp 本地文件名 云服务器用户名@云服务器IP:云服务器存储位置
scp ./alist-linux-amd64.tar.gz username@192.xxx.xxx.222:~/alist/
# 解压下载的文件,得到可执行文件:
tar -zxvf alist-linux-amd64.tar.gz
# 授予程序执行权限:
chmod +x alist
# 运行程序
./alist server

i386、i486、i586、 i686、 x86、x86_64、x64、amd_64详解
tar压缩解压缩命令详解

配置

安装程序后, 云服务器默认在5244端口上打开服务. 个人电脑可以通过http://192.xxx.xxx.xx:5244/访问刚创建的AList(192.xxx.xxx.xx是云服务器公网地址).

默认账号密码分别是 admin, admin. 先用它登录 AList

登录成功后从页面下方的[管理]按钮, 进入管理界面. 在这里设置好基本的管理员账号密码, 然后重新登录.

本机存储(云服务器)

参照官方文档为 AList 添加存储器. 例如添加本机存储, 用以将云服务器的文件挂载到网盘上.

配置本机存储

SFTP(通过SSH与个人电脑文件同步)

又例如通过 frp 配置好个人电脑的内网穿透, 通过ssh访问内网机器, 由此构建SFTP存储

配置SFTP

第一次部署时, 我采用的是密码登录, 安全性差. 可以换成 ssh 秘钥登录:

  1. 云服务器生成一对秘钥
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # host

    cd ~/.ssh
    # 生成以 forkerspc@kers.site 为账号名(可修改, 不影响功能) 的秘钥对
    ssh-keygen -t rsa -C "forkerspc@kers.site"
    #Generating public/private rsa key pair.
    # 输入存储位置为 id_rsa_for_pc
    #Enter file in which to save the key (/root/.ssh/id_rsa): ./id_rsa_for_pc
    # 不使用密语
    #Enter passphrase (empty for no passphrase):
    #Enter same passphrase again:
  2. 将公钥存到个人电脑(将id_rsa_for_pc.pub文件中的内容复制到C:\ProgramData\ssh\administrators_authorized_keys中)
    1
    2
    3
    4
    # host

    ~/.ssh# cat id_rsa_for_pc.pub
    #ssh-rsa AAAAB3Nza....MqPyLU= forkerspc@kers.site
    1
    2
    3
    4
    # pc

    cd C:/ProgramData/ssh
    echo "ssh-rsa AAAAB3Nza....MqPyLU= forkerspc@kers.site" >> ./administrators_authorized_keys
  3. 将服务器私钥填到AList配置(注意要包括开头和结尾那像是格式的两行)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # host

    cd ~/.ssh
    cat id_rsa_for_pc
    # -----BEGIN OPENSSH PRIVATE KEY-----
    # b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
    # NhAAAAAwEAAQAAAYEAuY+dAZ5Beubd6uqLGaD7TYvJ4zijk5zxm0390DWhP+bu7n9/Dpkk
    # ...
    # 2/xm2MB1CSr1HOm6r7kEV7TFT1r+aQI1I0BrbUAAbQeTuHPt/6vL3SiP98ZBPuPIR9fgkF
    # 40YdJ3L3Nx8bMAAAAQa2VyXzAxMjNAMTYzLmNvbQECAw==
    # -----END OPENSSH PRIVATE KEY-----
    填写私钥
  4. 点击保存, 不出意外就能成功挂载了.

关于 Windows 上的 ssh 密钥登录, 还可以参照这篇文章: windows 上 OpenSSH 服务 启用秘钥登录.

Alias别名(通过别名与权限控制访客的访问范围)

又例如, 通过alias别名, 将多个存储器上的部分内容引用, 放到新的一个文件夹里, 方便设置访问权限.

配置Alias

为访客用户设置只能看到Share目录的权限

生成简单直链, 实现图床用法

首先要在设置>全局中关闭[签名所有]选项, 打开[转发直链参数]选项. 之后便可以右键文件, 选择分享, 生成直链来使用了.

设置全局

另外, 记得配合 元信息 为不想分享的文件夹设置密码, 防止外界可以不登录, 就通过轮询直链访问云盘内的所有文件.

请确保可以公开的文件, 右键分享得到的链接形似http://pan.kers.site/d/share/imghost/zzz.jpg; 期望登录才能获取的文件, 右键分享得到的链接形似http://pan.kers.site/d/pc/Music/desktop.ini?sign=iqp25J4VCbDf6G1M62-_MBlxJspz9aAvLX6_cUXy8gQ=:0

如果不是这样, 请确认有好好设置元信息, 有勾选[应用到子文件夹]

其他

可以通过元信息为云盘内的某些文件, 或者满足某些规则的文件, 设置访问密码. 这点详见官方文档.

启动之后可以通过以下命令来启停AList, 似乎命令之后要接上pid, 能够理解, 毕竟一个服务器能运行多个alist实例.

1
2
3
4
5
6
# 携带`--force-bin-dir`参数启动服务
alist start
# 通过pid停止服务
alist stop
# 通过pid重启服务
alist restart

手动安装之后, 添加守护进程来启停服务存在一些问题. 文章写成时暂未解决, 在github项目下提了issus.

2025年6月11日. Alist 项目社区发生剧变, 项目发起者将项目卖给了某灰色产业公司, 从此Alist软件不再安全.

鉴于原 Alist 项目频繁删 issus(上文中的issus链接就被删了, 也是这个才使我注意到此事), 大部分相关信息链接未来可能无法访问, 这里只提供社区版 fork 的 github 项目地址.

开源道路道阻且长, 时常被这些道德败坏的组织剽窃成果. 但至少我仍然决心要踏上这条道路, 因为如果所有开源社区贡献者都寒心了, 不干了, 那才是真正的没有未来.