自建Anki同步服务器
需求
Anki的同步服务器在国外,国内访问它是要踏过千山万水的,并且还是一个个人项目,所以也别指望对宽带的投入。
糟糕的国内同步体验,能不能忍受取决于你自己。我是忍了几年,但随着最近使用频率加大,越来越忍无可忍,于是评估了下成本,决定自建同步服务器。
购买ECS
如果手里没有现成的服务器,可以去阿里云买台ECS。
Anki的同步服务器对机器性能要求低,所以可以选择乞丐共享性突发性能实例
,肯定够用,我买的张家口区的ecs.t6-c2m1.large
,系统盘位降到20G,不包括带宽的话一个月17.4元,一次买的时间越长优惠力度越大。
买好后再下单个弹性IP
绑定到该ECS,计量带宽1G是0.8元。
进入Linux系统,装Python3
环境,因为待会用到的anki-sync-server
是用Python3写的。
安装和配置anki-sync-server
使用的开源anki同步服务器程序是anki-sync-server
。
安装
克隆源码到本地:
1 | cd /usr/local |
安装依赖包:
1 | cd anki-sync-server |
配置
配置ankisyncd.conf文件,一般使用默认即可。
添加一个或多个用户:
1 | python3 ankisyncctl.py adduser <username> |
启动
运行anki-sync-server:
1 | python3 -m ankisyncd |
到这里服务已经成功运行,默认监听服务器的27701端口。
加入supervisor
服务进程最好是用supervisor来管理。
supervisor的安装配置随机启动可以参考这个:
https://www.jianshu.com/p/39b476e808d8
需配置supervisor开机启动
在配置文件/etc/supervisor/supervisord.conf
的最后加入:
[program:ankisyncd]
command=python3 -m ankisyncd
directory=/usr/local/anki-sync-server
autorestart=true
stderr_logfile=/var/log/ankisyncd.err.log
stdout_logfile=/var/log/ankisyncd.out.log
user=root
stopsignal=INT
先关闭系统中已经运行的ankisyncd进程。
然后用supervisor启动ankisyncd:
1 | supervisorctl start ankisyncd |
HTTPS支持
因为从Android 9(API级别28)开始,默认情况下禁用明文传输,最新版本的AnkiDroid
的自定义服务器也必须是HTTPS
,所以最好是让anki-sync-server
走加密。
首先得需要有备案的域名,再去申请免费证书,这些阿里云上都有。
如果没有域名,花生壳
上有已备案的壳域名
可以试试,几十块钱一个,带SSL证书,终身使用。
然后Nginx
配置一个vhost
做反向代理
,例如:
1 | server { |
最后,设置该ECS所属安全组允许443端口
访问!
设置客户端
相关客户端的官方下载页面:https://apps.ankiweb.net/
Mac和Windows
先安装插件SyncRedirector
:
工具 -> 附近组件 -> 获取组件
输入代码:2124817646
安装好后需要配置该插件,打开设置后修改anki-sync-server
同步地址:
“msyncUrl”: “https://www.anki.dev/msync",
“syncUrl”: “https://www.anki.dev/sync"
保存设置后,重启客户端使其生效。
重新打开后,切换配置方案,输入前面自创的用户名和密码。
这样不出差的话,就算配置好了。
Android
进入AnkiDroid
设置:
设置 -> 高级设置 -> 自定义同步服务器
修改同步地址:
修改媒体文件同步地址:
再填写用户名和密码:
设置 -> 常用设置 -> AnkiWeb账户
这样就大功告成了。
iOS
iOS客户端目前不能自定义同步服务器。
我的解决方案是:
上京东,搜“华为V6平板”,下单支付
打开闲鱼,卖iPad
本文标题:自建Anki同步服务器
文章作者:biteyu
发布时间:2020-07-02
原始链接:https://www.biteyu.cn/a/678210.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!