为什么要搭建自己的Anki服务器
- 为了提高同步的速度
- 保证自己的数据不会落到别人的手里
- 避免具有大量图片和音频的牌组同步时间过长
前提条件
- 需要拥有一个远程的服务器,或者是在局域网中有自己的树莓派之类的产品。
搭建环境
Python 2.7
pip软件包管理工具
Ubuntu Server 16.04 LTS
具体步骤
- 安装
AnkiServer
在命令行中执行:sudo easy_install AnkiServer
- 参考示例文件来配置自己的服务器文件:
在自己的主目录下新建一个名字为Anki的文件夹,用来存放相关数据。
$ mkdir Anki
$ cd Anki
$ cp /usr/local/lib/python2.7/dist-packages/AnkiServer-2.0.6-py2.7.egg/examples/example.ini production.ini #拷贝配置文件
$ vi producion.ini #修改配置文件
在配置文件中,我主要修改了以下的参数:
host= 10.XX.XX.XX #自己服务器的地址也可是局域网IP
allowed_hosts=0.0.0.0 #允许同步的客户端ip地址,使用0.0.0.0表示允许任何ip地址连接
需要注意的是:此处的host地址不可以填写公网ip,如何服务器是搭建在云服务器上的(eg.腾讯云),那么,这个地址要写服务器的内网IP,如下图所示
IP地址选择
- 添加用户
这里添加的用户是将来在Anki客户端登录时使用的用户,使用以下指令添加用户,然后输入对应的密码
$ ankiserverctl.py adduser username
- 测试服务器
调试模式:
$ ankiserverctl.py debug [configfile] # 如果配置文件就在当前目录下,则可以不输入配置文件的路径
如果没有报错,则可以正常的运行了。
- 故障处理
在测试服务器的时候,我这里出现了这样的报错:
Anki requires a UTF-8 locale
然后执行以下的指令:
python2 -c "import sys; print sys.getfilesystemencoding()"
输出的结果是:
ANSI_X3.4-1968
可以看到,这个错误是由于系统的编码不是UTF-8所致,因此我们只要改变编码即可,可以使用以下的方法改变编码:
$ export LC_ALL="en_US.UTF-8"
- 正常运行
$ ankiserverctl.py start [cofigfile]
配置桌面端和安卓移动端的Anki
配置过程可以参看 这篇文章