vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / misc / anki-sync-server.md
blob4796abf25c43062a9daec64997fd93a7710e3f95
1 # Anki Sync Server {#module-services-anki-sync-server}
3 [Anki Sync Server](https://docs.ankiweb.net/sync-server.html) is the built-in
4 sync server, present in recent versions of Anki. Advanced users who cannot or
5 do not wish to use AnkiWeb can use this sync server instead of AnkiWeb.
7 This module is compatible only with Anki versions >=2.1.66, due to [recent
8 enhancements to the Nix anki
9 package](https://github.com/NixOS/nixpkgs/commit/05727304f8815825565c944d012f20a9a096838a).
11 ## Basic Usage {#module-services-anki-sync-server-basic-usage}
13 By default, the module creates a
14 [`systemd`](https://www.freedesktop.org/wiki/Software/systemd/)
15 unit which runs the sync server with an isolated user using the systemd
16 `DynamicUser` option.
18 This can be done by enabling the `anki-sync-server` service:
19 ```nix
20 { ... }:
23   services.anki-sync-server.enable = true;
25 ```
27 It is necessary to set at least one username-password pair under
28 {option}`services.anki-sync-server.users`. For example
30 ```nix
32   services.anki-sync-server.users = [
33     {
34       username = "user";
35       passwordFile = /etc/anki-sync-server/user;
36     }
37   ];
39 ```
41 Here, `passwordFile` is the path to a file containing just the password in
42 plaintext. Make sure to set permissions to make this file unreadable to any
43 user besides root.
45 By default, the server listen address {option}`services.anki-sync-server.host`
46 is set to localhost, listening on port
47 {option}`services.anki-sync-server.port`, and does not open the firewall. This
48 is suitable for purely local testing, or to be used behind a reverse proxy. If
49 you want to expose the sync server directly to other computers (not recommended
50 in most circumstances, because the sync server doesn't use HTTPS), then set the
51 following options:
53 ```nix
55   services.anki-sync-server.address = "0.0.0.0";
56   services.anki-sync-server.openFirewall = true;
58 ```