docker的nextcloud手動升級經驗17->20

公司 nextcloud 版本號為 17 , 今天突然心血來潮, 手動pull 最新版的nextcloud 20, 結果系統直接進入維護模式, 再起不能…
我自己犯了跨兩個大版本不能升級禁忌, 原本想說若失敗, 再把舊的啟用即可, 甚至連設定檔都懶得備份,
當我發現新版啟用失敗時, 只好回到舊的nextcloud,
哎呀! 居然無法啟動, 應該是新版本有改動到舊版設定檔案, 於是就GG了.
這下慘了! 我得趕緊想辦法解決, 在公司同仁發現前, 解決升版, 降版都失敗的窘境,
最後靈光一閃, 終於成功升級到最新版本!
以下真實記錄一下解決的過程:


1. pull nextcloud 最新版號20, 掛載舊的設定檔案, 啟動後出現維護模式, 無法使用. 我於是下指令解除維護模式, 瀏覽器上顯示出現可升級的選項, 上吧, 皮卡丘!

docker exec --user www-data nextcloud_2 php occ maintenance:mode --on

皮卡丘上場了, 但是不給力… 瀏覽器出現升級失敗, 版本不支援的訊息(Updates between multiple major versions are unsupported),
好險docker還能進入nextcloud, 我找到version.php這個檔案, 發現裡面指定只能從19升級到20

$OC_Version = array(20,0,5,2);
$OC_VersionString = '20.0.5';
$OC_Edition = '';
$OC_Channel = 'stable';
$OC_VersionCanBeUpgradedFrom = array (
   'nextcloud' => 
   array (
     '19.0' => true,
     '20.0' => true,
   ),
   'owncloud' => 
   array (
     '10.5' => true,
   ),
 );

2. 死馬當活馬醫, 把version.php的資料改成讓17能升級到18 (19改成17, 20改成18), 然後pull nextcloud 18版 , 再掛上舊有的設定檔案後, 啟動 nextcloud 18版, log 居然神奇的啪啪啪, 出現17升級到18的訊息, 瀏覽器也能成功登入nextcloud, 並且顯示幕前版本18版

Initializing nextcloud 18.0.13.1 …
Upgrading nextcloud from 17.0.5.2 …
Initializing finished
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
 Setting log level to debug
 Turned on maintenance mode
 Updating database schema
 Updated database
 Disabled incompatible app: workflow_pdf_converter
 Updating  …
 Migrate old user config
 Starting …
     0/0 [>---------------------------]   0%

3. pull nextcloud 19版 , 掛上舊設定檔案, 啟動後也成功升級到19版

4. 掛上之前最新的nextcloud 20版, 也能從19升到20囉 , 驚險完成升級任務.

後續 2022/8/8

這次從 21.0.9 升級到22.2.10就簡單多了 。

先把新版抓下來

docker pull  nextcloud:22.2.10  

進入舊版容器,安裝vim後,編輯 version.php

增加一行 ‘22.2’ => true

$OC_VersionCanBeUpgradedFrom = array (
   'nextcloud' => 
   array (    
     '21.0' => true,
     '22.0' => true,
     '22.1' => true,
     '22.2' => true,
   ),
   'owncloud' => 
   array (
     '10.5' => true,
   ),
 );

修改完畢,離開並停止執行舊版容器

重新執行新容器(需沿用原本舊容器的設定值) ,執行後系統就會自動更新,確認沒問題後,刪掉舊版容器,就完成整個更新了。

nextcloud連接onlyoffice體驗

我自己的nextcloud原本連結 Collabora Online 達到可線上編輯office檔案的功能, 但是最近發現only office更相容M$ office, 於是想試用only office線上編輯的功能, 這次也是使用docker 安裝,不使用only office內建的let’s encrypt功能, 使用docker本體主機上的let’s encrypt 與 onlyoffice 進行mapping.

*** 2022/11/28 以下作法安裝7.2居然失敗(docker 必須升級到20.10.21), 但我這版還沒升級, 只好退回7.1

docker volume create onlyoffice_fonts
docker run --restart always -v onlyoffice_fonts:/usr/share/fonts -v /etc/letsencrypt:/etc/letsencrypt  --name onlyoffice -d  -p 8443:443 onlyoffice/documentserver

 

*** 2023/09/19 安裝7.2以上,需要設定密碼,並且在nextcloud的「secret key」欄位輸入該密碼

docker volume create onlyoffice_fonts
docker run --restart always -v onlyoffice_fonts:/usr/share/fonts -v /etc/letsencrypt:/etc/letsencrypt  --name onlyoffice -d  -p 8443:443  -e JWT_SECRET=<密碼> onlyoffice/documentserver

這樣就安裝完畢了, 接下來就是進入only office, 進行憑證的對應
** onlyoffice_fonts 的路徑可以存放其他字型(TTF), 再進入only office執行 /usr/bin/documentserver-generate-allfonts.sh即可使用新的字型, 或是執行fc-cache -f /usr/share/fonts/xxxx目錄 ,fc-list 可得知那些字型生效。


#進入onlyoffice 
docker exec -it onlyoffice bash

###### 執行已下指令
mkdir /var/www/onlyoffice/Data/certs
cd /var/www/onlyoffice/Data/certs/
openssl dhparam -out dhparam.pem 2048
ln -s /etc/letsencrypt/live/onlyoffice.test.com/fullchain.pem /var/www/onlyoffice/Data/certs/onlyoffice.crt
ln -s /etc/letsencrypt/live/onlyoffice.test.com/privkey.pem /var/www/onlyoffice/Data/certs/onlyoffice.key
######

#離開container並且重開
exit
docker restart onlyoffice

上面紅色部分就是這個only office的網址, 請自行更改, 最後再到nextcloud啟用onlyoffice連結功能, 再輸入docker 的onlyoffice的網址, 如: https://onlyoffice.test.com , 就可以享用高度相容M$ office的線上編輯功能了

PS. 若docker onlyoffice的憑證是自己簽發的, 經過測試無法使用, 官網建議的做法一樣失敗, 請三思 https://api.onlyoffice.com/editors/nextcloud
測試的nextcloud 20.0.4 , 插件onlyoffice是6.1.0.83

M$ office的另一種選擇onlyoffice

有一天幫同事看了一款筆電, 硬體規格很好, 價格也很優惠, 再仔細一看, 原來作業系統不是windows , 而是一款叫做 Endless OS 的作業系統, 難怪便宜多了.
一般這種非windows筆電,除非是MAC BOOK, 否則麻瓜們很難接受, 主要原因在於M$ office相容性, 雖然替代的軟體很多, 可惜相容度有待加強, 介面差異也頗大, 麻瓜使用的意願不可能高.
好奇心的驅使下, 讓我相知道為何廠商敢搭載非windows作業系統, 放到只有麻瓜會看的賣場上販賣.
於是我查了 Endless OS 規格, 發現預載了 only office , 試用了結果非常棒, 連介面都非常M$.
only office跟其他office替代軟體一樣, 並沒有台灣的新細明體, 標楷體, 若自用只能自行想辦法安裝(但這要小心, 不要觸法),
不過沒關係還是可以安裝其他相容的字型, 如國發會的全字庫 商用也沒問題呢.

dovecot v2 效能調校

調整cache

https://wiki.dovecot.org/Authentication/Caching
有三個可以調整

auth_cache_size: Authentication cache size, 0 disables caching (default). 
auth_cache_ttl: Time to live in seconds for cache entries. 
auth_cache_negative_ttl: If a passdb or userdb lookup didn't return any data (i.e. the user doesn't exist)
auth_cache_verify_password_with_worker: Password hash verifications are done by the auth master process by default. Setting this to "yes" moves the verification to auth-worker processes. v2.2.34+)
ps: It should be pretty safe to set very high TTLs

調整fsync與service_count

https://datahunter.org/dovecot_performance
可以調整fsync

#Default to no fsyncing
mail_fsync = never
protocol lda {
  # Enable fsyncing for LDA
  mail_fsync = optimized
}
protocol lmtp {
  # Enable fsyncing for LMTP
  mail_fsync = optimized
}
service imap-login {
   service_count = 0
   client_limit = $default_client_limit
   vsz_limit = 64M
}

CEntOS 7 postfix 新增lmtp 與 managesieve功能

之前自己製作的mail server (綁定AD) , 休假功能使用的是 lda + sieve + managesieve 的方式進行, 可是在朋友公司運行時, 卻發生效率不彰的狀況(活躍的email帳號約500個).
查詢了一下, 發現官方已經建議使用 lmtp 的方式取代 lda , 原因是lda屬於觸發類型, 而 lmtp是常駐服務類型, 常駐服務類型效率較好.
於是將自己製作的 docker mail server 改良成 lmtp , 有機會再請朋友測試效率.

以下是讓centos啟用lmtp功能的設定文件(登入帳號密碼guest)

https://docs.kafeiou.pw/iammis/技術文章/HowTo/10033_(CEntOS7.9)新增lmtp_managesieve功能.txt

jitsi-meet限定內部使用(VPN) 安裝注意事項

jitsi-meet安裝後, 可查看 /var/log/jitsi/jvb.log , jicofo.log 看看是否有錯誤


1. 若遇到 PKIX path building failed 錯誤, 會造成mcu錯誤, 也就是無法多人(3人)以上一起視訊以及分享
需要把自己簽名的證書(不合法) , 新增至java的證書區

keytool -importcert -file /var/lib/prosody/<主機名稱>.crt  -keystore <java SDK path>/jre/lib/security/cacerts 
#刪除請把 -importcert 改成 delete

Example

keytool -importcert -file /var/lib/prosody/meet.test.com.crt  -keystore /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts 

有趣的是, 以上指令執行完畢, 需要輸入密碼,密碼預設是 changeit

改完後重開機.

ubuntu(VM)如何測試aes硬體解碼的功能

  1. 先讓vm不啟用aes, 然後執行
openssl speed -evp aes-256-cbc

再讓vm關機, 然後啟用aes, 重開機, 再執行上述指令, 比對數值即可.

2. 可以用以下指令測試支援哪些解碼

openssl ciphers -v 'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS' 

3. nginx 與 apache httpd 都有加密的設定, 類似以下的寫法

ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

4. openssl speed 這指令可以列出來加密速度, 非常實用

建立可用來呼叫鼎新電子表單easyflow web service的開發環境

鼎新電子表單EasyFlow GP版本, 提供 web service 呼叫 .但是鼎新只會給web service的說明文件, 並不會技轉建立開發環境., 我因此研究了數天, 將建立開發環境的說明文件製作出來,

接下來如何開發, 就是自身能力的問題, 網路很多資源, 可幫助學會這10多年前就已經成熟的web service,

https://docs.kafeiou.pw/!/#iammis/view/head/%E6%8A%80%E8%A1%93%E6%96%87%E7%AB%A0/HowTo/10032_eclipse%E5%BB%BA%E7%AB%8B%E5%8F%AF%E5%91%BC%E5%8F%AB%E9%BC%8E%E6%96%B0webservice%E7%9A%84%E7%92%B0%E5%A2%83.docx

1 ... 33 34 35 36 37 ... 75