發表文章

使用批次檔來更新 cloudflare DDNS

 不熟批次檔(.bat/.cmd),但是家人不可能用 Linux ,還是得客製一下,能動為準 工作環境:     Windows Home          .bat          工作排程器          curl          python(沒有的話,輸出的結果會粘在一起) token varify 確認 apiToken 是正確的 curl "https://api.cloudflare.com/client/v4/user/tokens/verify" -H "Authorization : Bearer tokenHere" get zoneID 把 zoneID 記下來 curl -X GET "https://api.cloudflare.com/client/v4/zones" -H "Authorization : Bearer tokenHere" -H "Content-Type:application/json" get dns records 找到你要更新的網址名稱 name(FQDN,不是zone_name),把它的 id(不是zone_id) 記下來 curl -X GET "https://api.cloudflare.com/client/v4/zones/zoneIDHere/dns_records" -H "authorization : Bearer tokenHere" -H "Content-Type:application/json" | c:\somewhere\python -m json.tool target dns record to update(.bat)************ curl ipinfo.io/ip > ip.txt set /p IP=<ip.txt curl -X PUT "https://api.cloudflare.com/client/v4/zones/zoneIDHere/dns_records/recordIDHere" -H "Authorization : Be

使用 shell script 更新 cloudflare 的 DNS 記錄

 記錄一下使用 shell script 更新 cloudflare 的 DNS 記錄(DDNS)  工作環境:     Linux          curl          jq 使用 curl 和 cloudflare API 溝通,就可以達成更新 DNS 記錄的目的,基本上就是提供 zone ID 和 API Token 給 cloudflare ,指定要更新的域名(FQDN),當然,要抓到目前使用的「對外」的 IP 位址一併提供  範例:updateCfDDNS flkjfldajldfj ddns.your.domain lfkdalfjldjf;lajd;lf #!/bin/sh # update DDNS records with curl using cloudflare API # input: zoneID, FQDN, APIToken, get internet IP addr. # output: none but DNS record update dynamicly # pre-requirements: config cloudflare API token # post-requirement: config crontab to update DDNS regularly # usage: updateCfDDNS zoneID FQDN APIToken if [ -z $1 ]         then                 echo "please provide zoneId, fqdn, apiToken, thank you..." else MYIP = ` curl https://ipinfo.io/ip` RECID = ` curl -X GET "https://api.cloudflare.com/client/v4/zones/ ${1} /dns_records?name= ${2} " -H "Authorization:Bearer ${3} " -H "Content-Type: application/json" | jq -r ".result[] | select

查對外 IP

 記錄一些可以取得對外的 IP 位址的網站: https://adresameaip.ro/ip   https://api.ipify.org   https://icanhazip.com   https://ipinfo.io/ip      

iphone 照片增量備份

 原本是想用 immich app 來達成增量備份的目的,就像 icloud 那樣,手機有新照片就自動傳上 icloud 、手機上殺照片時,已經上傳的照片還會留在 icloud 上(然後就因為越存越多所以要花錢買空間來存手機資料),結果變成了鏡像同步備份(手機上殺了檔,伺服器上就不會有檔) 工作環境:     immich app: 開 background + foreground backup 開啟自動備份功能  於是把之前找的解決方案又 review 了遍,再試個替代方案出來,nextcloud, photoprism, syncthing, damefly, home gallery, warmwhole, croc, pandrop, localsend ......,大多是 server 端解決方案,可以透過網路上傳,然後有網頁可以看照片,有些還支援影片播放,但是不一定有 iphone 的 app 可以用,有 app 的,也可能不是原生的,用的是第三方的 app ,而且可能會看起來怪怪的,反正狀況很多,然而,搜尋的時侯覺得很奇怪,沒有什麼討論串,可能是想太多了,應該有很簡單的解法  回頭檢查 iphone 原生的 「儲存到檔案」/「連接伺服器」 的功能,不知道從什麼時侯開始,「檔案」app 裏出現了「連接伺服器」 的功能,不支援 ssh 所以就別想在這裏 scp (無法使用 ssh:無法完成此項操作,因為不支援此URL),可以使用網芳來連,可以讀寫,就和在電腦上操作一樣,反應久了點就是了: 選一些照片,超過100個檔案以上就很卡,分段選檔吧 按左下角開啟其他的 app /功能 的圖示(有個向上的箭頭) 選「儲存到檔案」,一開始會跳進 icloud,按左上角回到上一層,會出現「已共享」的區塊 選右上角有三個點的圓形餅乾,「連接伺服器」 打好網芳的位址(smb://1.2.3.4),id,password 選好你要上傳檔案的資料夾 儲存 過了很久的一下下,傳好檔案會跳回照片 app 繞了一圈還是回到 samba ...... 續骨靈藥,金盒久藏啊~~ 收工! ========================================= 跌倒記錄: 官網討論區上一直說是用手機原生的 app 管理照片,然後用 app 管理 immich-server 的照

關於 immich app 的那些事兒

 簡單地說,immich app 就是個相片同步的 app,真要做到增量備份,現階段還真是沒辦法…… 工作環境:   Linux Server     immich server on docker     immich app on iphone 1.100 雖然說官方說是透過 iphone 自已的「照片」app 殺掉手機上的照片,並不會影響到 immich server 上已經上傳的照片,但是…… 在開啟 backup (foreground/background) 時,app 會讓手機的資料和伺服器上的資料同步,不管你是不是用「照片」app 殺照片 突然想起,沒有試手動上傳,不透過自動 backup 的同步功能是不是就能實現增量備份,不過,醬子的話,就太不方便了,不符合懶人模式,真要手動上傳,就接電腦選照片上傳了,何必搞伺服器又搞 app 搞了老半天,根本上就是出在不想開電腦呀@@" 所以,immich app 就拿來同步/鏡像手機裏的照片吧…… 想要增量備份,回頭找網芳      收工!

Port Knocking or ...…

 Port Knocking 就像是敲門暗號依序敲 2長1短3長 才開門的概念,之前有看到文章提到在 Linux 上實做用來強化安全性,沒想到路由器上面也可以做,更沒想到的是就連設個暗號也能從敲門變成撞門 工作環境:     某牌路由器          firewall rules for port knocking  基本上照著官網上的 port knocking 設定實作就行     要啟用 input DROP all 之前記得先開個後門,否則……所有設備都會連不進來就 GG …… 要啟用 input DROP all 之前記得先開個後門,否則……所有設備都會連不進來就 GG …… 要啟用 input DROP all 之前記得先開個後門,否則……所有設備都會連不進來就 GG ……     以下設定要放在 input DROP all 之前     目標設定  先設定要開啟的服務 dst. port 開啟時,允許的來源為一個自訂的清單(自行增加設定成類似 fin-ips 的群組清單) ,port knocking 嘛最基本的設定值就是 port ,當然你也可以進一步鎖定來源的介面和目的地…等等的參數 敲門設定(N次)  第1次:設定要敲門的 dst. port  ,同樣的,可以進一步鎖定來源的介面和目的地....等等的參數,然後(action)將來源的 ip 加入群組清單(knock1)  第2次起:設定本次要敲門的 dst. port  ,然後指定 ip 來源是上次的清單(knock1)同樣的,可以進一步鎖定來源的介面和目的地....等等的參數,然後(action)將來源的 ip 加入群組清單(knock2),依此類推N次…  最後一次:設定本次要敲門的 dst. port  ,然後指定 ip 來源是上次的清單(knock#)同樣的,可以進一步鎖定來源的介面和目的地....等等的參數,然後(action)將來源的 ip 加入群組清單(fin-ips),這樣就能和目標設定參數相呼應,形成閉環 以後,你指定防護的目標服務,必需按照剛才的設定步驟指定的 port# ,之後再連你要的服務才能進入 實測 比方,你防護了 22 port 的 ssh 服務,指定的 port knocking 依序分別是 2000,1000,3672 設定完成後,直接連 ssh 是連不上

為內網的 IMMICH 設定加密連線

 話說現在的網站都要有 https 沒有那個 s 好像犯天條似的,即使是在內網也要搞個 s 來玩玩,如果你已經當了勇者把伺服器放上公網,也歡迎你分享設定,肯定香啊~,做為一個膽小時間又少的使用者,還是來設一下 s 吧! 工作環境:     debian linux          docker               immich               nginx(做為反向代理用)                反向代理有很多選項,試了很多沒遇上好運,回頭用了最基本的 nginx,或許下次可以試試 caddy 吧 首先,開2個 docker 的網路並且設定 docker network create inner_network docker netowrk create reverse_proxy_network   在開始設定之前,記得把之前的 immich-app 停下來 docker compose down 設定一下 docker-compose.yml :進到你的 immich-app/docker-compose.yml 把每個 service 的 networks 改一下 如果 service 名稱是 immich 開頭的: networks:   - inner_network   - reverse_proxy_network 其他的 networks:   - inner_network networks 的總述 networks:   proxy:     driver: bridge   internal:     driver: bridge  引用 nginx:   nginx :     container_name : nginx     hostname : nginx     image : nginx:latest     environment :       - TZ=${TZ}     volumes :       - ./nginx:/etc/nginx/     ports :       - "80:80"       - "443:443"     networks :       - reverse_proxy_network     depends_on :