raspberry PiにKeeWebを入れる

超久々です。今年も終わりだというのに今年になって何も書いてなかったんですねえ。

さて、ownCloud、miniDLNA、KeeWebのサーバーにしてたraspberry Pi 5がなんかSDのI/Oエラー多発してて無茶苦茶負荷重く、これはSDを交換しようと思ったらrpi-clone(https://github.com/billw2/rpi-clone)でコピーしたSDがなぜか起動しない。fstabのUUIDをちゃんと変えてもだめ。

今思えば単にddでコピーすれば良かっただけの気もするけど、もう新しいRaspberry Pi OS(Debian 13)を焼いて新たにシステムを構築してしまいました。

miniDLNAは何も問題なし、ownCloudはPHPを古いのにしないとだめだったけど、そんなに困難ではなかったです。問題はKeeWeb。もともと前回入れたとき(https://linux-walker.net/?p=58)もすでにdockerに入れるのが主流になってたのに古いHTMLベースのを使ってたんで、今回はすなおにdockerに入れました。でも簡単ではなくさんざんCopilotの助けを借りて入れました。

まずdockerを使えるようにします。これはaptでは入れられないのでレポジトリを登録してやります。今回はそこは省略。次に適当なworking directory作ってそこに行き、SSLでアクセスできるようオレオレ証明書を作っておきます。

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout ssl.key -out ssl.crt

次に以下の内容でdefault.confを作ります。

server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl.crt;
ssl_certificate_key /etc/nginx/ssl.key;

root /usr/share/nginx/html;
index index.html;
}

そしてDockerfileを書きます。

FROM nginx:stable-alpine

ADD https://github.com/keeweb/keeweb/releases/download/v1.18.7/KeeWeb-1.18.7.html.zip /tmp/keeweb.zip

RUN apk add –no-cache unzip && \
   unzip -o /tmp/keeweb.zip -d /usr/share/nginx/html && \
   rm /tmp/keeweb.zip

そこで次のコマンドでdockerを起動します。

docker run -d –restart unless-stopped –name keeweb \
 -p 8080:80 -p 8443:443 \
 -v $(pwd)/default.conf:/etc/nginx/conf.d/default.conf:ro \
 -v $(pwd)/ssl.crt:/etc/nginx/ssl.crt:ro \
 -v $(pwd)/ssl.key:/etc/nginx/ssl.key:ro \
 keeweb-arm64

これで他のマシンから https://hostname:8443 のようにしてKeeWebにアクセスできるようになります。

次にKeeWebファイルをWevdavに置けるようWevdavの設定をします。

sudo apt install nginx-extras

/etc/nginx/conf.d/webdav.conf に以下を追加。ここのssl.crtとssl.keyもオレオレで。

server {
    listen 8444 ssl;
    ssl_certificate /etc/nginx/ssl.crt;
    ssl_certificate_key /etc/nginx/ssl.key;

    location /webdav {
        root /srv/webdav;
        dav_methods PUT DELETE MKCOL COPY MOVE;
        dav_ext_methods PROPFIND OPTIONS;
        create_full_put_path on;
        dav_access user:rw group:rw all:r;

        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/webdav.passwd;
    }
}

KeeWebファイルを置く場所はどこでもいいのですが、/srv/webdav にします。

sudo mkdir -p /srv/webdav
sudo htpasswd -c /etc/nginx/webdav.passwd piuser

/srv/webdav にKeeWebファイルを置けば、KeeWebのWebDavとして https://hostname:8444/webdav/key.kdbx のように指定して開けます。このとき上のhtpasswdで指定したユーザー名とパスワードを指定します。

投稿日:
カテゴリー: KeeWeb

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です