[3] Server Start/Stop

You can now to launch the server:

$ taskdctl start

This command launched the server as a daemon process. This command requires the TASKDDATA variable. Your server is now running, and ready for syncing. Note that to stop the server, you use:

$ taskdctl stop

Check that your server is running by looking in the taskd.log file, or running this:

$ ps -leaf | grep taskd

Interactive or Non-Daemon Server

A daemon server is typically how you would want to run Taskserver, but there may be times when you need to run the server attached to a terminal. These two commands are identical:

$ taskdctl start
$ taskd server --data $TASKDDATA --daemon

By omitting the --daemon option, the server remains attached to the terminal. Then to stop the server you can enter Ctrl-C.

The interactive mode is really only useful for debugging, in conjunction with TLS debug mode, like this:

$ taskd config debug.tls 3
$ taskd server --data $TASKDDATA
...

With a debug.tls setting that is non-zero, you see lots of security-related diagnostic output.

Configure Taskserver to run with a systemd-unit-file

You can start Taskserver using a systemd-unitfile like the following (please add the contents of $TASKDDATA not the variable itself). Running the Taskserver as root is not recommended, please add an appropriate user and group to run the daemon with ($TASKDUSER and $TASKDGROUP).

[Unit]
Description=Secure server providing multi-user, multi-client access to Taskwarrior data
Requires=network.target
After=network.target
Documentation=https://taskwarrior.org/docs/#taskd

[Service]
ExecStart=/usr/local/bin/taskd server --data $TASKDDATA
Type=simple
User=$TASKDUSER
Group=$TASKDGROUP
WorkingDirectory=$TASKDDATA
PrivateTmp=true
InaccessibleDirectories=/home /root /boot /opt /mnt /media
ReadOnlyDirectories=/etc /usr

[Install]
WantedBy=multi-user.target

Afterwards prepare systemd to recognise the file.

$ cp taskd.service /etc/systemd/system
$ systemctl daemon-reload
$ systemctl start taskd.service
$ systemctl status taskd.service

In case everything is running fine, enable the script to start Taskserver on every boot.

$ systemctl enable taskd.service