文章目录
  1. 1. 构建镜像
    1. 1.1. 1. Clone 源代码
    2. 1.2. 2. 修改 src/ankisyncd.conf
    3. 1.3. 3. Dockerfile
    4. 1.4. 4. docker-compose.yml
    5. 1.5. 5. 配置 Anki

最近使用 Anki 2.1.47 版本配合自建 ankisyncd 做同步时报 Error details: ⁨error decoding response body: missing fieldmodat line 1 column 99⁩ 错误。用的是 kuklinistvan/anki-sync-server:latest 这个 docker 镜像,看起来似乎镜像版本太旧了。

经过自己构建 docker 镜像并部署 ankisyncd 后成功实现了同步。

构建镜像

1. Clone 源代码

1
2
3
git clone https://github.com/ankicommunity/anki-sync-server.git
# 切换到 develop 分支
git checkout develop

这里可以看到源码里面并没有提供 Dockerfile,那么接下来就自己写一个。

2. 修改 src/ankisyncd.conf

1
2
3
4
5
6
7
8
9
10
[sync_app]
# change to 127.0.0.1 if you don't want the server to be accessible from the internet
host = 0.0.0.0
port = 27701
data_root = ./data/collections
base_url = /sync/
base_media_url = /msync/
auth_db_path = ./data/auth.db
# optional, for session persistence between restarts
session_db_path = ./data/session.db

主要是 data_rootauth_db_pathsession_db_path 这三行,前面加上了 data 目录。

3. Dockerfile

1
2
3
4
5
6
7
8
9
10
FROM python:3.9-buster

RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN sed -i 's|security.debian.org/debian-security|mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list
RUN apt update && apt install tini
ADD ./src /ankisyncd
WORKDIR /ankisyncd
VOLUME /ankisyncd/data
RUN pip install -r requirements.txt
CMD [ "tini", "--", "python", "-m", "ankisyncd" ]

执行构建镜像命令

1
docker build -t ankisyncd .

4. docker-compose.yml

1
2
3
4
5
6
7
8
9
10
version: "3"

services:
ankisyncd:
image: ankisyncd
restart: always
ports:
- "27701:27701"
volumes:
- ./data:/ankisyncd/data

启动服务器

1
docker-compose up -d

添加用户

1
docker-compose exec ankisyncd ./ankisyncctl.py adduser [user]

5. 配置 Anki

Windows

点击 查看本地插件文件 ,在打开的文件夹中新建一个目录 ankisyncd ,里面添加一个 __init__.py

1
2
3
4
5
import os

addr = "http://[主机地址]:[端口号,默认:27701]/" # put your server address here
os.environ["SYNC_ENDPOINT"] = addr + "sync/"
os.environ["SYNC_ENDPOINT_MEDIA"] = addr + "msync/"

在打开的对话框中输入你在前面填写的用户名和密码就可以同步了

文章目录
  1. 1. 构建镜像
    1. 1.1. 1. Clone 源代码
    2. 1.2. 2. 修改 src/ankisyncd.conf
    3. 1.3. 3. Dockerfile
    4. 1.4. 4. docker-compose.yml
    5. 1.5. 5. 配置 Anki