Dokuwiki 筆記
前言
最初是發現過去留存的連結中,有網站消失或討論串刪除造成相關資料佚失的情況,故想弄個簡單的網站存放自己有興趣的東西。
原本是使用 @wiki 來存放資料及文章,陸續放了些文章後發現如要離線保存得手動另外存一份檔案,另外對於圖片等媒體檔的支援不佳,致使如涉及媒體檔保存還得另外找尋網路空間放置。
一開始是放圖片於 Photobucket 上,開始收費後轉往 imgur ,鎖臺灣IP後雖然無法再登帳號後臺,雖然因圖片尚可連結就先放置,但還是希望能尋找解決方案,故開始有自行架設維護的想法。
Dokuwiki?
選擇 Dokuwiki 是透過刪去法從以下條件選擇出來的:
- 使用@wiki的經驗評估 Wiki 型態的網站很符合目前整理資料的作法。
- 內容以文字及圖片為主,不需要回覆、討論區等功能。
- 版面盡可能簡潔,阿部寬網站是效仿的對象。
- 不用成那樣是因為希望保持透過外網登入編輯,但不確定應如何處理。
- WordPress 之類的後臺編輯器相當吃硬體效能,而且有大半不需要用的功能……
- 考量到個人習慣及備份希望盡可能是以純文字方式存取。
XAMPP?Docker?
從 Reddit 的討論串看下來,主流建議是使用 Docker 部屬,不推薦使用 XAMPP 上的理由有幾個:
- XAMPP 設計初衷是提供作為開發環境使用,而非長時間正式運作的的環境。
- 作為方便簡單的工具預設搭載所有的功能,特定狀況下會顯得不易維護且臃腫。
- 由於非預期要連外網或上線營運,初始安全設定寬鬆、要花不少時間去維護相關規則。
- 2026 年 07 月時的最新版本是於 2023 年更新的 PHP8.2.12 版本,版本相對老舊。
- 而 PHP8.2.20 以下版本有高風險安全漏洞(CVE-2024-4577)且 XAMPP 尚未有新的更新修補。
- 應對安全漏洞採取修補建議關閉 CGI 功能——雖然本來就沒打算用。
- 2026 年 10 月因應PHP2Shell 漏洞,手動升級至 PHP8.5.12 版本使用。
先不論後面發現的安全性問題,前面考量因技術使用門檻較低且環境已打包完畢,故先嘗試將 Dokuwiki 安裝在 XAMPP 上,待未來熟悉架構後再改使用 Docker 部屬網站。
架設紀錄
由於是第一次從頭自行動手架設,故趁此機會順便記錄架設的過程及當作其它閒人想使用 XAMPP 的參考。
安裝環境
| 使用版本 | XAMPP for Windows for PHP 8.2.12。 |
| 2026/10/24更新:因應 PHP 安全性更新,手動升級至 8.5.12。 | |
| 啟用功能 | Apache 2.4.58、WebDAV(內建)、PHP。 |
| 主機規格 | Windows10 家用版,cpu 待確認,8g ram,內顯。 |
| 額外設定 | DokuWiki:2025-05-14 “Librarian”,安裝好後才升級 2026-07-14 “Mort” 版本。 |
| Baïkal:啟用 CalDAV。 | |
| PowerShell:設定自動備份並以 Discord Webhook 連結通知備份運行狀況。 | |
| No-IP:免費 DNS 服務。 | |
| win-acme:申請免費 Let’s Encrypt SSL 自動更新憑證。 | |
| IPBAN:設定規則封鎖惡意掃描 IP。 |
安裝過程
XAMPP 下載安裝 https://mackliu.github.io/php-book/2021/09/18/dev-tools-01/
將 Dokuwiki 解壓縮放入資料夾
注意: 版本 2026-07-14 “Mort” 開始要求 PHP 版本最低要 8.2。 並且開始支援原生 Markdown 語法,但不建議混合使用 由於 Markdown 語法與原生 Dokuwiki 語法邏輯不同也沒有支援全部的功能 混合用除了後臺混亂外前臺的顯示也不一定能正常
設定 HTTPS 連線
使用 win-acme 向 Let'sEncrypt 申請免費憑證並設定自動定期更新
https://ithelp.ithome.com.tw/articles/10260641
規則設定
WebDAV
CalDAV
這個是想說反正都有 PHP 也弄了 WebDAV
那找個輕量方案也將 CalDAV 設起來好同步行事曆
最後找到的是 Baïkal
基本要求是要能執行 PHP 、有 MySQL 或 SQLite 、 Apache 或 Nginx。
具體安裝方式參考官網
但基本就是上 github 抓取壓縮檔解壓縮後丟到伺服器的資料夾
XAMPP 預設運行的檔案是放在 ../xampp/htdocs/ 下,將壓縮檔的東西也丟到這邊就好
之後能正常啟動伺服器應該就可以登入下列網址進行帳號及其它設定
https://你的網址/baikal/html/
另外官方也有提到像 Windows 10 無法支援
故認證方式是採取 Basic 而不是 Digest 並且加上 SSL 補強
官方另有提供按預設值設定的狀況供參考
<VirtualHost *:443>
DocumentRoot /var/www/baikal/html
ServerName dav.example.org
RewriteEngine on
# Generally already set by global Apache configuration
# RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule /.well-known/carddav /dav.php [R=308,L]
RewriteRule /.well-known/caldav /dav.php [R=308,L]
<Directory "/var/www/baikal/html">
Options None
# If you install cloning git repository, you may need the following
# Options +FollowSymlinks
AllowOverride None
# Configuration for apache-2.4:
Require all granted
# Configuration for apache-2.2:
# Order allow,deny
# Allow from all
</Directory>
<IfModule mod_expires.c>
ExpiresActive Off
</IfModule>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/dav.example.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/dav.example.org/privkey.pem
</VirtualHost>
中間有嘗試要移動存取資料夾
但不知道為何修正設定檔案路徑後就會整個服務崩潰
始終只能在 ../caldav/html/ 下存取
手機上使用的是 Fossify Calendar 搭配 DAVx5 同步
附加元件
只列出有裝或曾裝過的附加元件,已成為標準內含的附加元件(如 Info Plugin)則省略。
| Statistics Plugin - DokuWiki | |
|---|---|
| 支援統計檔案流量 | 介紹中明確提到它提供瀏覽、訪客、流量、瀏覽器的統計。 |
| 整合了原本需要分開安裝的功能,能在單一附加元件內分析出各項目使用流量。 | |
| 不需開啟或架設資料庫 | 雖然需要 SQLite 資料庫,但畢竟是純文字資料庫,相對不需花費太多心力處理。 |
| 目前遇到最大的缺點是排除規則中只能設定「要統計哪些」而不能反向設定。 | |
| 例如能設定只統計 @user 群組,但不能設定成只統計 @user 群組以外的紀錄,故後臺數據會被管理員的足跡干擾…… | |
| SQLite Plugin - DokuWiki | |
| SQLite 資料庫 | Statistics Plugin 必要的基礎附加元件。 |
| Log Statistics Plugin - DokuWiki | |
| 記錄 Wiki 頁面與多媒體檔案的訪問行為 | 背景記錄所有網頁與檔案的存取情況,並直接生成純文字日誌。 |
| 與 Apache 日誌格式相同,方便整合外部的網頁流量分析工具。 | |
| 可透過 Statdisplay Plugin 的管理介面進行清理或封存。 | |
| 過濾機制可以調整要統計的範圍 | 在設定 ignore_files 的欄位中,可設定排除特定的 IP 位址、使用者帳號或 User-Agent(例如過濾掉機器人或管理者流量)。 |
| 也可設定 png、jpg、gif 等 基本圖片排除,保留想統計的如 pdf、zip、exe 等等 | |
| 由於背景會持續產生日誌,長期來看可避免記錄過多無效訊息導致日誌檔案過大。 | |
| Statdisplay Plugin - DokuWiki | |
| 網站的訪問統計數據呈現 | 可以讀取並在頁面中將 Log Statistics Plugin 的日誌轉換為表格或圖表形式呈現 |
| 後臺從訪客到使用者、連結到圖片都能分別製作視覺化的表達。 | |
| 新的 Statistics Plgiun 已替代掉上述兩個附加元件的功能。 | |
| dlcounter Plugin - DokuWiki | |
| 記錄檔案下載次數 | 可以自訂要追蹤的格式,避免把網頁的圖片也算進去。 |
| 另外的特點是能直接在前臺頁面上產生排行榜表格。 | |
| 除了直接展示在前臺外,其餘的都可用 Statistics Plugin 替代。 | |
| CAPTCHA Plugin - DokuWiki | |
| 登入驗證 | 防止機器人自動登入的附加元件。 |
| 可設定多種驗證方式,從文字到數學到圖像辨識或聲音。 | |
| 還能選擇使用 JavaScript 自動在背景填入驗證。 | |
| 另外能設置錯誤等待時間翻倍功能作為應對暴力破解的手段。 | |
| tplmod(template modifier) Plugin - DokuWiki | |
| 動態調整與控制模板的外觀、元素與存取權限 | 主要用來在不修改模板底層程式碼的情況下使用。 |
| 能設定條件及根據 ACL 權限變更網站模板的顯示選項。 | |
| 與 ACL 相關的選項要小心,沒設好連自己都登入不了…… | |
| 條件式輪換 | 能設定依據訪客 IP 或時間等資訊展現不同 LOGO 或標語等等。 |
| 權限與工具控制 | 依據 ACL(存取控制清單)等級或參數,限制或隱藏特定的介面工具,例如:可隱藏修改頁面、近期變更、網站地圖、媒體管理員等等按鈕。 |
| 介面與版面調整 | 支援使用者在個人資料中自訂介面語言。 |
| 提供側邊欄切換開關以及基於命名空間的隱藏側邊欄功能。 | |
| 支援調整相容模板的背景顏色。 | |
| upgrade Plugin - DokuWiki | |
| 網站升級用 | ……原來這種東西不是內建要有的嗎? |
| 官方很貼心的告知使用前記得要備份網站。 | |
| 原則上附加元件在更新前還是會先檢查並告知有無正確的權限寫入資料。 | |
| 但有從 httpd.conf 或 .htaccess 變更資料夾讀取權限會更新失敗。 | |
| 如果有變更如 /conf 或 /data 之類系統預設資料夾的位置也可能無法更新。 | |
| talkpage Plugin - DokuWiki | |
| 網站升級用 | ……原來這種東西不是內建要有的嗎? |
| 在側邊欄自動生成「討論頁」的連結 | 預設會將所有的討論檔案集中儲存在「 talk: 」中,以便於管理免與原有頁面混淆。 |
| 產生的討論檔案也是與 Dokuwiki 相同的純文字檔。 | |
