自建Anki2.1服务器(2020年6月10日)
我倒腾了两天,终于把服务器弄好了。在这里跟大家分享一下。
善意提醒:若是你的Anki资料不是很大,就不要折腾。
本教程适用Anki版本
PC::2.1.15(不支持2.1.2和2.1.6不支持)
安卓:2.9.1(不支持2.10.0)
苹果
准备
服务器一台(推荐:百度、阿里、腾讯)
服务器系统(Ubuntu18.04)
步骤
搭建服务环境(重要)
建立账号密码(用于登录Anki)
开放27701端口(本地服务器就设置防火墙,云服务就是安全组添加端口)
设置AnkiPC端的插件,或设置手机的同步地址
Anki是用python语言写的,搭建服务器环境要用到:python3、pip3、git。
而Ubuntu 18.04系统默认安装了python3 git,我们只需要安装pip3即可
命令:sudo apt install python3-pip
用以下命令来检查你的环境是否搭建成功:
python3 -V
pip3 -V
git -V

前置环境搭建完毕,开始搭建Ank同步服务器
创建anki文件夹并进入
mkdir anki && cd anki
拷贝AnkiServer项目
git clone https://github.com/tsudoko/anki-sync-server.git
进入文件夹
cd anki-sync-server
更新当前主项目上记录的submodule 的commitid(这里可能会有点卡)
git submodule update --init
进入文件夹
cd anki-bundled/
用vi编辑requirements.txt
vi requirements.txt
按i键进行编辑,删除第三行的pyaudio,按Esc键退出编辑,然后打出:wq退出保存(记得把分号打上)
继续安装
pip3 install -r requirements.txt
安装 webob 库(这里也可能会有点卡)
pip3 install webob
退出上级目录,用vi编辑ankisyncctl.py
cd ..
vi ankisyncctl.py
把第一行的#!/usr/bin/env python,里面的python,后面加个3。如#!/usr/bin/env python3
以上,环境全部搭建成功。
可以开始建立账号密码了。(用于登录anki)
./ankisyncctl.py adduser myanki
里面的myanki可以修改,然后输入密码。
运行后台服务
nohup python3 -m ankisyncd
这里一般会卡,不过不重要,剩下的操作可以离开服务器了。
开放27701端口,这里以腾讯云为例。


添加规则

此时,测试是否成功,打开任意浏览器,输入你的对公IP加上:27701(如:11.000.11.000:27701)。是否会报错,没有就是成功啦。
最后一步简单,PC端设置插件
打开anki插件文件夹
新建文件夹 命名为 ankisyncd
在文件夹新建txt,然后改名为__init__.py的文件
txt输入内容如下:
import anki.sync, anki.hooks, aqt
addr = "http://94.191.84.217:27701/"# 改成自己服务器地址
anki.sync.SYNC_BASE = "%s" + addr
def resetHostNum():
aqt.mw.pm.profile['hostNum'] = None
anki.hooks.addHook("profileLoaded", resetHostNum)
可以开始同步啦
点击同步就会提示让你输入账号密码,输入之前建立的账号密码即可
安卓设置同步地址
点击设置,再点击高级设置,点击允许第三方服务器。
同步地址:http;//94.191.84.217:27701/
媒体同步地址:http://94.191.84.217:27701/msync
记住是http不是https,刚开始我就在这里懵逼了一段时间
参考的教程有:
https://www.jianshu.com/p/b169ef259b83
https://blog.csdn.net/humanking7/article/details/94999409
https://frank.xin/2019/03/25/ankisync2/
https://zhuanlan.zhihu.com/p/101617232
https://zhuanlan.zhihu.com/p/70269217
https://blog.csdn.net/weixin_40085907/article/details/104684320
https://www.xiebruce.top/881.html
…………