filebrowserの導入メモ。
インストール手順は公式サイトより。
dockerも初めてなので、その導入から。
※OSは debian10 busterを使用。
以下のサイトを参照した。
- パッケージの導入。
- aptのパッケージインデックスを更新。
- Docker の公式 GPG 鍵を追加
- 安定版(stable)リポジトリをセットアップ
- Docker Engine のインストール
481 sudo apt-get install ca-certificates curl gnupg lsb-release
490 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
491 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
492 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
493 cat /etc/apt/sources.list.d/docker.list
494 sudo apt-get update
495 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
496 docker run hello-world
hello-worldコンテナが実行できていれば導入は完了。
docker pull でイメージが取得を取得する。(実行時のユーザーはこのサイトの利用者とした)
実行時ユーザーはこのサイトの利用者とした。
764 sudo groupadd docker
765 sudo usermod -aG docker $USER
filebrowserを導入する。
filebrowserのimageを取得する。
※いきなり公開は怖いのでlocalhost:8080(127.0.0.1:8080)で動かす。
※ダウンロードに必要なdockerのアカウントは作成する。
docker pull でイメージが取得を取得する。
766 docker pull filebrowser/filebrowser
実行時ユーザーは'pi'の情報を取得する。
$ id pi
uid=1000(pi) gid=1000(pi) groups=1000(pi),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),998(docker)
$
データの格納フォルダと設定フォルダとログフォルダを作成する。
※logはうまく機能しないが、機能するときに備えて作成した。
mkdir /home/pi/filebrowser/data
mkdir /home/pi/filebrowser/config
mkdir /home/pi/filebrowser/log
touch /home/pi/filebrowser/config/filebrowser.db
touch /home/pi/filebrowser/config/.filebrowser.json
.filebrowser.jsonに設定を記述する。
※JSONは改行を含むとエラーになるため、改行を除去したもので作成する。(下記の例)
※また機能しているかどうかは不明である。
/home/pi/filebrowser/config/.filebrowser.json
{"port": 80,"baseURL": "","address": "","log": "/log","database": "/database.db", "root": "/data"}
以下の操作で起動を確認する。(先に確認したuidとgidを'-u'の引数に指定)
'--name'でコンテナに名称をつけることで、扱いが楽になる。
/usr/bin/docker run \
--name filebrowser \
-v /home/pi/filebrowser/data:/data \
-v /home/pi/filebrowser/log:/log \
-v /home/pi/filebrowser/config/filebrowser.db:/database.db \
-v /home/pi/filebrowser/config/.filebrowser.json:/.filebrowser.json \
-u 1000:1000 \
-p 127.0.0.1:8080:80 \
filebrowser/filebrowser
『http://localhost:8080/』で閲覧を確認する。
失敗したりしたときは、コンテナが残るので、以下のサイトを参照してコンテナを都度削除した。
docker ps -a
docker rm `docker ps -a -q`
systemdに登録をする。
『/usr/lib/systemd/system/filebrowser.service』を作成して、以下の内容で編集して保存する。
以下のサイトからいただいて修正した。
[Unit]
Description=filebrowser for docker container
Requires=docker.service
After=docker.service
[Service]
ExecStart=/usr/bin/docker run --name filebrowser -v /home/pi/filebrowser/data:/data -v /home/pi/filebrowser/log:/log -v /home/pi/filebrowser/config/filebrowser.db:/database.db -v /home/pi/filebrowser/config/.filebrowser.json:/.filebrowser.json -u 1000:1000 -p 127.0.0.1:8080:80 filebrowser/filebrowser
ExecStop=/usr/bin/docker stop -t 2 filebrowser
ExecStopPost=/usr/bin/docker rm -f filebrowser
[Install]
WantedBy=default.target
サービスの更新や起動、再起動は以下より行った。
systemctl daemon-reload
systemctl start filebrowser
systemctl restart filebrowser
apatch2のリバースプロキシに組み込んで、セキュリティ対策のためにbasicauthを追加して公開する。
<IfModule mod_ssl.c>
<VirtualHost _default_:8443>
ServerName hogehoge.com
SSLEngine on
SSLCertificateFile /etc/secure_key/hogehoge.com/cert.pem
SSLCertificateKeyFile /etc/secure_key/hogehoge.com/privkey.pem
SSLCertificateChainFile /etc/secure_key/hogehoge.com/chain.pem
#Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
ErrorLog /var/log/apache2/filebrowser_error_log
CustomLog /var/log/apache2/filebrowser_access_log combined env=!no_log
<IfModule proxy_module>
ProxyRequests Off
<Location />
AuthType Basic
AuthName "Protected site"
AuthUserFile /etc/apache2/.htpasswd
#Require user basic
Require valid-user
</Location>
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</IfModule>
</VirtualHost>
</IfModule>