iredmail 1.6.3 設定白名單

幫朋友安裝開源好用的mail server 「iredmail」,若需要加白名單,有兩個方法:

  1. 購買專業版
  2. 下指令
    https://docs.iredmail.org/amavisd.wblist.html
# python wblist_admin.py --list --whitelist
# python wblist_admin.py --list --blacklist
# python wblist_admin.py --add --whitelist 202.96.134.133 john@example.com @test.com @.abc.com
# python wblist_admin.py --add --blacklist 202.96.134.133 john@example.com @test.com @.abc.co

先找出 wblist_admin 在哪個地方,然後加上白名單即可

nginx 反向代理wordpress容器,出現failed (111: Connection refused) while connecting to upstream

系統大概長這樣,一個RockyLinux 9.2 主機安裝 iRedMail 1.6.3版(容器還在Beta版),iRedMail安裝滿簡單的,很快就搞定;但因為太霸氣應改主機的nginx設定,並且深度修改,若這主機只當mail server倒是沒問題,但可惜因為種種原因需要再安裝一個wordperss容器,這就麻煩了,我得了解如何讓nginx使用反向代理方式(proxy),才能連到wordpress,nginx反向代理設定似乎很簡單,也成功了,可惜log卻一直跳出錯誤:

connect() failed (111: Connection refused) while connecting to upstream

我祭出google大神,試了很多建議與解法卻失敗了,就在第9999次嘗試之後,突然意識到甚麼,將設定改了一下,只是簡單的將原本連到容器的方式 http://127.0.0.1:8080 改成該具名稱連線 http://www.test.com:8080 (該wordpress容器對外連結為https://www.test.com),錯誤訊息居然就停止了,真是神奇。

proxy_pass http://127.0.0.1:8080;
改成以下具名設定
proxy_pass http://www.test.com:8080;

算一算農曆七月快到了,就當作是靈異事件好了。

安裝pve zfs 如何讓zfs能夠上傳iso檔案以及備份vm

我上一篇文章 「很神奇的電腦公司,能配合安裝esxi、proxmox ve(pve) 」最後終於做好三顆硬碟zfs系統,也依照「 PVE 6 zfs 檢查硬碟狀況並且發通知 」設定好自動檢查程序,但此時我發現這台新主機並沒有地方可以放 ISO檔案以及備份存放區。(OS碟例外)

我希望此ZFS還能當作ISO檔案上載以及備份存放區,改如何做呢?

1、執行zpool list查看初始zfs名稱

root@host:~# zpool list
NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
RAIDZ  5.45T  1.59M  5.45T        -         -     0%     0%  1.00x    ONLINE  -
root@host:~#

2、在初始ZFS目錄底下,建立子zfs

#先前執行zpool list得到zfs名稱為RAIDZ,此時我們在RAIDZ底下再新增名為 ISO 子zfs,
#但此時還不能使用。(需以Directory方式掛載)
zfs create RAIDZ/ISO

3、回到pve web網址,在Datacenter新增Directory,並且將ISO子zfs掛載起來

  --

設定完畢,系統將會掛載起來。

大功告成,此時不只能放image與container,還多個RAIDZ-ISO能放ISO檔案與備份檔案惹。

安裝wordpress(容器)掛載在子網址(目錄)

安裝wordpress這麼多次,第一次遇到掛載子目錄的需求,也就是安裝完畢,透過反向代理程式,網址看起來像這樣:

https://xxx.xxx.xxx/subfolder

一樣感謝google, 我爬了很多文,說法很多,自己覺得修改檔案這方式很靠譜(非透過web設定)可以避免掛載正式網址時候,若因錯誤很難進入網址改或是到資料庫研究要改哪個table

1.、修改 wp-config.php

 define('WP_SITEURL', 'https://你的網站名稱/你的子目錄');
 define('WP_HOME', 'https://你的網站名稱/你的子目錄');
 #以下是可以不使用ftp就安裝外掛
 define('FS_METHOD', 'direct');

2、修改.htaccess (與wp-config.php都是在wordpress根目錄)

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /你的子目錄/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /你的子目錄/index.php [L]
</IfModule>

3、nginx反向代理

 location /你的子目錄 {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_headers_hash_bucket_size 128;
    proxy_pass http://容器ip(通常127.0.0.1):port/你的子目錄;
  }

4、apache 反向代理

等待遇到實例

wordpreess直接播放mp4改由peertube串流系統

wordpress有個外掛「Super Video Player」能播放mp4影音檔案,但是很耗流量,若放在雲端費用將會很高;因此有必要考慮改用串流方式播放,可以節省一些流量,有個peertube串流系統很棒,也可以安裝容器,我們公司使用到現在,很穩定又好用,安裝方式請按這裡

朋友wordpress網站使用 super video player 播放mp4,可以隱藏下載選項,讓麻瓜使用者不是很容易取得(麻瓜以上就很容易了);若要改成 peertube,則會看到下載選項,這樣朋友就不願意了,於是我爬文爬丫爬,最後發現只要加上一行,也能做到與super video player 一樣,讓麻瓜不容易取得/下載檔案。

[root@firewall ~]# docker exec -it peertube_peertube_1 bash
root@770eb53d9cf6:/app# find .|grep embed.html
./client/dist/standalone/videos/test-embed.html
./client/dist/standalone/videos/embed.html
./client/src/standalone/videos/embed.html
./client/src/standalone/videos/test-embed.html
root@770eb53d9cf6:/app# vi ./client/dist/standalone/videos/embed.html

## 編輯 embed.html ,在head之前加上以下語法,然後退出重新執行peertube容器
# 出處 https://framacolibri.org/t/how-to-disable-context-menu-for-peertube/10998
<style> .vjs-contextmenu-ui-menu { display: none !important; } </style>

## 編輯 embed.html ,body 改成以下這樣
<body id="custom-css" class="standalone-video-embed" oncontextmenu="return false" onselectstart="return false" ondragstart="return false">

另外peertube 連結要嵌在網頁上,只要滑鼠移到影片上,右鍵選「複製嵌入程式碼」,再稍微修改一下即可。


我使用 「aspect-ratio : 16/9」方式自動會依照網頁大小而微調 ,很方便

<iframe src="https://peertube.test.com.tw/videos/embed/1586a669-b649-4e3f-974c-ec4d42a0bf9e" style="aspect-ratio: 16/9;height: 100%; width: 100%;" frameborder="0" width="560" height="315" allowfullscreen="" sandbox="allow-same-origin allow-scripts"></iframe>

2023/08/20

後來發現peertube有個bug,就算網路正常撥放,chrome還是會出現轉圈圈的情況,但firefox不會,我後來發現乾脆先暫時停掉轉圈圈功能,一樣在head前加上一行。(很可惜peertube主要開發者很剛愎自用,以前就交手過了,所以我不會回報這問題,前幾週也有人反應,但都沒受到重視)

.vjs-loading-spinner{display:none!important;}

很神奇的電腦公司,能配合安裝esxi、proxmox ve(pve)

有一次要幫朋友的朋友弄一組新電腦,配置為pve 8(SSD)+3顆2T HDD,3顆HDD我打算做RAIDZ,沒想到他們配合的廠商能代為安裝pve 8且不額外收費 ,這樣我就能省去遠端教他們一步一步製作、安裝pve 8。

過了幾天,主機送來了,果真安裝好pve 8 , 我遠端連線過去一台筆電,再連線設定該台pve主機,沒想到要劃分zfs時候,卻發現電腦廠商已經很好心把3顆hdd主動用主機板內建的磁碟陣列功能設定成raid 5,這樣反而造成我的困擾,pve系統提示已有硬體raid(isw_raid_member),無法做zfs

好險後來發現,pve重新wipe 那三顆hdd,電腦重開機之後,isw_raid_member(硬體raid5) 就自動不見了,真是幸運,否則還要跑去朋友的朋友那邊「遠得不要不要公司」處理,實在勞民傷財。


自架wordpress避開docker早期–link參數,該如何連到mariadb資料庫

以前安裝wordpress容器的時候,可以利用–link參數,綁定以有的資料庫容器(mariadb),讓資料庫容器主機名稱變身成「mysql」,就可以不用安裝一大堆資料庫容器惹。(wordpress容器只認mysql這個主機(host)名稱,所以我們不得已而這樣做)

我先前的文章舊版(Docker)(WordPress)如何使用docker安裝wordpress (帳密皆為guest),也是建議醬做;可是好景不常,docker終於受不了了,新版廢棄–link參數,podman也跟進。

當然會這樣做一定是為了區分子網路,方便管理使用,我也「被」樂見其成,因此我安裝wordpress也必須避開–link參數。

該如何做呢? 以podman為例子,首先我們要想一個很威的網路橋接名稱mynet(可自訂):

 podman create network mynet

然後將以前就有的資料庫容器,加到這個網路橋接器上:

podman network connect mynet mariadb-container

接下來賦予資料庫容器別名,讓資料庫變身成wordpress心目中的mysql

 podman network connect  --alias mysql mynet mariadb-container

這樣一來安裝wordpress就可以不用加上 –link 這個參數,且wordpress容器也能自動認得資料庫容器了。

先前的文章新版(Docker)(WordPress)如何使用docker安裝wordpress

如何得知自架wordpress的正確版本

要得知wordpress正確版本,可從資料庫(mariadb)著手,輸入以下SQL語法:

SELECT * FROM `wp_options` where option_name = 'db_version';

得到option_value之後,再比對官方網站公告資訊 https://codex.wordpress.org/WordPress_Versions,就可以得到正確版本啦。

自架wordpress網站如何重設管理帳號密碼

wordpress 4、5、6這三個大版本,密碼皆使用hash方式加密,若我們忘記管理者帳號密碼,且無法從資料庫看到明碼密碼;此時如果你有資料庫(mariadb)管理者權限那就好辦了,可以先以資料庫的管理者帳號登入,該帳號為整個wordpress資料庫最高權限,而非wordpress管理者帳號;登入後,找出wordpress管理者帳號名稱,然後進行hash密碼加密。

網路上有提供該加密的網站,請google WordPress Password Hash Generator,就可以輕易產出密碼,甚至有些網站還產出SQL語法,修改一下語法內之管理者名稱即可使用,非常方便。

 --

 --

Podman容器備份

備份手法很多,最簡單就是整個主機定期做快照,加上離線備份,這樣就沒甚麼問題了。
但是我最近思考一件事,若我們想將podman上的容器軟體改成docker或是改回實體機使用, 這樣就比較棘手了。

我自己因為遇到podman storage要改不同位置,依照我以前文章更改storage路徑的做法再改一次路徑,podman居然整個崩潰了,搞到還要執行 podman system reset 才能恢復使用,但是reset後,原本的容器軟體全部出問題,若我有乖乖針對容器軟體進行備份,就不會這麼難堪了,最後只能整個VM還原。

所以我想了又想,覺得還是要直接備份容器的「images」與「volumes」。

爬文爬了幾天,修修改改後,我終於融合一個能備份容器以及其volume的腳本,很適合容器母體(host)為Linux使用,該腳本會備份所有的images、volume與執行容器指令。

按此下載podman容器備份腳本(需要輸入guest/guest,下載後請記得修改開頭幾行之備份路徑)

執行備份,先備份images,然後掃描volume,查詢volume若與images互通款取,也一併備份,最後追蹤最初容器執行之指令,也一併圈禁備份起來。

備份後,每個目錄將包含容器使用之images、volumes與rush.sh(啟用指令)

後來我發現volume很適合restic增量備份方式,可以減少我這腳本full backup很耗空間的作法。

因此又改寫了一份針對volume能增量備份的腳本,兩種可以同時搭配使用,例如每個月一次full backup,剩下的定期每日或每周進行restic備份。

按此下載podman容器使用restic備份腳本(需要輸入guest/guest,下載後請記得修改開頭幾行之備份路徑)

1 ... 5 6 7 8 9 ... 75