安装 Anki 的同步服务器

创建一个 Python 虚拟环境并安装 Anki 的同步服务器。让我们逐步解释每一行命令的作用:

  1. python3 -m venv ~/syncserver
    这条命令使用 Python 3 的 venv 模块在 ~/syncserver 目录中创建一个虚拟环境。

    • python3: 使用 Python 3 版本。
    • -m venv: 通过模块 venv 创建一个虚拟环境。
    • ~/syncserver: 虚拟环境将会被创建在用户主目录下的 syncserver 目录中。

    目的:虚拟环境用于隔离项目的依赖,不影响系统的全局 Python 环境。

  2. ~/syncserver/bin/pip install anki
    这条命令在刚刚创建的虚拟环境中,使用该环境内的 pip 安装 anki 模块。

    • ~/syncserver/bin/pip: 这是虚拟环境中的 pip 程序,用于在虚拟环境内安装依赖。
    • install anki: 安装 anki 包。

    目的:安装 Anki 的同步服务器模块。

  3. SYNC_USER1=user:pass ~/syncserver/bin/python -m anki.syncserver
    这条命令设置一个环境变量 SYNC_USER1,然后启动 Anki 的同步服务器。

    • SYNC_USER1=user:pass: 设置环境变量 SYNC_USER1,其中 userpass 是同步服务器的用户名和密码。
    • ~/syncserver/bin/python: 使用虚拟环境中的 Python 解释器。
    • -m anki.syncserver: 使用 Python 的 -m 参数来运行 anki.syncserver 模块,启动同步服务器。

    目的:启动 Anki 同步服务器,并用 user:pass 作为认证凭据。

总结:这些命令的目的是创建一个隔离的 Python 虚拟环境,安装 Anki 同步服务器模块,并启动同步服务器。

使用 pm2 来管理

你指定的项目,可以按照以下步骤配置:

1. 使用 pm2 启动命令

根据你给出的完整启动命令,结合虚拟环境的路径 /root/some-py/Ankiserver,你可以用 pm2 启动这个项目,并指定虚拟环境中的 Python 解释器。命令如下:

pm2 start /root/some-py/Ankiserver/venv/bin/python --name anki_syncserver -- -m anki.syncserver

2. 添加环境变量

由于你需要传递环境变量 SYNC_USER1SYNC_PORTSYNC_HOST,可以在启动命令中使用 --env 参数来传递这些环境变量:注意我更改了端口和支持IPV6

pm2 start /root/some-py/Ankiserver/venv/bin/python --name anki_syncserver -- -m anki.syncserver \
  --env SYNC_USER1=user:password SYNC_PORT=8019 SYNC_HOST='::'

3. 使用 ecosystem.config.js(推荐)

为了长期管理你的配置,建议使用 pm2 的配置文件 ecosystem.config.js,这样可以更方便地管理环境变量和其他配置。步骤如下:

(1) 创建 ecosystem.config.js 文件:

cd /root/some-py/Ankiserver
touch ecosystem.config.js

(2) 编辑 ecosystem.config.js 文件,内容如下:

module.exports = {
  apps: [
    {
      name: 'anki_syncserver',
      script: '/root/some-py/Ankiserver/venv/bin/python',
      args: '-m anki.syncserver',
      env: {
        SYNC_USER1: 'name:password',
        SYNC_PORT: '8019',
        SYNC_HOST: '::'
      }
    }
  ]
};

(3) 使用 pm2 启动项目:

pm2 start ecosystem.config.js

使用 Cargo

从 Anki 2.1.66 版本开始,你可以使用下面的命令构建 Rust 实现的独立同步服务器。请确保你安装了 Rustup。

cargo install --git https://github.com/ankitects/anki.git --tag 2.1.66 anki-sync-server
  • 2.1.66 替换为最新的 Anki 版本。如果需要更新,也是更换版本号后,直接执行这条命令!

需要安装 Protobuf (protoc)。

构建完成后,你可以使用以下命令运行它:

SYNC_USER1=user:pass anki-sync-server