OCS Inventory Server (Docker) 標準安裝 SOP
本標準作業程序(SOP)適用於透過 Docker / 1Panel 環境部署最新版 OCS Inventory(2.11 – 2.12+),並已手動整合解決官方鏡像中網頁原始碼缺失、MySQL 8 驗證不相容以及 PHP 套件未安裝等底層問題。
一、 部署前準備與目錄規劃
在宿主機(本案例為 /opt/1panel/docker/compose/ocs)建立所需的專案目錄:
mkdir -p /opt/1panel/docker/compose/ocs/ocsreports cd /opt/1panel/docker/compose/ocs
二、 撰寫 docker-compose.yml
在專案目錄下建立 docker-compose.yml,將網頁原始碼直接掛載至 Apache 核心根目錄 /var/www/html,以繞過官方損壞的虛擬目錄(Alias)設定。
version: "3.7" services: # 1. MySQL 8.0 資料庫服務 ocs-db: image: mysql:8.0 container_name: ocs-db restart: always # 關鍵:強制使用傳統加密外掛,確保 OCS 順利連線 command: --default-authentication-plugin=mysql_native_password environment: - MYSQL_ROOT_PASSWORD=您的資料庫管理員密碼 - MYSQL_DATABASE=ocsweb - MYSQL_USER=ocsuser - MYSQL_PASSWORD=您的OCS專用資料庫密碼 volumes: - ocs-mysql-data:/var/lib/mysql networks: - ocs-network # 2. OCS Inventory Server 應用服務 ocs-server: image: ocsinventory/ocsinventory-docker-image:latest container_name: ocs-server restart: always ports: - "8080:80" # 映射至宿主機 8080 埠口 environment: - OCS_DB_SERVER=ocs-db - OCS_DB_PORT=3306 - OCS_DB_USER=ocsuser - OCS_DB_PASS=您的OCS專用資料庫密碼 - OCS_DB_NAME=ocsweb volumes: # 直接掛載至 Apache 真實根目錄 - ./ocsreports:/var/www/html depends_on: - ocs-db networks: - ocs-network volumes: ocs-mysql-data: networks: ocs-network: driver: bridge
三、 下載並置入 OCS 網頁原始碼
由於官方 Docker 鏡像內無原始碼,需手動下載官方發布包並解壓至掛載目錄:
# 1. 下載 OCS 最新穩定版原始碼 wget https://github.com/OCSInventory-NG/OCSInventory-ocsreports/archive/refs/tags/2.12.1.tar.gz # 2. 解壓縮檔案 tar -zxvf 2.12.1.tar.gz # 3. 將原始碼移入掛載目錄 cp -r OCSInventory-ocsreports-2.12.1/* ocsreports/ # 4. 清理暫存垃圾 rm -rf 2.12.1.tar.gz OCSInventory-ocsreports-2.12.1
四、 補齊 Composer 核心相依套件 (關鍵步)
新版 OCS 依賴 Composer 管理 PHP 套件,必須在宿主機利用臨時容器補齊 vendor 目錄,否則網頁會直接引發 HTTP 500 錯誤。
# 在 /opt/1panel/docker/compose/ocs 目錄下執行 docker run --rm -v $(pwd)/ocsreports:/app composer install --ignore-platform-reqs
五、 初始化容器與權限修正
啟動架構並將檔案擁有者變更為 Apache 執行用戶(www-data):
# 1. 啟動容器 docker-compose up -d # 2. 強制變更網頁目錄權限 docker exec -it ocs-server chown -R www-data:www-data /var/www/html docker exec -it ocs-server chmod -R 755 /var/www/html
六、 網頁引導安裝(Web Installation)
打開瀏覽器訪問:http://您的伺服器IP:8080/install.php(注意:網址不需加 /ocsreports)。
在資料庫連線欄位中依序輸入:
- MySQL User: ocsuser
- MySQL Password: 您的OCS專用資料庫密碼
- MySQL Database Name: ocsweb
- MySQL Host: ocs-db (務必填寫 docker-compose 中的服務名稱)
點擊 Send,畫面上滾動出現進度條,最後顯示 Installation finished 即完成資料庫寫入。
七、 手動修正新版資料庫設定檔 (防 500 錯誤)
引導安裝程式預設產生的常數格式與新版 OCS 的 Session 陣列架構不符。必須手動將其改寫為最新格式:
修改宿主機上的 ./ocsreports/dbconfig.inc.php:
nano ./ocsreports/dbconfig.inc.php
將內容完全替換為以下新版格式:
<?php // 主要寫入連線 $_SESSION["SERVEUR_PRIMARY"] = "ocs-db"; $_SESSION["PORT_PRIMARY"] = "3306"; $_SESSION["USER_PRIMARY"] = "ocsuser"; $_SESSION["MS_PRIMARY"] = "您的OCS專用資料庫密碼"; $_SESSION["BD_PRIMARY"] = "ocsweb"; // 唯讀連線 $_SESSION["SERVEUR_SLAVE"] = "ocs-db"; $_SESSION["PORT_SLAVE"] = "3306"; $_SESSION["USER_SLAVE"] = "ocsuser"; $_SESSION["MS_SLAVE"] = "您的OCS專用資料庫密碼"; $_SESSION["BD_SLAVE"] = "ocsweb"; // SSL 相關設定保持預設 $_SESSION["ENABLE_SSL"] = ""; $_SESSION["SSL_MODE"] = ""; $_SESSION["SSL_KEY"] = "/path/to/client-key.pem"; $_SESSION["SSL_CERT"] = "/path/to/client-cert.pem"; $_SESSION["CA_CERT"] = "/path/to/ca.pem"; ?>
校正設定檔權限:
docker exec -it ocs-server chown www-data:www-data /var/www/html/dbconfig.inc.php
八、 進階優化:解除 2MB 軟體分發限制
為了避免日後推送安裝包時受限,在 ./ocsreports/ 目錄下建立 .htaccess 檔案:
nano ./ocsreports/.htaccess
寫入以下內容(調整上限至 500MB):
php_value upload_max_filesize 500M php_value post_max_size 500M
套用權限:
docker exec -it ocs-server chown www-data:www-data /var/www/html/.htaccess
九、 最終啟用與登入
最後重啟網頁容器,使其完整載入所有變更:
docker-compose restart ocs-server
系統主頁網址: http://您的伺服器IP:8080/index.php
預設管理者帳號: admin
預設管理者密碼: admin (登入後請務必第一時間進行修改)
SOP 結束。祝您資產盤點順利!