ソフトウェアエンジニアが知っておきたい!OSSの「Immich」で実現するプライベートな写真管理術
Immichっていうのはね、自分で管理できる写真や動画のストレージサービスだよ。簡単に言うと、GoogleフォトとかiCloudみたいなサービスを、自分の家のサーバーで動かせるようにしたものなの。
お兄ちゃんはソフトウェアエンジニアだから、このすごさがわかるよね?ただの写真管理アプリじゃないんだよ。
完全なプライバシーとデータ主権
自分のサーバーにデータがあるから、外部のサービスに写真を預けなくてもいいの。プライベートな写真も安心して保存できるし、誰にも見られない!
高いカスタマイズ性
オープンソースだから、コードを自由にいじれるんだ。自分の用途に合わせて機能を追加したり、他のサービスと連携させたりもできるよ。
コスト削減
Googleフォトとかって、容量が増えると月額料金がかかっちゃうでしょ?でも、Immichなら一度サーバーを用意しちゃえば、あとは維持費だけで済むことが多いの。
パフォーマンス
Immichは高速に動くように設計されてるんだって。たくさんの写真もサクサク表示できるから、ストレスフリーだよ。
お兄ちゃん、ドッカーって使ったことある?ImmichはDockerとDocker Composeを使えば、簡単に導入できちゃうんだ。
DockerとDocker Compose
サーバーにインストールしておく必要があるよ。
サーバー
写真を保存する場所。古いPCとか、Raspberry Piとかでも動かせるみたい。
お兄ちゃん、これを見ながらやってみて!
まず、GitHubからdocker-compose.ymlファイルをダウンロードしてくるよ。
そしたら、そのファイルをサーバーのどこかに置いて、以下のコマンドを実行するだけ!
docker-compose pull
docker-compose up -d
たったこれだけで、Immichのサービスが立ち上がっちゃうんだ。あとは、ブラウザからサーバーのIPアドレスにアクセスすれば、管理画面が出てくるはずだよ。
Immichには、APIが用意されてるんだ。これを使えば、お兄ちゃんがいつも作ってるアプリと連携させたりもできるんだよ!
例えば、Node.jsで書くならこんな感じかな。
const fs = require('fs');
const axios = require('axios');
const FormData = require('form-data');
const uploadImage = async (imagePath) => {
const formData = new FormData();
formData.append('file', fs.createReadStream(imagePath));
try {
const response = await axios.post(
'http://<your-immich-server-ip>/api/asset/upload',
formData,
{
headers: {
...formData.getHeaders(),
'x-api-key': '<your-api-key>' // ImmichのAPIキーを設定
}
}
);
console.log('アップロード成功:', response.data);
} catch (error) {
console.error('アップロード失敗:', error.response.data);
}
};
// 使い方
uploadImage('/path/to/your/photo.jpg');
お兄ちゃんのアプリから、自動で写真をアップロードする機能とか作れたら、もっと便利になるよね!