01.HyperAnokaShare
概要
今回は、自分が不便だと思っていることを解決してみました。 こんな人いませんか?
- 写真/動画の整理がめんどくさい
- PC、古いスマホ、HDDなどいろんな端末に画像、動画が散らばっている
- 普段使うスマホの容量はいっぱいだが、使っていないHDDがあってストレージをうまく使えない
- クラウドサービスをなんか使いたくない、使っているが課金しているのやめたい、容量が足りない
- 友人や家族とアルバムを共有したい
この辺を解決できるものを作りました。 簡単に言うと、webブラウザやアプリ(androidのみ)から、自分のHDDに入れらるというものです。 どの端末がアクセスできるか設定できますので、自分の複数の端末だったり、友人だったりで共有できます。 また、保存したフォルダもサーバー内でなるべく完結に整理されるようにし、CLI愛用者も画像の整理など視覚的にわかりやすいはずです。 そして、tailscale経由と同一ネットワークでの接続を繋がる方に自動で切り替わるため、自宅内外問わず使用できます。 イメージとしては、Li〇eのアルバム機能のみを取り出した。みたいな感じですね。
使い方
前提 ある程度linuxを使え、サーバーやサーバー代わりの常時起動PCがある方になります。 私は、ふるいmacminiにubuntu serverを入れて常時起動しています。 (もちろん私でよければお教えしますが。。。)
インストール方法
私からザーバ側用のzipと、アンドロイドアプリ側用のapk(??よくしらない)を受け取ってください。 どうやって渡そうか。。??
サーバー側 1.インストール インストールスクリプトをたたくだけです。 注意1:dockerやtalescaleがない方は勝手に入ります。 注意2:空きポートを探して勝手に使います。いやな方や管理したい方は、ご自分でyamlファイル触ってください!
root@MacMiniUubuntu:/path/to# bash ./install.sh
app00 — セットアップ
✔ Docker: 導入済み (Docker version **.*.*, build ********)
✔ Docker Compose: 導入済み
✔ Tailscale: 導入済み・ログイン済み
! ポート 8080 は使用中でした。次を試します...
✔ 使用するポート: 8081
メディアの保存先
写真・動画を保存するHDD上のフォルダを指定してください(新規なら自動で作成します)
パス [/mnt/hdd/app00/media]: /path/to/media
✔ 保存先: /path/to/media
✔ .env を作成しました
起動中... (初回はビルドに数分かかります)
[+] Building 1.3s (21/21) FINISHED
=> [internal] load local bake definitions 0.0s
=> => reading from stdin 520B 0.0s
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 1.28kB 0.0s
=> [internal] load metadata for docker.io/library/node:22-bookworm-slim 1.1s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 74B 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 260.66kB 0.0s
=> [build 1/9] FROM docker.io/library/node:22-bookworm-slim@sha256:********************3 0.0s
=> CACHED [build 2/9] WORKDIR /app 0.0s
=> CACHED [runtime 3/7] RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg libheif- 0.0s
=> CACHED [runtime 4/7] COPY package.json ./ 0.0s
=> CACHED [build 3/9] RUN apt-get update && apt-get install -y --no-install-recommends python3 make g++ && r 0.0s
=> CACHED [build 4/9] COPY package.json package-lock.json ./ 0.0s
=> CACHED [build 5/9] RUN npm ci 0.0s
=> CACHED [build 6/9] COPY tsconfig.json ./ 0.0s
=> CACHED [build 7/9] COPY src ./src 0.0s
=> CACHED [build 8/9] RUN npm run build 0.0s
=> CACHED [build 9/9] RUN npm prune --omit=dev 0.0s
=> CACHED [runtime 5/7] COPY --from=build /app/node_modules ./node_modules 0.0s
=> CACHED [runtime 6/7] COPY --from=build /app/dist ./dist 0.0s
=> CACHED [runtime 7/7] COPY public ./public 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:********************************* 0.0s
=> => naming to docker.io/library/app00-server 0.0s
=> resolving provenance for metadata file 0.0s
[+] up 2/2
✔ Image app00-server Built 1.4s
✔ Container app00-server Started 10.5s
ヘルスチェック待機中.
✔ 起動しました
セットアップ完了! 次はブラウザで開いてください:
http://nnn.nn.nnn.nn:8081/ ← Tailscale経由(外出先からもこのURL)
http://localhost:8081/ ← このマシン上で確認する場合
初回アクセス時に「初回セットアップ」画面が出るので、そこで管理者アカウントを作成してください。
以後、家族を招待するには管理者メニューの「招待コードを発行」を使います。
root@MacMiniUbuntu:/path/to#
※1 もしtailscaleで未ログインの方はログインを促されます。 ※2 以下のURLは今後使います。
http://nnn.nn.nnn.nn:8081/
http://localhost:8081/
2.管理画面起動
このような画面がるので、管理者ユーザーを作成してください。
登録すると。このような画面になります。
「管理」→招待コード発行や、共有停止など、ユーザーに関する管理を行います。
「作成」→アルバムの作成、削除など、アルバムに関する操作を行います。
「閲覧」→アルバムの閲覧ができます。
※アルバムの削除は、間違い防止のため、管理者のみ可能です。
クライアント側 tailscaleアプリを入れていること前提です。それがないと、家(というか同一ネットワーク)内でしか使えません。
1.インストール ※わたしはgodotから直接入れたけど、、どう渡そうかな、、?
2.初回起動
誤字ってる!!恥ずかしいミス!!そんな目で見ないで!!
ログイン後は以下のタブがあります。 「設定」→表示画面のテーマを黒、青、桃色から選択できます。URLに変更がある場合もこちらからです。 「作成」→アルバムを新規作成できます。 「閲覧」→アルバムを閲覧できます。アルバム名順、登録日時順でソートできます。
細かい機能
サーバー側 アルバム単位で写真・動画を管理。 HDDに人間が読めるフォルダ名でそのまま保存される(19920401(○○神社)/ みたいな) 招待制。管理者がコードを発行してそのコードの持ち主のみ登録できる。コードは簡単に変えられます。
Androidアプリ アルバム閲覧、写真の全画面表示(スワイプ、ピンチズーム、スライドショー) アップロード(複数選択OK、大きい動画もいける) ダウンロード、削除 テーマ切り替え(黒 / 水色 / 桜)
ネットワーク 家の中ではLAN直結 外出先ではTailscale(WireGuard VPN)経由で暗号化接続 ※アプリが自動で切り替えるので、ユーザーは意識しなくていいです。
Web サーバーに内蔵のテスター画面で、PCからもアルバム閲覧・アップロード・管理ができる アルバムの作成・編集・削除、招待コード発行は管理者がここでやる アルバムまるごとZIPダウンロードもできる
テスター募集!!!!
問い合わせから連絡ください!! どうやって必要ファイル渡すか課から相談させてね。。。。 next〇loudからとかの移行も相談乗りますよぉ
以上だ!