使用 anki-sync-server-rs 部署自己的 anki 同步服务
dianqk
编辑于 2022年04月23日 09:15

背景:最近打算将不背单词切换到 anki,主要是感觉不背单词添加生单词比较麻烦。写这篇文章主要是现有介绍的部署方式似乎都有些过时。

2022/04/23 更新,anki-sync-server-rs 已经推送镜像到 docker hub 中,本文对应更新一把。同时增加了在 PC 端设置的方式。

起初我打算使用 https://github.com/ankicommunity/anki-sync-server 的 docker 版本,默认的 docker 版本似乎很旧了,不能兼容最新的 AnkiDroid。我尝试了分支上最新的版本,解决了一些报错也能跑起来。

在我准备正式部署前,发现了另一个社区版本:https://github.com/ankicommunity/anki-sync-server-rs ,本文将介绍如何在 NAS 上部署 anki-sync-server-rs。

正文开始:


准备工程

首先创建文件夹,后面的内容都放这里,我们把这个目录(anki-sync-server-rs)叫做工作目录吧,执行以下命令:

代码块
Shell
自动换行
复制代码
mkdir anki-sync-server-rs
cd anki-sync-server-rs
复制成功

然后在工作目录创建  文件,内容如下:

代码块
Shell
自动换行
复制代码
version: "3"

services:
    anki-container:
        image: ankicommunity/anki-sync-server-rs:latest
        container_name: anki-container
        working_dir: "/app"
        restart: unless-stopped
        ports:
        - "27701:27701"
        volumes:
        - ./app:/app
复制成功

接下来在工作目录创建 app 文件夹:

代码块
Shell
自动换行
复制代码
mkdir app
复制成功

在 app 文件夹中添加文件 ankisyncd.toml:

代码块
Shell
自动换行
复制代码
[listen]
host = "0.0.0.0"
port = 27701

[paths]
# set root_dir as working dir where server data(collections folder) and database(auth.db...) reside
root_dir = "."

# The following section is optional,
# set it up if your server is compiled with tls support
[encryption]
ssl_enable = false
cert_file = ""
key_file = ""
复制成功

https://github.com/ankicommunity/anki-sync-server-rs/blob/master/ankisyncd.toml

创建用户

上述配置完成后,执行如下命令创建一个用户:

代码块
Shell
自动换行
复制代码
docker-compose run anki-container ankisyncd user -a user password
复制成功

目前似乎没有提供修改密码的方式,请谨慎创建。

此时顺利的话,应当可以在 app 目录下看到一些内容,如果没有,可能是什么地方遇到了问题。

启动容器

创建用户成功后,启动容器就可以开始使用了~

代码块
Shell
自动换行
复制代码
docker-compose up -d
复制成功

在配置好 https nginx 反向代理后,我们就可以打开 AnkiDroid 使用了!

可以在 F-Droid 下载到 AnkiDroid https://f-droid.org/zh_Hans/packages/com.ichi2.anki/

AnkiDroid 配置

进入 高级设置 - 自定义同步服务器 设置同步地址,参考设置:

  • 同步地址:https://example.com

  • 媒体文件同步地址:https://example.com/msync

最后用刚创建好的账户登录即可。

PC 上的 Anki 配置

我使用的 Arch Linux,这里仅以该系统为例。

安装命令如下:

代码块
Shell
自动换行
复制代码
yay -S anki
pacman -S mpv
复制成功

由于我们安装的都是比较新的版本,正确的配置方式在 https://github.com/ankicommunity/anki-sync-server 中。

从 Anki 中打开插件目录,创建 ankisyncd 文件夹,然后添加 __init__.py 文件,参考内容如下:

代码块
Shell
自动换行
复制代码
import os

addr = "http://127.0.0.1:27701/" # put your server address here
os.environ["SYNC_ENDPOINT"] = addr + "sync/"
os.environ["SYNC_ENDPOINT_MEDIA"] = addr + "msync/"
复制成功

重新打开 app 即可使用刚刚部署的同步服务。