「Taskd」の版間の差分
Kusakata.bot (トーク | 投稿記録) Pkg/AUR テンプレートの更新 |
→設定: 情報を更新 |
||
| (同じ利用者による、間の8版が非表示) | |||
| 1行目: | 1行目: | ||
[[Category:ネットワーク]] |
[[Category:ネットワーク]] |
||
[[en:Taskd]] |
[[en:Taskd]] |
||
[https:// |
[https://github.com/GothenburgBitFactory/taskserver taskd] は [[Wikipedia:Taskwarrior|Taskwarrior]] ({{Pkg|task}}) のための軽量で安全なサーバです。デスクトップとモバイルを含む複数のクライアント間でタスクをインテリジェントに同期させることができます。 |
||
== サーバー == |
== サーバー == |
||
| 8行目: | 8行目: | ||
=== 設定 === |
=== 設定 === |
||
taskd をインストールしたら設定が必要です。最初に {{ic|export TASKDDATA<nowiki>=</nowiki>/var/lib/taskd}} を実行してください (このコマンドを実行しない場合、taskd コマンドを実行するたびに {{ic|--data /var/lib/taskd}} を付ける必要があります)。 |
|||
taskedがインストールされたら、まずは、設定する必要があります。最初のステップは |
|||
{{bc|$ export TASKDDATA<nowiki>=</nowiki>/var/lib/taskd }} |
|||
(このコマンドを実行しない場合、taskd コマンドを実行するたびに {{ic|--data /var/lib/taskd}} を付ける必要があります。) |
|||
次に {{ic|/usr/share/doc/taskd/pki/vars}} ファイルを編集してください。{{ic|CN<nowiki>=</nowiki>}} 行にサーバーのホストネームあるいは IP アドレスを指定してください (接続方法によってどちらか選んでください)。ファイルが編集できたら、{{ic|/usr/share/doc/taskd/pki/generate}} を実行してください。サーバーの自己署名証明書が作成されます。生成された *.pem ファイルを全て {{ic|/var/lib/taskd}} にコピーしてください。最低でも、後でユーザー証明書を作成するために {{ic|ca.cert.pem}} は pki フォルダに必須になります。 |
次に {{ic|/usr/share/doc/taskd/pki/vars}} ファイルを編集してください。{{ic|CN<nowiki>=</nowiki>}} 行にサーバーのホストネームあるいは IP アドレスを指定してください (接続方法によってどちらか選んでください)。ファイルが編集できたら、{{ic|/usr/share/doc/taskd/pki/generate}} を実行してください。サーバーの自己署名証明書が作成されます。生成された *.pem ファイルを全て {{ic|/var/lib/taskd}} にコピーしてください。最低でも、後でユーザー証明書を作成するために {{ic|ca.cert.pem}} は pki フォルダに必須になります。 |
||
{{Note|{{AUR|taskd-git}} の場合、''/usr/share/doc/taskd'' は ''/usr/lib/taskd'' に移動します。}} |
|||
それから taskd を設定してください。{{ic|taskd config}} を実行するか {{ic|/var/lib/taskd/config}} を直接編集することで設定できます。 |
それから taskd を設定してください。{{ic|taskd config}} を実行するか {{ic|/var/lib/taskd/config}} を直接編集することで設定できます。 |
||
{{hc|/var/lib/taskd/config|<nowiki> |
|||
{{bc|taskd config --force client.cert $TASKDDATA/client.cert.pem |
|||
client.cert=/var/lib/taskd/client.cert.pem |
|||
client.key=/var/lib/taskd/client.key.pem |
|||
taskd config --force server.cert $TASKDDATA/server.cert.pem |
|||
server.cert=/var/lib/taskd/server.cert.pem |
|||
server.key=/var/lib/taskd/server.key.pem |
|||
server.crl=/var/lib/taskd/server.crl.pem |
|||
taskd config --force ca.cert $TASKDDATA/ca.cert.pem}} |
|||
ca.cert=/var/lib/taskd/ca.cert.pem |
|||
chown taskd.taskd ca.cert.pem ca.key.pem server.cert.pem server.crl.pem server.key.pem |
|||
chmod 400 ca.cert.pem ca.key.pem server.cert.pem server.crl.pem server.key.pem |
|||
</nowiki>}} |
|||
さらに以下のコマンドを実行して taskd がログを出力する場所を変更してください (デフォルトは {{ic|/tmp/log}} となっています): |
さらに以下のコマンドを実行して taskd がログを出力する場所を変更してください (デフォルトは {{ic|/tmp/log}} となっています): |
||
| 26行目: | 36行目: | ||
最後に taskd のサーバー名を設定します。証明書の名前と同じ名前を設定してください: {{ic|taskd config --force server servername:port}}。taskd のポートはデフォルトでは設定されていないため、手動で設定する必要があります。 |
最後に taskd のサーバー名を設定します。証明書の名前と同じ名前を設定してください: {{ic|taskd config --force server servername:port}}。taskd のポートはデフォルトでは設定されていないため、手動で設定する必要があります。 |
||
=== 実行 === |
|||
{{ic|taskd.service}} を [[起動/有効化]] します。 |
|||
=== taskd にユーザーを追加 === |
=== taskd にユーザーを追加 === |
||
tasked は、データをグループとユーザーに編成し、各ユーザーはグループに属します。 |
|||
{{bc|taskd add org group |
|||
taskd add user group username}} |
|||
ユーザーが同期するには最後のコマンドで返ってきたキーが必要になります。 |
|||
ユーザーを追加するには、次のコマンドを実行し、必要に応じて {{ic|[group]}} と {{ic|[username]}} を置き換えます。 |
|||
taskd ユーザーで新しいグループとユーザーが読み込めるように設定してください: |
|||
{{bc| |
|||
{{bc|chown -R taskd:taskd /var/lib/taskd/orgs}} |
|||
# taskd add org [group] |
|||
# taskd add user [group] [username] |
|||
}} |
|||
最後のコマンドが返すキーに注意してください。ユーザーは同期するためにキーが必要になります。 |
|||
新しいグループとユーザーがユーザー {{ic|taskd}} によって読み取り可能であることを確認してください。 |
|||
{{ic|/usr/share/doc/taskd/pki/}} に戻って {{bc|./generate.client username}} を実行してください。{{ic|username.cert.pem}} と {{ic|username.key.pem}} が作られるので、{{ic|ca.cert.pem}} とあわせてユーザーの {{ic|~/.task}} ディレクトリに追加してください。 |
|||
{{bc|# chown -R taskd:taskd /var/lib/taskd/orgs}} |
|||
{{ic|/usr/share/doc/taskd/pki/}} に戻り、{{bc|#./generate.client username}} を実行します。これにより、{{ic|username.cert.pem}} と {{ic|username.key.pem}} がが返されます。 |
|||
{{ic|username.key.pem}}、{{ic|username.cert.pem}}、および {{ic|ca.cert.pem}} は、ユーザーの Taskwarrior ユーザーデータディレクトリにコピーする必要があります (デフォルトは {{ic |~/.task}}) |
|||
== クライアント == |
== クライアント == |
||
=== ユーザーの設定 === |
=== ユーザーの設定 === |
||
{{ic|*.pem}} ファイルを {{ic|~/.task}} に追加したら、サーバー名とユニーク ID とあわせて task の設定に追加してください: |
|||
{{ic|.pem}} ファイルがユーザーの Taskwarrior データディレクトリにコピーされたら、ファイルを指すように構成を更新する必要があります。 |
|||
{{bc|task config taskd.certificate ~/.task/username.cert.pem |
|||
task config taskd.key ~/.task/username.key.pem |
|||
task config taskd.ca ~/.task/ca.cert.pem |
|||
task config taskd.server servername:port |
|||
task config taskd.credentials group/username/key}} |
|||
同じディレクトリの {{ic|config}} ファイルに以下を追加します。 |
|||
{{hc|/var/lib/taskd/config|<nowiki> |
|||
{{ic|task sync init}} の実行後、ユーザーは taskwarrior をいつでも同期できるようになります。 |
|||
taskd.server=servername:port |
|||
taskd.credentials=group/username/key |
|||
taskd.certificate=~/.task/username.cert.pem |
|||
taskd.key=~/.task/username.key.pem |
|||
taskd.ca=~/.task/ca.cert.pem |
|||
</nowiki>}} |
|||
パスは {{ic|task}} が実行されるディレクトリからの相対パスであるため、{{ic|~}} からの相対パスまたは絶対パスである必要があります。 |
|||
初期同期を実行し、Taskwarriorデータをサーバーに送信することに同意します。 |
|||
{{bc|$ task sync init}} |
|||
ローカルの変更をサーバーに送信します: |
|||
{{bc|$ task sync}} |
|||
=== Android の Taskwarrior アプリを使う === |
=== Android の Taskwarrior アプリを使う === |
||
Android アプリをダウンロードする前に、フォルダを作成する必要があります。外部ストレージに (内部ストレージしかない場合は内部ストレージでかまいません)、{{ic|Android/data/kvj.taskw/files/key}} というフォルダを作成してください ("key" は taskd でユーザーを作成したときに表示されたキーに置き換えてください)。そしてフォルダに {{ic|username.key.pem}}, {{ic|username.cert.pem}}, {{ic|ca.cert.pem}} ファイルを追加してください。 |
Android アプリをダウンロードする前に、フォルダを作成する必要があります。外部ストレージに (内部ストレージしかない場合は内部ストレージでかまいません)、{{ic|Android/data/kvj.taskw/files/key}} というフォルダを作成してください ("key" は taskd でユーザーを作成したときに表示されたキーに置き換えてください)。そしてフォルダに {{ic|username.key.pem}}, {{ic|username.cert.pem}}, {{ic|ca.cert.pem}} ファイルを追加してください。 |
||
{{bc|taskd.server<nowiki>=</nowiki>servername:port |
|||
そのフォルダに {{ic|.taskrc.android}} という名前のフォルダに以下のような新しいファイルを作成します: |
|||
taskd.credentials<nowiki>=</nowiki>group/username/key |
|||
taskd.certificate<nowiki>=</nowiki>username.cert.pem |
|||
{{hc|/sdcard/Android/data/kvj.taskw/files/[uuid]/.taskrc.android|2= |
|||
taskd.key<nowiki>=</nowiki>username.key.pem |
|||
taskd.server=servername:port |
|||
taskd.ca<nowiki>=</nowiki>ca.cert.pem}} |
|||
taskd.credentials=group/username/key |
|||
設定できたらアプリをダウンロードして起動してください。プロファイルを追加するときに、作成したデータフォルダを選択してください。これで Taskwarrior が同期されます。 |
|||
taskd.certificate=username.cert.pem |
|||
taskd.key=username.key.pem |
|||
taskd.ca=ca.cert.pem |
|||
}} |
|||
{{Note|構成ファイル {{ic|.taskrc.android}} の最後に改行があることを確認してください。そうしないと、正しく解析されません}} |
|||
次に、アプリをダウンロードして起動します。プロファイルを追加するように求められたら、作成したデータフォルダを選択します。 Taskwarrior は同期し、期待どおりに機能するはずです。 |
|||
== トラブルシューティング == |
== トラブルシューティング == |
||
=== Unreachable Server === |
=== Unreachable Server === |
||
サーバーが実行されているのに接続できない場合、IPv6 が原因かもしれません。{{ic|family<nowiki>=</nowiki>IPv4}} を {{ic|/var/lib/taskd/config}} に追加して taskd を再起動することで強制的に IPv4 を使うことができます。 |
サーバーが実行されているのに接続できない場合、IPv6 が原因かもしれません。{{ic|family<nowiki>=</nowiki>IPv4}} を {{ic|/var/lib/taskd/config}} に追加して taskd を再起動することで強制的に IPv4 を使うことができます。 |
||
"Server starting" で止まってしまう場合、{{ic|server}} オプションで指定したアドレスの解決に失敗している可能性があります。しばらくすると、"Name or service not known" と表示されてタイムアウトします。この場合、そのアドレスをあなたの外部 IP アドレスにエイリアスする外部 {{ic|/etc/hosts}} エントリを追加してみてください (参照 [[ドメイン名前解決]]) |
|||
これらを試した後、taskd を再起動し、問題が解決したかどうか確認してください。 |
|||
=== "Bad Key" === |
=== "Bad Key" === |
||
サーバーが "Bad Key" エラーを返してくる場合、作成したフォルダのパーティションを確認してください ({{ic|/var/lib/taskd/}} やサブフォルダ)。taskd は自動的に uid/gid を設定しないため、手動で taskd に所有者・所有グループを変更する必要があります。 |
サーバーが "Bad Key" エラーを返してくる場合、作成したフォルダのパーティションを確認してください ({{ic|/var/lib/taskd/}} やサブフォルダ)。taskd は自動的に uid/gid を設定しないため、手動で taskd に所有者・所有グループを変更する必要があります。 |
||
=== taskd.service が起動時に失敗する場合 === |
|||
taskd の systemd ユニット が起動時に失敗する場合、[[systemd/タイマー]] を追加してこのユニットに遅延を与えることができます。 |
|||
{{hc|/etc/systemd/system/taskd.timer|<nowiki> |
|||
[Unit] |
|||
Description=Start taskd.service after fixed amount of time |
|||
[Timer] |
|||
OnStartupSec=10 |
|||
Unit=taskd.service |
|||
[Install] |
|||
WantedBy=multi-user.target |
|||
</nowiki>}} |
|||
次に、{{ic|taskd.service}} [[無効化]] して {{ic|taskd.timer}} を [[有効化]] します。 |
|||
2022年5月28日 (土) 17:39時点における最新版
taskd は Taskwarrior (task) のための軽量で安全なサーバです。デスクトップとモバイルを含む複数のクライアント間でタスクをインテリジェントに同期させることができます。
サーバー
インストール
taskd は taskd または taskd-gitAUR パッケージでインストールできます。
設定
taskedがインストールされたら、まずは、設定する必要があります。最初のステップは
$ export TASKDDATA=/var/lib/taskd
(このコマンドを実行しない場合、taskd コマンドを実行するたびに --data /var/lib/taskd を付ける必要があります。)
次に /usr/share/doc/taskd/pki/vars ファイルを編集してください。CN= 行にサーバーのホストネームあるいは IP アドレスを指定してください (接続方法によってどちらか選んでください)。ファイルが編集できたら、/usr/share/doc/taskd/pki/generate を実行してください。サーバーの自己署名証明書が作成されます。生成された *.pem ファイルを全て /var/lib/taskd にコピーしてください。最低でも、後でユーザー証明書を作成するために ca.cert.pem は pki フォルダに必須になります。
それから taskd を設定してください。taskd config を実行するか /var/lib/taskd/config を直接編集することで設定できます。
/var/lib/taskd/config
client.cert=/var/lib/taskd/client.cert.pem client.key=/var/lib/taskd/client.key.pem server.cert=/var/lib/taskd/server.cert.pem server.key=/var/lib/taskd/server.key.pem server.crl=/var/lib/taskd/server.crl.pem ca.cert=/var/lib/taskd/ca.cert.pem chown taskd.taskd ca.cert.pem ca.key.pem server.cert.pem server.crl.pem server.key.pem chmod 400 ca.cert.pem ca.key.pem server.cert.pem server.crl.pem server.key.pem
さらに以下のコマンドを実行して taskd がログを出力する場所を変更してください (デフォルトは /tmp/log となっています):
touch /var/log/taskd.log chown taskd:taskd /var/log/taskd.log taskd config --force log /var/log/taskd.log
最後に taskd のサーバー名を設定します。証明書の名前と同じ名前を設定してください: taskd config --force server servername:port。taskd のポートはデフォルトでは設定されていないため、手動で設定する必要があります。
実行
taskd.service を 起動/有効化 します。
taskd にユーザーを追加
tasked は、データをグループとユーザーに編成し、各ユーザーはグループに属します。
ユーザーを追加するには、次のコマンドを実行し、必要に応じて [group] と [username] を置き換えます。
# taskd add org [group] # taskd add user [group] [username]
最後のコマンドが返すキーに注意してください。ユーザーは同期するためにキーが必要になります。
新しいグループとユーザーがユーザー taskd によって読み取り可能であることを確認してください。
# chown -R taskd:taskd /var/lib/taskd/orgs
/usr/share/doc/taskd/pki/ に戻り、
#./generate.client username
を実行します。これにより、username.cert.pem と username.key.pem がが返されます。
username.key.pem、username.cert.pem、および ca.cert.pem は、ユーザーの Taskwarrior ユーザーデータディレクトリにコピーする必要があります (デフォルトは ~/.task)
クライアント
ユーザーの設定
.pem ファイルがユーザーの Taskwarrior データディレクトリにコピーされたら、ファイルを指すように構成を更新する必要があります。
同じディレクトリの config ファイルに以下を追加します。
/var/lib/taskd/config
taskd.server=servername:port taskd.credentials=group/username/key taskd.certificate=~/.task/username.cert.pem taskd.key=~/.task/username.key.pem taskd.ca=~/.task/ca.cert.pem
パスは task が実行されるディレクトリからの相対パスであるため、~ からの相対パスまたは絶対パスである必要があります。
初期同期を実行し、Taskwarriorデータをサーバーに送信することに同意します。
$ task sync init
ローカルの変更をサーバーに送信します:
$ task sync
Android の Taskwarrior アプリを使う
Android アプリをダウンロードする前に、フォルダを作成する必要があります。外部ストレージに (内部ストレージしかない場合は内部ストレージでかまいません)、Android/data/kvj.taskw/files/key というフォルダを作成してください ("key" は taskd でユーザーを作成したときに表示されたキーに置き換えてください)。そしてフォルダに username.key.pem, username.cert.pem, ca.cert.pem ファイルを追加してください。
そのフォルダに .taskrc.android という名前のフォルダに以下のような新しいファイルを作成します:
/sdcard/Android/data/kvj.taskw/files/[uuid]/.taskrc.android
taskd.server=servername:port taskd.credentials=group/username/key taskd.certificate=username.cert.pem taskd.key=username.key.pem taskd.ca=ca.cert.pem
.taskrc.android の最後に改行があることを確認してください。そうしないと、正しく解析されません次に、アプリをダウンロードして起動します。プロファイルを追加するように求められたら、作成したデータフォルダを選択します。 Taskwarrior は同期し、期待どおりに機能するはずです。
トラブルシューティング
Unreachable Server
サーバーが実行されているのに接続できない場合、IPv6 が原因かもしれません。family=IPv4 を /var/lib/taskd/config に追加して taskd を再起動することで強制的に IPv4 を使うことができます。
"Server starting" で止まってしまう場合、server オプションで指定したアドレスの解決に失敗している可能性があります。しばらくすると、"Name or service not known" と表示されてタイムアウトします。この場合、そのアドレスをあなたの外部 IP アドレスにエイリアスする外部 /etc/hosts エントリを追加してみてください (参照 ドメイン名前解決)
これらを試した後、taskd を再起動し、問題が解決したかどうか確認してください。
"Bad Key"
サーバーが "Bad Key" エラーを返してくる場合、作成したフォルダのパーティションを確認してください (/var/lib/taskd/ やサブフォルダ)。taskd は自動的に uid/gid を設定しないため、手動で taskd に所有者・所有グループを変更する必要があります。
taskd.service が起動時に失敗する場合
taskd の systemd ユニット が起動時に失敗する場合、systemd/タイマー を追加してこのユニットに遅延を与えることができます。
/etc/systemd/system/taskd.timer
[Unit] Description=Start taskd.service after fixed amount of time [Timer] OnStartupSec=10 Unit=taskd.service [Install] WantedBy=multi-user.target