{"id":15106918,"url":"https://github.com/ankicommunity/anki-sync-server-rs","last_synced_at":"2025-09-27T05:31:27.536Z","repository":{"id":40244505,"uuid":"422069892","full_name":"ankicommunity/anki-sync-server-rs","owner":"ankicommunity","description":"A personal custom Anki sync server,aim to provide an easier way for deployment","archived":true,"fork":false,"pushed_at":"2023-11-23T08:01:02.000Z","size":1999,"stargazers_count":180,"open_issues_count":8,"forks_count":27,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-09-26T21:02:44.569Z","etag":null,"topics":["actix-web","anki","rust","server","sync"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ankicommunity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-28T04:59:01.000Z","updated_at":"2024-07-19T05:33:22.000Z","dependencies_parsed_at":"2024-09-20T14:30:38.010Z","dependency_job_id":"572b18d7-e01d-4f88-a44e-618092bd9ddf","html_url":"https://github.com/ankicommunity/anki-sync-server-rs","commit_stats":{"total_commits":283,"total_committers":6,"mean_commits":"47.166666666666664","dds":"0.24028268551236753","last_synced_commit":"5280f9f2034b29d77388df497ebcdb7d13cb5c94"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankicommunity%2Fanki-sync-server-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankicommunity%2Fanki-sync-server-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankicommunity%2Fanki-sync-server-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankicommunity%2Fanki-sync-server-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ankicommunity","download_url":"https://codeload.github.com/ankicommunity/anki-sync-server-rs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234391379,"owners_count":18824809,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actix-web","anki","rust","server","sync"],"created_at":"2024-09-25T21:03:14.933Z","updated_at":"2025-09-27T05:31:22.203Z","avatar_url":"https://github.com/ankicommunity.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# anki-sync-server-rs\n![GitHub repo size](https://img.shields.io/github/repo-size/ankicommunity/anki-sync-server-rs)\n[![License](https://img.shields.io/github/license/ankicommunity/anki-sync-server-rs)](https://github.com/ankicommunity/anki-sync-server-rs/blob/master/LINCENSE)[![Github status](https://img.shields.io/github/checks-status/ankicommunity/anki-sync-server-rs/master?label=github%20status)](https://github.com/ankicommunity/anki-sync-server-rs/actions)[![Github contributors](https://img.shields.io/github/contributors/ankicommunity/anki-sync-server-rs?label=github%20contributors)](https://github.com/ankicommunity/anki-sync-server-rs/graphs/contributors)[![DockerHub version](https://img.shields.io/docker/v/ankicommunity/anki-sync-server-rs?label=dockerhub%20version\u0026sort=date)](https://hub.docker.com/repository/docker/ankicommunity/anki-sync-server-rs)[![DockerHub pulls](https://img.shields.io/docker/pulls/ankicommunity/anki-sync-server-rs)](https://hub.docker.com/repository/docker/ankicommunity/anki-sync-server-rs)[![DockerHub stars](https://img.shields.io/docker/stars/ankicommunity/anki-sync-server-rs)](https://hub.docker.com/repository/docker/ankicommunity/anki-sync-server-rs)\n[![](https://img.shields.io/github/v/release/ankicommunity/anki-sync-server-rs)](https://github.com/ankicommunity/anki-sync-server-rs/releases/latest)[![](https://img.shields.io/github/last-commit/ankicommunity/anki-sync-server-rs)]()[![Gitter](https://badges.gitter.im/ankicommunity/community.svg)](https://gitter.im/ankicommunity/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n [![Downloads](https://img.shields.io/github/downloads/ankicommunity/anki-sync-server-rs/total?label=Release%20Download)](https://github.com/ankicommunity/anki-sync-server-rs/releases/latest)\n\n[简体中文](README_CN.md)|[English](README.md)\n\n\u003c/div\u003e\n\n**Warning:This project is no longer maintained.**\n\nIt may works with Anki clients ~2.1.64\nPlease use the official sync server,for more see [guide](https://docs.ankiweb.net/sync-server.html)\n\n\nA cross-platform Anki sync server.\n\nThis is a rust (still sqlite c library backed) take on anki sync server ,which keep track of the\nofficial sync server.\n\n## Quickstart guide\n### Installing (binary)\n1. Grab binary from github [releases](https://github.com/ankicommunity/anki-sync-server-rs/releases) and unpack it, each platform has its corresponding tag (e.g. `windows_x86_64` for Windows 64bit,details see [support platform](docs/PLATFORM.md) ) ,enter the decompressed folder.\n2. Add user\n\nFor linux users or macOS users,run,\n```\n ./ankisyncd user --add username password\n```\nfor Windows users,open a terminal in the folder and run,\n```\n ./ankisyncd.exe user --add username password\n```\nIf you want to perform other operations ,such as deleting users or changing the password of one user,run with the `--help` flag for more details,\n```\n ./ankisyncd user --help\n```\n3. Run server `./ankisyncd` (for Windows users,you can just double click the binary for a quick start).\n4. Enjoy!\n\n### Installing (Docker)\ndetails see [Docker](docs/CONTAINER.md)\n\nYou can also build the binary from source code [Install](docs/INSTALL.md) or build a docker image from the source [DockerBuild](docs/CONTAINER.md).\n## Set up Anki (Clients)\n### Anki 2.1\n#### \u003e= 2.1.57\nDue to the software update,Now Anki supports sync custom server settings inside the client.\n1. Go to `Tools -\u003ePreferences--\u003cSyncing`\n2. see below and enter your server address in the blank labled `self-hosted sync server`.\nHere is an example.If your server address is `192.0.0.1`,then the content to fill in is `http://192.0.0.1:27701/`  \n3. Restart Anki\n#### \u003c2.1.57 ((install add-on from ankiweb)\n1. Go to `Tools -\u003e Add-ons`\n2.  click on the button labeled `Get Add-ons` and  enter the code `358444159`.\n3. You get add-on `custom sync server redirector`, choose it. Then click on the `config` button in the bottom right corner.\n4. Apply your server IP address\n5. Restart Anki\n### AnkiMobile\nIt seems that Ankimobile now has the ability to sync against self-hosted sync server.At least for  Ankimobile 2.0.90(20090.2),A post from [A user has reported in Anki forum](https://forums.ankiweb.net/t/ankimobile-self-sync-server-failure-the-one-bundled-in-version-2-1-60-qt6/27862).\nAs for the detailed steps,we will be happy to accept a PR about how to configure AnkiMobile to enable custom sync server If some one is using AnkiMobile and would be kind enough.\nWhen things do not go as expected,refer to the text:\n\u003e If you're using AnkiMobile and are unable to connect to a server on your local network, please go into the iOS settings, locate Anki near the bottom, and toggle \"Allow Anki to access local network\" off and then on again.\n\n[From Anki tutorial](https://docs.ankiweb.net/sync-server.html#client-setup)\n### AnkiDroid\n\nGo to `Advanced -\u003e Custom sync server` (Go to `Settings` -\u003e `Sync` -\u003e `Custom sync server` in  2.16 and newer versions)\n\nUnless you have set up a reverse proxy to handle encrypted connections, use `http` as the protocol. The port will be either the default `27701`, or whatever you have specified in `ankisyncd.toml` (if using a reverse proxy, whatever port you configured to accept the front-end connection).\n\nUse the same base url for both the `Sync url` and the `Media sync url`, but append `/msync` to the `Media sync url`. Do **not** append `/sync` to the `Sync url` (Note: This is not the case any more in 2.16 and newer versions).\n\nTake IP address `192.0.0.0` for example and use default port `27701` with `http` protocol,the corresponsding urls are,\n\nSync url:`http://192.0.0.0:27701`\n\nMedia sync url: `http://192.0.0.0:27701/msync`\n\nIn 2.16 and newer versions,\n\nSync url:`http://192.0.0.0:27701/sync/`\n\nMedia sync url: `http://192.0.0.0:27701/msync/`\n\nEven though the AnkiDroid login interface will request an email address, this is not actually required; it can simply be the username you configured with `ankisyncd user -a`.\n\nFor https setup and support see [certificate setup](docs/CERTS.md) (Note: in 2.16 and newer versions,Ankidroid could supprt http connection once more).\nSee [reverse proxy setup](docs/REVERSE_PROXY.md) for setting up a reverse proxy in front of the sync server.\n\n## How to contribute\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\nAll contributions must be licensed under AGLP-v3.0 to comply with the license of the anki code used as the base of this project.\n\n## License\n\nSee [LICENSE](LICENSE)\n\n## Compatibility\nWhen the server made its first appearance,we have done some tests,details see [TEST](docs/TEST_SERVER_CLIENT.md)\n## Configuration\n### Env vars\nAnkidyncd supports setting environment variables to add accounts,`ANKISYNCD_USERNAME`,`ANKISYNCD_PASSWORD`.\n|Key|Value|\n|-|-|\n|ANKISYNCD_USERNAME|username,non-empty if set|\n|ANKISYNCD_PASSWORD|password,non-empty if set|\n\n### Optional Server Configuration\nIf you want to change the location where sync data is stored, or change the listening port,you can modify the configuration file `ankisyncd.toml`,and then run server,\n```\n./ankisyncd  --config /path/to/ankisyncd.toml\n```\n\n## REFERENCE\nankisyncd architecture or apis depend on [ankicommunity/anki-sync-server](https://github.com/ankicommunity/anki-sync-server) and\n[ankitects/anki](https://github.com/ankitects/anki).\nSync APIs are initially based on anki/rslib 2.1.46.We almost replicated the media synchronization implementation logic in `anki-sync-server`.And this project is heavily dependent on upstream project `Anki`,that is,if the project Anki is no longer accessible,this project might be malfunctional and abandoned.\n\nSInce 2.1.57，this project keeps track of the process of Anki sync server.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fankicommunity%2Fanki-sync-server-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fankicommunity%2Fanki-sync-server-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fankicommunity%2Fanki-sync-server-rs/lists"}