讓Docker架設的Nextcloud預設關閉或開啟應用程式 / Enabling or Disabling Apps by Default in a Dockerized Nextcloud Instance
既然談到用Docker架設Nextcloud,那我們就要活用Docker的架構,讓Nextcloud不僅僅是「開箱可用」,而且還是「自訂後」的可用。我們可以客製化的指令放在「/docker-entrypoint-hooks.d/post-installation」資料夾內,這樣就可以讓Nextcloud初次安裝完成後,自動進行我們要的設定。
Since we're talking about setting up Nextcloud with Docker, let's leverage Docker's architecture to make Nextcloud not just "usable out-of-the-box," but usable after customization. We can place custom commands in the /docker-entrypoint-hooks.d/post-installation directory, allowing Nextcloud to automatically perform our desired configurations after the initial installation completes.
Docker Nextcloud的自動配置 / Automated Configuration in Docker Nextcloud
https://hub.docker.com/_/nextcloud
在Nextcloud的Docker映像檔裡,有提到Nextcloud提供了五個自動配置的鉤子資料夾(hook folders)。只要我們將可以執行的腳本(.sh)放在資料夾內,Nextcloud就會在佈署過程中的特定階段嘗試去執行這些腳本。
這些資料夾各別是:
- /docker-entrypoint-hooks.d/pre-installation:在 Nextcloud 安裝/初始化之前執行
- /docker-entrypoint-hooks.d/post-installation:在 Nextcloud 安裝/初始化之後執行
- /docker-entrypoint-hooks.d/pre-upgrade:在 Nextcloud 升級之前執行
- /docker-entrypoint-hooks.d/post-upgrade:在 Nextcloud 升級之後執行
- /docker-entrypoint-hooks.d/before-starting:在 Nextcloud 啟動之前執行
如果我們要讓Nextcloud在安裝完後進行客製化,那麼將腳本擺在「/docker-entrypoint-hooks.d/post-installation」裡,讓Nextcloud在初次安裝完成後自動執行,應該會是最合適的選擇。
我們可以在docker-compose.yml的volumes將腳本掛載上去,這樣Docker啟動Nextcloud的時候,就會嘗試去讀取腳本的內容。
自訂應用程式 / Custom Applications
https://docs.nextcloud.com/server/25/user_manual/en/files/version_control.html
那麼我們要讓Nextcloud使用什麼客製化腳本呢?舉例來說,Nextcloud雖然有許多強大的應用程式,但大多時候都只是拖慢速度的元件,不如關閉。舉例來說,如果沒有這方面的需求,我特別建議關閉「files_trashbin」跟「files_versions」應用程式,不然這兩個應用程式會不斷記錄刪除和修改的檔案,佔用許多額外的檔案空間。
另一方面,我個人還蠻常使用「files_external」應用程式,這可以讓我們掛載外部的雲端硬碟,讓Nextcloud作為橋接的中間站,非常好用。
因此,我們可以在post-installation裡面新增腳本「app-initialize.sh」,內容如下:
#!/bin/bash
/var/www/html/occ app:enable files_external
/var/www/html/occ app:disable files_trashbin
/var/www/html/occ app:disable files_versions
/var/www/html/occ app:disable activity
/var/www/html/occ app:disable app_api
/var/www/html/occ app:disable bruteforcesettings
/var/www/html/occ app:disable systemtags
/var/www/html/occ app:disable comments
/var/www/html/occ app:disable contactsinteraction
/var/www/html/occ app:disable dashboard
/var/www/html/occ app:disable files_reminders
/var/www/html/occ app:disable federation
/var/www/html/occ app:disable files_downloadlimit
/var/www/html/occ app:disable firstrunwizard
/var/www/html/occ app:disable logreader
/var/www/html/occ app:disable serverinfo
/var/www/html/occ app:disable webhook_listeners
/var/www/html/occ app:disable notifications
/var/www/html/occ app:disable password_policy
/var/www/html/occ app:disable photos
/var/www/html/occ app:disable privacy
/var/www/html/occ app:disable recommendations
/var/www/html/occ app:disable related_resources
/var/www/html/occ app:disable sharebymail
/var/www/html/occ app:disable support
/var/www/html/occ app:disable circles
/var/www/html/occ app:disable updatenotification
/var/www/html/occ app:disable survey_client
/var/www/html/occ app:disable user_status
/var/www/html/occ app:disable weather_status
/var/www/html/occ app:disable files_sharing
/var/www/html/occ app:disable nextcloud_announcements
如此一來,建立好的Nextcloud就會是相當單純的環境。不需要用到的應用程式都會被關閉了。
結語 / Conclusion
這篇展示了如何使用「post-installation」來開啟與關閉Nextcloud應用程式的做法。實際上,我還會在「before-starting」資料夾裡面添增腳本,讓每次啟動Nextcloud的時候都執行特定指令。透過這些「鉤子資料夾」(hook folders)的搭配,我們便能很大程度地調整Nextcloud的功能。
https://docs.docker.com/docker-hub/repos/manage/builds/advanced/#custom-build-phase-hooks
附帶一提,「鉤子資料夾」這並不是Nextcloud獨有設計,而是大部分Docker映像檔都會遵循的一種開發架構。如果你也想要客製化Docker映像檔所建立的容器,不妨研究看看這些「鉤子資料夾」的設定吧。
那這篇關於客製化Docker架設的Nextcloud就介紹到這裡了。文章的最後要來問大家的是,你覺得雲端硬碟應該要有那些功能呢?
- 1. 垃圾桶:不小心刪除檔案,還要可以救得回來才行。
- 2. 版本控制:有時候不小心改錯內容,這時候就可以找回之前的版本。
- 3. 檔案分享:能夠有個網址讓其他人下載,這樣是最方便的了。
- 4. 其他:歡迎在下面留言,分享你的看法吧!