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 ã¹ã³ãŒãã远å ïŒå¿ èŠãªãïŒ ãããŸã§ã§èšå®ãå®äºã次ã«ããããšã¯ä»¥äžã ...
èªå® 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 ...
.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 ã®å€æ°ãåç §ããŠç°å¢å€æ°ãšããŠæž¡ããŸãã ...
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ã«ããªããšããŸããããªãã§ãã ...
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ïŒçµç±ã§åºãããã ...
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ããã£ãŠçéã§ããªããªããšå°ãããšã£ãŠãããŸãããã ãããªæã®ããã«ããããããŸã ...
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ãã®éµã䜿ããŸãããããã©ãã®ã§èªåã®ã䜿ãããã«ããã ...
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
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ãæ¥ç¶ãããŠããããšããããã ...