安装TaskWarrior Server

TaskWarrior是款命令行的任务管理软件。

taskd 是taskwarrior的同步服务器。

准备

参看安装TaskWarrior先装taskwarrior(即客户端)。

安装必要软件包:

sudo apt-get install uuid-dev libgmp-dev libreadline-dev

装taskd

TaskWarrior网站上的taskd下载此时(2016/9/3)是1.1.0,有些老,我们将用1.2.0:

git clone https://git.tasktools.org/scm/tm/taskd.git
cd taskd
git checkout 1.2.0
cd src
git clone https://git.tasktools.org/scm/tm/libshared.git
cd ..
cmake -DCMAKE_BUILD_TYPE=release .
make
sudo make install

配置taskd

mkdir ~/taskd_data
export TASKDDATA=~/taskd_data
taskd init

# 现在仍在taskd目录下
cd pki
vi vars

把CN=localhost的localhost改成你的服务器域名或IP, 假设我们改成了your_server,

(其他的内容也可以酌情改)

./generate
cp client.cert.pem $TASKDDATA
cp client.key.pem  $TASKDDATA
cp server.cert.pem $TASKDDATA
cp server.key.pem  $TASKDDATA
cp server.crl.pem  $TASKDDATA
cp ca.cert.pem     $TASKDDATA
taskd config --force client.cert $TASKDDATA/client.cert.pem
taskd config --force client.key $TASKDDATA/client.key.pem
taskd config --force server.cert $TASKDDATA/server.cert.pem
taskd config --force server.key $TASKDDATA/server.key.pem
taskd config --force server.crl $TASKDDATA/server.crl.pem
taskd config --force ca.cert $TASKDDATA/ca.cert.pem
cd $TASKDDATA
taskd config --force log $PWD/taskd.log
taskd config --force pid.file $PWD/taskd.pid
taskd config --force server your_server:53589  # your_server和上面vars里CN一致

启动taskd

taskdctl start
taskdctl status

配置task用户, 指向本地服务器

# 回到taskd/pki目录
cd ~/taskd/pki
taskd add org Public
taskd add user 'Public' 'your_name'  # your_name是用户名

这里会产生一个New user key, 比如94ba61f8-5065-43d7-8dac-7c02523b0133

./generate.client your_name

会产生两个文件:your_name.key.pemyour_name.cert.pem, 将这两个文件和ca.cert.pem拷贝到~/.task里:

cp your_name.key.pem ~/.task
cp your_name.cert.pem ~/.task
cp ca.cert.pem ~/.task
task config taskd.certificate -- ~/.task/your_name.cert.pem
task config taskd.key -- ~/.task/your_name.key.pem
task config taskd.ca -- ~/.task/ca.cert.pem
task config taskd.server  -- your_server:53589
task config taskd.credentials -- Public/your_name/new_user_key

your_server仍是vars里CN的域名或IP.

new_user_key就是task add user那步得到的字串.

开始同步任务

task sync init
task

如果没有错误,把~/.task目录和~/.taskrc打包:

cd
tar cfz task.tgz .task .taskrc

把task.tgz拷到其他机器上:

scp task.tgz remote_ip:/home/your_name/

我们把装了taskd的机器叫机器1,其他的机器为机器2、机器3等, 机器2、3上应该已经安装了taskwarrior.

登录机器2,解压task.tgz:

tar xfz task.tgz
task

task会显示和机器1 task一样的任务列表。

回到机器1,添加一项新任务:

task add 机器1上的新任务
task sync

回到机器2,由于没有同步,task显示的还是原来的内容,只需运行:

task sync

再打task,会看到机器1上的新任务已经被同步过来了。

同样的,在机器2上添加任务后sync, 回到机器1后sync,也能看到机器2的添加和修改。

机器2上的配置可以复制到机器3上。