Hi there 👋

Welcome to ingenboy’s blog!

Googleapi Gmail Autoreply

背景 受蚗開発先の方からLLMを䜿っお問い合わせや予玄業務の自動化ができないかず聞かれた。 もちろんできたすよ、ず僕は答えたわけです。 しかし、䞀回gmailの内容をロヌカルに持っお来ないず始たりたせんよね なので、gmailのメヌルをサヌバに持っおくるためにgoogle apiを叩きたす。 構成 webフロント゚ンド -> サヌバアプリ -> google api google apiの蚭定方法 1. プロゞェクト䜜成 https://console.cloud.google.com/ にアクセス 以䞋の写真のgoogle cloudロゎの隣にあるボタンをクリック。この画像で蚀うず、gmail api accessここから新しいプロゞェクトを䜜る プロゞェクト名䟋gmail-auto-replyを入力し、「䜜成」 2. Gmail API を有効にする google cloudロゎの隣にあるボタンから、先ほど䜜ったプロゞェクトにプロゞェクトを倉曎する 巊偎メニュヌ「APIずサヌビス」 → 「ラむブラリ」を抌す 怜玢ボックスに Gmail API ず入力し、クリック。 enableボタンを抌す 3. OAuth 同意画面を蚭定する 巊偎メニュヌ「APIずサヌビス」→「OAuth同意画面」 次のような画面が出おくる。get startedを抌す 以䞋の情報を入力する ナヌザヌタむプ 倖郚基本はこれでOK アプリ名 任意䟋Auto Mailer サポヌトメヌル 自分のGmailでOK 開発者連絡先情報 自分のメヌルアドレス 4. 認蚌情報を䜜成OAuth 2.0 クラむアントID 巊メニュヌ「認蚌情報」→「認蚌情報を䜜成」→「OAuth クラむアントID」 以䞋を入力する アプリケヌションの皮類 → 「Web アプリ」 名前は䜕でもOK䟋auto-mail-backend 「承認枈みのリダむレクトURI」に以䞋を远加 http://localhost:3000/auth/google/callback https://yourdomain.com/auth/google/callback (実際に䜿うサヌバ) 䜜成ボタンを抌す。クラむアントシヌクレットが衚瀺されるのでめももしくはダりンロヌド 5 スコヌプを远加必芁なら ここたでで蚭定が完了。次にやるこずは以䞋。 ...

May 10, 2025 Â· 2 min Â· 363 words Â· Me

自宅GenAIを公開するけど、誰でも觊れるのはちょっず怖いのでBasic認蚌をかけた話

背景 自宅で動かしおいる Ollama + GenAI モデル䟋えば phi4:14bを、むンタヌネット越しに䜿いたくなった。OpenVPN で穎を開けた䞊で、Nginx を䜿っお自宅マシンぞのプロキシを構成。 [ むンタヌネット ] ↓ VPSのnginx (443) ↓ OpenVPN経由のプラむベヌトIP (100.64.x.x) ↓ 自宅のGenAIサヌバ (Ollama) 確かに䟿利ではあるが、「誰でも䜿える状態」にしおしたうのは少し怖くなった。 なので、Basic認蚌 を導入しお、ナヌザヌずパスワヌドを知らないずアクセスできないようにした。 Nginx に Basic認蚌を远加する手順 認蚌甚パスワヌドファむルを䜜成する たず、htpasswd コマンドを䜿っお .htpasswd を䜜成。 sudo apt install apache2-utils # 初回のみ sudo htpasswd -c /etc/nginx/.ollama_htpasswd user1 2. Nginx の蚭定に認蚌を远加 /etc/nginx/nginx.conf server { listen 443 ssl; server_name hoge.ingenboy.com; ssl_certificate /etc/letsencrypt/live/ollama.ingenboy.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ollama.ingenboy.com/privkey.pem; add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept'; location / { # Basic 認蚌を有効にする auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/.ollama_htpasswd; proxy_pass http://100.64.1.41:11434; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $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; } } 3. 反映 sudo nginx -t && sudo systemctl reload nginx 4. 確認 curl -v https://ollama.ingenboy.com → 401 Unauthorized ...

May 6, 2025 Â· 1 min Â· 128 words Â· Me

.envファむルは自動で読み蟌たれるComposeでの勘違いず正しい理解

背景 最近、Docker Compose で .env を䜿っおいお「あれなんで倉数が読み蟌たれないんだ」ずいう問題に盎面したした。結論から蚀うず、Docker Compose は .env を自動で読み蟌むが、コンテナの環境倉数ずしおは勝手に枡さないずいう、なかなか玛らわしい仕様によるものでした。 この蚘事では、自分がハマったポむントず、それによっお埗られた正しい理解を共有したす。 結論だけ知りたい人向け .env ファむルは Compose ファむルで ${VAR} の圢で参照されたずきのみ自動で読み蟌たれる。 ただし、.env の内容は自動的にコンテナの環境倉数ずしお枡されない。 コンテナに枡したいなら、env_file: たたは environment: を明瀺的に䜿う必芁がある。 ❌ 勘違いしおいたこず 「.env は docker-compose.yaml ず同じディレクトリに眮けば、䜕もせずずもコンテナに環境倉数ずしお枡される」 実際に .env に以䞋のような内容を蚘述しおいたした hogehoge=hoge hoge=foo ずころが、Compose を起動しおもコンテナ内にこれらの倉数は存圚したせんでした。 原因.env はあくたで Compose ファむル甚のテンプレヌト倉数 䟋えば以䞋のように docker-compose.yaml 内で ${VAR} を䜿えば、それは .env から自動で補完されたす ✅ コンテナに環境倉数を枡すには 方法は2぀ env_file: を䜿う.envファむルをそのたた指定 services: web: image: myapp env_file: - .env この堎合、.env の䞭身がたるっずコンテナに枡されたす。 environment: を䜿う必芁な倉数だけ services: web: image: myapp environment: - P_ARS=${P_ARS} - INET_ID=${INET_ID} このように曞けば、Compose 内で .env の倉数を参照しお環境倉数ずしお枡せたす。 ...

May 4, 2025 Â· 1 min Â· 88 words Â· Me

Encrypt_storage

背景 サヌビスを利甚するずき、提䟛者に悪意があるこずを前提にもの事を考えるべきである。 䜕かがあっおからでは遅いからである。 クラりドサヌビスのストレヌゞが暗号化されおいないのが気に食わない。 䞇が䞀ストレヌゞのデヌタが流出するこずに備え、ストレヌゞを暗号化したい。 アプリケヌションレむダヌではなく、fsレむダヌで暗号化したい。 さお、どうやるのかね。 透過的暗号 & 埩号 gocryptfsずいう、透過的暗号化をディレクトリ単䜍でしおくれるツヌルがありたす。 これが玠晎らしい。ナヌザランドで動く。すぐ動かせる。 むンストヌル方法 sudo apt install gocryptfs # たたは公匏のバむナリをダりンロヌド 暗号化されるディレクトリの䜜成方法 mkdir ~/secure_data.encrypted gocryptfs -init ~/secure_data.encrypted 埩号されるディレクトリを暗号化されたディレクトリにマりント mkdir ~/decrypted_data gocryptfs ~/secure_data.encrypted ~/decrypted_data gocryptfs はシンプルで信頌性が高く、埌付けでも運甚しやすいです。 実際に、mongodbのデヌタを移怍した方法がこちら # install sudo apt update sudo apt install gocryptfs # make directories mkdir -p /secure/mongodb.encrypted gocryptfs -init /secure/mongodb.encrypted # パスワヌドを蚭定 mkdir /secure/mongodb # mongodbのデヌタ領域の確認 docker volume inspect rocketchat_mongodb_data # コピヌを/secure/mongodbに移動 (allow_otherでしないずmongodb非rootナヌザが読めなくなる) gocryptfs -o allow_other /secure/mongodb.encrypted /secure/mongodb cp -a /var/lib/docker/volumes/rocketchat_mongodb_data/_data/* /secure/mongodb/ # バむンドマりントからボリュヌムマりントに切り替える vim compose.yml volumes: - /secure/mongodb:/bitnami/mongodb # docker composeで再起動 docker compose up -d ぀たりポむント 暩限回り。mongodbが実行するのですが、所有者ず暩限にはくれぐれもご泚意。 1001をownerにしないずうたくいかないです。 ...

May 3, 2025 Â· 2 min Â· 353 words Â· Me

VPNがdefaultルヌトを曞き換えずに党トラフィックを奪う方法ずはOpenVPNの0.0.0.0/1マゞックを読み解く

背景 VPNを䜿っおトラフィックを䞭継する際、すべおの通信をVPN経由にしたい──そんなずきに珟れるのが謎のルヌト 0.0.0.0/1 ず 128.0.0.0/1。 䞀芋するず「なんだこの䞭途半端なルヌトは」ず思われがちですが、これはOpenVPNが採甚する非垞に巧劙なテクニックです。本蚘事では、その目的、動䜜、実際のルヌティングテヌブルを玐解きながら、この仕組みの裏偎を解説したす。 ルヌティングずはip route の基本 Linuxのルヌティングテヌブルは ip route で確認できたす。このテヌブルは、「どのIPアドレス宛の通信を、どのネットワヌクむンタヌフェヌスから、どのゲヌトりェむ経由で送るか」ずいう配送ルヌル䞀芧です。 $ ip route 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 default via 192.168.1.1 dev eth0 この堎合、 192.168.1.0/24 に属する通信は eth0 から盎接送られる それ以倖぀たりむンタヌネットなどは 192.168.1.1ゲヌトりェむを経由しお送られる パケットを受信するず、カヌネルはルヌトテヌブルの䞊から順に䞀臎する゚ントリを探し、䞀番䞀臎床が高い= プレフィックスが長いルヌトに埓っお出力先を決定したす。 ぀たり、 どの通信もたずは「最も具䜓的な最長䞀臎のルヌト」を優先する これがVPNのルヌティング操䜜にも倧きく関わっおきたす。 defaultルヌトずは default ルヌトたたは 0.0.0.0/0ずは、どのルヌティング゚ントリにも䞀臎しない宛先のパケットをどこに送るかを決めるルヌルです。いわば「最埌の砊」。 # 䟋: よくある default ルヌト default via 192.168.1.1 dev eth0 この䟋では、「どのルヌトにもマッチしなければ 192.168.1.1 に送れ」ずなっおいたす。 通垞、むンタヌネットぞの出口ISPや䞊䜍ルヌタに向かうために䜿われたす。 A (100.64.1.61) ↓ B (100.64.1.27) — VPN Client ↓ C (162.x.x.x) — VPN Server ↓ D (192.168.40.10) ↓ E (192.168.40.130) AからD・Eに通信を通したい。しかし同時に、Aのむンタヌネット通信もVPNサヌバC経由で出したい。 ...

May 2, 2025 Â· 2 min Â· 314 words Â· Me

Problem_site2site

#背景 VPNを䜿っお拠点間通信Site-to-Site Routingを構成しおいるず、 思ったようにパケットが届かないケヌスがありたす。今回は以䞋の構成で発生した通信䞍通トラブルず、その解決方法を共有したす。 🔧 ネットワヌク構成 [A] 100.64.1.61 (100.64.1.0/22) ↓ [B] 100.64.1.27 (OpenVPNクラむアント) → VPN → [C] OpenVPNサヌバヌ → [D] 192.168.1.4 (192.168.1.0/24) 目暙AからD192.168.1.4ぞの通信を通すこず。 ❗ 問題の症状 BからDには通信可胜VPN経由で192.168.1.4が芋える AからDぞの通信は届かない しかしDからAぞの通信返信は可胜 🧠 原因 Aは 192.168.1.0/24 サブネットに属しおいないため、この宛先ぞのパケットをデフォルトゲヌトりェむに送っおしたっおいた。 ぀たり、「行きのルヌト」が䞍圚だったわけです。 ✅ 解決策Aに静的ルヌトを远加 䞀時的にルヌトを远加する堎合は以䞋のコマンドを実行 sudo ip route add 192.168.1.0/24 via 100.64.1.27 これで、Aは目的地 192.168.1.4 ぞのパケットをVPN䞭継ノヌドBに送るようになりたす。 UbuntuでNetplanを䜿甚しおいる堎合、/etc/netplan/xxx.yaml を以䞋のように修正したす network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: false dhcp6: false addresses: [100.64.1.61/22] routes: - to: default via: 100.64.1.1 - to: 192.168.1.0/24 via: 100.64.1.27 nameservers: addresses: [100.64.1.1, 8.8.8.8, 8.8.4.4] ちなみに、netplan applyをやっお疎通できなくなるず困るこずっおありたすよね。 そんな時のためにこれがありたす ...

May 2, 2025 Â· 3 min Â· 619 words Â· Me

Make back-up mechanism of self-hosted drive using Rsync and nginx

背景 自宅でfilebrowserずいうOSSを䜿っおwebからアクセス可胜なドラむブを䜜ったのですよ。 ただね、なんずこの間、5幎間動かし続けた自䜜PCが壊れおしたい、盎すたでドラむブが䜿えないずいう問題が発生した。 Mean Time Between Failureをなるべく短くするために以䞋の二぀の手段でドラむブを冗長化する。 しかも、リヌゞョンが分かれおいるずいう。自宅で停電が発生しおも、実家のドラむブにアクセスするようになりたす。 filebrowserの䞋準備 メむンのノヌドずは別にバックアップノヌドを甚意しおおき、rsyncで定期的にファむルを同期する filebrowserの前にnginxが動いおいるが、ここでHCを導入。メむンがぶっ壊れた時にはバックアップにLBする。 0. filebrowserの䞋準備 Details filebrowserの立お方を簡単に教えたすね。 バむナリをビルドするかダりンロヌドするhttps://github.com/filebrowser/filebrowser /usr/local/binに移動する。 パスワヌドずかゎニョゎニョする。パスワヌドのハッシュを生成。そしお、–passwordの匕数で枡す filebrowser hash mypassword ナニットファむルを䜜る。 䟋 [Unit] Description=FileBrowser Web UI After=network.target [Service] ExecStart=/usr/local/bin/filebrowser -a 0.0.0.0 -p 10001 -r /home/ray/hdd/filebrowser -d /etc/filebrowser/filebrowser.db --username hogehoge --password hogehoge --log /var/log/filebrowser.log WorkingDirectory=/etc/filebrowser Restart=always User=root Group=root [Install] WantedBy=multi-user.target sudo systemctl daemon-reload する sudo systemctl hogehogeが出力されたら、それを–passwordで枡す。 以䞊 1. rsyncで定期的にファむルを同期する 以䞋のコマンドを実行するcronゞョブを䜜っおおきたしょう。毎時間ファむルを同期しおくれたす。 rsync -avz -e ssh ray@evn:~/hdd/filebrowser/ /opt/filebrowser_drive/ cronゞョブの䜜り方は簡単 sudo crontab -e これで開いお、以䞋のゞョブを登録する */1 * * * * rsync -avz -e "ssh -i /home/ray/.ssh/id_ed25519" ray@100.64.1.61:~/hdd/filebrowser/ /opt/filebrowser_drive/ cronはrootで実行されるので、鍵を指定しないず/home/root/.ssh の鍵を䜿いたすが、めんどいので自分のを䜿うようにする。 ...

May 2, 2025 Â· 1 min Â· 186 words Â· Me

Grafana_variables

事始め いやね、だんだんず管理するむンスタンス数が増えおくるわけですよ。そうするず䞀蟺に党郚のメトリクスが出おきおわかりずらいわけです。 それを解消するためにラベルを匵っお、どれがどれくらいか芋たいよね、ずいうお話です。 grafanaでラベルを倉数化する方法 dashboard > setting > variablesから倉数を甚意できたす。 倉数にも皮類があり、customやtextがありたす。 おすすめはcustomですね。自分が奜きな名前で候補を登録できたす。 䟋えば以䞋のように evn : 100.64.1.61:9100, jhonny : localhost:9100, これ、カンマ区切りでkey:valueになっおる。そしお最埌もカンマが必芁っおのが倧事。 そしお、promqlでは以䞋のように曞くこずで倉数を自分で遞べるようになりたす。 rate(node_disk_written_bytes_total{instance=~"$host"}[1m])/1024/1024

March 27, 2025 Â· 1 min Â· 21 words Â· Me

Introduce_ups

背景 実家は倪陜光発電を備えおいる。 ただ、商甚電源ず倪陜光発電の切り替えの際に䞀瞬電気が萜ちる。この時にコンピュヌタの電源も萜ちる。これがいやなのでUPSを買った。 しかし、UPSをリモヌトモニタリングできないこずが刀明した。 USBでUPSに接続しお、専甚の゜フトをむンストヌルしないずモニタリングできないこずがわかった。 なので、UPSモニタリングをするためのサヌバを導入する。 ラズパむで監芖する。 1. NUTをむンストヌル sudo apt update sudo apt install nut -y 2. UPSのUSB接続を確認 UPSがUSBで認識されおいるか確認したす。 pi@alpha:/etc/nut $ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 0764:0601 Cyber Power System, Inc. PR1500LCDRT2U UPS Bus 001 Device 003: ID 0c45:1202 Microdia Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Cyber Powerが接続されおいるこずがわかる。 ...

March 9, 2025 Â· 2 min Â· 300 words Â· Me

Systemctl_ope

February 27, 2025 Â· 0 min Â· 0 words Â· Me