(BLOCK (PARA (TEXT "You") (SPACE) (TEXT "want") (SPACE) (TEXT "to") (SPACE) (TEXT "provide") (SPACE) (TEXT "a") (SPACE) (TEXT "shared") (SPACE) (TEXT "Zettelstore") (SPACE) (TEXT "that") (SPACE) (TEXT "can") (SPACE) (TEXT "be") (SPACE) (TEXT "used") (SPACE) (TEXT "from") (SPACE) (TEXT "your") (SPACE) (TEXT "various") (SPACE) (TEXT "devices.") (SOFT) (TEXT "Installing") (SPACE) (TEXT "Zettelstore") (SPACE) (TEXT "as") (SPACE) (TEXT "a") (SPACE) (TEXT "Linux") (SPACE) (TEXT "service") (SPACE) (TEXT "is") (SPACE) (TEXT "not") (SPACE) (TEXT "that") (SPACE) (TEXT "hard.")) (PARA (TEXT "Grab") (SPACE) (TEXT "the") (SPACE) (TEXT "appropriate") (SPACE) (TEXT "executable") (SPACE) (TEXT "and") (SPACE) (TEXT "copy") (SPACE) (TEXT "it") (SPACE) (TEXT "into") (SPACE) (TEXT "the") (SPACE) (TEXT "appropriate") (SPACE) (TEXT "directory:")) (VERBATIM-CODE (("" . "sh")) "# sudo mv zettelstore /usr/local/bin/zettelstore") (PARA (TEXT "Create") (SPACE) (TEXT "a") (SPACE) (TEXT "group") (SPACE) (TEXT "named") (SPACE) (LITERAL-INPUT () "zettelstore") (TEXT ":")) (VERBATIM-CODE (("" . "sh")) "# sudo groupadd --system zettelstore") (PARA (TEXT "Create") (SPACE) (TEXT "a") (SPACE) (TEXT "system") (SPACE) (TEXT "user") (SPACE) (TEXT "of") (SPACE) (TEXT "that") (SPACE) (TEXT "group,") (SPACE) (TEXT "named") (SPACE) (LITERAL-INPUT () "zettelstore") (TEXT ",") (SPACE) (TEXT "with") (SPACE) (TEXT "a") (SPACE) (TEXT "home") (SPACE) (TEXT "folder:")) (VERBATIM-CODE (("" . "sh")) "# sudo useradd --system --gid zettelstore \\\n --create-home --home-dir /var/lib/zettelstore \\\n --shell /usr/sbin/nologin \\\n --comment \"Zettelstore server\" \\\n zettelstore") (PARA (TEXT "Create") (SPACE) (TEXT "a") (SPACE) (TEXT "systemd") (SPACE) (TEXT "service") (SPACE) (TEXT "file") (SPACE) (TEXT "and") (SPACE) (TEXT "store") (SPACE) (TEXT "it") (SPACE) (TEXT "into") (SPACE) (LITERAL-INPUT () "/etc/systemd/system/zettelstore.service") (TEXT ":")) (VERBATIM-CODE (("" . "ini")) "[Unit]\nDescription=Zettelstore\nAfter=network.target\n\n[Service]\nType=simple\nUser=zettelstore\nGroup=zettelstore\nExecStart=/usr/local/bin/zettelstore run -d /var/lib/zettelstore\nWorkingDirectory=/var/lib/zettelstore\n\n[Install]\nWantedBy=multi-user.target") (PARA (TEXT "Double-check") (SPACE) (TEXT "everything.") (SPACE) (TEXT "Now") (SPACE) (TEXT "you") (SPACE) (TEXT "can") (SPACE) (TEXT "enable") (SPACE) (TEXT "and") (SPACE) (TEXT "start") (SPACE) (TEXT "the") (SPACE) (TEXT "zettelstore") (SPACE) (TEXT "as") (SPACE) (TEXT "a") (SPACE) (TEXT "service:")) (VERBATIM-CODE (("" . "sh")) "# sudo systemctl daemon-reload\n# sudo systemctl enable zettelstore\n# sudo systemctl start zettelstore") (PARA (TEXT "Use") (SPACE) (TEXT "the") (SPACE) (TEXT "commands") (SPACE) (LITERAL-CODE (("" . "sh")) "systemctl") (SPACE) (TEXT "and") (SPACE) (LITERAL-CODE (("" . "sh")) "journalctl") (SPACE) (TEXT "to") (SPACE) (TEXT "manage") (SPACE) (TEXT "the") (SPACE) (TEXT "service,") (SPACE) (TEXT "e.g.:")) (VERBATIM-CODE (("" . "sh")) "# sudo systemctl status zettelstore # verify that it is running\n# sudo journalctl -u zettelstore # obtain the output of the running zettelstore"))