Togglを使っていたのですが、あまり使い勝手がよくありませんでした。それで自分で作ろうかと思っていたのですけれど、なんだかすでにセルフホストでありました。
TimeTagger - Tag your time, get the insight
リポジトリはこちら「GitHub - almarklein/timetagger: Tag your time, get the insight」。
Introductionを読んだ時、あまりにも僕が想像していたものとほぼ同じ仕様で、本当に驚きました。完全に同じようなニーズに基づいていたのだと思います。以下はGeminiによる和訳です。
TimeTaggerは、ローカル環境またはサーバー上で動作させることができる、Webベースの時間追跡(タイムトラッキング)ソリューションです。個人やフリーランスの方々を対象としており、以下のような特徴を備えています。
- インタラクティブなタイムラインを中心とした、直感的なユーザーインターフェース(UI)。
- プロジェクト単位ではなく、タグを使用することによる軽快な操作感。
- PDFおよびCSV形式でのレポート作成。
- 日次、週次、月次の目標設定。
- 統合されたポモドーロ・メソッド(実験的機能)。
- レスポンシブ対応:小さな画面から大きな画面まで、快適に動作します。
- デバイス間での同期。
特に「プロジェクト」ではなく「タグ」を使うという発想が、本当に個人の発想であると思います。完全に同じことを考えておりました。ポモドーロについては私は物理的なタイマーを利用していますが、しかしソフトウェア的に連携したいという人もいるでしょう。
インストール
私の環境
- Intel Mac mini 2018
- macOS 14.8.1
- Docker Desktop for Mac 4.55.0
インストール方法は、pipを使ったものとdockerを使ったものがあるようです。また、docker-compose.ymlはroot版とnonroot版があります。常用予定なのでdocker版を使います。LAN内運用ですし、トラブルも少なそうなroot版をここでは見ます。セルフホストについては「How to self-host your time tracker with Docker」に記事があります。
# Example docker-compose file for TimeTagger that uses the published
# Docker image in the default root variant.
# Shows all options settable via the environment.
#
# !! Make sure to apply your own credentials !!
# !! You can use e.g. https://timetagger.app/cred to generate them !!
# !! In docker-compose characters '$' should be escaped as '$$' !!
# !! If you use a .env file, use single quotes instead of escaping !!
services:
timetagger:
image: ghcr.io/almarklein/timetagger
ports:
- "80:80"
volumes:
- ./_timetagger:/root/_timetagger
environment:
- TIMETAGGER_BIND=0.0.0.0:80
- TIMETAGGER_DATADIR=/root/_timetagger
- TIMETAGGER_LOG_LEVEL=info
- TIMETAGGER_CREDENTIALS=test:$$2a$$08$$0CD1NFiIbancwWsu3se1v.RNR/b7YeZd71yg3cZ/3whGlyU6Iny5i # test:test変更点は以下になるかと思います。
- ポート
- バインドマウントするディレクトリ
- クレデンシャル
一点加えるならrestart: unless-stoppedになるでしょうか。
クレデンシャルですが、「https://timetagger.app/cred」でユーザ名とパスワードをフォームに入力すると、コピペ用のハッシュ化されたものが作れます。docker-compose.yml向けは3つ目の$をエスケープしたやつになります。
そしたらhttp://IPアドレス:ポートにアクセスしてログイン。記事には「ログインパスワードはそのまんま送ってるんでhttpsを強く推奨」とあるが、うーんそのうちw
まぁLAN内なので。LAN内で通信傍受されている場合、なんかもうタイムトラッカーアプリのログインパスワードとかそれどころではない大変なことになっているので……。
適当に動かす
とりあえずトラックしてみる。

ほーん。タグは自分で#つけて書くらしい。

PDFでレポート出力。

うん。やりたいことだいたい全部できますね。個人で使う分にはこれぐらいでいいんだよという感じがします。
バックアップ
docker-compose.ymlで指定したマウント先に、jwtとSQLiteのデータベースファイルがあるだけです。なので、docker用ファイルとディレクトリをコピーするだけでバックアップ完了です。良いですね。
所感
あまりにも想像していたものそのもので、驚いてしまいました。一点異なるのは、私は複数のタスクを同時に登録できるようなものを考えていたことなのですが、こうしてみると余分な機能に思えました。
素晴らしいことだなぁと有り難く思う反面、なんかもう全部OSSであるやんけ僕何したらええねんというお気持ちもあります。
ひとまず使っていきたいと思います。
コメント