2013-10-20 14:07:36 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								ankisyncd
							 
						 
					
						
							
								
									
										
										
										
											2020-09-02 05:56:44 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								=========
							 
						 
					
						
							
								
									
										
										
										
											2013-07-18 09:22:21 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-07-31 04:34:24 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[](https://anki-sync-server.readthedocs.io/?badge=latest)
							 
						 
					
						
							
								
									
										
										
										
											2020-07-31 04:34:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[](https://gitter.im/ankicommunity/community?utm_source=badge& utm_medium=badge& utm_campaign=pr-badge)
							 
						 
					
						
							
								
									
										
										
										
											2020-07-31 04:34:24 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-10-29 11:21:22 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[Anki][] is a powerful open source flashcard application, which helps you
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								quickly and easily memorize facts over the long term utilizing a spaced
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								repetition algorithm. Anki's main form is a desktop application (for Windows,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Linux and macOS) which can sync to a web version (AnkiWeb) and mobile
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								versions for Android and iOS.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								This is a personal Anki server, which you can sync against instead of
							 
						 
					
						
							
								
									
										
										
										
											2019-03-09 04:54:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								AnkiWeb. It was originally developed by [David Snopek ](https://github.com/dsnopek )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								to support the flashcard functionality on Bibliobird, a web application for
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								language learning.
							 
						 
					
						
							
								
									
										
										
										
											2017-10-29 11:21:22 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-08-21 00:51:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								This version is a fork of [jdoe0/ankisyncd ](https://github.com/jdoe0/ankisyncd ).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								It supports Python 3 and Anki 2.1.
							 
						 
					
						
							
								
									
										
										
										
											2013-07-18 09:22:21 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-08-23 22:28:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[Anki]: https://apps.ankiweb.net/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[dsnopek's Anki Sync Server]: https://github.com/dsnopek/anki-sync-server
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-03-09 04:46:42 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< details  open > < summary > Contents< / summary > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 -  [Installing ](#installing )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 -  [Installing (Docker) ](#installing-docker )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 -  [Setting up Anki ](#setting-up-anki )
							 
						 
					
						
							
								
									
										
										
										
											2020-12-28 02:11:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    -  [Anki 2.1 ](#anki-21 )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    -  [Anki 2.0 ](#anki-20 )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    -  [AnkiDroid ](#ankidroid )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 -  [Development ](#development )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    -  [Testing ](#testing )
							 
						 
					
						
							
								
									
										
										
										
											2019-03-09 04:46:42 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 -  [ENVVAR configuration overrides ](#envvar-configuration-overrides )
							 
						 
					
						
							
								
									
										
										
										
											2019-03-14 07:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 -  [Support for other database backends ](#support-for-other-database-backends )
							 
						 
					
						
							
								
									
										
										
										
											2019-03-09 04:46:42 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< / details > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-07-18 09:22:21 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Installing
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								----------
							 
						 
					
						
							
								
									
										
										
										
											2020-09-05 17:42:44 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-10-29 02:40:32 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								1.  Install the dependencies:
							 
						 
					
						
							
								
									
										
										
										
											2013-04-03 21:31:44 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-02 06:03:58 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $ pip install -r src/requirements.txt
							 
						 
					
						
							
								
									
										
										
										
											2013-04-03 21:31:44 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 05:50:44 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								2.  Modify ankisyncd.conf according to your needs
							 
						 
					
						
							
								
									
										
										
										
											2013-04-03 21:31:44 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 05:50:44 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								3.  Create user:
							 
						 
					
						
							
								
									
										
										
										
											2013-08-02 02:06:51 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-30 05:48:02 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $ ./ankisyncctl.py adduser < username > 
							 
						 
					
						
							
								
									
										
										
										
											2013-08-02 02:06:51 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-28 18:39:51 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								4.  Setup a proxy to unchunk the requests.
							 
						 
					
						
							
								
									
										
										
										
											2013-10-30 05:48:02 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-31 22:50:53 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    Webob does not support the header "Transfer-Encoding: chunked" used by Anki
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    and therefore ankisyncd sees chunked requests as empty. To solve this problem
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    setup Nginx (or any other webserver of your choice) and configure it to
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    "unchunk" the requests for ankisyncd.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    For example, if you use Nginx  on the same machine as ankisyncd, you first
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    have to change the port in `ankisyncd.conf`  to something other than `27701` .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Then configure Nginx to listen on port `27701`  and forward the unchunked
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    requests to ankisyncd.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    An example configuration with ankisyncd running on the same machine as Nginx
							 
						 
					
						
							
								
									
										
										
										
											2021-07-25 11:57:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    and listening on port `27702`  may look like ([entire config template click me](https://github.com/ankicommunity/anki-sync-server/blob/develop/docs/nginx.conf)):
							 
						 
					
						
							
								
									
										
										
										
											2020-08-31 22:50:53 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-04 13:10:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ```nginx
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    server {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    listen       27701;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    server_name   default;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    location / {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    proxy_http_version 1.0;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    proxy_pass         http://127.0.0.1:27702/;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     
							 
						 
					
						
							
								
									
										
										
										
											2020-08-31 22:50:53 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ```
							 
						 
					
						
							
								
									
										
										
										
											2019-03-08 04:41:38 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-28 18:39:51 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								5.  Run ankisyncd:
							 
						 
					
						
							
								
									
										
										
										
											2019-03-08 04:41:38 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-04 13:10:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$ python -m ankisyncd
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2020-08-28 18:39:51 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								---
							 
						 
					
						
							
								
									
										
										
										
											2019-03-08 04:41:38 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-05 07:35:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Installing (Docker)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-------------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 18:55:19 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Follow [these instructions ](https://github.com/ankicommunity/anki-devops-services#about-this-docker-image ).
							 
						 
					
						
							
								
									
										
										
										
											2019-02-05 07:35:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-21 07:57:58 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Setting up Anki
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								---------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-04 13:10:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								### Install addon from ankiweb (support 2.1)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								1.on add-on window,click `Get Add-ons`  and fill in the textbox with the code  `358444159` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								2.there,you get add-on `custom sync server redirector` ,choose it.Then click `config`   below right
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								3.apply your server ip address 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								if this step is taken,the following instructions regarding addon setting 2.1( including 2.1.28 and above) can be skipped.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-28 18:39:51 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								### Anki 2.1.28 and above
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Create a new directory in [the add-ons folder][addons21] (name it something
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								like ankisyncd), create a file named `__init__.py`  containing the code below
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								and put it in the `ankisyncd`  directory.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    import os
							 
						 
					
						
							
								
									
										
										
										
											2021-10-04 13:10:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2020-08-28 18:39:51 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    addr = "http://127.0.0.1:27701/" # put your server address here
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    os.environ["SYNC_ENDPOINT"] = addr + "sync/"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    os.environ["SYNC_ENDPOINT_MEDIA"] = addr + "msync/"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-08-21 00:40:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								### Anki 2.1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 00:19:12 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Create a new directory in [the add-ons folder][addons21] (name it something
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								like ankisyncd), create a file named `__init__.py`  containing the code below
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								and put it in the `ankisyncd`  directory.
							 
						 
					
						
							
								
									
										
										
										
											2018-08-21 00:40:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-12-24 23:04:26 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    import anki.sync, anki.hooks, aqt
							 
						 
					
						
							
								
									
										
										
										
											2021-10-04 13:10:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2018-08-23 22:19:14 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    addr = "http://127.0.0.1:27701/" # put your server address here
							 
						 
					
						
							
								
									
										
										
										
											2018-12-24 23:36:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    anki.sync.SYNC_BASE = "%s" + addr
							 
						 
					
						
							
								
									
										
										
										
											2018-12-24 23:04:26 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    def resetHostNum():
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        aqt.mw.pm.profile['hostNum'] = None
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    anki.hooks.addHook("profileLoaded", resetHostNum)
							 
						 
					
						
							
								
									
										
										
										
											2018-08-21 00:40:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								### Anki 2.0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-08-23 22:19:14 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Create a file (name it something like ankisyncd.py) containing the code below
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								and put it in `~/Anki/addons` .
							 
						 
					
						
							
								
									
										
										
										
											2013-10-21 07:57:58 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    import anki.sync
							 
						 
					
						
							
								
									
										
										
										
											2021-10-04 13:10:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2018-08-23 22:19:14 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    addr = "http://127.0.0.1:27701/" # put your server address here
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    anki.sync.SYNC_BASE = addr
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    anki.sync.SYNC_MEDIA_BASE = addr + "msync/"
							 
						 
					
						
							
								
									
										
										
										
											2017-10-29 11:21:22 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-06-09 05:04:05 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[addons21]: https://addon-docs.ankiweb.net/#/getting-started?id=add-on-folders
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 00:19:12 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-03-07 12:50:42 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								### AnkiDroid
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Advanced → Custom sync server
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Unless 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.conf`  (or, if using a reverse proxy,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								whatever port you configured to accept the front-end connection).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-28 18:52:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Use 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` .
							 
						 
					
						
							
								
									
										
										
										
											2020-09-05 17:42:44 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-03-07 12:50:42 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Even though the AnkiDroid interface will request an email address, this is not
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								required; it will simply be the username you configured with `ankisyncctl.py
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								adduser`.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-12-28 02:11:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Development
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-----------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								### Testing
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								0.  Prerequites
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								This project uses [GNU Make ](https://www.gnu.org/software/make/ ) to simplify the development commands. It also uses [Poetry ](https://python-poetry.org/ ) to manage the Python dependencies. Ensure they are installed.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								1.  Create a config for your local environment.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$ cp config/.env.example config/.env.local
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								See [ENVVAR configuration overrides ](#envvar-configuration-overrides ) for more information.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								2.  Download Python dependencies.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$ make init
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								3.  Run unit tests.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$ make tests
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-29 21:43:19 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								ENVVAR configuration overrides
							 
						 
					
						
							
								
									
										
										
										
											2019-01-29 12:39:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								------------------------------
							 
						 
					
						
							
								
									
										
										
										
											2019-01-29 21:43:19 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Configuration values can be set via environment variables using `ANKISYNCD_`  prepended
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								to the uppercase form of the configuration value. E.g. the environment variable,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								`ANKISYNCD_AUTH_DB_PATH`  will set the configuration value `auth_db_path` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Environment variables override the values set in the `ankisyncd.conf` .
							 
						 
					
						
							
								
									
										
										
										
											2019-01-29 12:39:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Support for other database backends
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-----------------------------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								sqlite3 is used by default for user data, authentication and session persistence.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								`ankisyncd`  supports loading classes defined via config that manage most
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								persistence requirements (the media DB and files are being worked on). All that is
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								required is to extend one of the existing manager classes and then reference those
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								classes in the config file. See ankisyncd.conf for example config.