基於 OneDrive 建站 (oneindex)

📢 本文由 gemini-3-flash-preview 翻譯

文章寫於 2022.05.09,文章並無最新適配,可能無法復現。另推薦使用較新的專案

透過 OneDrive 可以建立網路硬碟網站,例如我的 VRChat 網路硬碟已經沒了,還可以直接建立網頁,或者圖床

oneindex 簡介

GitHub: https://github.com/avedu/oneindex

OneDrive Directory Index,不佔用伺服器空間,不走伺服器流量,直接列出 OneDrive 目錄,檔案直鏈下載。

環境

需要 PHP5.6+,需啟用 curl 支援,新手(比如我)建議直接使用 寶塔 直接部署,方便快捷

另因寶塔隱私洩漏風波,有一些其他版本如 寶塔純淨版 ,請自行識別安裝

安裝

從 GitHub 將儲存庫下載並上傳至網站根目錄並解壓縮

然後訪問網站,進入安裝程式

檢測

首先是同意條款,如果點擊同意會返回,請將網址列中最後的 &mdui-dialog 刪除後按回車

如果環境正常點擊下一步

程式安裝

點擊獲取應用ID和機密(分兩個頁面顯示,請注意保存),然後登入微軟帳號

保留出現的應用機密,然後點擊知道了,返回快速啟動

注意:此機密僅會顯示一次,請妥善保存

然後選擇一門語言,比如 Python,點擊 Get a client ID,複製獲得的 Client ID

返回安裝程式介面,輸入應用機密Client ID,然後點擊下一步

點擊綁定帳號,選擇接受即可

如果出現錯誤

請返回輸入應用機密Client ID 的介面,打開 Azure 的應用程式註冊 ,這裡應該有兩個應用程式

找到名為 oneindex 的應用程式,複製它的應用程式 (用戶端) ID 填入 Client ID

還有一個沒什麼用,可以直接刪除

管理

安裝完成後會有管理後台訪問網站選項

可以進入管理後台修改網站名稱,主題,後台密碼等 (初始密碼: oneindex)

後台網址為您的網域/?/admin

偽靜態

設定 Apache 或者 Nginx 的 rewrite (使用 WordPress 的設定即可)

以上為原作者的原話(部分內容有修改),因我使用 寶塔 ,遂說明寶塔如何設定

在寶塔面板的網站進入設定裡的偽靜態,選擇 wordpress 保存即可

在網站管理後台將偽靜態勾選保存即可

這樣連結中的 ? 會去除,訪問後台可直接您的網域/admin

特殊檔案實現功能

Markdown 語法可參考我寫的文章Markdown 筆記

在資料夾底部添加說明:

在 OneDrive 的資料夾中添加 README.md 檔案,使用 Markdown 語法。

在資料夾頭部添加說明:

在 OneDrive 的資料夾中添加 HEAD.md 檔案,使用 Markdown 語法。

加密資料夾:

在 OneDrive 的資料夾中添加 .password 檔案,填入密碼,密碼不能為空。

直接輸出網頁:

在 OneDrive 的資料夾中添加 index.html 檔案,程式會直接輸出網頁而不列目錄。 配合 檔案展示設置-直接輸出 效果更佳。

因為直接輸出網頁,可以直接搭網站

訪問其他檔案正常,但訪問圖片出現 404

這是由於伺服器軟體 (Nginx/Apache) 接管了圖片處理,刪除相關設定即可

以下為使用寶塔

網站-設定檔案將下述程式碼註解掉即可

1
2
3
4
5
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
  expires      30d;
  access_log on; 
}

改為

1
2
3
4
5
#location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
#{
#  expires      30d;
#  access_log on; 
#}

此問題參考 部署 OneDrive for business (PHP)客戶端程序 OneIndex 详细教程 - VirCloud’s Blog - Learning&Sharing

命令列功能

僅能在 PHP CLI 模式下執行

清除快取:

1
php one.php cache:clear

重新整理快取:

1
php one.php cache:refresh

重新整理權杖:

1
php one.php token:refresh

上傳檔案:

1
php one.php upload:file 本地檔案 [OneDrive檔案]

上傳資料夾:

1
php one.php upload:folder 本地資料夾 [OneDrive資料夾]

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
//上傳 demo.zip 到 OneDrive 根目錄  
php one.php upload:file demo.zip  

//上傳 demo.zip 到 OneDrive /test/ 目錄  
php one.php upload:file demo.zip /test/  

//上傳 demo.zip 到 OneDrive /test/ 目錄並將其命名為 d.zip  
php one.php upload:file demo.zip /test/d.zip  

//上傳 up/ 到 OneDrive /test/ 目錄  
php one.php upload:file up/ /test/

排程任務

[可選]推薦配置,非必需。後台定時重新整理快取,可增加前台訪問的速度。

1
2
3
4
5
# 每小時重新整理一次權杖
0 * * * * /具體路徑/php /程式具體路徑/one.php token:refresh

# 每十分鐘後台重新整理一遍快取
*/10 * * * * /具體路徑/php /程式具體路徑/one.php cache:refresh

Docker 安裝執行

請參考 TimeBye/oneindex