見出し画像

[Self-hosted][Immich]アルバムに写真を追加すると自動更新するギャラリーを個人サイトにHTMLベースで組み込む。

実装内容ですが、だいたいこんな感じになります。(現在組込中。)https://inari-lost-shrine.net/

【必要なもの。】
Ubuntu OSベースのPC (N100, N150系の省電力ミニPC)
【必要な知識】
Linuxサーバー知識、Docker知識、Gemini知識

実装イメージ図。
言葉で説明するなら、つまりCloudflareベースで動かすことになります。つまりCloudflareが鯖落ちしたら丸ごと落ちるリスクがありますが、利点としてアカウントを持っていたら、ドメイン代以外はほとんど無料で維持できる点です。そしてルーターでポート開放しなくてもTCP通信のみなら、つまりCloudflare Tunnelを経由してバイパス出来ます。なのでこれを使って自鯖ギャラリーを建てるわけです。

■UbuntuにDocker一式をセットアップ。

Dockerアカウントにログインなどしなくても大丈夫です。
以下を鯖機に入力してインストール。

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo 
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu 
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | 
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

それから、動作確認。

sudo docker run hello-world

sudoなしで実行するには。

sudo usermod -aG docker $USER


■Self-hostedのベースとなるImmichをDockerでデプロイする。

mkdir ~/immich-app
cd ~/immich-app
#docker-compose.ymlをダウンロード
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml

#.env(設定ファイル)のテンプレートをダウンロード
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

.envファイルの編集

sudo nano .env

※DB_PASSWORD:
データベースのパスワード(初期値から変更必須。)

Immichデプロイ

sudo docker compose up -d

※初回はイメージのダウンロード(数GB程度)とビルドが行われるため、数分かかります。

鯖が立ち上がったはずなので以下をブラウザで開く。
http://<UbuntuのIPアドレス>:2283

するとImmichの初期設定画面が開くので、適当にセットアップ。

■ Cloudflare TunnelでSelf-hostedのImmichサーバーをポート開放無しにバイパスする。(Cloudflareドメイン必須。)

Cloudflare > Zero Trust > Network > Connecter
から鯖機をCloudflaredで事前に連携させておく。
(詳細はここでは書きません。)

さて、Immichに割り当てたいサブドメインを適当に割り当てます。


HTTPを選択して、つまりUbuntuのローカルIP:2283を入力します。
そして最後に、HTTP Settings項目下のHTTP Host Headerの項目に先程設定したサブドメインをそのまま入力します。

Saveでおしまい。

該当URLが機能しましたら、つまりそれでCloudflare Tunnelによるバイパスは成功です。ひとまずおつかれさまでした。

■Immichで公開設定をするための準備。(APIキー編
Immichのアカウント設定で、APIキー設定の部分で。
asset.read, asset.view, それからalbum.readに✅️を入れてCreateします。

これで下準備完了です。
さて続いて公開用アルバムをImmichで適当にセットアップします。

■公開用アルバムのセットアップ。

適当に写真をアップしてアルバムを作ります。(謎な猫の画像ですみません。)


そしてアルバムを作成したら、このURLをコピーしてメモ帳か何かに控えます。

■ Gemini CLIまたはAntigravityで組み込み作業。
Githubで適当な空のレポジトリを作ります(統合する場合は別処理で)

Cloudflare Pagesでも空のプロジェクトをGithubの当レポジトリを引っ張って作成。

環境変数にgallery-apiという名前で変数を作り値(Value)にImmichで作成したAPIキーをコピペ。これで下準備は完了です。


Github CLI経由でレポジトリをローカルにClone。

Antigravityをインストールする。(Gemini CLIでも可

こんな感じのプロンプトでいいので、なんかそれっぽくなるまで繰り返す。


で、出来たのが、GithubにPushされ、Cloudflare Pagesでデプロイしている場合、自動でビルドされます。

で、デプロイされたページにドメインにURLを割り当てて、出来たページがこちら。

https://test-cat.inari-lost-shrine.net/


Immichの公開指定したアルバムに、写真を追加すると…

自動でサイトの方にもそれらが追加されます。
ね、簡単でしょう?

あなたも手元にサーバー運用ができるPCがある場合、これを試すことができます。幸運を。


テキストだけじゃ乏しいので感情表現豊かにするために英語圏で拾ってきたミーム画像が大量にありますがすみません、気にしないでください。いつもこれです。

いいなと思ったら応援しよう!