セルフホスト
Docker Compose で OpenTickly を自分のマシンで動かします。コマンド 1 つでアプリ、PostgreSQL、Redis が起動します。CasaOS、ZimaOS、Synology、fnOS などの NAS での手順も紹介します。
OpenTickly を自分で動かすのに必要なのは docker-compose.yml ファイル 1 つだけです。何もない状態から、実際に使えるところまでの手順を紹介します。
システム要件
- Docker Engine 20.10+ と Docker Compose v2 が入った Linux、macOS、Windows のいずれかのマシン
- メモリ約 1 GB、ディスク約 1 GB
- 空いている TCP ポート 1 つ(デフォルトは
8080)
Docker がまだ入っていない場合は、先に公式のインストールガイドに沿ってインストールしてください。
サーバーのデプロイ
ステップ 1 — docker-compose.yml をダウンロード
新しいフォルダを作り、compose ファイルをダウンロードします。
mkdir -p opentickly && cd opentickly
wget -O docker-compose.yml \
https://raw.githubusercontent.com/CorrectRoadH/OpenTickly/main/docker-compose.yml起動するコンテナは 3 つです。
- OpenTickly — Web UI + REST API(
8080で公開) postgres— データベース(内部ネットワークのみ、外部には公開しない)redis— キャッシュとバックグラウンド処理(内部ネットワークのみ、外部には公開しない)
ステップ 2 —(任意).env の設定
デフォルトのままでも動きます。ポートやパスワードを変えたいときは、同じフォルダに .env ファイルを作ってください。
# Web UI と API を公開するポート
OPENTOGGL_PORT=8080
# 本格的に使う前に強いパスワードに変えてください
OPENTOGGL_POSTGRES_PASSWORD=postgres
OPENTOGGL_REDIS_PASSWORD=opentoggl.env で変えられるのは、この 3 つだけです。それ以外(データベース名、ユーザー、イメージ、接続文字列)は、どの環境でもシンプルで同じ構成になるよう、あえて compose ファイルに直接書いてあります。もっと変えたい場合は docker-compose.yml を直接編集してください。
本格的に使う前に、両方のパスワードを必ず変えてください。デフォルト値はローカルで試すとき専用です。Postgres と Redis には Docker の外からはアクセスできませんが、同じネットワーク内の別のマシンやコンテナが乗っ取られたとき、強いパスワードがあればデータを読まれずに済みます。
ステップ 3 — コンテナの起動
docker compose up -dWeb アプリにアクセス
ブラウザで http://<あなたの IP>:8080 を開き、最初のアカウントを登録すれば、すぐに時間の記録を始められます。
モバイル
モバイルアプリはまだありませんが、Web アプリをスマートフォンのホーム画面に追加すれば、アプリのように使えます(PWA)。Timery など、サードパーティ製 Toggl アプリの開発者とも OpenTickly への対応について話をしています。
AI エージェントをつなぐ
OpenTickly には Toggl のような 1 時間 30 回の制限がないので、Claude や Cursor などのエージェントを好きなだけ使えます。toggl-cli を設定すれば、数分でエージェントがタイマーの開始・停止やプロジェクトの整理をしてくれるようになります。
アップグレード
docker compose pull
docker compose up -dNAS / Homelab へのデプロイ
OpenTickly は Docker Compose が動く環境ならどこでも動きます。以下は、上と同じ構成を各プラットフォームの画面から行う手順です。
CasaOS
- CasaOS ダッシュボードを開く
- App Store → カスタムインストール → docker-compose をインポート に進む
docker-compose.ymlの内容を貼り付ける- Web UI のポートを
8080にして保存 - ダッシュボードから起動する
http://<CasaOS の IP>:8080 でアクセスできます。
ZimaOS
ZimaOS(Zimablade / Zimacube の公式 OS)は CasaOS と同じ App Store を使っているので、手順もまったく同じです。App Store → カスタムインストール → docker-compose をインポート から compose ファイルを貼り付けてください。
Synology
Synology DSM 7.2 以降は、Container Manager で Docker Compose が使えます。
- Container Manager → プロジェクト → 作成 を開く
- プロジェクト名を入力(例:
opentickly) - docker-compose.yml を使用 を選び、compose ファイル を貼り付ける
- ウィザードを最後まで進めて完了
8080 が DSM と重なる場合は、プロジェクトを作る前に環境変数の設定で
OPENTOGGL_PORT=9090(または空いている別のポート)を追加してください。
fnOS
fnOS には Docker の管理画面が最初から入っています。
- fnOS デスクトップの Docker アプリを開く
- 左サイドバーで Compose → 新規プロジェクト を選ぶ
- プロジェクト名に
openticklyを入力し、保存先パスはデフォルトのまま - Compose 内容 に compose ファイル を貼り付ける
- デプロイ を押し、3 つのコンテナがすべて緑になるまで待つ
その他のプラットフォーム
以下のプラットフォームも、同じ Docker Compose の手順で動かせます。
- Unraid — Community Applications または Compose Manager プラグイン
- TrueNAS SCALE — カスタムアプリ + Docker Compose
- Proxmox LXC — LXC コンテナ内に Docker を入れてから、サーバーのデプロイ の手順に従う
設定リファレンス
.env で変えられる設定は 3 つです。
| 変数 | デフォルト値 | 説明 |
|---|---|---|
OPENTOGGL_PORT | 8080 | Web UI と API を公開するポート |
OPENTOGGL_POSTGRES_PASSWORD | postgres | Postgres のパスワード(本番では必ず変更) |
OPENTOGGL_REDIS_PASSWORD | opentoggl | Redis のパスワード(本番では必ず変更) |
それ以外(データベース名、ユーザー、イメージタグ、接続文字列、ボリューム名)は docker-compose.yml に直接書いてあります。変えたい場合はファイルを編集してください。
ヘルスチェック用エンドポイント
| パス | 用途 |
|---|---|
/readyz | リクエストを受けられる状態か(DB と Redis も確認) |
/healthz | プロセスが動いているか |
次のステップ
- HTTPS とリバースプロキシ
- バックアップ・復元・アップグレード
- AI 連携 — Claude や Cursor などのエージェントを自分のインスタンスにつなぐ
- GitHub リポジトリ — ソース、Issues、Discussions
- デプロイでつまずいたら Issues で教えてください