Tranquility logo
  • 關於 
  • 首頁 
  • 關鍵字 
  1.   文章
  1. 首頁
  2. 文章
  3. 使用桌上型伺服器在Ubuntu環境中安裝nextcloud筆記

使用桌上型伺服器在Ubuntu環境中安裝nextcloud筆記

發佈於 2023年6月16日  (最後修改於 2025年5月31日) • 6 分鐘 閱讀 • 2,799 字
資訊科技   Nextcloud   Ubuntu  
資訊科技   Nextcloud   Ubuntu  
分享至
Tranquility
連結 已複製到剪貼板

本頁目錄
前言   硬體與作業準備   安裝作業系統與設定   在Ubuntu 22.04 LTS安裝   下載 Nextcloud   設定Apache Web server   美化URL   安裝精靈   php.ini 設定   其他微調設定   安裝 Redis   解決 php-imagick 不支援 SVG 的問題   Production準備   設定trusted_domains   申請及安裝SSL憑證   維護  
使用桌上型伺服器在Ubuntu環境中安裝nextcloud筆記

前言  

因為Sysnology NAS受到很多資訊安全限制,導致我最需要同步檔案的位置因此無法使用Drive服務,耳聞安全且高效的Nextcloud,作為一個open source的自建雲平台,應該有機會為我的需求提供完美的解決方案。Nextcloud還提供了一個功能強大的應用生態系統,能輕鬆地在自己的伺服器上建立和運行一個私有的檔案同步和分享平台。透過這個平台,並與團隊成員、合作夥伴和客戶合作。

在本文中,我將記錄使用一部華碩直立型伺服器,以Ubuntu為作業系統,安裝Nextcloud的步驟和過程。

硬體與作業準備  

我使用一台2018年的Asus桌上型伺服器為平台,硬碟以美光SSD為開機碟;另外準備了兩顆1T容量不同品牌的傳統硬碟作為主儲存空間。華碩主機板的優勢是內建RAID控制晶片C232,可支援 Intel Rapid Storage Technology enterprise Option ROM Utility。這使得我能直接在BIOS中把硬碟設定為RAID 0、RAID 1、RAID 10與RAID 5;由於我僅準備兩顆硬碟,所以設定為RAIO 0來降低單顆硬碟損壞的風險。

安裝作業系統與設定  

選擇Ubuntu的好處在於它是一個免費、開源且廣受支持的作業系統,同時又提供了穩定、安全和可靠的運行環境,並且有強大的社群支援和豐富的應用生態系統。它易於安裝和使用,提供直觀的用戶界面和友好的命令列介面。Ubuntu還有持續的更新和安全修補程式,確保系統的安全性和最新功能。此外,Ubuntu支援多種硬體平台,並且在虛擬化和雲端環境中表現出色。總結而言,選擇Ubuntu意味著獲得一個強大、穩定和高度自訂的作業系統,適用於各種用途和使用者需求。 在 Ubuntu正體中文站 可以下載 PC 適用的 image,server以穩定為優先,所以我選擇 22.04 LTS的 64位元版本。

下載完成後,我使用 Rufus 把映像檔案寫到隨身碟,然後插到電腦進行安裝。安裝完成後先進行一些基本設定:

設定 Locale,把中文加上去:

sudo dpkg-reconfigure locales

設定時區,選到台灣:

sudo dpkg-reconfigure tzdata

啟動 mDNS: 我的習慣是先在區域網路做設定(就是lab環境),大致上測試都ok了推到production,所以安裝mDNS會比較容易存取。

sudo apt install avahi-daemon

在Ubuntu 22.04 LTS安裝  

先下載必要的相依模組:

sudo apt update && sudo apt upgrade
sudo apt install apache2 mariadb-server libapache2-mod-php php-gd php-mysql \
php-curl php-mbstring php-intl php-gmp php-bcmath php-xml php-imagick php-zip

建立 Nextcloud 使用的資料庫

先進入 MariaDB,MariaDB是MySQL的孿生兄弟,所以也是執行MySQL:

sudo mysql

建立資料庫並設定連結。

CREATE DATABASE nextcloud;
GRANT ALL ON nextcloud.* TO 'ncadmin'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;

下載 Nextcloud  

從 Nextcloud server下載區裡面,COMMUNITY PROJECTS這個區塊找到 GET ZIP file的button,然後複製其連結。然後回到終端機:

wget https://download.nextcloud.com/server/releases/latest.tar.bz2

解壓縮檔案並放到/var/www

sudo tar -jxvf latest.tar.bz2 -C /var/www

設定權限:

sudo chown -R www-data:www-data /var/www/nextcloud
sudo chmod -R 755 /var/www/nextcloud

接著,因為我的RAID硬碟掛載在/home,所以要在那建立存放資料的資料夾,並讓web user可以存取:

sudo mkdir /home/nextcloud
sudo chown www-data:www-data /home/nextcloud

現在可以啟動資料庫與PHP了:

sudo systemctl enable php-fpm
sudo systemctl start php-fpm
sudo systemctl enable mariadb
sudo systemctl start mariadb

設定Apache Web server  

我計畫用資料夾的方式設定Apache www server,所以設定檔應該存放在/etc/apache2/sites-available/nextcloud.conf

sudo touch /etc/apache2/sites-available/nextcloud.conf

放進以下的內容:

Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off
  </IfModule>

  <IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>

</Directory>

建立後,執行以下命令讓設定檔生效:

sudo a2ensite nextcloud.conf

系統會提示需要重啟Apache

sudo systemctl reload apache2

Nextcloud需要mod_rewrite模組才能正確運作,執行以下命令來開啟enable:

sudo a2enmod rewrite

另外,推薦啟用的模組還有 mod_headers, mod_env, mod_dir 及 mod_mime:

sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime

建議在Nextcloud上禁用伺服器配置的驗證,並在 <Directory> 部分中添加一行指令來關閉對Nextcloud的驗證。

Satisfy Any

美化URL  

「Pretty URLs」功能,它可以刪除 URL 中的「index.php」部分,使得分享鏈接等 URL 更短、更美觀。其中,「Pretty URLs」是一種常見的技術術語,指的是通過修改 URL 的結構,使其更加易讀、易記、美觀的技術手段。 Web 服務器必須安裝 mod_env 和 mod_rewrite 模組,並且 .htaccess 文件必須可寫入,以便 HTTP 用戶可以對其進行修改。

sudo a2enmod env
sudo a2enmod rewrite

安裝精靈  

重啟Apache後需要通過圖形安裝向導或使用occ命令在命令行上運行來完成安裝。為了啟用這個功能,需要將Nextcloud目錄的所有權更改為HTTP用戶。

php.ini 設定  

可能會有多個php.ini需要修改,這與系統情形相關,主要是要修改date.timezone、記憶體限制memory_limit (系統建議值是512MB),以及 opcache.interned_strings_buffer (設定高於8的值)

  /etc/php/8.1/apache2/php.ini
or
  /etc/php/8.1/fpm/php.ini
or ...

到這邊應該可以到瀏覽器,開啟安裝的位址執行安裝精靈。

其他微調設定  

安裝 Redis  

先安裝相依模組與元件

sudo apt install lsb-release curl gpg

然後新增軟體庫,更新並安裝 Redis 與 APCu:

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

sudo apt-get update
sudo apt-get install redis

sudo apt -y install php-apcu

使用ps ax驗證redis有執行:

ps ax | grep redis

接著編輯 config.php,在檔案的末端加入以下內容:

'default_phone_region' => 'TW',
'memcache.local' => '\OC\Memcache\APCu',
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => '/var/run/redis/redis.sock',
     'port' => 0,
     'timeout' => 0.0,
      ),

解決 php-imagick 不支援 SVG 的問題  

這個與libmagickcore相關,可以安裝libmagickcore-6.q16-6-extra

sudo apt install libmagickcore-6.q16-6-extra

Production準備  

若在區域網路內測試沒甚麼問題,可以準備把機器丟上internet。我的機器一樣會躲在防火牆後面,您可以選擇把機器丟到DMZ或是用port forward的方式讓機器上internet。

設定trusted_domains  

設定精靈預設僅會把您第一次執行時輸入的網址設為信任網域,因此若您像我一樣先在區域網路上作業,那麼預設的信任網域將無法在internet上提供服務,所以需要修改config.php的trusted_domains:

信任網域可以設定多個,原來在區域網路上的網域也可以保留。

'trusted_domains' =>
   [
    'demo.example.org',
    'otherdomain.example.org',
    '10.111.112.113',
    '[2001:db8::1]'
  ],

申請及安裝SSL憑證  

雖然我沒打算花錢申請SSL憑證,但還是可以到Let’s Encrypt申請個免費的憑證讓網域可以透過HTTPs存取。 我會使用 Certbot來安裝我的SSL憑證。

Certbot的相依元件是snapd,Ubuntu有預載,因此只需要確認是最新版的:

sudo snap install core
sudo snap refresh core

接著依照官方文件的要求先解除之前安裝的Certbot:

sudo apt-get remove certbot

然後就可以安裝 Certbot了:

sudo snap install --classic certbot

準備Certbot命令: 執行以下命令確保Certbot可以正確執行:

sudo ln -s /snap/bin/certbot /usr/bin/certbot

接著,可以直接取得並安裝憑證:

sudo certbot --apache

步驟是先提供您要取得憑證的網域名稱,依照前文的說明,網址必須在internet上且可以存取port。通常很快會直接安裝完成,而且Certbot還會設定自動更新憑證程序。

接著可以用https開啟您的網址,到此應該完成設定可以使用了。

維護  

執行 cron.php

使用作業系统的 cron 功能是執行定期任務的首選方法。此方法使得可以在不受 Web server 既有限制下執行必要的工作。

sudo crontab -u www-data -e

加上這行:

*/5  *  *  *  * php -f /var/www/nextcloud/cron.php --define apc.enable_cli=1
 手動安裝syAgent的代理程式
在NAS上使用Docker安裝HedgeDoc的經驗分享 
本頁目錄:
前言   硬體與作業準備   安裝作業系統與設定   在Ubuntu 22.04 LTS安裝   下載 Nextcloud   設定Apache Web server   美化URL   安裝精靈   php.ini 設定   其他微調設定   安裝 Redis   解決 php-imagick 不支援 SVG 的問題   Production準備   設定trusted_domains   申請及安裝SSL憑證   維護  
與我同行

生活是經驗與觀點的交融。露營、單車、游泳與評論,追蹤我,發掘更多可能!

     
Copyright © 2024 Wolfgang Yu. | 由 Hinode 提供支持。
Tranquility
程式碼 已複製到剪貼板