Anki 是一个辅助记忆软件,最近打算用它来快速记忆一些知识,但是 Anki 的服务器架设在国外,导致同步速度很慢,为了解决这个问题,我参考文档打算自己架设一个 Anki 同步服务器。
部署前要满足以下要求:
- 技术要求:了解终端(命令行工具)、理解 IP 和域名的概念、docker 以及 docker-compose 的基本使用
- 硬件要求:一台电脑或者一个虚拟机或者一个云服务器(总之要能够满足相关软件要求)
- 软件要求:docker + docker-compose
下面默认你是了解这些内容的,所以不会过多解释,本文主要记录部署过程。
启动服务
在磁盘上新建一个 目录,在此目录下创建一个 文件,文件内容如下。
文档中这个配置文件的缩进有问题,导致我在启动的时候始终失败。经过我反复测试,现在这个配置是可以正常启动的。
然后在当前路径下的终端执行启动命令
执行 命令可以看到
这就说明服务已经正常启动了,对应的服务地址是 ,这个 是你物理机(宿主机)的 而非 docker 容器 。
相关命令
启动服务之后,我们需要新建用户以便在客户端登录时使用。
首先需要进入 docker 容器的终端:
命令格式:
可用的命令:
- 增加一个新用户:
- 删除一个用户:
- 列出所有用户:
- 修改密码:
- 查看帮助:
示例:增加一个用户 userA
紧接着会提示为该用户创建密码:
输入密码后按下回车键,这个用户就创建成功了。接下来我们就可以在客户端进行同步了。
ps: 如果你只在电脑端使用 anki 软件,「域名设置」步骤可以跳过,只有安卓端才需要配置。
域名设置
启动服务之后,就可以通过链接 访问了。
由于安卓版 anki 要求同步地址为 协议,因此我又启动了一个代理服务。
我使用的 Caddy 启动服务,这是一款使用 Go 语言开发的 web 服务器,选用 Caddy 的一个重要原因就是它使用 Let’s Encrypt 让你的站点全自动变成 HTTPS,除此之外它的配置简单很容易上手使用。
我的配置就这么简单:
- 第一行声明一个二级域名
- 第二行告诉 caddy 为网站开启 https 并自动申请证书,后面的 email 参数是告知 CA 申请人的邮箱,
- 第三行则是反向代理,此时访问 ,实际访问的是 的内容
客户端设置
电脑端
如果是电脑端(Windows\MacOS\Linux),需要安装 SyncRedirector 插件。
SyncRedirector 插件要求 Anki 版本低于 ,推荐使用 和 版本。
你可以在这里下载 Anki 所有版本的安装包
插件安装之后,在其设置中填写对应的地址即可
安卓端
如果是安卓端 AnkiDroid 则可以直接配置,我的 AnkiDroid 版本是 。你可以通过「设置 -> 高级设置 -> 自定义同步服务器」找到配置页面。
这里的配置路径和电脑端略有不同,其中同步地址是 ,而媒体文件同步地址是 。
安卓下载地址:Anki-Android · github
总结
- 文件的缩进需要注意
- 服务启动成功后要重新创建用户
- 电脑端需要安装插件 SyncRedirector
- 如果你在安卓端使用 anki,则需要将服务配置成
- 下载地址