Ninniku IT Hub

開源技術,實戰分享

iDempiere ERP · IoT · Linux — 從導入到上線的技術筆記

郵件出不去:當 Postfix 比 HR 先知道你要離職
iDempiere

郵件出不去:當 Postfix 比 HR 先知道你要離職

小王在座位上坐到下午六點,等同事們陸陸續續拎包走人,才悄悄打開信箱。履歷已經是第三版了,封面信也改了兩個措辭。他掃視了一遍,覺得文字渾然天成,語氣不卑不亢。他關掉辦公室的網頁,換到個人帳號,把滑鼠移到「傳送」上面,深吸一口氣。他不知道的是,兩個小時以前,HR 已經默默地勾了一個核取方塊。那個核取方塊,在等他。 幕一:Postfix 在等他 下午四點,HR 打開 iDempiere,在員工資料頁找到小王的紀錄,把「郵件監控(IsMailMonitor)」欄位打了勾,按下儲存。一個欄位,三個系統同步更新:iDempiere 寫入資料庫,LDAP 同步了屬性,Postfix 更新了查詢結果。小王對此一無所知,他還在想封面信的最後一句要不要加驚嘆號。 2 Mail Monitor。小王不知道那個 2 裡面有他。 Outbound Mail Intercept System — 整套攔截流程架構圖 整套系統做了三件事:第一,動態攔截——Postfix 即時查詢 LDAP,決定這封信要不要先停下來;第二,ERP 工作流——信件內容送進 iDempiere,由主管或 HR 決定放行還是退回;第三,遠端控制——審核結果透過 API 回傳,FastAPI 再下指令給 Postfix,叫它放人或刪除。三個動作,決定了信件的命運。 幕二:第一封信的命運 18:03。小王按下傳送。郵件進入 Postfix。Postfix 查了一下 LDAP。LDAP 說:「這個人,Hold 住。」 Postfix...

2026-03-17 · 閱讀 10 分鐘
Linux

LDAP 搬家後記:一個工程師的創傷後應激與 Docker 化決心

上一篇,我寫了一場搬遷。476 條靈魂,從一台老伺服器,搬進另一台老伺服器。Schema 地獄三連王、DN 大小寫陷阱、還有那個永遠記不住的 ldapmodify 語法。如果你還沒讀過,請先備好胃藥再點這裡。 這篇,是後記。 搬完的那一刻 搬遷成功的那個瞬間,我什麼都沒感覺到。 沒有煙火,沒有啤酒,沒有同事衝過來拍我的肩膀說「幹得好」。只有我一個人,凌晨三點,盯著終端機上的 ldapsearch 回傳了 476 筆結果,然後緩緩地把筆電闔上。 那種感覺不是成就感,是倖存者的空虛。像是打完 Schema 地獄三連 Boss 之後,發現背包裡的補血藥全用光了,而且存檔點在三小時前。 我躺在床上,盯著天花板想了一件事:如果明年又要搬呢?如果客戶也要搬呢?如果有人問我「你可以教我嗎」,我要從哪裡開始教?從 slapd.conf 和 cn=config 的世紀之爭開始嗎? 「這種工作,做一次是英雄,做第二次是傻子。」...

2026-03-14 · 9 分鐘
Linux

LDAP 搬家記:476 條靈魂的大遷徙

序章:老伺服器的最後通牒 事情是這樣的:公司那台跑了不知道幾年的 LDAP 伺服器,終於發出了退休宣言。不是那種優雅的「我累了,讓年輕人上吧」,而是硬碟偶爾發出不祥的喀喀聲,彷彿在說:「再不搬,你們就等著一起陪葬。」 於是,一場涉及 476 條靈魂的大遷徙就此展開——398 個使用者帳號、27 個群組、46 個郵件別名、還有 4 個 OU。聽起來不多?等你真的開始搬,你就會發現 LDAP 這東西,專門在你覺得「應該很簡單吧」的時候給你致命一擊。 而且搬完家之後,你還得面對一個靈魂拷問:「萬一新家也掛了呢?」於是我們不只搬了家,還養了一個分身——Master-Slave 複寫。一個負責幹活,一個負責備胎。完美。 項目值 來源伺服器(舊)192.168.1.100 Master(新)192.168.1.200 Slave(備援)192.168.1.201 Base DNdc=example,dc=com Admin DNcn=admin,dc=example,dc=com...

2026-03-14 · 9 分鐘
mergerfs NAS 合併儲存示意圖 Linux

mergerfs 硬碟合體術:天下儲存,分久必合

前言:天下儲存,分久必合 話說天下大勢,分久必合,合久必分。儲存之道,亦復如是。 你手上有兩台 NAS,一台放影片,一台放文件。每次找檔案,得先想:「這玩意兒當初存在曹操那邊還是孫權那邊?」——彷彿在三國地圖上翻來翻去找糧草,還沒找到檔案,人已經先崩潰了。 這時候你需要的,就是 mergerfs。 mergerfs 是一種 Union Filesystem——它不會動你原始硬碟上的任何資料,而是在上面建立一個虛擬層,把散落各處的儲存空間統一調度。簡單說:它就是諸葛亮,不用搬遷任何一座城池,只憑一張地圖就能讓三軍糧草如臂使指。 曹操許昌糧倉 (NAS A) ──┐ ├──→ /media/unified (大本營統一入口) 孫權江東魚米 (NAS B) ──┘ 本文將以三國用兵之法,帶你走過 mergerfs 合併儲存的完整戰術。所有指令皆為實戰驗證,搬去直接用。開戰之前,先備齊軍需: #...

2026-03-06 · 17 分鐘
Nginx DDoS 防禦概念圖:Nginx 伺服器以多層防護抵禦 DDoS 攻擊 Linux

Nginx 七式防禦術:從零打造 DDoS 防護堡壘

前言:城門守衛的覺悟 天下伺服器之道,知架設者多,知防守者少。 曾幾何時,你的網站在深夜三點被不明流量灌爆,error log 像瀑布一樣往下滾,你只能抱著筆電對螢幕唸經。那一刻你才體悟到:架站只是入門,防守才是修行。 本文基於實戰經驗,分享如何用 Nginx 打造七層防禦工事,讓你的伺服器在 DDoS 洪流中屹立不搖。所有配置皆經過生產環境驗證,拿去直接用。 架構概覽:反向代理是第一道城牆 我們的架構很單純:Nginx 做反向代理,前面接網際網路,後面接多台應用伺服器。 Internet ──▶ Nginx (反向代理) ──▶ 後端服務群 App-Server-A:8443 (ERP 系統) App-Server-B:443 (官網、API、CMS...) App-Server-C:8443...

2026-02-23 · 15 分鐘
iDempiere

Ensuring ERP High Availability: Setting Up iDempiere as a Systemd Service on Ubuntu

運行像 iDempiere 這樣的強大 ERP 系統,不僅需要成功安裝,還需要一套機制來確保服務全天候 24/7 在線。在本指南中,我們將逐步說明如何配置 systemd 服務(通常稱為「看門狗」設置)來自動管理您的 iDempiere 實例。 為什麼要使用 Systemd 來管理 iDempiere? 預設情況下,在終端機中手動執行腳本是有風險的。如果終端關閉或應用程式崩潰,ERP 系統就會停機。透過使用 systemd,您可以獲得: 自動啟動:伺服器開機時,iDempiere 會自動啟動。 自動重啟:如果服務崩潰,Linux 會自動嘗試重新啟動。 依賴管理:確保 iDempiere 僅在資料庫(PostgreSQL)準備就緒後才啟動。...

2026-01-10 · 6 分鐘