網頁

2019年4月2日 星期二

AdGuard Home on Raspberry Pi 安裝備忘

  • 安裝指指南
  • 簡單步驟幾個步驟:
    cd $HOME
    wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.94/AdGuardHome_v0.94_linux_arm.tar.gz
    tar xvf AdGuardHome_v0.94_linux_arm.tar.gz

    sudo ./AdGuardHome -s install

    到其它電腦內使用瀏覽器連到 Ras[berru Pi 的 IP (e.g. http://192.168.0.2:3000/)後按頁面上的步驟設定即可。
  • 其它要使用的電腦在 DNS 的部份指向這台 Ras[berru Pi 的 IP。
AdGuard 也有推自己的 AdGuard DNS,將電腦的 DNS 直接指向 176.103.130.130、176.103.130.130 就可以達到基本的阻擋廣告效果。自建 Server 的好處在於可以自行定義阻擋規則與加入許多己撰寫好的規則,在應用上更為彈性。

AdGuard 也有提供其它平台的編譯版本,Windows 版本的安裝也很簡單,直接點選執行檔就可以使用了。

相關資訊:

2019年3月14日 星期四

Fedora 忘了密碼怎麼辦

Fedora 忘了密碼怎麼辦,重置的方法還蠻簡單的。

可以直接參考這的做法

在你這畫面(grub)中按『e』,
在下一頁找有kernel的選項上按『e』,
再在那行的最後先空一格再鍵入『1』(或是single)後按enter,
再按『b』開機,進入到單人模式後鍵入passwd指令更改root密碼,
最後再重新啟動系統就好。

參考資料:

2018年11月16日 星期五

OpenJDK 相關資料

Orcale 對於 JAVA/JRE 的支援,做了些變動。 針對個人用途的 Oracle Java SE 8 公開更新至少會一直提供到 2020 年底為止。業務、商業或生產用途的 Oracle Java SE 8 若未取得商業授權,將會無法使用 2019 年 1 月之後發行的公開更新。

於 2018.11要釋出的 JAVA11 (LTS)版本,它的免費支援也僅提供六個用。取得商業支援的話,不管是採用 JAVA8/JRE8 或 JAVA11/JRE11皆可支援到 2025年。

AWS釋出免費OpenJDK Amazon Corretto,免費安全更新至2023年。

這試著重新部署主機上原有的服務,將 Orcale JRE 試著改變成 OpenJDK Amazon Corretto,但會出現以下狀況,原已佈署到服務內的 Tomcat 服務,主機重新啟動是無法自動執行 Tomcat,但透過 /tomcat/bin/startup.bat 可以正常執行。後來查一下,看來應是 Tomcat 與 JRE 所選用的位元版本不一致所導致的,細節可操考這頁的說明

目前 Amazon Corretto 僅提供 64bit 版本。後來直接重新下載 tomcat 64bit 版本,直接將 64bit 版本內的 /bin/* 直接覆蓋到 32bit 版本內 (保留 catalina.bat, setclasspath.bat, catalina.bat ) 後就可以正常運作了。

相關資料:

2018年10月2日 星期二

pdf.js 最簡易的應用方式

使用方式:
下載 pre-built 版本,將下載的 zip 檔解壓縮放到特定目錄,例如放到 Scripts/pdj.js/* 的位址。
應用方式 :
HTML頁面加入以下腳本即可

<a href="Scripts/pdf.js/web/viewer.html?file=1.pdf">Open yourpdf.pdf with PDF.js</a>
這樣的寫法,pdf 的檔案,要放到 Scripts/pdf.js/web/ 目錄內
<a href="Scripts/pdf.js/web/viewer.html?file=/pdf/1.pdf">Open yourpdf.pdf with PDF.js</a>
這樣的寫法,表示 pdf 檔案放在網站根目錄下的 pdf 資料夾,這樣子就可以將 pdf集中到指定的目錄內
相關資料:

2018年9月21日 星期五

代理伺服器後的 Web Server 要取得 Client IP 的作法

這有一台主機是前端是透過 reverse proxy (squid) 代理,而這樣的方式若 Web Server 不做額外的調整時,所看到的連線記錄都會是 Proxy Server IP。如果要取得 Client IP 時,Apache就要做以下調整。

這是以 Apache2.4 windows server 為範例:

編輯 Conf/httpd.conf 檔案,內容如下:

啟用 LoadModule remoteip_module modules/mod_remoteip.so

將 LogFormat 所有出現 %h 改成 %a
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

改成 
LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%a %l %u %t \"%r\" %>s %b" common
LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
(如果是直接在 $h 後加入 $a 那就會同時記錄proxy IP 與 client IP)
加入 
#To get Cient IP behide the Proxy
<IfModule mod_remoteip.c>
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy Your Proxy IP
</IfModule>

因為主機的使用量還蠻大的,所以主機有額外採用 rotatelogs 的機制,但很奇怪的是採用 TransferLog 的方式就不能記錄到 Client IP,記錄的 IP 還是 Proxy IP,但在 error.log 就有記錄到連線的 Client IP。後來將 TransferLog 改採 CustomLog 的方式後就可以正確的記錄 Client IP。

我在這卡了很久,一直不明白為什麼沒有記錄到 Client IP ,在後來才發現這個現象,只要將 TransferLog 的機制改成 CustomLog 後就可以解決這個問題。

修改方式如下:
TransferLog "|X:/Apache2/bin/rotatelogs.exe X:/Apache2/logs/access_%Y%m%d.log 2592000 common"
改成 
CustomLog "|X:/Apache2/bin/rotatelogs.exe X:/Apache2/logs/access_%Y%m%d.log 2592000" common

相關資料: