自建Anki同步服务器,并用AnkiDroid连接,设置哈希密码,解决error sending request for url()或用户名或密码错误
说明
参考:https://www.gerenbiji.com/blog/2024年/自建 Anki 同步服务器/
官方文档:https://docs.ankiweb.net/sync-server.html
环境:
- RockyLinux x86平台
- AnkiDroid 2.20.0
- anki 24.11 linux qt6
方案:使用官方桌面客户端自带的服务器,nginx转发外部https到anki http
AnkiDroid使用条件:存在域名,可用https
1. 下载官方客户端
2. 运行
解压后运行,命令参考↓
SYNC_USER1=[用户名1]:[明文密码] SYNC_PORT=27701 SYNC_BASE=../anki-sync-server-data PASSWORDS_HASHED=0 anki --syncserver
# 出现 INFO listening addr=0.0.0.0:27701 成功
字段说明
- SYNC_USER1:用户名和密码,用户名建议用邮箱,避免AnkiDroid出现意外问题,密码使用明文
- SYNC_USER2: 多用户2
- SYNC_USER3: 多用户3
- SYNC_PORT:对外端口
- SYNC_BASE:用户数据存储路径
- PASSWORDS_HASHED:是否使用哈希密码(这里暂时不生效,需要在后面设置。
3. 设置https访问
由于AnkiDroid遵守了安卓规范,不支持http协议,可能会出现error sending request for url()报错,或用户名或密码错误
这里使用nginx进行转发。
nginx设置参考↓ 注意一定要改大client_max_body_size ,否则无法同步媒体文件
http{
# 注意一定要改大包大小,否则无法同步媒体文件
client_max_body_size 1024G;
server {
# 27702只是演示
listen 27702 ssl;
listen [::]:27702 ssl;
server_name [你的域名];
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
# 证书位置
ssl_certificate /root/.acme.sh/你的域名/fullchain.cer;
ssl_certificate_key /root/.acme.sh/你的域名.site_ecc/umiumi.site.key;
location / {
# 转发到本地的27701,http协议
proxy_pass http://127.0.0.1:27701;
}
}
}
4.AnkiDroid设置
首先设置同步服务器
设置-同步-高级设置-自定义同步服务器
然后在 设置-AnkiWeb 账户中登录
顺利的话,登录成功,至此服务器已经可用。
5.设置哈希密码,避免在启动服务器时需要输入明文密码
参考官方文档,需要生成PHC格式的哈希密码字符串:
可以使用文中说到的工具:
https://git.sr.ht/~laalsaas/pbkdf2-password-hash
由于项目使用rust,需要安装cargo等相关环境,rust官网:
https://www.rust-lang.org/zh-CN/
完成后执行以下命令进行下载依赖、编译和运行
git clone https://git.sr.ht/~laalsaas/pbkdf2-password-hash
cd pbkdf2-password-hash
cargo run
或者使用楼主编译好的版本(AMD64平台)需要IPV6访问
https://pan.umiumi.site:5212/s/OLUP
运行程序,输入两次密码,得到PHC字符串
替换PHC字符串到原来的明文密码。注意此时需要给环境变量加上单引号,防止美元符号被解析
改 PASSWORDS_HASHED = 1
SYNC_USER1='你的邮箱:$pbkdf2-sha256$i=600000,l=32$AGdcZmgMq3vxya26tY7zWA$oJm4cnoaWuPHJCb/DkVcnT35dQbGAM1ltb15n292hhw' SYNC_PORT=27701 SYNC_BASE=../anki-sync-server-data PASSWORDS_HASHED=1 anki --syncserver
再次尝试在AnkiDroid登录/同步,成功
补充Windows PC版本登录服务器
注意需要新版本,老版本需要插件实现。工具-设置-同步中,设置自托管服务器并登录
可不用https
分类:
计算机
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章