日記アプリは数多く存在しますが、クラウドサービスではサービスが終了したり、プライバシーポリシーの変更により思い出が失われるリスクがあります。開発者が子どもたちの成長記録を残そうとした際、既存サービスのデータ永続性とプライバシーに不安を感じたことから生まれたのが「Journiv」です。セルフホスト型でデータを完全に自分で管理でき、ムード追跡や執筆プロンプト、分析機能を備えた包括的な日記アプリケーションとなっています。

journiv/journiv-app: Journiv - Self hosted private journaling app

https://github.com/journiv/journiv-app

Journiv - Self-Hosted Private Journaling - Journiv

https://www.journiv.com/



◆Journivの主な機能

・プライバシーとセキュリティ

すべてのデータはローカルに構築したSQLiteもしくはPostgreSQLのいずれかのデータベースに保存し、追跡や分析など外部サービスに依存しません。JWT認証を利用した自動リフレッシュトークンを備えた安全な認証を行いセキュリティを確保。

・セルフホスト

ローカルのサーバーからDockerコンテナで簡単に起動が可能。

・ムードトラッキング

日記のエントリーにムード(=気分)を設定することが可能。



感情パターンを集計し、時系列で可視化することで感情のトレンドを把握できます。



・質問ベースのジャーナリング

日記を書くヒントとして毎日違う質問を提示します。



・検索と発見

全文検索や日付範囲検索などが可能。



・分析とインサイト

執筆頻度や利用単語数などを分析し可視化。



・インポートとエクスポート

記録したデータをZIPファイルでエクスポートでき、ZIPファイルからインポートすることが可能。

・この日

過去の同じ月日のエントリーを表示。

・位置情報と天気情報

位置データと天気情報を記録することが可能。なお、天気情報はOpenWeatherのAPIの利用登録が必要です。



・リッチテキストとMarkdown

・タイムラインとカレンダー

タイムライン形式で時系列にエントリーを表示。



カレンダーでも表示できます。



・タグと分析

タグによる分類が可能で、出現頻度や傾向を分析可能。



・ユーザー管理

ユーザーの作成・削除が可能で、「管理者」と「ユーザー」の2種類の権限ロールが設定できます。



・Immichとの連携

セルフホスト型の写真・動画管理アプリのImmichと連携することで、日記にImmichから写真や動画を引用し表示することができます。

◆インストール方法

今回はWindows 11上でUbuntuがセットアップされたWSL2に公式のDocker Installationを参考にインストールします。journivディレクトリを作成し移動。


mkdir journiv
cd journiv


docker-compose.ymlと環境設定ファイルのテンプレートをダウンロード。


curl -o docker-compose.yml https://raw.githubusercontent.com/journiv/journiv-app/refs/tags/latest/docker-compose.yml
curl -O https://raw.githubusercontent.com/journiv/journiv-app/refs/tags/latest/env.template


環境設定ファイルを作成。


cp env.template .env


「SECRET_KEY」を以下のコマンドで作成し、表示されるランダムな値をコピーしておきます。


openssl rand -base64 32


.envファイルを編集し、「SECRET_KEY」に先ほど作成した値を貼り付け、「DOMAIN_NAME」にドメイン名かIPアドレスを記入して、「POSTGRES_PASSWORD」に任意のパスワードを設定します。


SECRET_KEY=【先ほど作成した値】
DOMAIN_NAME=【ドメイン名かIPアドレス】
POSTGRES_PASSWORD=【任意のパスワード】


データディレクトリを作成し、権限を指定された値に変更します。


mkdir -p data/app data/postgres data/valkey
sudo chown -R 1000:1000 data
sudo chmod -R 755 data


コンテナを起動します。


docker compose up -d


コンテナが起動したらブラウザで8000ポートへアクセスします。



画面下部のサインアップ用のリンクの表示がDisabledになっている場合は「Server URL」にDOMAIN_NAMEで設定した値を入力して「探す」ボタンをクリックしサーバーとの接続が完了すると「Don't have an account? Sign Up」に表示が変わります。



ユーザーを作成するため「Don't have an account? Sign Up」をクリック。



登録フォームが表示されるので「Name」に名前を入力し、「Email」にメールアドレス、「Password」にパスワードを入力して「Sign Up」ボタンをクリックします。



登録が完了すると自動的にログインが行われ、ダッシュボードが表示されます。



なお、iOSおよびAndroid向けのネイティブアプリも開発中で、近日中にApp StoreやGoogle Playで公開される予定とのことです。