Site Tools


Hotfix release available: 2024-02-06b "Kaos". upgrade now! [55.2] (what's this?)
anki

Anki

Setup Client-side

Download Anki from https://apps.ankiweb.net to your Downloads folder. See the next section for how to choose between -qt5 and -qt6. If zstd is not already installed on your system, you'll need to install it (e.g sudo apt install zstd). Open a terminal and run the following commands, replacing the filename as appropriate.

tar xaf Downloads/anki-2XXX-linux-qt6.tar.zst
cd anki-2XXX-linux-qt6
sudo ./install.sh

Then under Tools/Preferences/Sync put your servers name in the field at the very bottom. In the Anki main maneu click on Sync and enter your credentials.


Setup Server-Side

With Pip

Replace ~/syncserver with your desired location, eg. /var/www/anki-syncserver:

python3 -m venv ~/syncserver
~/syncserver/bin/pip install anki
SYNC_USER1=user:pass ~/syncserver/bin/python -m anki.syncserver

If you're not using systemd, make a script to export all the environment variables that the server will need and make sure to run it a boot! For generating the password hash, anki recommends this.

#!/bin/sh
export PASSWORDS_HASHED=1
export SYNC_USER1='nikolaus:$pbkdf2-sha256$i=600000,l=32$34UcId4LZ7vYEjx8WVu9oA$ckIVhkKh+7LiPvcm+RhVWaRmmYt8xMVM/0y9DWp6Hew'
export SYNC_HOST=127.0.0.1
export SYNC_PORT=4441
export SYNC_BASE=/var/www/anki-syncserver/sync_base

After that, create an nginx reverse-proxy:

/etc/nginx/sites-available/anki:

server {
server_name anki.lautner.xyz;
listen 80;
listen [::]:80;
location / {
proxy_pass http://127.0.0.1:4441/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass_header Authorization;
} \\

Then symlink it to sites-enabled and run certbot --nginx, that will take care of the ssl stuff, hence why we have listen 80; in the file.

Now, you can start the anki-syncserver by running the following command:
. /var/www/anki-syncserver/set-anki-variables.sh
/var/www/anki-syncserver/bin/python -m anki.syncserver

Now, if you're running systemd, create the file /etc/systemd/system/anki.service and put the following in it:

[Unit]
Description=Syncserver for Anki flashcards
After=default.target
[Service]
Environment=“PASSWORDS_HASHED=1”
Environment=“SYNC_HOST=127.0.0.1”
Environment=“SYNC_PORT=4441”
Environment=“SYNC_BASE=/var/www/anki/syncserver/sync_base”
Environment=“SYNC_USER1='nikolaus:$pbkdf2-sha256$i=600000,l=32$34UcId4LZ7vYEjx8WVu9oA$ckIVhkKh+7LiPvcm+RhVWaRmmYt8xMVM/0y9DWp6H'”
ExecStart=/var/www/anki-syncserver/bin/python -m anki.syncserver
[Install]
WantedBy=default.target \\

Enable --now it and you're set! Congrats!

anki.txt · Last modified: 2024/04/03 19:20 by 84.115.231.53