家族や友人、同僚など身内だけで画像を共有したいという場合に、セルフホストで構築できる簡易な画像共有システムとして「Slink」が公開されています。

andrii-kryvoviaz/slink: Self-hosted image sharing service

https://github.com/andrii-kryvoviaz/slink

◆Slinkの主な機能

・対応フォーマット

PNG・JPEG・WEBP・SVG・BMP・ICO・GIF・AVIF・HEIC・TIFFなど多くの形式に対応。

・複数ファイルの同時アップロード

複数ファイルを同時に進捗状況を確認しながらアップロード。

・画像圧縮機能

アップロード時に画像をWEBP・AVIFおよびJPEGに指定したクオリティレベルで圧縮。

・共有リンク生成およびURL短縮機能

共有リンクの作成、リンクの短縮も可能。

・コレクション

任意の画像を集めたコレクションを作成し、他のユーザーと共有。

・重複画像検知

重複した画像を自動で検出し、同じ画像のアップロードを回避。

・階層型タグシステム

タグで画像を整理。

・コメント機能

公開されている画像にコメントが可能。

・ブックマーク

気に入った画像をブックマークして管理。

・通知機能

自分の画像に対するユーザーのアクションを通知で受け取り。

・登録および制限

新規アカウント作成フォームの公開・非公開、アカウントを作成しなくてもアップロードが可能かどうかなどの設定。

・API

APIにより外部サービスからSlinkを操作可能、APIキーは各ユーザーで個別に生成し管理。

・ShareX連携

Windows用の無料のスクリーンショットツール「ShareX」と連携し、スクリーンショットを直接Slinkにアップロード可能。

・ストレージプロバイダ対応

ローカル・SMBおよびAmazon S3などのストレージを選択して利用可能。

◆Slinkの導入方法

今回はWindows 11にDocker DesktopとGit for WindowsのGit Bashを用意した環境で構築します。任意のフォルダで以下のコマンドを実行して、Slinkの作業フォルダを作成してフォルダに移動します。


mkdir slink-app && cd slink-app


設定や画像ファイルを保存するフォルダを作成。


mkdir slink/var/data
mkdir slink/images


以下のコマンドの「IP_ADDRESS」をコンテナを起動するPCのIPアドレスに書き換えて実行します。


docker run -d \
--name slink \
-p 3000:3000 \
-v ./slink/var/data:/app/var/data \
-v ./slink/images:/app/slink/images \
-e ORIGIN=http://IP_ADDRESS:3000 \
-e TZ=Asia/Tokyo \
-e USER_APPROVAL_REQUIRED=false \
-e IMAGE_MAX_SIZE=15M \
-e STORAGE_PROVIDER=local \
anirdev/slink:latest


ブラウザを立ち上げ、http://【IP_ADDRESS】:3000にアクセスすると、Slinkのトップページが表示されます。



「http://【IP_ADDRESS】:3000/profile/signup」にアクセスし、ユーザー登録フォームの「Username」にユーザー名、「Email Address」にメールアドレスを入力し、「Password」と「Confirm Password」にパスワードを入力して「Create Account」をクリックしてユーザーを作成。



作成したユーザーを管理者に昇格させるため「EMAIL_ADDRESS」を登録したメールアドレスに書き換えて以下のコマンドを実行します。


docker exec -it slink slink user:grant:role --email=EMAIL_ADDRESS ROLE_ADMIN


「http://【IP_ADDRESS】:3000/login」にアクセスし「Email or Username」にユーザー名かメールアドレス、「Password」にパスワードを入力して「Sign In」をクリック。



ログインするとメニューとイメージの一覧ページが表示されます。



◆ShareXとの連係

スクリーンショットを撮ってそのままSlinkにアップロードが可能です。設定方法はSlinkのアカウントが表示されている部分をクリックするとメニューが表示されるので「External Integrations」をクリック。



「New API Key」をクリック。



「Key Name」に任意の名前を入力して「Create API Key」をクリック。



API Keyが作成されるので「Download ShareX Config」をクリックして設定ファイルを保存します。



保存した設定ファイルをダブルクリック。



設定ファイルのインポートダイアログが表示されるので「はい」をクリック。



「アップロード先」から「画像アップローダー」の中にある「独自の画像アップローダー」にチェック。



「キャプチャー後のタスク」から「画像をホストにアップロード」をクリックして有効化します。



キャプチャーすると自動的にアップロードされ「Upload History」にアップロードされた画像が表示されます。



アップロードされた画像はいったん各ユーザーの「Upload History」に記録され、ユーザーの操作によりコレクションへの振り分けや公開の設定を行うという操作が必要となります。

◆ユーザーについて

ユーザーの権限は一般の「User」と管理者「Admin」の2種類があります。グループ機能はなく、閲覧権限や容量制限などを各ユーザーに割り当てるというような機能もありませんでした。



Slinkは簡易的な共有アルバムとしての利用としては十分な機能を備えています。なお、HTTPSでのアクセスを行うためには別途リバースプロキシの構築が必要となります。