wencaizhang

用 Docker 快速架设一个 Anki 同步服务器

Published onSeptember 30, 2021
-Views
1Minutes Read
Anki 是一个辅助记忆软件,最近打算用它来快速记忆一些知识,但是 Anki 的服务器架设在国外,导致同步速度很慢,为了解决这个问题,我参考文档打算自己架设一个 Anki 同步服务器。
anki-sync-server-with-docker
部署前要满足以下要求:
  • 技术要求:了解终端(命令行工具)、理解 IP 和域名的概念、docker 以及 docker-compose 的基本使用
  • 硬件要求:一台电脑或者一个虚拟机或者一个云服务器(总之要能够满足相关软件要求)
  • 软件要求:docker + docker-compose
下面默认你是了解这些内容的,所以不会过多解释,本文主要记录部署过程。

启动服务

在磁盘上新建一个
目录,在此目录下创建一个
文件,文件内容如下。
文档中这个配置文件的缩进有问题,导致我在启动的时候始终失败。经过我反复测试,现在这个配置是可以正常启动的。
然后在当前路径下的终端执行启动命令
执行
命令可以看到
这就说明服务已经正常启动了,对应的服务地址是
,这个
是你物理机(宿主机)的
而非 docker 容器

相关命令

启动服务之后,我们需要新建用户以便在客户端登录时使用。
首先需要进入 docker 容器的终端:
命令格式:
可用的命令:
  • 增加一个新用户:
  • 删除一个用户:
  • 列出所有用户:
  • 修改密码:
  • 查看帮助:
示例:增加一个用户 userA
紧接着会提示为该用户创建密码:
输入密码后按下回车键,这个用户就创建成功了。接下来我们就可以在客户端进行同步了。
ps: 如果你只在电脑端使用 anki 软件,「域名设置」步骤可以跳过,只有安卓端才需要配置。

域名设置

启动服务之后,就可以通过链接
访问了。
由于安卓版 anki 要求同步地址为
协议
,因此我又启动了一个代理服务。
我使用的 Caddy 启动服务,这是一款使用 Go 语言开发的 web 服务器,选用 Caddy 的一个重要原因就是它使用 Let’s Encrypt 让你的站点全自动变成 HTTPS,除此之外它的配置简单很容易上手使用。
我的配置就这么简单:
  1. 第一行声明一个二级域名
  2. 第二行告诉 caddy 为网站开启 https 并自动申请证书,后面的 email 参数是告知 CA 申请人的邮箱,
  3. 第三行则是反向代理,此时访问
    ,实际访问的是
    的内容

客户端设置

电脑端

如果是电脑端(Windows\MacOS\Linux),需要安装 SyncRedirector 插件。
SyncRedirector 插件要求 Anki 版本低于
,推荐使用
版本。 你可以在这里下载 Anki 所有版本的安装包
插件安装之后,在其设置中填写对应的地址即可

安卓端

如果是安卓端 AnkiDroid 则可以直接配置,我的 AnkiDroid 版本是
。你可以通过「设置 -> 高级设置 -> 自定义同步服务器」找到配置页面。
ankidroid-sync-server
这里的配置路径和电脑端略有不同,其中同步地址是
,而媒体文件同步地址是
安卓下载地址:Anki-Android · github

总结

Tags:
#Anki
#Docker