0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

web上でファイルマネージャを用いてファイルをクラウド管理する Filestash + docker compose

Last updated at Posted at 2025-04-14

導入

様々なOSで仕事や学校のためにファイルをセキュアに保存、共有したいが、SFTPをドライブとして使うには標準対応しているOSが少なすぎる。また、Googleドライブなどのクラウドストレージサービスは速度が遅いことがあるため、実用上不満が多い。

解決方法

Filestashと呼ばれるOSSをdockerにインストールして使う。Filestashは、FTP、SFTP、WebDAV、S3、SMB、Git、Dropbox、Google Driveなど、多様なストレージプロトコルに対応したオープンソースのWEB上で操作できるファイルマネージャーである。

環境

今回はwindowsを使っているが、通常のx86 osや変わりなく動作が可能だろう。ARM系で動作させる場合はdocker-composeに工夫が必要である。今回の作業はすべてVSCodeで行うが特別な拡張機能などは使用しないため普通のテキストエディタでも作業可能だ。その際文字コードはUTF-8を推奨する。

version
OS windows10
Docker Desktop 4.40.0 (187762)

仕組み

dockerを用いてfilestashのコンテナとsftpサーバーのatmoz/sftpコンテナを作成する
filestashコンテナは8334番ポートで動作させる。
atmoz/sftpコンテナは2222番ポートで動作させる。

1000006977.png

今回はFilestashの使用例としてhttpを使用するが、実際に使うとなったらtailscaleやSSLで暗号化して通信することを推奨する。
tailscale+sftp+filestash on sftp Serverの筆者が実際に使っている構成はまたいつか書き込みたいと思っている。

Dockerコンテナを起動

dockerを使うにあたってdocker-composeというものを使う。dockerコンテナは本来作るたびにイメージやストレージの細かい設定が必要だが、それを自動で行うものである。docker-composeを使うためにはdocker-compose.yamlと呼ばれるファイルに記述する。
dockerでは2つのコンテナを立てるがまとめてdocker-compose.yamlに記述する。

  1. まず作業用にデスクトップ等自分の好きな場所にfilestashフォルダを作るその中にdocker-compose.yamlというファイルを作成する。
  2. docker-compose.yamlに以下の内容を書き込む
docker-compose.yaml
version: '3.8'

services:
  sftp:
    image: atmoz/sftp
    ports:
      - "2222:22"
    volumes:
      - ./data/alice:/home/userA/upload
      - ./data/bob:/home/userB/upload
    command: |
      userA:abcd:1001
      userB:1234:1002
    networks:
      - filenet

  filestash:
    image: machines/filestash
    container_name: filestash
    ports:
      - "8334:8334"
    volumes:
      - ./app:/app/data/state
    networks:
      - filenet
    depends_on:
      - sftp

networks:
  filenet:
    driver: bridge

ユーザー名とパスワードの設定

    volumes:
      - ./data/alice:/home/userA/upload
      - ./data/bob:/home/userB/upload
    command: |
      userA:abcd:1001
      userB:1234:1002

の部分のuserA,userBをユーザー名に置き換えてください。
またabcd,1234をパスワードに置き換えてください。

ファイルの場所について

volumes:
      - ./data/alice:/home/userA/upload
      - ./data/bob:/home/userB/upload

volumes:
      - ./app:/app/data/state

の部分でfilestashの設定ファイルとアップロードされたデータなどを./appと./dataで共有している

起動!

docker-compose.yamlがあるディレクトリでターミナルを開いて

docker compose up -d

を実行すると起動します。
しばらくしたあとに処理が終わってフォルダが以下のように増えていることを確認してください。
2025-04-11_22h17_44.png
増えていれば正常に起動ができています。

接続確認

起動が完了したらlocalhost:8334にアクセスしてください

最初に管理者用パスワードを設定します
2025-04-12_16h11_45.png
ここはお好みで
2025-04-12_16h12_02.png
Backendを押す
2025-04-12_16h12_08.png
今回はSFTP以外使わないので❌を押す
2025-04-12_16h12_29.png

認証方法にはPASSTHROUGHを使う
2025-04-12_16h12_51.png

username_and_passwordを選択
2025-04-12_16h13_16.png

画像と同じように設定する
2025-04-12_16h14_23.png

これで設定完了
もう一度localhost:8334にアクセスすると今度は管理ページではなくSFTPログインページに飛ぶ
docker-compose内で設定したユーザー名とパスワードでログインする

2025-04-12_16h15_00.png

これで完了となる
ドラッグ&ドロップなどでアップロードもできる
2025-04-12_16h15_10.png

停止方法

停止するには起動したときと同じディレクトリで

docker compose down

を実行するだけ
設定ファイルやアップロードされたファイルは消えないのでそこを初期化したい場合はfilestashフォルダのappとdataを消す。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?