Linux OneDrive利用手順
概要
GitHubで公開されているLinux上でOneDriveを利用できるソフトウェアのインストール手順について記載します。
対象のGithub URL
実装方法
Podmanコンテナで実装する。
環境はRocky Linux 8
本体のGithubの手順だと一部上手くいかなかったため成功した手順を記載する。
1.Podman環境変数の設定
OneDriveを使いたい一般ユーザーで作業を行う。
export ONEDRIVE_DATA_DIR="${HOME}/OneDrive"
export ONEDRIVE_CONF_DIR="${HOME}/.config/onedrive"
export ONEDRIVE_UID=`id -u`
export ONEDRIVE_GID=`id -g`
Onedrive データ連携ディレクトリの作成
mkdir -pv ${ONEDRIVE_DATA_DIR}
mkdir -pv ${ONEDRIVE_CONF_DIR}
Onedirve Podamanを初回起動する。
podman run -it --name onedrive --user "${ONEDRIVE_UID}:${ONEDRIVE_GID}" \
-v "${ONEDRIVE_CONF_DIR}:/onedrive/conf:U,Z" \
-v "${ONEDRIVE_DATA_DIR}:/onedrive/data:U,Z" \
-e PODMAN=1 \
--userns=keep-id \
--label "io.containers.autoupdate=image" \
docker.io/driveone/onedrive:latest
コンテナが正常にビルドされるとOneDrive認証設定に移行する。
Authorize this app visiting:
### 以下のURLをブラウザにコピー&ペーストして通常通りMicrosoftのアカウント認証を行う。
### 実行毎で変わると思うので各自出力された値をブラウザにいれる。
https://login.microsoftonline.com/common/oauth2/v2.0/XXXXXXX=https://login.microsoftonline.com/common/oauth2/nativeclient
### Microsoftの認証が完了すると最後に白い画面になるのでその画面のURLを以下のコピーしてエンターを押す。
Enter the response uri:
成功すると以下の出力が出てくる。
Application has been successfully authorised, however no additional command switches were provided.
Please use --help for further assistance in regards to running this application.
そして成功するとそのままオンラインデータのダウンロードが始まるのでCtrl+p, Ctrl+qで コンテナから離脱する
2.OneDriveイメージのブート起動
OneDriveをシステムブートと合わせて起動するように設定します。
systemd 用のUnitファイルを作成
cd /tmp
podman generate systemd --new --restart-policy on-failure --name -f onedrive
以下のようにUnitファイルが生成されます。
/tmp/container-onedrive.service
Sudo実行ユーザーでの作業
生成したUnitファイルをsystemdのuserディレクトリへ移動させてsystemdデーモンを再読み込みさせる
sudo cp -ivZ /tmp/container-onedrive.service /usr/lib/systemd/user/
sudo systemctl daemon-reload
一般ユーザー権限でOneDriveのsystemdを起動する。
生成したUnitファイルを所定のディレクトリに移動できたらOneDriveを実行したいユーザーに戻り以下のコマンドを実行する。
systemctl --user enable container-onedrive.service
Podmanコマンドで起動しているOneDriveコマンドを一旦停止してサービスとして起動する
podman stop -f name=onedrive
systemctl --user start container-onedrive
サービス起動を確認
systemctl --user status container-onedrive.service
podman ps -f name=onedrive
サービスの停止する場合は以下の通り
systemctl --user stop container-onedrive
3. Podmanイメージの自動アップデート
podman-auto-update.timerブート起動に設定
systemctl --user enable podman-auto-update.timer
podman-auto-update.timerを起動
systemctl --user start podman-auto-update.timer
systemctl --user status podman-auto-update.timer
autoupdate ラベルが付いたコンテナは、次にスケジュールされたタイマーで更新されます
systemctl --user list-timers --all
Podmanを使う事で結構簡単にRootless環境でOneDriveを実行出来るようになったのでセキュリティと構築の容易さはとても上がったと感じます。
以上、利用予定の方の役にやてば幸いです。
この記事が気に入ったらサポートをしてみませんか?