jgit clone專案失敗,原來要把帳號密碼存起來才行
自己寫 java 呼叫 jgit 函式庫clone專案,卻失敗,我看到錯誤訊息是沒有帳號密碼;可是程式明明有輸入帳號密碼,後來爬文才發現我有案子有使用LFS,需要設定快取把帳號密碼儲存起來,否則會一直要求輸入帳號密碼造成程式錯誤。
git lfs 需要2.0或是以上才行
git config --global lfs.cachecredentials
自己寫 java 呼叫 jgit 函式庫clone專案,卻失敗,我看到錯誤訊息是沒有帳號密碼;可是程式明明有輸入帳號密碼,後來爬文才發現我有案子有使用LFS,需要設定快取把帳號密碼儲存起來,否則會一直要求輸入帳號密碼造成程式錯誤。
git lfs 需要2.0或是以上才行
git config --global lfs.cachecredentials
一直以來我都以為檔案總管的檔案,只能依照上面的欄位進行排序,但是今天被中國同事教育了一番,我錯了!
這位同事工作需要拍照,再將照片存到電腦,檔案總管選擇「圖示(大中小)」進行手動排序,就可以很容易觀看到差異;原本他使用的電腦可以這樣隨意移動,但是換個電腦就不行。
最後問到我這裡來,我就說不可能,只能針對上面的欄位進行自動排序(信心滿滿);但是該同事啪啪打臉我,拿能自己排序的電腦給我看,最後我汗顏了,真是不能太鐵齒。
後來才發現,這功能是windows xp專有的,也就是xp能夠停用「自動排序」,win7以後基本上不能停用自動排序,於是有神人就弄出可以停用自動排序的設定檔案,請按此下載,解開點兩下就可以了。
安裝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 反向代理
等待遇到實例
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;}
最近買的書有點多。
既然有好些書都還沒看(其實是誠品會員年度續約需要買8次書),於是我每天得早早起床,到冷氣強、燈光美、氣氛佳的便利商店花點時間看書。
某日我看著看著,突然發現便利商店前面的「柱子」有「公用電話」,好笑的是,我天天經過,卻從來沒注意到它。我想這一定是我前陣子買的「公用電話專用」幣於昨天到手了,才會引起我的注意;不過,現在專用幣已不能使用,新的公用電話早已採用直接感應的方式付款。
我之所以會買這個幣,原因為:1、70年代鑄造,問世時有其歷史特殊意義;2、刻印「古早味撥盤式電話」,金光閃閃復古好看。
70年代,當時世界正處於「石油危機」,台灣因為「一元」流通幣,含有稀缺金屬,已經超越幣值,反而變得「不流通」了。
這樣麻煩來了,民眾沒一元「硬幣」可到公用電話打電話,就算有也不拿出,甚至高價賣掉;但是電話還是要用的,而「電話」這種高科技產物,可不是家家戶戶都有,因此人們只好上訪陳情,希望政府解決這問題。最後,電信總局與台灣銀行想出一帖妙方:鑄造「公用電話專用」幣(材質避開稀缺金屬)。此法一出,民眾可用紙鈔兌換代幣使用,解決無幣可用窘況,實在太有才了。
石油危機過後,電話專用幣於1976年開始回收銷毀。如今,「公用電話專用」幣反而稀缺,我最近買了10枚,既然專用幣有「聯繫友人」之意涵,就很想學金庸《俠客行》裡的謝煙客,無論是誰,只要拿到謝煙客的「玄鐵令」,就可以要求他做一件事,讓我當當大俠過過癮。當然啦,我的「大俠」幣,肯定遠不如書中人物之「玄鐵令」,擁有者大概也只能要求我「重灌電腦」吧。
#錢幣
#公用電話專用幣
今天我的電腦(win11),出現怪怪的「藍框框」,這個藍框框還會自己跳來跳去、靈活走位,真是嚇死寶寶了。
原來是誤開啟「朗讀程式」,這現象我以前遇過,但忘了甚麼原因造成。隨後我google許久,原來是我誤按「快速鍵」(Windows 標誌鍵 + Ctrl + Enter),系統就自己「朗讀了」起來 XD;因為已經發生兩次,代表我也會偶發誤觸這群快速鍵組合,所以我趁「記憶尤新」的時候,趕快記錄下來。
我在2023年4月6日,將網站升級到6.2.0(docker版本) : 回想起一開始升級時, 容器(container)為舊版, 我沒有採用拉取(pull)方式升級, 直接使用內建升級功能,可惜失敗了!出現找不到“sw-check-permissions-e2a8b.js”錯誤;於是我改用拉取最新容器方式升級, 而且成功了。
升級後,,我陸續寫了好幾篇文章,卻沒有發現網站已經有狀況了。直到今日(4月24日),我在同事電腦,瀏覽自己網站時,防毒軟體居然跳出”木馬”警告,我才意識到出事了!
警告內容為「bujerdaz.com」這個網站有木馬;既然有明確網站名稱,肯定網站內有這些字眼,我馬上登入網站伺服器,搜尋了一番, 還真的有找到:
找到問題後, 接下來就是決定解決方式: 1、刪掉這一行含木馬之語法;2、查看看容器是否有最新版。
第一種做法「刪掉木馬語法」通常逼不得已才做;於是我先選擇第二種「查看容器是否有新版」,沒想到,一模一樣的6.2.0版本,居然有不同內容,這明顯是官方犯了錯誤!一般我們不會懷疑同版本容器,內容會被異動;若內容不同,必須進一個版號,並且昭告天下有修補版本! (官方並沒有說明)
這讓我以後升級需要多一個心眼,要以防毒軟體進行掃描,至少不要影響用戶端瀏覽網站。
—
2023/4/25 雖然升級新版容器,自以為問題已解決,沒想到問題還是在!仔細一看,是plugin外掛所造成的,難怪用新版容器還是無法解決,因「外掛」程式我繼續沿用,不因容器更換而刪除,當然「木馬」一直存在。我發現阻擋垃圾留言的外掛「akismet」,出現兩個版本: 一個5.0;另一個1.2。(理論上不該存在兩個版本) 版本1.2裡面寫到要連線 bujerdaz.com ,看起來應該是進行一些確認才允許留言,我認定非木馬程式,可能wordpress系統用太多年了,這次大版本升級造成兩個版本並存之現象;最後移除1.2版akismet,只留下5.0版本,就恢復正常了。另外,依照這邏輯,我的網站應該「有問題」很久了,真的很不好意思。
#wordpress
#virus
#Trojan
這個我也不知道怎回事, 反正解法是想辦法用本地端帳號登入, 用NTPWEdit(點此下載)這款軟件, 搭配優啟通, 或是 usbox 開機碟製作工具, 先做出開機碟再開機->執行 NTPWEdit->選擇 C:\WINDOWS\SYSTEM32\CONFIG\SAM 改掉裡面本機帳號之密碼, 重開就可以本機帳號登入,
登入後, 先退出網域, 再重新加入網域, 就可以挽回網域主控站的心, 重新認可這台主機了
前一篇文章 Tailscale+Headscale 自架VPN全紀錄 讓 tailscale node 能夠透過 headscale 管控, 互相連線, 但是有些 tailscale node 隱藏在區域網路中, 無法互相p2p(peer to peer)直接連線, 這時候就需要 derp 伺服器提供轉接, derp 伺服器預設有很多, 若需要效率更好的,更無資安疑慮的, 可以自架.
我想也因為 derp 只做資料轉接, 不會偷看內容, 因此才會叫這個名字 DERP(笨蛋) XD.
derp 伺服器有很多, 可以參考tailscale官網 .
此外若derp轉接延遲時間太長, 就需要自架 , 可參考 https://tailscale.com/kb/1118/custom-derp-servers/
本文提供CentOS 7 安裝derp過程
wget https://golang.google.cn/dl/go1.20.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.20.linux-amd64.tar.gz
export GOROOT=/usr/local/go
export GOPATH=/usr/local/gopath
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin
source /etc/profile
#安裝完畢, 執行
/usr/local/go/bin/go version
go install tailscale.com/cmd/derper@main
#安裝完畢, 應該會在
/usr/local/gopath/bin/derper
先搞定letscrypt證書, 因為我選擇derp手動設定, 所以文件要對應好.
ln -s /etc/letsencrypt/live/derp.test.com/cert.pem /etc/letsencrypt/live/derp.test.com/derp.test.com.crt
ln -s /etc/letsencrypt/live/derp.test.com/privkey.pem /etc/letsencrypt/live/derp.test.com/derp.test.com.key
執行指令
#若要防止別人使用, 需先把derp server主機也加入tailscale 端點, 才可使用 --verify-clients 這個參數
/usr/local/gopath/bin/derper --hostname=derp.test.com --verify-clients -a=:8445 -http-port=-1 -certdir=/etc/letsencrypt/live/derp.test.com -certmode=manual -stun
#這樣就可以輸入 https://derp.test.com:8445 測試是否正常
新增 derp.yaml
重開 headscale 就可以,進行測試了
# 隨便找一個tailscale端點
tailscale netcheck
# 然後 tailscale ping <另一個端點的ip (100.64....)>
tailscale ping 100.64.0.2
在台灣, 我自己覺得架設derp除非有資安考量, 否則不見得需要.
Wireguard 與最近大熱門的ChatGPT一樣, 是邪惡的存在, 以往公司網管還能勉強管控員工自架VPN, P2P, 與遠端連線, 雖說辛苦,但員工相關網路行為終究掌握在手中.
現在不得了了, 使用wireguard技術的 Tailscale 已攔不住, 隨隨便便就能翻牆, 穿透內網. 我們網管就像是鯀, 治水用阻擋的方式不再可行 , 該是要全面開放, 採用全面零信任的思維+員工契約進行資通安全的管控.
“新暗網時代” , 用wireguard, 能讓一個小群體, 自成一個暗網, 也可自行打造VPN暗黑王國, 市面上網紅推薦的乾爹乾爸VPN, 未來亦將勢微.
本文著重在翻牆, 與簽入公司內部網路, 若用來做site to site請參考以下 tailscale 建議, 直接用Wireguard 比較好.
Using WireGuard directly offers better performance than using Tailscale. Tailscale does more than WireGuard, so that will always be true. We aim to minimize that gap, and Tailscale generally offers good bandwidth and excellent latency, particularly compared to non-WireGuard VPNs.
環境
架設Headscale+UI
# 存放headscale設定檔按
mkdir -p /root/headscale/config
mkdir -p /root/headscale/data
# 虛擬網路
docker network create reverseproxy-nw
vi /root/headscale/docker-compose.yml
###############################################################################
version: '3.5'
services:
headscale:
image: headscale/headscale:0.21
container_name: headscale
volumes:
- '~/config:/etc/headscale'
- '~/data:/var/lib/headscale'
ports:
- 8081:8080
- 50443:50443
command: headscale serve
restart: unless-stopped
networks:
reverseproxy-nw:
headscale-ui:
image: ghcr.io/gurucomputing/headscale-ui:latest
restart: unless-stopped
container_name: headscale-ui
ports:
- 9443:443
networks:
reverseproxy-nw:
networks:
reverseproxy-nw:
external: true
volumes:
data:
driver: local
config:
driver: local
###############################################################################
wget https://github.com/juanfont/headscale/raw/main/config-example.yaml -O /root/headscale/config/config.yaml
# 下載完畢, 修改yaml檔案中以下參數
server_url: https://headscale.test.com
listen_addr: 0.0.0.0:8080
base_domain: test.com
#是否改寫用戶端dns,請自行測試, 依照需求決定
override_local_dns: true
# 提供(expose)給用戶端dns
nameservers:
- 1.1.1.1
- 8.8.4.4
# 公司內部專用網址,可分別參考不同dns
restricted_nameservers:
test.com:
- 192.168.1.1
# 停用magic dns
magic_dns: false
#其他如derp, 有機會再另外寫文章
cd /root/headscale
docker-compose up -d
<VirtualHost *:443>
ServerName headscale.test.com
ErrorLog /var/log/httpd/ssl_error_log
TransferLog /var/log/httpd/ssl_access_log
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/headscale.test.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/headscale.test.com/privkey.pem
SSLCACertificateFile /etc/letsencrypt//live/headscale.test.com/fullchain.pem
SSLProxyEngine On
ProxyPreserveHost On
Header add Access-Control-Allow-Origin "test.com";
SSLProxyCheckPeerName off
ProxyPass /web https://localhost:9443/web
ProxyPassReverse /web https://localhost:9443/web
ProxyPass / http://localhost:8081/ upgrade=any
ProxyPassReverse / http://localhost:8081/ upgrade=any
</VirtualHost>
https://headscale.test.com/windows
docker exec -it headscale headscale apikey create
# 建立使用者
# docker exec headscale headscale users create <使用者>
docker exec headscale headscale users create hlmtvpn
# 產生authkey, 讓tailscale端點使用
docker exec headscale headscale --user hlmtvpn preauthkeys create --reusable --expiration 24h
1. 列出 tailscale 端點
docker exec headscale headscale node list
2. 刪除 tailscale 端點
docker exec headscale headscale node delete -i <ID>
docker exec headscale headscale node delete -i 1
3. 列出 tailsacle 路由
docker exec headscale headscale route list
4. 啟用路由功能
docker exec headscale headscale route enable -r <ID>
5. 刪除路由表
docker exec headscale headscale route delete -r <ID> --force
公司架設tailscale 端點
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
sudo apt-get update
sudo apt-get install tailscale
# http://headscale.test.com:8080是 headscale對外的URL
# d72e7351e24bbd21ecc99bbf5004c3e1f7cffa0631f8f5d5 是 authkey
# nat , 翻牆
tailscale up --reset --accept-routes --advertise-exit-node --snat-subnet-routes=true --accept-dns=false --advertise-routes=192.168.1.0/24 --login-server=https://headscale.test.com --authkey=d72e7351e24bbd21ecc99bbf5004c3e1f7cffa0631f8f5d5
# site to site , 不翻牆
tailscale up --reset --accept-routes --snat-subnet-routes=false --accept-dns=false --advertise-routes=192.168.1.0/24 --login-server=https://headscale.hlmt.com.tw --authkey=d72e7351e24bbd21ecc99bbf5004c3e1f7cffa0631f8f5d5
# 主機為vp, 不需要對外ip, 只要內網ip, 可上網, 要加上forward功能
# https://tailscale.com/kb/1019/subnets/
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf
#列出路由表
docker exec headscale headscale route list
#啟用路由
docker exec headscale headscale route enable -r <ID>
公司主要路由(router), 須額外設定靜態路由
若需要做到site to site
PC 用戶端安裝tailscale端點(可翻牆)
cd C:\Program Files\Tailscale
tailscale login --login-server https://headscale.test.com --exit-node=<headscale ip 可為headscale server local ip> --exit-node-allow-lan-access=true
此時網頁會出現一串指令, 請將該node key 給管理人員註冊
**這邊要注意的是網址指令裡面的 USERNAME , 是一開始 headscale 新增的使用者帳號.
# 管理人員到headscale主機註冊
docker exec headscale headscale nodes register --user hlmtvpn --key nodekey:32a95789aa71c2dc7ccfa43a16cf1cff575e318c0a67117370ec9c847ff76828
若管理人員註冊完成, PC上面的tailscale會自動登入, 代表註冊成功, 此時可以選擇變身成公司tailscale 端點(如下圖 william-standard-pc-i440fx-piix-1996) , 就可以以公司ip的名義上網翻牆, 當然也可也存取公司內網(tiptop erp不行).
Android