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 結束。祝您資產盤點順利!

Add a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *