背景简介:
大家都知道Anki是一款优秀的记忆软件,拥有优秀的记忆算法,高度可定制性,跨几乎所有平台等诸多优点。但由于AnkiWeb的服务器在国外,国内同步的同步速度真的是相当的慢- -,如果只有卡片只有文字内容还能接受,如果记忆库中有许多媒体文件(图片,音频等),同步速度根本没法忍- -...如果手动同步,又太麻烦(好吧其实是我懒- -),还好我们可以通过自己搭建服务器的办法达到较快的同步速度。
适用人群:
- 被Anki服务器同步速度慢困扰的
- 有钱(租用云主机)
- 有闲(搭建服务器是很麻烦的一件事情,各种踩坑)
- 愿意折腾(我不会告诉你我折腾了一整天加一个上午才全部搞定,真是扎心ヽ(≧□≦)ノ
- 需要同步的设备为安卓手机/平板和windows PC,IOS不支持修改成自己的同步服务器。
目前自建Anki服务器的教程相当少,只有知乎上的两三篇文章,这也是我写这个教程原因之一。
搭建服务器的可选方案:
- 在本地搭建(树莓派,笔记本,安卓手机等)/在云端搭建(阿里云,腾讯云等...)
- 基于windows平台搭建/基于linux
如果要实现24h随时同步,服务器需要24h开机,对个人来说,未免太费电。2333...
因此我想到的最适合个人的解决方案应该是在云端基于linux搭建Anki同步服务器。(也试过用windows,但成功与否似乎看运气- -,又总是出现不明错误,遂放弃- -)
其他方案可参考文末的参考资料。
回到主题,本文简单介绍在阿里云主机(基于Linux)上搭建自己的Anki服务器,不废话了,开始嘿嘿。
云主机的知识在这里详细介绍,可以大致理解为一台运行在云端的完整的个人电脑(说错了不要打我 : P),可选windows也可选linux。阿里和腾讯云都有针对大学生的优惠政策,阿里9.9元/月,腾讯8元/月,配置略有不同,不过搭建一个Anki服务器都绰绰有余,个人觉得这个价格相当划算。(感谢两位马叔叔?)
由于我自己用的搭载在阿里云的Anki服务器已配置完成,稳定使用,故以下以腾讯云为例,并没有多大区别,标题似乎有误(不管了 就这样?)
1.申请阿里云云主机,网址如下:
https://partner.aliyun.com/shop/1586986852753298?spm=a2cbv.aps.0.0.6989561cVAC8gr
2.在云主机上安装linux(这里选用centos 7版本)
登录云主机
登录linux系统,使用前面设置过的用户名与密码
因为我对vim编辑器使用不熟练,后面的文档修改干脆使用图形化界面下修改,于是先给系统安装图形化安装包。
3.安装桌面组件包
yum -y groupinstall "Server with GUI" \\ 安装图形化程序组
ps.安装要等好久- -
启动桌面
startx
系统会自动重启。
成功进入桌面环境
4.安装ankiserver
在命令行中执行:
easy_install AnkiServer
安装成功测试命令
ankiserverctl.py
看到如图结果即安装AnkiServer服务成功
5.建立ankiserver配置文件
从文件管理器进入目录
/usr/lib/python2.7/site-packages/AnkiServer-2.0.6-py2.7.egg/examples/
把example.ini 文件复制到 /root下
重命名为production.ini
修改production.ini文件内容并保存
host= x.x.x.x #自己服务器的内网地址也可是局域网IP allowed_hosts=0.0.0.0 #允许同步的客户端ip地址,使用0.0.0.0表示允许任何ip地址连接
6.添加用户
这里添加的用户是将来在Anki客户端登录时使用的用户,使用以下指令添加用户,然后输入对应的密码
ankiserverctl.py adduser username #usename替换为你的用户名,如xiaoming ankiserverctl.py lsuser #列出用户列表,能看到上一步添加的用户即为成功
7.测试服务器
调试模式:#ankiserverctl.py debug
如果没有报错,则可以正常的运行了。
- 故障处理
在测试服务器的时候,我这里出现了这样的报错:
Anki requires a UTF-8 locale
这个错误是由于系统的编码不是UTF-8所致,因此我们只要改变编码即可,可以使用以下的方法改变编码:
export LC_ALL="en_US.UTF-8"
- 调试模式运行:
ankiserverctl.py debug
- 关闭命令行窗口,重新进入,正常运行命令
ankiserverctl.py start
8.外网测试能否连上端口
填入外网IP及端口27701--状态开放
成功标志:外网ip,及端口可被检测到开放状态
至此在服务器端的配置已经告一段落了,下面是同步端(需要同步的安卓手机,电脑等,IOS设备不支持自己搭建服务器)的配置
8.同步端的(软件端)配置
8.1 ANKI桌面版设定
开启插件文件夹
新增一个txt挡案,檔名修改为mysyncserver.py。
文件内容如下
import anki.sync anki.sync.SYNC_BASE = 'http://192.168.0.100:27701/' anki.sync.SYNC_MEDIA_BASE = 'http://192.168.0.100:27701/msync/'
IP自行修改为本机区网IP
保存后,重启anki即可测试同步。
8.2 Android版anki(AnkiDroid)设定
ps.ios目前无法自定义server IP。
网址要注意ankiserver预设是使用http而不是https
其中桌面版和安卓版中的IP地址都改成云主机的外网IP即可,端口号保持27701不变。
配置完成后,记得及时给云主机续费,云主机就会不辞辛劳的在云端工作,给你提供24小时的同步服务啦~
想在哪里学就在哪里学,想什么时候学就在什么时候学,妈妈再也不用担心我的学习啦~
现在开始享受飞一般的,随时随地的,多平台Anki同步服务吧~