2023年的个人Anki部署

发布于 2023-06-14  467 次阅读


一切都变得简单了:Anki 2.1.57+ 自带内置服务器,服务器端仅安装pip版运行即可。从此不必docke…

说明

主要参考:官方文档
注意区别于社区提供的 sync-server 如 anki-sync-server anki-sync-server-rs 。目前win版(2.1.57+)已经可以直接填写自定义服务器了,网上2022年的教程多是直接部署或docker部署前面提到的两个,已经过时。写文于20230614,anki-sync-server 已经很久没有更新(停在2.4.0),实测不适用PC的2.1.57+版本,安卓版由于更新不及时仍然能够同步。anki-sync-server-rs 支持到2.1.60,仍然可以选择部署。

这并不是纯手把手教程,有些基础的东西默认你是知道的。比如sshgitpipnginx

目前最新Anki版本(实测):

  • PC 版:⁨2.1.65
  • 安卓版:2.15.6
  • Pypi版:2.1.65

1. 准备Python3.9

目前anki的pip包要求3.9以上(如有可跳过)。

sudo apt install python3.9
sudo apt install python3.9-venv
python3 --version

2. 准备虚拟环境

cd /存放环境的路径 
python3 -m venv 环境名称(如my_anki)

提醒:cd的时候,不要自己建 my_anki 文件夹然后进去,会重复嵌套。

3.  安装Anki

进入到虚拟环境再安装。先更新一下pip本身,否则可能由于 pip 版本太老导致 whl 标签对不上安装不了较新版本 anki。看清楚安装的是哪个版本的,如果不是2.1.57+,
法一:去 pypi 里面下载 whl ,尝试手动安装;法二:更改或指定源。

cd my_anki
source ./bin/activate
python -m pip install --upgrade pip
pip install anki

4. 尝试启动

SYNC_USER1=user:password SYNC_BASE=~/anki_base SYNC_HOST=127.0.0.1 SYNC_PORT=7888 python3 -m anki.syncserver

太长放不下,没有换行,是同一行。
前面定义的变量相当于配置,SYN_USER1 是设置用户,可以类推 SYN_USER2 添加多个用户。 SYNC_BASE 是数据存放路径,默认是 ~/.syncserverSYNC_HOSTSYNC_PORT 如果不设置,默认是 0.0.0.08080 ,推荐修改。

注意和 anki-sync-server 不同的是,pip 版并没有提供网页信息,访问 http://ip:port 显示404。如果在后台同时输出404说明已经建立成功了。

至此已经可用了。

5. 域名以及反向代理(可选)

比较好的做法是添加一个 anki 的二级域名(如 anki.example.com),并申请证书。下面假设二级域名(检查DNS解析)和证书在服务商都设置ok了。

添加nginx配置,设置443反向代理。

server {
	listen 443 ssl;
	server_name anki.example.com;
	charset utf-8;
	ssl_certificate cert/anki.example.com.pem;
	ssl_certificate_key cert/anki.example.com.key;
	ssl_session_timeout 5m;
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;	
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_prefer_server_ciphers on;
		
	location / {
		client_max_body_size 100M;
		proxy_ssl_server_name on;
		proxy_http_version 1.0;
		proxy_pass http://127.0.0.1:7888;
		proxy_set_header    Host            $host:$server_port;
		proxy_set_header    X-Real-IP       $remote_addr;
		proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
	}
}

6. 后台运行

第4步测试成功之后,正式就用nohup命令来后台运行,注意文件路径。"2>&1 &" 代表错误重定向到标准输出。 日志路径可以自己随意设置。没有换行。

SYNC_USER1=user:password SYNC_BASE=~/anki_base SYNC_HOST=127.0.0.1 SYNC_PORT=7888 nohup python3 -m anki.syncserver >> ~/anki.log 2>&1 &

7. PC设置

2.1.57+版本仅需在 设置-网络-私人同步服务器 中填写 http(s)://域名 or http(s)://ip:port 并重启anki即可。(/sync和/msync默认会找,不用填;也不用添加插件、新建文件之类的。)

账号就填写前面设置的。如果账号密码错误会提示相应信息。

如果后台运行出现问题,虽然PC提示“AnkiWeb服务出现错误现,请稍后重试。”,此时仍然是你的服务器报错的问题,而不是AnkiWeb提供的后台。

(说法来源:官方文档提醒 https://docs.ankiweb.net/sync-server.html#self-hosted-sync-server 。检查你的服务器的log也能证实。)

8. 安卓设置

高级设置,自定义服务器两个都填一样的(域名 or ip:端口,不带/sync/msync),除非用两个域名/服务器端定义了两个路由指向。另外,新一点的安卓版本强制使用https。

9.IOS设置

你在想什么?