搭建自己的Anki同步服务器
Anki自带的AnkiWeb同步服务体验较差,当你的单词库较大时,同步起来体验非常的差。因此我在腾讯云上自己搭建了Anki同步服务器。
注意:
- windows端只能使用2.0的旧版本
2.0版本使用python2写的插件,2.1版本用python3写的插件,而GitHub上提供的服务器版本是基于python2.7的,所以新版本无法使用此方法来和私有服务器同步,可以和AnkiWeb同步或是下载具有同步功能的插件来同步,但是我不知道怎么写一个适合新版本的插件出来,因此使用旧版Anki。 - 发现一个严重的问题,桌面端和安卓端会冲突。
桌面端和服务器同步之后,安卓端要重新下载整个库;安卓端和服务器同步后,桌面端要重新下载。尚未发现解决办法。
我在网上查到的教程都是比较老的,而且大都模仿Anki知乎专栏的这篇文章。我主要是参考了idealclover的Linux 下尝试自建Anki服务器,在此表示感激。
服务端配置
选择CentOS 7.5 x64系统
我在腾讯云上有个云服务器,关机重新安装系统,很方便,然后用putty远程登录服务器
安装AnkiServer包
# easy_install AnkiServer
报错
“your setuptools is too old (<12)”
从头开始看,安装PasteScript的时候就不正常了,然后我试着pip PasteScript,机器没有pip,用easy_install 也不行,我干脆去下了个pip。
# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
# python get-pip.py
然后直接
pip install AnkiServer
就好了
设置AnkiServer
~目录下创建Anki文件夹
# mkdir Anki
找到AnkiServer中示例配置的目录,我的在/usr/lib/python2.7/site-packages/AnkiServer-2.0.6-py2.7.egg/examples
复制example.ini 到我们的目录,修改为production.ini
# cp example.ini ~/Anki/production.ini
之后编辑该文档
# vim ~/Anki/production.ini
我用红色涂抹的是主机地址,填你的服务器的内网地址,下面的允许来访问你的服务器的机器的ip,可以枚举每个你允许的ip,也可以设置0.0.0.0 允许任何ip地址连接,然后按esc键,输入:wq保存并退出vim
# ankiserverctl.py -h
查看命令选项
输入 # ankiserverctl.py adduser <username>
来添加用户,该命令回车后会要求你输入密码
可以查看是否成功添加了用户
# ankiserverctl.py lsuser
成功的话,你会看到自己添加的用户名
测试运行
# ankiserverctl.py debug
没有报错的话我们就可以正式运行Ankiserver了,先用Ctrl+C中止调试程序,然后
# ankiserverctl.py start
Anki2.0版Windows客户端的设置
打开插件文件夹
本来这里是没有这个mysyncserver.py文件的,我们创建一个
文件内容如下:
import anki.sync
anki.sync.SYNC_BASE = 'http://[你的服务器外网ip]:27701/'
anki.sync.SYNC_MEDIA_BASE = 'http://[你的服务器外网ip]:27701/msync/'
保存后,重启Anki客户端
点击同步按钮,输入自己在服务器里设置的用户名和密码,然后就像用AnkiWeb服务一样了,不过体验如丝般顺滑,而且可以同步很大的库文件
AnkiDroid安卓端设置
得益于大家的力量,我成功搭建了自己的Anki同步服务器,但愿我的文章能给你提供帮助。