Nextcloud 設定檔白話文:搞懂你的雲端硬碟大腦

想像一下,你的 Nextcloud 就像是你自己的私人雲端硬碟管家。它幫你存檔案、分享檔案,還能做很多很酷的事情。而這個管家的大腦,也就是它所有設定和指令的中心,就是一個叫做 config.php 的檔案。這個檔案裡寫滿了 Nextcloud 怎麼跟資料庫連線、檔案要放哪裡、要不要用快取加速、怎麼寄信通知你等等重要資訊。所以,雖然它看起來有點複雜,但了解它能幫助你更好地管理和維護你的 Nextcloud。

小提醒: 這個檔案裡有很多像是密碼之類的「秘密」,絕對不能給別人看!我們在文章裡會把這些秘密用 [看不見的秘密] 代替,保護你的安全。
通常,你可以在 Nextcloud 安裝的地方找到這個 config.php 檔案,它會藏在一個叫做 config 的資料夾裡。
接下來,我們就來看看你提供的這個 config.php 檔案裡,每個設定到底是什麼意思吧!

你的 Nextcloud 大腦設定解析

這是從你的 Nextcloud 裡看到的設定,我把它們拆開來解釋:

<?php
$CONFIG = array (
  'instanceid' => '[你的專屬ID]', // 這是你的 Nextcloud 安裝後自動產生的獨一無二的識別碼,就像你的身份證號碼。
  'passwordsalt' => '[保護密碼的秘密鹽巴]', // 這是用來加強密碼安全的一串秘密,安裝時自動產生,絕對不能弄丟或改動,不然所有人的密碼就失效了!
  'secret' => '[另一個重要的秘密]', // Nextcloud 用來加密檔案或其他重要資料的另一串秘密,也是安裝時自動產生,弄丟了可能會讓資料出問題。
  'overwriteprotocol' => 'https', // 這個設定告訴 Nextcloud,雖然它可能透過其他設備(像是一個「轉發站」)連上網路,但對外溝通時要說自己是用安全的 HTTPS 連線。
  'forwarded_for_headers' => ['HTTP_X_FORWARDED_FOR'], // 這個跟上面那個設定有關,告訴 Nextcloud 要從哪個「轉發站」的訊息裡,找到真正連線過來的使用者的 IP 地址。
  'trusted_domains' =>
  array (
    0 => '[你的 Nextcloud 網址]', // 這裡列出你允許大家透過哪些網址來連線到你的 Nextcloud。這是為了防止壞人用假網址騙你的 Nextcloud。
  ),
  'objectstore' =>
  array (
    'class' => '\\OC\\Files\\ObjectStore\\S3', // 這個設定超重要!它說你的檔案不是存在 Nextcloud 伺服器本身的硬碟裡,而是存在一個叫做 S3 的「雲端大倉庫」裡。
    'arguments' =>
    array (
      'bucket' => '[S3倉庫的名字]', // 這是你在 S3 雲端大倉庫裡給你的專屬空間取的名字。
      'autocreate' => false, // 這裡設為 false 表示這個 S3 倉庫要自己先建好,Nextcloud 不會自動幫你建。
      'use_iam_role' => true, // 這個很安全!它表示 Nextcloud 會用一種叫做 IAM 角色的方式,安全地跟 S3 倉庫溝通,不用把鑰匙(密碼)直接寫在這裡。
      'region' => '[S3倉庫的地區]', // 你的 S3 倉庫在哪個地理位置。
      'use_ssl' => true, // 連線到 S3 倉庫時要使用安全的加密連線。
    ),
  ), // 總之,你把檔案存在 S3 這種雲端大倉庫,好處是可以放很多很多檔案,而且比較不容易壞掉或遺失。
  'memcache.distributed' => '\\OC\\Memcache\\Redis', // 這是 Nextcloud 的一個「快速記憶區」,用來暫時存放一些常用的資料,讓它跑得更快。這裡用的是 Redis 這個工具,而且是用來給很多 Nextcloud 程式一起共用的。
  'memcache.local' => '\\OC\\Memcache\\APCu', // 這是另一個「快速記憶區」,用的是 APCu 這個工具,主要是給 Nextcloud 裡單獨一個程式自己用的,也是為了加速。
  'memcache.locking' => '\\OC\\Memcache\\Redis', // 這個「快速記憶區」特別重要,是用來做「檔案鎖定」的。想像一下,如果兩個人同時想改同一個檔案,它就像一個交通警察,確保不會亂掉。這裡也是用 Redis 來做。
  'redis' =>
  array (
    'host' => '[Redis連線地址]', // 這是你的 Redis「快速記憶區」的連線地址,看起來像是一個 AWS 的服務地址。
    'port' => 6379, // 連線到 Redis 的埠號。
    'password' => '[Redis連線密碼]', // 連線到 Redis 需要的密碼。**再次提醒,請保護好這個檔案!**
    'timeout' => 3, // 連線逾時時間。
    'read_timeout' => 3, // 讀取資料的逾時時間。
  ), // 這些是設定 Nextcloud 怎麼連線到 Redis 這個「快速記憶區」的細節,讓 Nextcloud 跑得更順暢。
  'datadirectory' => '[Nextcloud自己的資料區]', // 即使檔案存在 S3,Nextcloud 自己還是需要一個地方放它的「筆記」(像是應用程式的資料、快取檔案、日誌等等)。
  'dbtype' => 'mysql', // Nextcloud 用的是哪種資料庫來記錄檔案清單、使用者資訊等等。這裡是用 MySQL。
  'loglevel' => 0, // Nextcloud 的「日誌」(Log)要記錄多詳細。0 是最詳細的「偵錯模式」,會寫下所有大小事。**如果不是在找問題,建議調高一點(例如 2 或 3),不然日誌會多到爆!**
  'logtimezone' => 'Asia/Taipei', // 日誌裡記錄的時間要用哪個時區。這裡設為台北時間。
  'log_rotate_size' => 104857600, // 日誌檔案寫到多大時,就換一個新的檔案繼續寫,避免日誌檔案太大。這裡設為 100MB。
  'version' => '[Nextcloud版本號]', // 你現在用的 Nextcloud 是哪個版本。
  'overwrite.cli.url' => '[背景任務用的網址]', // Nextcloud 在背景做事情(例如自動清理、寄信)時,如果需要產生連結,會用這個網址當開頭。
  'dbname' => '[資料庫名稱]', // Nextcloud 用的是資料庫裡的哪個「資料庫」。
  'dbhost' => '[資料庫連線地址]', // 你的資料庫在哪裡,看起來像是一個 AWS 的資料庫服務地址。
  'dbport' => '', // 連線到資料庫的埠號,空白表示用預設的。
  'dbtableprefix' => '[資料庫表格開頭]', // Nextcloud 在資料庫裡建的表格,前面會加上這串文字,避免跟其他程式用的表格名稱衝突。
  'mysql.utf8mb4' => true, // 啟用這個,你的 Nextcloud 就可以正確顯示和處理各種文字,包括可愛的 Emoji 表情符號!
  'dbuser' => '[資料庫使用者名稱]', // 連線到資料庫的使用者名稱。
  'dbpassword' => '[資料庫密碼]', // 連線到資料庫的使用者密碼。**再次強調,請保護好這個檔案!**
  'installed' => true, // 表示 Nextcloud 已經安裝好了。
  'theme' => '', // 使用哪個佈景主題,空白表示用預設的。
  'maintenance' => false, // Nextcloud 是不是在「維護模式」,設為 true 的話,除了管理員,其他人都會被擋在外面。這裡設為 false,表示正常開放。
  'files.chunked_upload.max_size' => [100MB的計算值], // 上傳大檔案時,會把檔案切成一塊一塊上傳,這裡設定每一塊最大是多大。100MB 對上傳大檔案很有幫助。
  'maintenance_window_start' => [維護開始的UTC小時], // 設定 Nextcloud 可以在每天的哪個時間開始做一些比較耗時的「打掃」工作(例如清理舊資料),這裡設為 UTC 時間的凌晨 3 點開始,會持續 4 小時。
  'default_language' => 'zh_TW', // 新使用者進來時,預設的 Nextcloud 介面語言是繁體中文。
  'default_locale' => 'zh_TW', // 預設的地區設定也是繁體中文 (台灣)。
  'default_phone_region' => 'TW', // 在輸入電話號碼時,預設是台灣的格式。
  'trashbin_retention_obligation' => '30, 45', // 垃圾桶裡的檔案會怎麼處理。這裡設為最少放 30 天,最多放 45 天後會被自動清掉。
  'mail_smtpmode' => 'smtp', // Nextcloud 寄信的方式是用 SMTP 伺服器。
  'mail_sendmailmode' => 'smtp', // 這是跟上面寄信方式相關的另一個設定。
  'mail_smtphost' => '[寄信伺服器地址]', // Nextcloud 要連到哪個郵件伺服器去寄信,看起來像是一個 AWS 的寄信服務地址。
  'mail_smtpport' => '[寄信伺服器埠號]', // 連線到寄信伺服器的埠號,587 通常表示使用 STARTTLS 加密。
  'mail_domain' => '[寄信時的網域名稱]', // 寄信時,寄件人信箱的網域名稱部分。
  'mail_from_address' => '[寄信時的使用者名稱]', // 寄信時,寄件人信箱的使用者名稱部分。
  'mail_smtpauth' => true, // 寄信時需要登入驗證。
  'mail_smtpname' => '[寄信登入帳號]', // 寄信登入驗證的帳號。
  'mail_smtppassword' => '[寄信登入密碼]', // 寄信登入驗證的密碼。**再次強調,請保護好這個檔案!**
);

你的 Nextcloud 為什麼這樣設定?

從這些設定來看,你的 Nextcloud 就像是住在 AWS 雲端裡的一個豪華管家:

  1. 檔案住在大倉庫 (S3): 你把檔案放在 AWS 的 S3 裡,這樣檔案空間可以無限擴充,而且很安全可靠。
  2. 資料庫是專業管家 (RDS): 用 AWS 的 RDS 資料庫服務來管理檔案清單和使用者資料,這是很專業的選擇。
  3. 有超快記憶區 (Redis & APCu): 用 Redis 和 APCu 這些工具來當 Nextcloud 的「快速記憶區」,讓它處理事情更快,尤其是檔案鎖定功能,避免大家同時改檔案時出錯。
  4. 寄信找專業快遞 (SES): 用 AWS 的 SES 服務來寄送通知信,確保信件能順利送達。
  5. 網路設定很穩固: 設定了 HTTPS 和信任的網址,表示你的 Nextcloud 應該是透過一個安全的「轉發站」(例如負載平衡器)提供服務的。
  6. 有在地化設定: 設定了繁體中文,對台灣使用者很友善。
  7. 日誌記錄很詳細: 目前設定是記錄所有細節,這在找問題時很有用,但平常可能需要調整一下,以免日誌檔案佔滿空間。

除了這些,你可能還會想加什麼設定?

Nextcloud 還有很多可以調整的地方,你可以根據你的需求在 config.php 裡額外添加一些設定。

  • 掛載其他空間 (External Storage): 如果你除了 S3,還有其他地方想讓 Nextcloud 連過去放檔案(例如另一台伺服器的資料夾、Google Drive、Dropbox 等),雖然大部分設定是在 Nextcloud 介面裡做,但有些基本設定(像是允不允許掛載本地資料夾)會在 config.php 裡控制。
    • 'files_external_allow_create_new_local' => true,
      • 白話文: 允許你在 Nextcloud 裡設定連接到這台伺服器上的其他資料夾。
  • 讓管家定時打掃 (Background Jobs): Nextcloud 有些工作需要定期執行(像是檢查檔案有沒有變動、清理垃圾桶)。你可以設定讓它乖乖地按照排程(像是系統的定時任務 Cron)來做這些事,這樣比較穩定有效率。
    • 'backgroundjob_mode' => 'cron',
      • 白話文: 告訴 Nextcloud,它的「打掃」工作要交給系統的定時任務來執行。
  • 顯示檔案小圖 (Preview Generation): Nextcloud 可以顯示檔案的「小圖」(預覽圖),像是圖片、PDF 或文件的小縮圖。你可以決定要不要開這個功能,以及要顯示哪些檔案類型的小圖。
    • 'enable_previews' => true,
      • 白話文: 開啟顯示檔案小圖的功能。
    • 'enabledPreviewProviders' => [ ... ],
      • 白話文: 這裡列出 Nextcloud 可以顯示哪些類型檔案的小圖,例如 PDF、影片、Office 文件等等。如果要顯示這些,可能需要你的伺服器安裝一些額外的程式(像是處理影片的 ffmpeg 或處理文件的 LibreOffice)。你可能還需要告訴 Nextcloud 這些程式在哪裡。
  • 加強安全性 (Security): 除了基本的信任網址,你還可以做更多來保護你的 Nextcloud。
    • 'token_auth_enforced' => true,
      • 白話文: 強制大家用「應用程式密碼」登入,而不是直接用你的 Nextcloud 密碼,這樣更安全。
    • 'trusted_proxies' => ['[信任的代理伺服器IP]'],
      • 白話文: 如果你的 Nextcloud 前面有很多層「轉發站」,你需要告訴 Nextcloud 哪些「轉發站」是你可以信任的,這樣它才能知道真正連線過來的使用者是誰。
    • 'allowed_admin_ranges' => ['[允許管理員操作的IP範圍]'],
      • 白話文: 設定只有從哪些特定的網路位置,才能登入 Nextcloud 進行管理員的操作。
  • AWS IAM Policy (給 Nextcloud 連 S3 的通行證):當你在 config.php 裡設定 Nextcloud 用 IAM 角色連線到 AWS S3 時,就像是你要給 Nextcloud 一張「通行證」,告訴 AWS 說「這個 Nextcloud 是我的人,允許它做這些事」。這張通行證的內容就是一個叫做 IAM Policy 的設定。d
    • 白話文: 這張通行證詳細列出了 Nextcloud 可以對你的 S3 倉庫做哪些操作,像是上傳、下載、刪除、看檔案列表等等。這樣 Nextcloud 才能正常地把檔案存在 S3 裡。用 IAM 角色和這個通行證是很安全的做法,不用在 Nextcloud 設定裡寫下 S3 的帳號密碼。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "NextcloudS3Access",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:ListBucket",
                "s3:AbortMultipartUpload",
                "s3:ListMultipartUploadParts",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": [
                "arn:aws:s3:::XXXXX/*",
                "arn:aws:s3:::XXXXX"
            ]
        }
    ]
}

怎麼添加或修改這些設定?

要修改或添加設定,你需要找到你的 config.php 檔案,用文字編輯器打開它。

重要提醒:

  1. 先備份! 在動手之前,先把 config.php 這個檔案複製一份存起來,以免改壞了可以恢復。
  2. 用編輯器(像是記事本程式)打開 config.php
  3. $CONFIG = array ( ... ); 這一堆設定裡面,找到你想加或想改的地方,按照 '設定名稱' => 設定值, 的格式寫進去。記得每一行後面都要有逗號 ,,最後一行不用。
  4. 存檔。
  5. 確認 Nextcloud 伺服器有權限讀取你修改後的檔案。

舉個例子:我想把管家的打掃模式改成定時排程

<?php
$CONFIG = array (
  // ... 前面的設定 ...

  'trashbin_retention_obligation' => '30, 45',
  'mail_smtpmode' => 'smtp',
  // ... 其他寄信設定 ...

  // 在這裡加入打掃模式的設定
  'backgroundjob_mode' => 'cron',

  // ... 後面的設定 ...
);

最後總結

config.php 就像是你的 Nextcloud 雲端硬碟的「大腦控制中心」。透過修改它,你可以告訴 Nextcloud 怎麼連線到資料庫、檔案放哪裡、怎麼寄信、怎麼加速等等。

了解這些設定,可以幫助你在 Nextcloud 遇到問題時更容易找到原因,也可以根據你的需求讓它跑得更快、更安全。

記得,每次修改完 config.php,可能需要讓你的 Nextcloud 重新啟動一下(通常是重啟 PHP 服務或網頁伺服器),新的設定才會生效。如果遇到問題,隨時回去檢查這個檔案,或者查閱 Nextcloud 官方手冊 尋求更詳細的說明!

發佈留言

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

返回頂端