<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-16607461</id><updated>2026-06-09T14:33:22.399+08:00</updated><category term="日記"/><category term="輔大圖資"/><category term="電腦軟體"/><category term="政大圖檔"/><category term="期刊論文閱讀"/><category term="Blogger"/><category term="Programming/JavaScript"/><category term="作品"/><category term="網路管理"/><category term="JavaScript"/><category term="Linux"/><category term="記事"/><category term="DSpace"/><category term="Talk"/><category term="OS/Proxmox VE"/><category term="程式寫作"/><category term="碩士畢業論文"/><category term="Android"/><category term="Proxmox"/><category term="Zotero"/><category term="Data Mining"/><category term="OS/Android"/><category term="Presentation"/><category term="OS/Linux"/><category term="Course"/><category term="Software/Weka"/><category term="研究方法"/><category term="虛擬機器"/><category term="DLLL-CIAS"/><category term="OS/Windows"/><category term="Software/Zotero"/><category term="Work/Widget"/><category term="新玩具"/><category term="Software/Windows"/><category term="程式語言/JavaScript"/><category term="網站服務"/><category term="slide"/><category term="雲端科技與圖書館行動服務研習班(2014)"/><category term="Software/GoogleDoc"/><category term="Software/LibreOffice"/><category term="LibreOffice Writer"/><category term="Programming/PHP"/><category term="作業報告"/><category term="GitHub"/><category term="研究所推甄"/><category term="Docker"/><category term="演講心得"/><category term="Statistics"/><category term="Windows/電腦軟體"/><category term="資訊計量學"/><category term="PHP"/><category term="Series/Big Data Analysis Course"/><category term="無題"/><category term="課程/圖書資訊學研究趨勢"/><category term="Home Assistant"/><category term="Programming/AutoIt"/><category term="RAG"/><category term="Programming/R"/><category term="AI"/><category term="Dataset"/><category term="Research"/><category term="Software"/><category term="Windows"/><category term="圖資學術界"/><category term="AutoIt"/><category term="Hardware"/><category term="Software/Word"/><category term="課程/國際檔案學"/><category term="LLM"/><category term="Series/LibreOffice Calc Template"/><category term="Software/OwnCloud"/><category term="Software/R"/><category term="Virtual Machine/VirtualBox"/><category term="VirtualBox"/><category term="極短"/><category term="Dify"/><category term="LibreOffice"/><category term="NLP"/><category term="NetBeans"/><category term="Software/Google"/><category term="Software/NetBeans"/><category term="Work"/><category term="Zentyal"/><category term="作業系統/Linux"/><category term="APA"/><category term="Blog"/><category term="CSS"/><category term="Colab"/><category term="KALS"/><category term="KDE"/><category term="Koha"/><category term="Nextcloud"/><category term="Programing/PHP"/><category term="Programming/PhoneGap"/><category term="Research/Text Mining"/><category term="Server/ownCloud"/><category term="Stable Diffusion"/><category term="教學課程"/><category term="課程/檔案應用研究"/><category term="輔漫"/><category term="GLPI"/><category term="OS/Chromebook"/><category term="Series/NOU Word"/><category term="Software/SPSS"/><category term="政大平價美食"/><category term="數位圖書館"/><category term="Network"/><category term="OS/Koha"/><category term="OS/Zentyal"/><category term="PDF"/><category term="Plurk"/><category term="Programming/CSS"/><category term="Programming/Node.js"/><category term="3C"/><category term="Drawing"/><category term="OS/FreeNAS"/><category term="Programming/APP"/><category term="Server"/><category term="Service/GitHub"/><category term="Sissi"/><category term="Software/PostgreSQL"/><category term="Software/PostreSQL"/><category term="StableDiffusion"/><category term="Style"/><category term="Tool/NetBeans"/><category term="Virtual Machine/OpenVZ"/><category term="報告/教學課程"/><category term="發表"/><category term="2009詐欺案件"/><category term="Docker APP"/><category term="GAME"/><category term="NVIDIA"/><category term="Note/Paper"/><category term="Programming/Electron"/><category term="Programming/Java"/><category term="Programming/Python"/><category term="Python"/><category term="Software/Firefox"/><category term="Software/Inkscape"/><category term="Table"/><category term="Web Service"/><category term="Weka"/><category term="Work/Windows"/><category term="評論"/><category term="ChatGPT"/><category term="Google Drive"/><category term="HomeAssistant"/><category term="IDE"/><category term="Library/ORCID"/><category term="LibreOffice Calc Course"/><category term="Life"/><category term="NGINX"/><category term="PWA"/><category term="Programming/Database"/><category term="Programming/SeleniumIDE"/><category term="Programming/Vue.js"/><category term="Proxmox VE"/><category term="Research/Sequential Analysis"/><category term="Selenium"/><category term="Server/OCS"/><category term="SocialMedia"/><category term="Software/Browser"/><category term="Software/Notepad++"/><category term="Software/PDF"/><category term="Software/Pentaho"/><category term="Teaching"/><category term="Text Mining"/><category term="USB"/><category term="rclone"/><category term="博士班考試"/><category term="問答訪談"/><category term="課程/資訊行為與資訊服務"/><category term="讀者服務研討"/><category term="Academic"/><category term="CKEditor"/><category term="CSL"/><category term="Drupal"/><category term="English"/><category term="Google Analytics"/><category term="HTML"/><category term="Hardware/Notebook"/><category term="ImageMagick"/><category term="Layout"/><category term="Machine Learning"/><category term="Monitor"/><category term="OCS"/><category term="Programming"/><category term="Programming/CKEditor"/><category term="RSS"/><category term="SVG"/><category term="Series/Weka Image Classification"/><category term="Server/Apache Solr"/><category term="SmartHome"/><category term="Software/Cortana"/><category term="Software/Drupal"/><category term="Test"/><category term="Ubuntu"/><category term="Virtual Machine"/><category term="Zigbee"/><category term="bash"/><category term="chromecast"/><category term="活動籌辦"/><category term="演講"/><category term="生活/日記"/><category term="課程/檔案學"/><category term="遊戲"/><category term="閱讀學習"/><category term="3D"/><category term="API"/><category term="AngularJS"/><category term="AppSheet"/><category term="Appliances"/><category term="Battery"/><category term="Big Data"/><category term="Calc"/><category term="CloudDrive"/><category term="Cloudflare"/><category term="Color"/><category term="Cross-Reference"/><category term="Cytoscape"/><category term="Debian"/><category term="Development"/><category term="DockerApp"/><category term="Document"/><category term="EMAIL-KM"/><category term="Error"/><category term="Extension"/><category term="Fake News"/><category term="Felo AI"/><category term="Food"/><category term="GAME/PokemonGO"/><category term="GoogleDrive"/><category term="Hotspot"/><category term="IPFire"/><category term="IR"/><category term="Image"/><category term="Internet"/><category term="Library"/><category term="Measure"/><category term="MobileHotspot"/><category term="Mount"/><category term="MySQL"/><category term="ODF"/><category term="OS/IPFire"/><category term="OS/pfSense"/><category term="OSSIM"/><category term="Ollama"/><category term="Open Source"/><category term="OpenAI"/><category term="OpenSourceProject"/><category term="OutPaint"/><category term="Print"/><category term="Programming/AdonisJs"/><category term="Research/Social Network Analysis"/><category term="ReverseProxy"/><category term="Server/GitLab"/><category term="Software/CWISE"/><category term="Software/Office"/><category term="Software/Open Live Writer"/><category term="Software/WordPress"/><category term="Software/mRemoteNG"/><category term="Sponsored"/><category term="Statistic"/><category term="Styles"/><category term="Text Analysis"/><category term="Threads"/><category term="Travel"/><category term="Tuya"/><category term="Virtual Machine/Docker"/><category term="Visualization"/><category term="WINE"/><category term="XR"/><category term="bat"/><category term="chair"/><category term="hotkey"/><category term="openOutPaint"/><category term="pfSense"/><category term="screenshot"/><category term="workshop"/><category term="xAI"/><category term="ニコニコ動画"/><category term="國立政治大學"/><category term="圖書資訊學研討"/><category term="布丁通信"/><category term="技術服務研討"/><category term="生活/政大平價美食"/><category term="研究方法\序列分析"/><category term="研究領域/閱讀學習"/><category term="硬體設備"/><category term="網站系統/ownCloud"/><category term="輕小說"/><category term="電腦軟體/R"/><category term="/etc/fstab"/><category term="1secmail"/><category term="3C/Note 8"/><category term="AIPicasso"/><category term="AIart"/><category term="APILayer"/><category term="APP"/><category term="AccessPoint"/><category term="Action"/><category term="AdGuard"/><category term="AddThis"/><category term="Album Archive"/><category term="Alkaline"/><category term="Anchor"/><category term="Anime"/><category term="Annotation"/><category term="AppScript"/><category term="AppsScript"/><category term="Articles"/><category term="Auto"/><category term="Automation"/><category term="Automations"/><category term="Average Sensor"/><category term="BM4 Pro"/><category term="Bank Marketing"/><category term="Bedtime"/><category term="Bisheng"/><category term="Blogger Editor"/><category term="Bluetooth"/><category term="Bridge"/><category term="BroadLink"/><category term="Bug"/><category term="Business"/><category term="CDN"/><category term="CFF"/><category term="CI/CD"/><category term="CLIPInterrogatorm"/><category term="Canvas"/><category term="Caption"/><category term="CastReceiver"/><category term="CatWalk"/><category term="Census Income"/><category term="Character Language"/><category term="Charger"/><category term="ChatBot"/><category term="Chinese"/><category term="Chrome"/><category term="ChromeExtension"/><category term="Citation"/><category term="Classification"/><category term="Cluster"/><category term="Collabora Office"/><category term="ColorPalette"/><category term="ComfyUI"/><category term="Comma"/><category term="Comment"/><category term="Compatibility"/><category term="Connector"/><category term="Container"/><category term="Content-Security-Policy"/><category term="Contrast"/><category term="Coolcrawl"/><category term="Cooling"/><category term="Counter"/><category term="Crawler"/><category term="Cronbach&#39;s Alpha"/><category term="DNS"/><category term="DOI"/><category term="DataAnalysis"/><category term="DataGear"/><category term="Dehumidifier"/><category term="DerbyJS"/><category term="Desktop Environment"/><category term="Digital Archive"/><category term="Digital Archives"/><category term="Display"/><category term="Docker Hub"/><category term="Docx"/><category term="Domain"/><category term="Download"/><category term="DropShadow"/><category term="E-Ink"/><category term="E-Learning"/><category term="ES6"/><category term="Edubuntu"/><category term="ElectricPot"/><category term="Equation"/><category term="Ergonomics"/><category term="Ewant"/><category term="Excel"/><category term="Facebook"/><category term="Factors"/><category term="Fanhuaji"/><category term="Feedly"/><category term="File Hosting"/><category term="FileManagement"/><category term="FileSync"/><category term="Filesystem API"/><category term="FilesystemAPI"/><category term="Filter"/><category term="Find and Replace"/><category term="Firecrawl"/><category term="First Line Intend"/><category term="Foreground Select"/><category term="Formula"/><category term="Framework"/><category term="Fulltext"/><category term="GIMP"/><category term="GRUB"/><category term="Game Review"/><category term="Gemma"/><category term="Genimi"/><category term="GetCurrentTime"/><category term="Git"/><category term="GitHubActions"/><category term="Glare"/><category term="Google"/><category term="Google Sites"/><category term="GoogleSheet"/><category term="GoogleSlide"/><category term="Graph"/><category term="Graphics Style"/><category term="Group Library"/><category term="HTML5"/><category term="Hardware/Teclast"/><category term="Helpers"/><category term="Hidden"/><category term="Home Assitant"/><category term="HuggingFace"/><category term="Humidity"/><category term="IEEE"/><category term="ImageProcess"/><category term="In-Text"/><category term="Index"/><category term="Information Retrieval"/><category term="Information Security"/><category term="InformationRetrieval"/><category term="InkScape"/><category term="Interpretability"/><category term="Interview"/><category term="IoT"/><category term="Irasutoya"/><category term="Justified Alignment"/><category term="K-Means"/><category term="KDEPlasma"/><category term="KNN"/><category term="KVM"/><category term="Kaggle"/><category term="Kali Linux"/><category term="Keyboard"/><category term="KeywordExtraction"/><category term="LAROC 70th"/><category term="LSA"/><category term="Lag-Sequential Analysis"/><category term="Langflow"/><category term="LatentCouple"/><category term="Let&#39;s Encrypt"/><category term="LibraOffice Writer"/><category term="Lift"/><category term="Lighting"/><category term="Limitation"/><category term="Linux/WINE"/><category term="LiveUSB"/><category term="Log"/><category term="Logitech"/><category term="MQTT"/><category term="Mac"/><category term="MachineLearning"/><category term="Magnetic Stirrer"/><category term="Make"/><category term="Management"/><category term="Map"/><category term="Master Thesis"/><category term="Math"/><category term="Matrial"/><category term="Metadata"/><category term="Metaverse"/><category term="MicroSD"/><category term="MikroTik"/><category term="ModelEvaluation"/><category term="Multi-Viewer"/><category term="NAS"/><category term="NVIDIA Driver"/><category term="NWT"/><category term="Narrative Citation"/><category term="NetworkAnalysis"/><category term="NodeJS"/><category term="NotbookLM"/><category term="Note"/><category term="Novel Rating"/><category term="Number Format"/><category term="ODT"/><category term="Omeka-S"/><category term="Online Shopping"/><category term="Options"/><category term="Orange Pi"/><category term="Outlier Detection"/><category term="OxOffice"/><category term="PFAS"/><category term="PSPP"/><category term="Page Number"/><category term="Page Style"/><category term="PageSpeed"/><category term="Panel"/><category term="Paragraph Style"/><category term="Paste"/><category term="PersonalAccessToken"/><category term="Phone"/><category term="PicTool"/><category term="Pinterest"/><category term="Plasma"/><category term="Plug"/><category term="Podcast"/><category term="Power"/><category term="PowerShell"/><category term="Programming/AngularJS"/><category term="Programming/HTML"/><category term="Programming/SVG"/><category term="Programming/Svelte"/><category term="Programming/Web Design"/><category term="Programming/Webpack"/><category term="Publication/Conference"/><category term="QNAP"/><category term="QR Code"/><category term="Qsirch"/><category term="Quiz"/><category term="Quotation"/><category term="R"/><category term="RAGFlow"/><category term="RESTfulAPI"/><category term="RGB"/><category term="RIME"/><category term="RegEdit"/><category term="Regression"/><category term="Reranker"/><category term="Research/Infometric"/><category term="Reverse Proxy"/><category term="Rivers"/><category term="RouterOS"/><category term="Rufus"/><category term="SIKAI"/><category term="Screen Mirroring"/><category term="ScreenshotOne"/><category term="SeaSalt"/><category term="SearXNG"/><category term="Second Life"/><category term="SecondMonitor"/><category term="Server/Apache"/><category term="Settings"/><category term="ShareButton"/><category term="Sherlock Holmes"/><category term="Shopping"/><category term="Short"/><category term="Shortcuts"/><category term="SingleFile"/><category term="Sisi"/><category term="Skype"/><category term="Sleep"/><category term="Smart Home"/><category term="Smart Phone"/><category term="Smart Plug"/><category term="Smart Socket"/><category term="SmartPhone"/><category term="SmartSocket"/><category term="SnapLayouts"/><category term="Social Media"/><category term="Socket"/><category term="Software/Apache Tika"/><category term="Software/DSpace"/><category term="Software/FileZilla"/><category term="Software/ImageMagick"/><category term="Software/中州韻輸入法"/><category term="Stepper"/><category term="Storage"/><category term="Student"/><category term="Student Evaluation"/><category term="StyleQueries"/><category term="Summernote"/><category term="SynthesysX"/><category term="Tablet"/><category term="Tamsui"/><category term="Targus Dock 710"/><category term="Telebit"/><category term="Template"/><category term="Terminal"/><category term="Text"/><category term="Text Embedding"/><category term="TextMining"/><category term="TextToSpeech"/><category term="Theme"/><category term="Tiling"/><category term="Timemark to SSA"/><category term="TimerSwitch"/><category term="Timeseries Prediction"/><category term="Tips"/><category term="Tools"/><category term="Transcription"/><category term="Translator"/><category term="Trash"/><category term="Troubleshooting"/><category term="Tuning"/><category term="Twitter"/><category term="UserInterface"/><category term="Userscript"/><category term="V-index"/><category term="VAE"/><category term="VLC-TELNET"/><category term="Vector"/><category term="Venngage"/><category term="VirtualDesktop"/><category term="Visual Studio Code"/><category term="WCAG"/><category term="WIFI"/><category term="WYSIWYG"/><category term="Web"/><category term="Web Server"/><category term="WebUI"/><category term="Webcam"/><category term="WiZLight"/><category term="WindowsToGo"/><category term="WirelessMouse"/><category term="Wrapped Text Formatter"/><category term="Writing"/><category term="X11"/><category term="Xorg"/><category term="Yangmingshan"/><category term="Zapier"/><category term="Zenodo"/><category term="Zigbee2MQTT"/><category term="Zinc-Carbon"/><category term="at"/><category term="boot"/><category term="certbot"/><category term="cron"/><category term="dlvr.it"/><category term="draw.io"/><category term="electron"/><category term="fc"/><category term="gTTS"/><category term="globalShortcut"/><category term="header"/><category term="iOS"/><category term="iTimer"/><category term="locale"/><category term="material"/><category term="nano"/><category term="ngrok"/><category term="nofail"/><category term="number"/><category term="ownCloud"/><category term="page"/><category term="pdfcrop"/><category term="pydrive"/><category term="qpdf"/><category term="reading"/><category term="rootless"/><category term="sort"/><category term="term"/><category term="tmpmail"/><category term="vulnerabilities"/><category term="where"/><category term="國家考試"/><category term="國立空中大學"/><category term="專題"/><category term="系統/WordPress"/><category term="課程/計算智能與商業分析"/><category term="販售"/><category term="資訊管理/網站管理"/><category term="電視"/><title type='text'>布丁布丁吃什麼？</title><subtitle type='html'>我不是在實驗室，就是在前往實驗室的路上。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default?alt=atom'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default?alt=atom&amp;start-index=26&amp;max-results=25'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/13614721642960940190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://photos1.blogger.com/blogger/7060/785/200/pudding%2850px%29.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1769</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-16607461.post-895294933049806778</id><published>2025-11-03T12:00:00.006+08:00</published><updated>2025-11-03T12:00:00.107+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Skype"/><category scheme="http://www.blogger.com/atom/ns#" term="Talk"/><title type='text'>雜談：深刻體會Skype退役了 / Talk:  Deeply Felt Skype&#39;s Retirement</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiRhpZSK7hHv30o8J2oRRIL0aTMlKbsAsmOHZkXN1O0wz2h3QStDHPYdZmsCXfkWwPNWMdBxWjuHGqzH0Bgx9iF5ckUsZhu7zxdNVJ0gJAKORcDj2lZJhnXYX8IkRXA0P_0kqi4WJfocE9zSbWMf5plChJBO3SPTw7Ra9lfhJAe_yblwtwVXxc35w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiRhpZSK7hHv30o8J2oRRIL0aTMlKbsAsmOHZkXN1O0wz2h3QStDHPYdZmsCXfkWwPNWMdBxWjuHGqzH0Bgx9iF5ckUsZhu7zxdNVJ0gJAKORcDj2lZJhnXYX8IkRXA0P_0kqi4WJfocE9zSbWMf5plChJBO3SPTw7Ra9lfhJAe_yblwtwVXxc35w&quot; title=&quot;2025-1019-160013.png&quot; alt=&quot;2025-1019-160013.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://support.microsoft.com/zh-tw/skype/skype-%E5%8D%B3%E5%B0%87%E6%96%BC-2025-%E5%B9%B4-5-%E6%9C%88%E6%B7%98%E6%B1%B0-%E6%82%A8%E9%9C%80%E8%A6%81%E7%9F%A5%E9%81%93%E7%9A%84%E4%BA%8B%E9%A0%85-2a7d2501-427f-485e-8be0-2068a9f90472&quot;&gt;微軟在2025年5月5日關閉Skype&lt;/a&gt;。我本來以為對我影響不大，聽說現在已經不用Skype打0800免費電話。不過似乎不是每個銀行都是如此。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://support.microsoft.com/zh-tw/skype/skype-%E5%8D%B3%E5%B0%87%E6%96%BC-2025-%E5%B9%B4-5-%E6%9C%88%E6%B7%98%E6%B1%B0-%E6%82%A8%E9%9C%80%E8%A6%81%E7%9F%A5%E9%81%93%E7%9A%84%E4%BA%8B%E9%A0%85-2a7d2501-427f-485e-8be0-2068a9f90472&quot;&gt;Microsoft is shutting down Skype on May 5, 2025&lt;/a&gt;. I initially thought it wouldn&#39;t affect me much, hearing that Skype is no longer needed for calling 0800 toll-free numbers. However, it seems that&#39;s not the case for every bank.&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;0800免費電話只能用市話的時代 /&amp;nbsp;The Era When 0800 Toll-Free Numbers Could Only Be Used With Landlines&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgiV17JZhVVo3LQqSPkR8sJU-n2WyBEmKjLv7s_hCJs5sS-NwcCtNhkkExJi7VcAJ9MW1_zeGMzYa739NtUdiiJieK2tB-zDsjNjXAdD2bGu-N7DXuYd7FfOtlIM0V8lY5QBfKssf1VEGGt0J7hXN6OD9A5LxJQKpHmysCjWeCosIhsLZRMYKIHpQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgiV17JZhVVo3LQqSPkR8sJU-n2WyBEmKjLv7s_hCJs5sS-NwcCtNhkkExJi7VcAJ9MW1_zeGMzYa739NtUdiiJieK2tB-zDsjNjXAdD2bGu-N7DXuYd7FfOtlIM0V8lY5QBfKssf1VEGGt0J7hXN6OD9A5LxJQKpHmysCjWeCosIhsLZRMYKIHpQ&quot; title=&quot;2025-1019-153741.png&quot; alt=&quot;2025-1019-153741.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(圖片來源：&lt;a href=&quot;https://pixabay.com/photos/telephone-technical-support-cisco-1223310/&quot; target=&quot;_blank&quot;&gt;https://pixabay.com/photos/telephone-technical-support-cisco-1223310/&lt;/a&gt; )&lt;/p&gt;
&lt;p&gt;也許現代人都習慣了用手機代替市話的通訊生活。但在以前，市話可是家家戶戶必備的重要通訊手段，而且通常一戶就是一支固定號碼，不太會修改。&lt;/p&gt;
&lt;p&gt;相較之下，當時的手機號碼彷彿是拋棄式用品，大家可是說換就換。換了新的工作了，辦一個新的門號；男女交往分手了，換一個新的門號。當時沒有APP綁定手機門號做驗證這種機制，你記下朋友的手機門號多年後失聯，這一切都如此正常。&lt;br&gt;&lt;/p&gt;
&lt;p&gt;在這樣的情境脈絡下，公司客戶服務的免付費電話0800，幾乎都只開放給市話撥打，手機撥號會被拒絕接聽。我想這可能是因為這對客戶來說的免付費電話實際上是由公司方付費的緣故，他們只顧慮到當時是主流的市話，並沒有把行動電話納入考量。&lt;br&gt;&lt;/p&gt;
&lt;p&gt;行動電話不能撥打0800免付費電話，公司方大多會建議客戶改打市話客服，也就是讓使用行動電話的客戶自己繳交通話費，而且還是行動電話打市話的昂貴費用。當時在電話裡聽著「現在客服全在忙線中，請稍後片刻。」的自動語音，一邊看著手機上的通話時間，真的是讓人感到非常焦慮。&lt;/p&gt;
&lt;h2&gt;用Skype撥打0800 /&amp;nbsp;Use Skype To Call 0800&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEirHAY6BSCmNev81fSSoJVmnJqchS3a1LiAB95XqADlhpIvFWVH6mf5CzEGpv9hWuz5CupC2-e5VkU5Lm71mJuPSpOGiElbnDRQ3Pzljn4WEgXxwkexlK3LDAxDdo4kY4HIxTOE1ebLGIMvZZQ8pT3bfLJMJpg0Pso6ri5rCf3I-_hWQUAMOkjwqA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEirHAY6BSCmNev81fSSoJVmnJqchS3a1LiAB95XqADlhpIvFWVH6mf5CzEGpv9hWuz5CupC2-e5VkU5Lm71mJuPSpOGiElbnDRQ3Pzljn4WEgXxwkexlK3LDAxDdo4kY4HIxTOE1ebLGIMvZZQ8pT3bfLJMJpg0Pso6ri5rCf3I-_hWQUAMOkjwqA&quot; title=&quot;2025-1019-153927.png&quot; alt=&quot;2025-1019-153927.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(圖片來源：&lt;a href=&quot;https://applealmond.com/posts/251833&quot; target=&quot;_blank&quot;&gt;https://applealmond.com/posts/251833&lt;/a&gt; )&lt;/p&gt;
&lt;p&gt;當時拯救廣大手機使用者的救星，就是Skype。在當時，Skype是可以讓手機撥打0800的主要通訊手段。許多提供0800的銀行，包括中國信託、台新銀行、國泰世華等等，都可以用Skype撥打。&lt;/p&gt;
&lt;p&gt;儘管在2024年的時候，Skype更換了電信營運商，造成撥打0800的時候會出現「發話人按國際電話費率付費」通知，但在沒有餘額的情況下使用Skype，0800還是可以繼續打的通。0800真的是佛心來著。&lt;/p&gt;
&lt;h2&gt;打0800不用Skype了 /&amp;nbsp;No More Skype for 0800 Calls.&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhwow-7wpEJv8hsRni290useleZTX-DhfUImqXTMUiupbtt0Yhhw4_b1GWJx4WSprfCzmtqSkeciJmYuFQoXa_4xbv1XmolHjLnR6RqntOSuZZS2KasGAgYxJfMULBw2yzojI7vleo1aeS4-yjoEtEfKsRjDEXdzhw7SXD8ta612rB3MzYaGg1hHQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhwow-7wpEJv8hsRni290useleZTX-DhfUImqXTMUiupbtt0Yhhw4_b1GWJx4WSprfCzmtqSkeciJmYuFQoXa_4xbv1XmolHjLnR6RqntOSuZZS2KasGAgYxJfMULBw2yzojI7vleo1aeS4-yjoEtEfKsRjDEXdzhw7SXD8ta612rB3MzYaGg1hHQ&quot; title=&quot;2025-1019-154513.png&quot; alt=&quot;2025-1019-154513.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(表格來源：&lt;a href=&quot;https://roo.cash/blog/creditcard-bank-service-phone-number/&quot; target=&quot;_blank&quot;&gt;https://roo.cash/blog/creditcard-bank-service-phone-number/&lt;/a&gt;&amp;nbsp;)&lt;/p&gt;
&lt;p&gt;在Skype停止營運的現在，其實很多銀行已經推出了能讓手機撥打的0800號碼。根據&lt;a href=&quot;https://roo.cash/blog/creditcard-bank-service-phone-number/&quot;&gt;袋鼠金融&lt;/a&gt;的整理，國泰世華、台新銀行、臺北富邦銀行、永豐銀行、兆豐銀行、星展銀行、上海商銀、聯邦銀行、華南銀行、土地銀行、第一銀行、瑞興銀行，都能讓手機撥打0800。&lt;/p&gt;
&lt;p&gt;也就是說，即使沒有Skype用來撥打市話0800的手段，我們也可以用自己的手機來打0800了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;結語：也許不應該打電話到客服 / In Closing: Maybe You Shouldn&#39;t Have Called Customer Service.&lt;/h2&gt;
&lt;p&gt;沒有Skype可以打市話0800，但我們也許還能用手機撥打0800。雖然是這樣說，但也並不是所有單位都有能讓手機撥打0800的管道。最近我在跟銀行聯繫的時候就遇到了這個狀況，索性牙一咬，用手機撥打市話吧。結果客服等了一千秒沒打通，通話費倒是扣款了100元，非常令人心疼啊。&lt;/p&gt;
&lt;p&gt;後來我改用線上文字客服去詢問。文字客服每次都只會跟我說，他們會聯絡專人再回電給我，後來就要看運氣能不能接到客服打來的電話，但這樣總比花大錢還打不通客服還好吧？&lt;/p&gt;
&lt;p&gt;沒有市話，在這種情況下還真的是很麻煩呢，唉。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/895294933049806778/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/11/talk-deeply-felt-skypes-retirement.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/895294933049806778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/895294933049806778'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/11/talk-deeply-felt-skypes-retirement.html' title='雜談：深刻體會Skype退役了 / Talk:  Deeply Felt Skype&#39;s Retirement'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiRhpZSK7hHv30o8J2oRRIL0aTMlKbsAsmOHZkXN1O0wz2h3QStDHPYdZmsCXfkWwPNWMdBxWjuHGqzH0Bgx9iF5ckUsZhu7zxdNVJ0gJAKORcDj2lZJhnXYX8IkRXA0P_0kqi4WJfocE9zSbWMf5plChJBO3SPTw7Ra9lfhJAe_yblwtwVXxc35w=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-8956326665955375903</id><published>2025-10-27T12:00:00.008+08:00</published><updated>2025-10-27T12:00:00.112+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blog"/><title type='text'>感謝抖內！布丁光明燈上線 / Thanks for the Donation! Pudding Luminous Blessing is Online Now</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjpT1QzXNlix6m5_8HhT7mojkKnzuY7ZUAtYiqW9hwDOS8Kt_m2Qwp-dAmoSqZCja20HvMBrijpEV961Vs_9EgRwLtgiTRPR3yO84hoUwbeJR0qd7tCSgkb62KcD8JUrh-HkL0jI01t4fw4G3fe6bnbJ2mHMg2YDgUEs5-K7fahQK7v0x-ppy6f6g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjpT1QzXNlix6m5_8HhT7mojkKnzuY7ZUAtYiqW9hwDOS8Kt_m2Qwp-dAmoSqZCja20HvMBrijpEV961Vs_9EgRwLtgiTRPR3yO84hoUwbeJR0qd7tCSgkb62KcD8JUrh-HkL0jI01t4fw4G3fe6bnbJ2mHMg2YDgUEs5-K7fahQK7v0x-ppy6f6g&quot; title=&quot;2025-1019-150747.png&quot; alt=&quot;2025-1019-150747.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;「布丁布丁吃什麼？」的&lt;a href=&quot;/p/donation.html&quot;&gt;捐款&lt;/a&gt;功能開設以來，陸陸續續也收到大善人們的愛心捐助。為了感謝大家的支持，我在部落格首頁加入了「布丁光明燈」來表達感謝。&lt;/p&gt;
&lt;p&gt;Since my blog&#39;s &lt;a href=&quot;/p/donation.html&quot;&gt;the donation feature&lt;/a&gt; was launched, I have continuously received generous donations from kind benefactors. To express my gratitude for everyone&#39;s support, I have added a &quot;Luminous Blessing (Donors)&quot; to the blog&#39;s homepage to show my appreciation.&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;布丁光明燈 /&amp;nbsp;Luminous Blessing (Donors)&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhoLHxhMwyN8md0dVH2mfl7fp19SHeI3Euh_jfM1BK5FmGYeGIpgaqZvGoK1xHhu4k9S6iU_RGgAB0DdxmN8Tn-rT8vEZFk7LKlcjmp5PtjA7YktOoO3I--OjReMpS3H2Rz1fAr3n-tVGcdyYJSPsWut6Ius2r_wZTrGCzBrgInF9cDV_8XnmX79g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhoLHxhMwyN8md0dVH2mfl7fp19SHeI3Euh_jfM1BK5FmGYeGIpgaqZvGoK1xHhu4k9S6iU_RGgAB0DdxmN8Tn-rT8vEZFk7LKlcjmp5PtjA7YktOoO3I--OjReMpS3H2Rz1fAr3n-tVGcdyYJSPsWut6Ius2r_wZTrGCzBrgInF9cDV_8XnmX79g&quot; title=&quot;2025-1019-144414.png&quot; alt=&quot;2025-1019-144414.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;會做布丁光明燈的原因，除了想要感謝大家的捐款之外，也希望給各位研究者、IT人員一些祝福。我個人比較不喜歡擺乖乖，但我相信這世界上的事情能夠順利運作，背後得要仰賴無數多的人與設備共同的付出。&lt;/p&gt;
&lt;p&gt;如果我的部落格也能在大家背後，成為支持大家前進的其中一個動力來源，那就太好了呢。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;如何捐款？ /&amp;nbsp;How to Donate?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEggGPFlHKBW7iHGTOCm4LcR-V5_2nIDOSfcN9UtOQ2hK483HKk5BnK5SWkTtA4Poh8fbIR6ZopjJre62blCY7cQobAYdT38Tsv_AncA1gWhrcVvFFWM9UCz6kFNvAImxLS7QnRSeWncUqYRszH-u4u-YePKAa4BW1_snbOJcYK953yb-k9KK4JijQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEggGPFlHKBW7iHGTOCm4LcR-V5_2nIDOSfcN9UtOQ2hK483HKk5BnK5SWkTtA4Poh8fbIR6ZopjJre62blCY7cQobAYdT38Tsv_AncA1gWhrcVvFFWM9UCz6kFNvAImxLS7QnRSeWncUqYRszH-u4u-YePKAa4BW1_snbOJcYK953yb-k9KK4JijQ&quot; title=&quot;_Upload_QRCode_202510_QRCode_a7a7fa94-6b3a-4287-8121-7b0f380c53e1.png&quot; alt=&quot;_Upload_QRCode_202510_QRCode_a7a7fa94-6b3a-4287-8121-7b0f380c53e1.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://p.ecpay.com.tw/2462283&quot; target=&quot;_blank&quot;&gt;https://p.ecpay.com.tw/2462283&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;「布丁布丁吃什麼？」的捐款功能是用綠界支付實作。點下連結後將會跳轉到綠界的網頁。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgnJE_Ca1Nqw-reedLnfvHXYN2yoGgINZG2AwJLPCWhN1I-kiGcsBvvNsA5o-dflFLhfjjVP8Y1T1fIsdEIm2C8w3EkW7c8dzkm7QTNaalkZqXtDygAG9d3auSp-u5ZHF7tdZ0n4dpgkHzxEnzy823fACyevcO5rdplk1cyRf_ylml6Fln0Nslj_w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgnJE_Ca1Nqw-reedLnfvHXYN2yoGgINZG2AwJLPCWhN1I-kiGcsBvvNsA5o-dflFLhfjjVP8Y1T1fIsdEIm2C8w3EkW7c8dzkm7QTNaalkZqXtDygAG9d3auSp-u5ZHF7tdZ0n4dpgkHzxEnzy823fACyevcO5rdplk1cyRf_ylml6Fln0Nslj_w&quot; title=&quot;2025-1019-144913.png&quot; alt=&quot;2025-1019-144913.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;你可以在「金額」的部分填入你想要捐款的數字，金額隨喜。但由於綠界的規定，每種支付方式都有最低可填入的金額。例如信用卡支付最低得要填寫6元。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiUdUDCqDZlYxEYDB06AfTCEi6CUPWYbwH-izm0DhVbMgJZ_5kfWeGM1sowlbmpBKGyosGKz_hkC2QOHtmDHLgc3H_QXBIFYeXA95cAwAdqqsKpKw3Ofz0u4Ae4iHdKlxdQBbx0Rc7XZOQOrYthrGHRsU2EpNpzysI8A4P4s6aHBg57p9gWIMtUBw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiUdUDCqDZlYxEYDB06AfTCEi6CUPWYbwH-izm0DhVbMgJZ_5kfWeGM1sowlbmpBKGyosGKz_hkC2QOHtmDHLgc3H_QXBIFYeXA95cAwAdqqsKpKw3Ofz0u4Ae4iHdKlxdQBbx0Rc7XZOQOrYthrGHRsU2EpNpzysI8A4P4s6aHBg57p9gWIMtUBw&quot; title=&quot;2025-1019-145103.png&quot; alt=&quot;2025-1019-145103.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;填寫之後綠界會要求填寫付款人資訊。姓名跟手機雖然是必填的資料，但您可以輸入像是「楊先生」之類的稱呼，手機資訊僅是綠界金流使用，您的手機資訊不會透露給我看到。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg7b8UzoZXwH4loiBXxgFrTax5UEIAnG8M8yJ3mANqv-Zy5zJsQBmsgJaW11VqsL8-gT51NK1JGIgv88XqMk-ogBKAQcCkL_WKzqPwHLeygwHxGOygL6q9npPb7FYmTxazSJXhBZoSi3m6PtAfOq-ipuJqsUUAq8NBf8DYlq4DxggBSjv3Fl_Fhtw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg7b8UzoZXwH4loiBXxgFrTax5UEIAnG8M8yJ3mANqv-Zy5zJsQBmsgJaW11VqsL8-gT51NK1JGIgv88XqMk-ogBKAQcCkL_WKzqPwHLeygwHxGOygL6q9npPb7FYmTxazSJXhBZoSi3m6PtAfOq-ipuJqsUUAq8NBf8DYlq4DxggBSjv3Fl_Fhtw&quot; title=&quot;2025-1019-145616.png&quot; alt=&quot;2025-1019-145616.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;收件人資訊也是一樣的方式。捐款完成後，綠界會發送通知到您的手機簡訊。如果您有填寫電子信箱的話，信箱也會收到捐款通知。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgHLCrLkqvGxqPfPt2pKTqhGZUL5yH7dU9fTaSA5fPqJjn8dqUZA5-rAAwDTcYBjmZsy3unFsIrz8dk4i4WFIiq715Pb3iFoWOqmYtW761OPQwf3cNCYE2ZYX5TRfGHcKxWwiSkYUzBJEl402QvJIa_DIbkq4GBa1NgQ1wIPJZP-sBmHm4HeQ159Q&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgHLCrLkqvGxqPfPt2pKTqhGZUL5yH7dU9fTaSA5fPqJjn8dqUZA5-rAAwDTcYBjmZsy3unFsIrz8dk4i4WFIiq715Pb3iFoWOqmYtW761OPQwf3cNCYE2ZYX5TRfGHcKxWwiSkYUzBJEl402QvJIa_DIbkq4GBa1NgQ1wIPJZP-sBmHm4HeQ159Q&quot; title=&quot;2025-1019-145947.png&quot; alt=&quot;2025-1019-145947.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;備註的部分，您可以填入留言給我的訊息。預設的情況下，我會把您的大名以姓氏加稱呼的方式，放到布丁光明燈上。例如「感謝楊先生支持點燈」。如果您希望以其他具名方式，或是不願意放上去的話，也可以在備註跟我說。&lt;/p&gt;
&lt;p&gt;最後勾選後面的「我已閱讀並了解 【個人資料運用聲明】 並已確認上述資訊無誤。」，並按下「前往付款」即可。系統會跳出請您確認資料填寫無誤的訊息，確認後即可進入下一步。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjODuPx_1pn73VJs5yrUYeviweVg5PM3WQtEtygpqtK1VbYmBg7Qadjy4yJSFsf_wdCqsTSKRB28VOJV77DoBg8tTlAp0iayZNaqe7B1lxaoQXatnn6PvuHO1-dRpU2zy7Tgk3dicdj7UhaQ5pHcMCvjmnbmCI3st6taKSUFutHpZlF8cCYhFeLCw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjODuPx_1pn73VJs5yrUYeviweVg5PM3WQtEtygpqtK1VbYmBg7Qadjy4yJSFsf_wdCqsTSKRB28VOJV77DoBg8tTlAp0iayZNaqe7B1lxaoQXatnn6PvuHO1-dRpU2zy7Tgk3dicdj7UhaQ5pHcMCvjmnbmCI3st6taKSUFutHpZlF8cCYhFeLCw&quot; title=&quot;2025-1019-150033.png&quot; alt=&quot;2025-1019-150033.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接著就是付款的頁面了。依據付款金額，您可選擇信用卡、網路ATM、ATM虛擬帳號、超商條碼、超商代碼、綠界Pay的方式支付。支付完就算是完成捐款囉。&lt;/p&gt;
&lt;p&gt;再次感謝各方大德的支持~&amp;nbsp;願大德研究順利、伺服器跟程式都能穩定運作！&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/8956326665955375903/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/10/thanks-for-the-donation-pudding-luminous-blessing-is-online-now.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/8956326665955375903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/8956326665955375903'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/10/thanks-for-the-donation-pudding-luminous-blessing-is-online-now.html' title='感謝抖內！布丁光明燈上線 / Thanks for the Donation! Pudding Luminous Blessing is Online Now'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjpT1QzXNlix6m5_8HhT7mojkKnzuY7ZUAtYiqW9hwDOS8Kt_m2Qwp-dAmoSqZCja20HvMBrijpEV961Vs_9EgRwLtgiTRPR3yO84hoUwbeJR0qd7tCSgkb62KcD8JUrh-HkL0jI01t4fw4G3fe6bnbJ2mHMg2YDgUEs5-K7fahQK7v0x-ppy6f6g=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-1076502317428475260</id><published>2025-10-20T12:00:00.008+08:00</published><updated>2025-10-20T12:00:00.111+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloudflare"/><category scheme="http://www.blogger.com/atom/ns#" term="Home Assistant"/><title type='text'>用Cloudflare Tunnel的內網穿透來連接Home Assistant的Google助理 / Using Cloudflare Tunnel for Internal Network Penetration to Connect Home Assistant to Google Assistant</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjUL4tFpOuYTZuMKj5ZB3XvdLUw7G1JGb_i9TugpT0vW_Xbvj9ElxzZZV9zADynvRIifngj9l_XeJD2AVDJonz1e5eMglOsSpZ5pBUsfjMB-dr5U-Z9bF6iHdWQMaa8MmxcBFqoNpx9lRTPIc0IM_2wMRXr3Rr4_E_O-1IRgmLdCU-QKnWy9HAHZw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjUL4tFpOuYTZuMKj5ZB3XvdLUw7G1JGb_i9TugpT0vW_Xbvj9ElxzZZV9zADynvRIifngj9l_XeJD2AVDJonz1e5eMglOsSpZ5pBUsfjMB-dr5U-Z9bF6iHdWQMaa8MmxcBFqoNpx9lRTPIc0IM_2wMRXr3Rr4_E_O-1IRgmLdCU-QKnWy9HAHZw&quot; title=&quot;2025-1018-234306.png&quot; alt=&quot;2025-1018-234306.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果要讓Google助理操作Home Assistant所連結的設備，那麼必須要有能夠連上Home Assistant的公開HTTPS網址才行。由於原本我用的&lt;a href=&quot;https://telebit.cloud/&quot;&gt;Telebit&lt;/a&gt;發生問題，所以我花了一些時間找尋替代方案。這篇就做個記錄吧。&lt;/p&gt;
&lt;p&gt;To allow Google Assistant to control devices connected to Home Assistant, a public HTTPS address that can connect to Home Assistant is required. Since my original &lt;a href=&quot;https://telebit.cloud/&quot;&gt;Telebit&lt;/a&gt; had issues, I spent some time looking for alternatives. This is just a record of that.&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;網路架構 / Network Architecture&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEirHI6rROtU-N2hHIqZIzSqWaBrzMkZZPGusDpOh-nxmZnOiOukI24-ULrrG9FGXMcerJgQIABwZwoA_HFffdJbfgRrzmKtE8ZoCw5AzMTqM4UtqNCIiVJKzD_u7jwjph2sgBLz08-fuvlvWNqXHWZw8pn61rYIYAdaxjz87_Z7_6a3CJ8MsjlraQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEirHI6rROtU-N2hHIqZIzSqWaBrzMkZZPGusDpOh-nxmZnOiOukI24-ULrrG9FGXMcerJgQIABwZwoA_HFffdJbfgRrzmKtE8ZoCw5AzMTqM4UtqNCIiVJKzD_u7jwjph2sgBLz08-fuvlvWNqXHWZw8pn61rYIYAdaxjz87_Z7_6a3CJ8MsjlraQ&quot; title=&quot;20251018_HA_.note.pptx_1_-cropped.png&quot; alt=&quot;20251018_HA_.note.pptx_1_-cropped.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在開始講解之前，我們要先釐清一下本篇文章所要著重的重點。&lt;/p&gt;
&lt;p&gt;上圖的左半邊是Google助理連結Home Assistant操作智慧裝置的主要途徑。具體來說，我們在Android手機呼叫Google助理時，它背後會去操作&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.google.android.apps.chromecast.app&amp;amp;hl=zh-TW&quot;&gt;Google Home應用程式&lt;/a&gt;裡面連結的裝置。Google Home的連結是透過我們在&lt;a href=&quot;https://console.home.google.com/projects/&quot;&gt;Google Cloud Platform (簡稱GCP)&lt;/a&gt;設定好Home Assistant的整合方式來連到我們區域網路裡面的Home Assistant，以此操作跟Home Assistant相連的智慧裝置，例如智慧燈泡。&lt;/p&gt;
&lt;p&gt;如果設定完成的話，我們就能夠用語音指令來控制家裡的智慧燈泡。舉例來說，我們可以直接用語音控制來發送指令：「OK Google，關閉客廳燈光。」然後我們就能聽到Google助理回覆類似「好的，客廳燈光已關閉」的訊息，此時Home Assistant連接的智慧燈泡就會關閉。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiFgbB0Tnjp8e4qY76yPvarHYuRcSXwHmg5l4YC-KfJU1bnifCH9vCbtMZ3y3rz1LDy8whrdIS_dPzYX_mhGPjQJHnlDAP6EMUVCGUKkuK0OYUEH-6tDMz7XQt6v52nuCYGlGzYOJysEwMnzpJFka5gb1oe_S18Tx6p7qj1XrieGJD2EON8o3qu2w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiFgbB0Tnjp8e4qY76yPvarHYuRcSXwHmg5l4YC-KfJU1bnifCH9vCbtMZ3y3rz1LDy8whrdIS_dPzYX_mhGPjQJHnlDAP6EMUVCGUKkuK0OYUEH-6tDMz7XQt6v52nuCYGlGzYOJysEwMnzpJFka5gb1oe_S18Tx6p7qj1XrieGJD2EON8o3qu2w&quot; title=&quot;20251018_HA_.note.pptx_2_-cropped.png&quot; alt=&quot;20251018_HA_.note.pptx_2_-cropped.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然而上述的操作是在&lt;span style=&quot;color: red; font-weight: bold; text-decoration: underline;&quot;&gt;已經設定完成的前提&lt;/span&gt;下才能進行。而這背後的設定才是真正複雜的地方，也是本篇文章所要講述的重點。&lt;/p&gt;
&lt;p&gt;我所在的網路環境並沒有公開IP，甚至連&lt;a href=&quot;https://www.cloudflare.com/zh-tw/learning/dns/glossary/dynamic-dns/&quot;&gt;DDNS&lt;/a&gt;都沒辦法設定。如果要在外面連線到本地網路，就必須仰賴內網穿透、虛擬區網等技術。而這次為了要讓外面的GCP連接到本地網路的Home Assistant，Cloudflare Tunnel方案就成了我這次的選擇。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgVYw3trxZZcJ9YYVPPi0s6tLKkb6ksSUhBXi7tThQy8EYH1oao2o5pTjRISMuAsAumghuz9XYdm5aHewYMEhezAids1_JVmGWPSVOqoqPTkKS7r74uorL-_fma2AFz2maIHlcKhY8-DogDKUCnnNs4woHbB72UQBqxdT0kWiQoDMdBiusHFIMAOg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgVYw3trxZZcJ9YYVPPi0s6tLKkb6ksSUhBXi7tThQy8EYH1oao2o5pTjRISMuAsAumghuz9XYdm5aHewYMEhezAids1_JVmGWPSVOqoqPTkKS7r74uorL-_fma2AFz2maIHlcKhY8-DogDKUCnnNs4woHbB72UQBqxdT0kWiQoDMdBiusHFIMAOg&quot; title=&quot;2025-1018-221348.png&quot; alt=&quot;2025-1018-221348.png&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;圖片來源：&lt;a href=&quot;https://try.cloudflare.com/&quot; target=&quot;_blank&quot;&gt;https://try.cloudflare.com/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cloudflare為人知名的是它的試用方案：&lt;a href=&quot;https://try.cloudflare.com/&quot; target=&quot;_blank&quot;&gt;https://try.cloudflare.com/&lt;/a&gt;&amp;nbsp;。不過試用方案trycloudflare.com 每次產生的網址都是隨機變化，這樣不能作為GCP的整合設定。所以我們這次用的是能夠固定網址的&lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/&quot;&gt;Cloudflare Tunnel方案&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;選擇Cloudflare Tunnel方案的話，就會連帶增加託管Domain Name、設定HA trusted_proxies等幾個步驟。我稍微整理一下，把這些必要步驟列成上圖右邊的6點：&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;申請Domain Name&lt;/li&gt;
  &lt;li&gt;託管Cloudflare&lt;/li&gt;
  &lt;li&gt;設定Cloudflare Tunnel&lt;/li&gt;
  &lt;li&gt;安裝Cloudflare Tunnel&lt;/li&gt;
  &lt;li&gt;設定HA trusted_proxies&lt;/li&gt;
  &lt;li&gt;設定GCP&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以下我會概述這些步驟的設定。由於這些步驟所使用的服務實在是太常改變，過幾年來看，本篇可能就已經不能使用了。所以大家參考看看就好。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1. 域名申請 / Domain Name Registration&lt;/h2&gt;
&lt;p&gt;為了要使用固定網址的Cloudflare Tunnel，我們要給它一個可供管理的網域名稱(domain name)。我本來想要用之前在DigitalPlat FreeDomain申請的免費網域名稱，但現在似乎是無法使用的樣子。網路上是有些可以申請網域名稱的網站，例如&lt;a href=&quot;https://freedomain.one/&quot;&gt;freedomain.one&lt;/a&gt;，但它提供的網域名稱並非跟根網域(root domain)，無法託管到Cloudflare上。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEha83MLa438E7K9_Dkur-EbouFgLLPr2iBQU7jBX54NdwzKlx6ijuiXSJw93tLqiM91438wnIjDC6q6HjNUchKiYdKereut4txlT63ETP_PTFIn84v3SvfaL-LxOeb1itAajfE7O8_UCZCjR9RVlSs34Y4-cGTeb64GJu9t8Bl9iy9-zwljg3AudA&quot; style=&quot;font-weight: 400; background-color: rgb(255, 255, 255);&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEha83MLa438E7K9_Dkur-EbouFgLLPr2iBQU7jBX54NdwzKlx6ijuiXSJw93tLqiM91438wnIjDC6q6HjNUchKiYdKereut4txlT63ETP_PTFIn84v3SvfaL-LxOeb1itAajfE7O8_UCZCjR9RVlSs34Y4-cGTeb64GJu9t8Bl9iy9-zwljg3AudA&quot; title=&quot;2025-10-18_22-25.png&quot; alt=&quot;2025-10-18_22-25.png&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;找到最後，我選擇的是L53 Domain Name。只要使用它提供的兌換碼「newuser」，每個帳號所申請的網域名稱第一年就能免費。然而必須注意的是，你所使用的email最好先在&lt;a href=&quot;https://zh-tw.gravatar.com/&quot;&gt;Gravatar&lt;/a&gt;註冊並上傳大頭照，不然很容易被當成可疑帳號而被取消申請。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjUXzos-QPxIlXIecYVR7XzrJ80wLrr-tyY-ovH1Qvv5rg8-Tg8d744T814ILJTNHZBXWIkrOKqGIFR52N2ZqWs5swQpUozRMUcBT09alWPuLyWE1A9WbHC8D01WJbi-qaroW18RGadEY7dTmWg9Qaqhzi8Ty4VixPPOlCvQVHxTiTBhX2lj8EaAQ&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjUXzos-QPxIlXIecYVR7XzrJ80wLrr-tyY-ovH1Qvv5rg8-Tg8d744T814ILJTNHZBXWIkrOKqGIFR52N2ZqWs5swQpUozRMUcBT09alWPuLyWE1A9WbHC8D01WJbi-qaroW18RGadEY7dTmWg9Qaqhzi8Ty4VixPPOlCvQVHxTiTBhX2lj8EaAQ&quot; title=&quot;2025-1018-223643.png&quot; alt=&quot;2025-1018-223643.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;確認我們可以修改網域的名稱伺服器，即可進行下一步。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. 託管網域名稱到Cloudflare /&amp;nbsp;Connect the Domain Name to Cloudflare&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiW9wrjULw11uP5paqTesTyzS81WSdiCUyC__BydOgpEqTcciEt21yf8-3kQ3qFU32-LRkuMIjbpBWOQ6R0DwOyCihC-iUPXHusoGCEFc0wBfQ2od9Z1us3SqCJ1Z3bopjufYnXsoVuyT_1P2x7FUKBlKJ6SV87dY8wkeoInJAJ_1baORZlk7gpMA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiW9wrjULw11uP5paqTesTyzS81WSdiCUyC__BydOgpEqTcciEt21yf8-3kQ3qFU32-LRkuMIjbpBWOQ6R0DwOyCihC-iUPXHusoGCEFc0wBfQ2od9Z1us3SqCJ1Z3bopjufYnXsoVuyT_1P2x7FUKBlKJ6SV87dY8wkeoInJAJ_1baORZlk7gpMA&quot; title=&quot;2025-1018-223828.png&quot; alt=&quot;2025-1018-223828.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接著我們來到Cloudflare，進入&amp;nbsp;&lt;a href=&quot;https://dash.cloudflare.com/&quot; target=&quot;_blank&quot;&gt;https://dash.cloudflare.com/&lt;/a&gt;。如果你還沒有註冊Cloudflare的話，可以到&amp;nbsp;&lt;a href=&quot;https://dash.cloudflare.com/sign-up&quot; target=&quot;_blank&quot;&gt;https://dash.cloudflare.com/sign-up&lt;/a&gt;&amp;nbsp;註冊。註冊可以用Google帳號即可。&lt;/p&gt;
&lt;p&gt;讓我們在Cloudflare Dashboard右上角的「+ Add」裡面進入「Connect a domain」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj98hJ1ikZ0_ygD7iXvT89EBIQJ-FvF_E0HAbyoDa8QUcHC5n-Lxq2rgfxn1zPqoKQH7m9llnDdk4F_YTK2yUQ7w-DijCCZY9rL7QtmVDpCshAmJT5hzUTWUwnBshmeIsRpfy8jg9_qrzefSQbVSHLWHsPj4-zuTRxHhIPdV8AtkFsX1VwRc59zIA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj98hJ1ikZ0_ygD7iXvT89EBIQJ-FvF_E0HAbyoDa8QUcHC5n-Lxq2rgfxn1zPqoKQH7m9llnDdk4F_YTK2yUQ7w-DijCCZY9rL7QtmVDpCshAmJT5hzUTWUwnBshmeIsRpfy8jg9_qrzefSQbVSHLWHsPj4-zuTRxHhIPdV8AtkFsX1VwRc59zIA&quot; title=&quot;2025-1018-224207.png&quot; alt=&quot;2025-1018-224207.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;1. 填入剛剛申請的網域名稱，然後 2. Continue 即可。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEihYrY7QKNkmQ4JDAXqJZZYWRYtDzgkhbY_ujdd2OdVB0RbLVe_wYzwv5vswPBmFTWY2YBXmU0OhiqCIrTP32SC5xQbu4JFtsm-D5Szt1y_Mw3bIXTRIkmpVysy-EsTUEzSIQjt8hE58Ja1JKJ6B7-uSE6MKFUjNlp7YpdBgeVK1RVcu7hqc6c_yQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEihYrY7QKNkmQ4JDAXqJZZYWRYtDzgkhbY_ujdd2OdVB0RbLVe_wYzwv5vswPBmFTWY2YBXmU0OhiqCIrTP32SC5xQbu4JFtsm-D5Szt1y_Mw3bIXTRIkmpVysy-EsTUEzSIQjt8hE58Ja1JKJ6B7-uSE6MKFUjNlp7YpdBgeVK1RVcu7hqc6c_yQ&quot; title=&quot;2025-1018-224344.png&quot; alt=&quot;2025-1018-224344.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;選擇Free免費方案。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgnY377FYF7to-xXsC57aBgSZDVulh5ybvT0ZHNhwTJg9H3Ke7Bm2IZOAP3C9m-GTcjW_5ptUAHitAu2Rp9jG5HGVYaTc3YStWb2C-nsi20tAIV6yjTr__8yGb0kLGWrU1BvA9vxYkMVFwEBK2s53aee8Es216WN2HbSjcXhJ8brCyO9_WLwbw2GQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgnY377FYF7to-xXsC57aBgSZDVulh5ybvT0ZHNhwTJg9H3Ke7Bm2IZOAP3C9m-GTcjW_5ptUAHitAu2Rp9jG5HGVYaTc3YStWb2C-nsi20tAIV6yjTr__8yGb0kLGWrU1BvA9vxYkMVFwEBK2s53aee8Es216WN2HbSjcXhJ8brCyO9_WLwbw2GQ&quot; title=&quot;2025-1018-224454.png&quot; alt=&quot;2025-1018-224454.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在「Review your DNS records」裡面，跳到最下面，按「Continue to activation」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhBN01CbMNjGbf-4S85TD0zlFvjTpcpDeLxJvXLrHd5XsbSWgMsKpJ04EHTlHka0MIzAudA5V8g_8Pgm2p6kbASWbO8b3-sD8jprj0WI65ZibtcqdkNU9Rq2LfC-1QQDrQAc7yu3-vnV8n25N6NgVclfzxUlMECKGAdOHXABIOo-oQ0p5BZ6DfAsw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhBN01CbMNjGbf-4S85TD0zlFvjTpcpDeLxJvXLrHd5XsbSWgMsKpJ04EHTlHka0MIzAudA5V8g_8Pgm2p6kbASWbO8b3-sD8jprj0WI65ZibtcqdkNU9Rq2LfC-1QQDrQAc7yu3-vnV8n25N6NgVclfzxUlMECKGAdOHXABIOo-oQ0p5BZ6DfAsw&quot; title=&quot;2025-1018-224534.png&quot; alt=&quot;2025-1018-224534.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;跳出警告訊息，按「Confirm」繼續。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgFX8YVoTf-novgPU6tTimBru7xNZnbDKvbOaKR0dcfE8FmudLXxk2oPYmZcfF-WjWHlqpty-P_LuwKyrfSJPBYfgAaRxUymLq70Geuk40shoe-fefrrSBYGw4Wvoi8jmXl8Q-vUcygUsqIBBejCJT8MowS3mX8K2Q9dNnCeJ-zpAXcqvEcC2Xwmg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgFX8YVoTf-novgPU6tTimBru7xNZnbDKvbOaKR0dcfE8FmudLXxk2oPYmZcfF-WjWHlqpty-P_LuwKyrfSJPBYfgAaRxUymLq70Geuk40shoe-fefrrSBYGw4Wvoi8jmXl8Q-vUcygUsqIBBejCJT8MowS3mX8K2Q9dNnCeJ-zpAXcqvEcC2Xwmg&quot; title=&quot;2025-1018-224603.png&quot; alt=&quot;2025-1018-224603.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在 「Last step: Update your nameservers to activate Cloudflare」 裡面，我們可以看到Cloudflare提供的兩個名稱伺服器 (name server)。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgpsXKUE3ZuDJqOykufiQDDZE9Pp_D-QFQnyTGyY1dYK54huf8f6WjB9tXkoig-nLpmKONjd3tIg6es48fXPmXrJQH2ZckfUGjUqBLSdBx9SKZ4H0TImM1qcVfvhqEOC8nF_UZN490MNxhOAiIotDKdJtnLETW2GHeRhhtZHSf5RIdqRMx7qtxxxw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgpsXKUE3ZuDJqOykufiQDDZE9Pp_D-QFQnyTGyY1dYK54huf8f6WjB9tXkoig-nLpmKONjd3tIg6es48fXPmXrJQH2ZckfUGjUqBLSdBx9SKZ4H0TImM1qcVfvhqEOC8nF_UZN490MNxhOAiIotDKdJtnLETW2GHeRhhtZHSf5RIdqRMx7qtxxxw&quot; title=&quot;2025-1018-224726.png&quot; alt=&quot;2025-1018-224726.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;回到L53 Domain Name，把名稱伺服器替換成Cloudflare提供的設定。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiJvINq86YQDY0xVMO--K3OxzJ2jJLCTWLCO1-_voFUAv7p3t6PjanX5-NWASHAYXeqZv7z9vkJ_X0VzLrfjJMZV7MdwrBNliAyE23vadFIw_5-hEFLVjgO1bjfC81mwo5DzDNCdm5xkd6ScJDjb2SEOTMk3izHzDUlqbuQAOwmKKQjhZirxzmVJQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiJvINq86YQDY0xVMO--K3OxzJ2jJLCTWLCO1-_voFUAv7p3t6PjanX5-NWASHAYXeqZv7z9vkJ_X0VzLrfjJMZV7MdwrBNliAyE23vadFIw_5-hEFLVjgO1bjfC81mwo5DzDNCdm5xkd6ScJDjb2SEOTMk3izHzDUlqbuQAOwmKKQjhZirxzmVJQ&quot; title=&quot;2025-1018-224825.png&quot; alt=&quot;2025-1018-224825.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;再到Cloudflare，按「Continue」繼續。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh3G5DG0L__aWhLtfIbucCm7uxNRff7N8HJ1fAR8TARshc0iRtKBB1MFBKJfEUA8S1ku__kfrxMIPAdwqg0_kdZB0EsEbc8TQsUiye_2R0JFFj5f9BeBRJpkFuqugwXaVzHGpUHwqWHH785QPl328EzTojeG0x3SWJfIvVozWHU7UeIqgyUfATKyw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh3G5DG0L__aWhLtfIbucCm7uxNRff7N8HJ1fAR8TARshc0iRtKBB1MFBKJfEUA8S1ku__kfrxMIPAdwqg0_kdZB0EsEbc8TQsUiye_2R0JFFj5f9BeBRJpkFuqugwXaVzHGpUHwqWHH785QPl328EzTojeG0x3SWJfIvVozWHU7UeIqgyUfATKyw&quot; title=&quot;2025-1018-224856.png&quot; alt=&quot;2025-1018-224856.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接下來你需要等待一段時間。我自己的經驗是2小時左右。雖然Cloudflare提供了「Check nameservers now」的按鈕可以按，但這也不會讓它立即生效。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgbk7LZMl3BUuR80XM0iiuB4XzxHNY_7loOgthzKMTP7VOS_fRRX51Y4UKkxPsZQ4tB8IZn0EazqnIs3GE65MlAPJ3oa2459EFk-Xvu-cAnecpHRiuTShnNqtlchTVrP0Y42cH1LDisxfegQme-dfNymDsrPl21JvmuLVy5mjqkffTJ-GHA47fQCw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgbk7LZMl3BUuR80XM0iiuB4XzxHNY_7loOgthzKMTP7VOS_fRRX51Y4UKkxPsZQ4tB8IZn0EazqnIs3GE65MlAPJ3oa2459EFk-Xvu-cAnecpHRiuTShnNqtlchTVrP0Y42cH1LDisxfegQme-dfNymDsrPl21JvmuLVy5mjqkffTJ-GHA47fQCw&quot; title=&quot;2025-1018-225019.png&quot; alt=&quot;2025-1018-225019.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果生效的話，你的信箱會收到通知。這樣我們就可以繼續進行下一步了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3&amp;amp;4. 設定並安裝Cloudflare Tunnel / Create and Install Cloudflare Tunnel&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi-paU6iTfDRfKCtT1zNB9_bBcVIXr8HKv_V2bRKr7PzhQn9Cj2DFEZ97pULnm-C5LPMz3n23hllxyBndtjD6zKA_zRpTyO3eOHsvuwADsfWZjp6LKzpmXbt4OhHfuZj7PcxyX3HVTHpa2wPODEuuhxc9osMwBStY0awF1bpgZaZfXJytR3G7bsCw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi-paU6iTfDRfKCtT1zNB9_bBcVIXr8HKv_V2bRKr7PzhQn9Cj2DFEZ97pULnm-C5LPMz3n23hllxyBndtjD6zKA_zRpTyO3eOHsvuwADsfWZjp6LKzpmXbt4OhHfuZj7PcxyX3HVTHpa2wPODEuuhxc9osMwBStY0awF1bpgZaZfXJytR3G7bsCw&quot; title=&quot;2025-1018-225258.png&quot; alt=&quot;2025-1018-225258.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;回到Cloudflare Dashboard&amp;nbsp;&lt;a href=&quot;https://dash.cloudflare.com/&quot; target=&quot;_blank&quot;&gt;https://dash.cloudflare.com/&lt;/a&gt;。我們可以看到剛剛設定的網域名稱已經啟用。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiXfb0iwqipKTW87P4BvzDsbQE6nTVhS0NH8AnRaPvDd9kxgiJHB3bsRmlyCb-7Oy5RW0XqamBk6Jn_aGjri8-C1mv0Xda8t5H1VgLe3RiMZn4fk_neRm9WxbeiPSUVUIzUU7dZdCGvzsQ1Iud_NTpOA9M7GMSz8UGUbpAsY5PuqBx_Xo6jJU3a7g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiXfb0iwqipKTW87P4BvzDsbQE6nTVhS0NH8AnRaPvDd9kxgiJHB3bsRmlyCb-7Oy5RW0XqamBk6Jn_aGjri8-C1mv0Xda8t5H1VgLe3RiMZn4fk_neRm9WxbeiPSUVUIzUU7dZdCGvzsQ1Iud_NTpOA9M7GMSz8UGUbpAsY5PuqBx_Xo6jJU3a7g&quot; title=&quot;2025-1018-225357.png&quot; alt=&quot;2025-1018-225357.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;進入左邊導覽列的PROTECT &amp;amp; CONNECT &amp;gt; Zero Trust。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgNA0CYNs6gFl8QB04z8FVx5xdh3ZjVTWi4ITtxVts3qjlR3QX1F-5FgrcHePXmyU15zu2yhkwMt76cKD51vO3o-EwWX8t3pXNmp65ZJCxH4QevZdbSNyGXL8C0ObJ0Ka9P3i4IqZFEtUpmJH3Ag7jQOX82Q9nfX0U7ktHA12PQVUOM8njVRBIm-w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgNA0CYNs6gFl8QB04z8FVx5xdh3ZjVTWi4ITtxVts3qjlR3QX1F-5FgrcHePXmyU15zu2yhkwMt76cKD51vO3o-EwWX8t3pXNmp65ZJCxH4QevZdbSNyGXL8C0ObJ0Ka9P3i4IqZFEtUpmJH3Ag7jQOX82Q9nfX0U7ktHA12PQVUOM8njVRBIm-w&quot; title=&quot;2025-1018-225443.png&quot; alt=&quot;2025-1018-225443.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;再Zero Trust區域，進入左邊導覽列的Networks &amp;gt; Tunnels。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjlVsb3Hl_qQ_ftVfD-kuc1KUsIedY7OSOlNi7J5q6NCBaUA7vJZDjo_ApbzLf4dT93ZUp7nKpsBdjNphKXn3baXBjyFYUl9itXTxSTrPz8D62otpnBvbe2M5zgJRcNOU1py88WVPoui5wG1BNknrlcmv5S2ev745pXMstARnnDhbL0OgmCBTZUng&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjlVsb3Hl_qQ_ftVfD-kuc1KUsIedY7OSOlNi7J5q6NCBaUA7vJZDjo_ApbzLf4dT93ZUp7nKpsBdjNphKXn3baXBjyFYUl9itXTxSTrPz8D62otpnBvbe2M5zgJRcNOU1py88WVPoui5wG1BNknrlcmv5S2ev745pXMstARnnDhbL0OgmCBTZUng&quot; title=&quot;2025-1018-225526.png&quot; alt=&quot;2025-1018-225526.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;按下「Create a tunnel」按鈕。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh0uI9OlYy73wks47_93qOZU2jHF4N7Hj9Nhthc6G9fBIs1Yj67kxUKSDDrIYBTdjz2qyNZ4olB-r_QtqneBZGWN3rUsRxRIFy5HjWeuJLvjd3b7RhVsxQCllXXJanHxOr8v1_9JSEJnKStO6kh2d5r-pKUjtlay7pVUpcULdfrNgJjq6_Z-FHaRg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh0uI9OlYy73wks47_93qOZU2jHF4N7Hj9Nhthc6G9fBIs1Yj67kxUKSDDrIYBTdjz2qyNZ4olB-r_QtqneBZGWN3rUsRxRIFy5HjWeuJLvjd3b7RhVsxQCllXXJanHxOr8v1_9JSEJnKStO6kh2d5r-pKUjtlay7pVUpcULdfrNgJjq6_Z-FHaRg&quot; title=&quot;2025-1018-225554.png&quot; alt=&quot;2025-1018-225554.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;選「Cloudflared」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhShjWBKXZm1twIridB91Fzp1vIZQf5ORIlYz-pewdZKgYu8-J3QAjPP0ReqBBWX0xZaqzYagYQxM1NLPWbEe7VMaAiSKpXkcHCrl0bOpJBfrcAEWz5gRHUX69X7FVrre5UOwmvZbWgjr2LHYFn7hLSKF8pCZ5MDihka_v2iDj3AonwvCyDWB0DZA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhShjWBKXZm1twIridB91Fzp1vIZQf5ORIlYz-pewdZKgYu8-J3QAjPP0ReqBBWX0xZaqzYagYQxM1NLPWbEe7VMaAiSKpXkcHCrl0bOpJBfrcAEWz5gRHUX69X7FVrre5UOwmvZbWgjr2LHYFn7hLSKF8pCZ5MDihka_v2iDj3AonwvCyDWB0DZA&quot; title=&quot;2025-1018-225715.png&quot; alt=&quot;2025-1018-225715.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;設定Tunnel的名稱，然後Save tunnel。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgG3YgHormsCvN2bZ6HlPUjEcFWPdlWpi4ZHWsHWG-WzpNOo5xmCmaCwCHF4DDZpFdDpmXgruGX3gaE2FjJA-PaipODpDAQ19et5WFxiy-LhiKTsROVVag3BGoUKJYel1VdB7NCslHj9qLGpCnsna95qB5TQHKdiW1ghilIACJDiugdC0igCVvOTQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgG3YgHormsCvN2bZ6HlPUjEcFWPdlWpi4ZHWsHWG-WzpNOo5xmCmaCwCHF4DDZpFdDpmXgruGX3gaE2FjJA-PaipODpDAQ19et5WFxiy-LhiKTsROVVag3BGoUKJYel1VdB7NCslHj9qLGpCnsna95qB5TQHKdiW1ghilIACJDiugdC0igCVvOTQ&quot; title=&quot;2025-1018-225747.png&quot; alt=&quot;2025-1018-225747.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接下來會看到各種作業系統下Cloudflared的安裝方法，請根據你的Home Assistant安裝方式來選擇。由於我是在Kubuntu 上以Docker運作Home Assistant，所以Cloudflared應該會架設在相容於Ubuntu的Debian上。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjpZX5ghzk00zwSu5XfwXncT_AyfQruQhT-Hr_Ma2Kp9Nvtgk2y1b66Jj_ZVUbEDSVRn3ZObsXxZywM2t1GeFvLrbCjSs0-f2w5V8Kuh5hVaHH0TcLEmeUkcG5wmiYQr7MTfh9lhz9d74_Iz7wvpBgasXRcHI8wIDEQZYTPxOUxYGjZR7YmYrk7ug&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjpZX5ghzk00zwSu5XfwXncT_AyfQruQhT-Hr_Ma2Kp9Nvtgk2y1b66Jj_ZVUbEDSVRn3ZObsXxZywM2t1GeFvLrbCjSs0-f2w5V8Kuh5hVaHH0TcLEmeUkcG5wmiYQr7MTfh9lhz9d74_Iz7wvpBgasXRcHI8wIDEQZYTPxOUxYGjZR7YmYrk7ug&quot; title=&quot;2025-1018-230035.png&quot; alt=&quot;2025-1018-230035.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上圖的腳本中，1. 是安裝cloudflared所需要的指令，2. 是安裝目前設定的Cloudflare Tunnel的指令。依序在Home Assistant所在的作業系統裡面執行即可。&lt;/p&gt;
&lt;p&gt;附帶一提，如果你要在Home Assistant的作業系統上移除原本安裝好的Cloudflare Tunnel，可以使用以下指令：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;cloudflared&amp;nbsp;service&amp;nbsp;uninstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgWW7p5NpQ73E96rkFl9C2-F7_O42y-7x52Hp5-ids1DBq64a6_gdXvoakDoEBobqMRg-mUarrSCZD3Buq7rRgNfnwzwUxwdnloy8rF5ysvxekVxFgSpMwRSNYLqvVQ-ASk7cLxBm5ipWG2vdEYPzAZ0BsItbv8kc-eY7ZrHv0q4c3b4UncvZIlFg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgWW7p5NpQ73E96rkFl9C2-F7_O42y-7x52Hp5-ids1DBq64a6_gdXvoakDoEBobqMRg-mUarrSCZD3Buq7rRgNfnwzwUxwdnloy8rF5ysvxekVxFgSpMwRSNYLqvVQ-ASk7cLxBm5ipWG2vdEYPzAZ0BsItbv8kc-eY7ZrHv0q4c3b4UncvZIlFg&quot; title=&quot;2025-1018-230618.png&quot; alt=&quot;2025-1018-230618.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;圖片來源：&lt;a href=&quot;https://youtu.be/OJBHG9oJTDk?t=180&quot; target=&quot;_blank&quot;&gt;https://youtu.be/OJBHG9oJTDk?t=180&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;如果順利安裝好的話，安裝腳本下面的「Connectors」會看到連接訊息。接著按「Next」繼續即可。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhyNyAbSAAPxTL8-i2ZuWU_iPeA1kvH3Z14qBnzNR2ZVQh4s34Pw_UvYjFqRytGzQtRyFRlxQVL6KMO9ot1FBmjheVgeAHtuVdOKnwKc2K0sOB-AvZhIipW5J7gAreTdNcJpxE84qD2ILvkDuqVr43QOkPYF_FHZXfcu-X7MCyuVPWs5Ct8GGZ18Q&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhyNyAbSAAPxTL8-i2ZuWU_iPeA1kvH3Z14qBnzNR2ZVQh4s34Pw_UvYjFqRytGzQtRyFRlxQVL6KMO9ot1FBmjheVgeAHtuVdOKnwKc2K0sOB-AvZhIipW5J7gAreTdNcJpxE84qD2ILvkDuqVr43QOkPYF_FHZXfcu-X7MCyuVPWs5Ct8GGZ18Q&quot; title=&quot;2025-1018-230855.png&quot; alt=&quot;2025-1018-230855.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接著在「Published application routes」裡面進行設定：&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Subdomain：自己命名即可，例如「ha」。&lt;/li&gt;
  &lt;li&gt;Domain：選擇剛剛託管的網域名稱。&lt;/li&gt;
  &lt;li&gt;Type：HTTP。選擇Home Assistant的預設連線HTTP。&lt;/li&gt;
  &lt;li&gt;URL：localhost:8123。這是Home Assistant的預設連線網址跟連接埠。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;再來按右下角的「Save」，Cloudflare Tunnel就設定完成了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEinMXYXQPJft3IHZKxmDWMBH5fTAkJQiKjOmoeTGmB7oWKi93ntL5y5Uywa4slllqh3mb3KiDo9zWDicIih7pT_aWEI1E5ON-Ijjtb9FmS9ubscfRPOIklyKYLAA-cgiGnCnbZiZCXekuBIagl-evpG_aHZIFphCHEvrGprhUfu0hScXU3Ls4axZA&quot; style=&quot;color: rgb(35, 82, 124); outline: 0px; font-weight: 400; background-color: rgb(255, 255, 255);&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEinMXYXQPJft3IHZKxmDWMBH5fTAkJQiKjOmoeTGmB7oWKi93ntL5y5Uywa4slllqh3mb3KiDo9zWDicIih7pT_aWEI1E5ON-Ijjtb9FmS9ubscfRPOIklyKYLAA-cgiGnCnbZiZCXekuBIagl-evpG_aHZIFphCHEvrGprhUfu0hScXU3Ls4axZA&quot; title=&quot;2025-1018-231437.png&quot; alt=&quot;2025-1018-231437.png&quot; class=&quot;original-size&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;未來我們就可以用「[Subdomain].[Domain]」的組合來開啟Home Assistant。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;5. 設定HA trusted_proxies / Set &quot;trusted_proxies&quot; in Home Assistant&#39;s Configuration&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgoaxvgD__HSmup7S7heaIXfad3IlY58p3ZbKIo-Kdb15GSkBBthj5ff2MzI1tdtXl6axwaw05o82_OaTJ5tf7H-zRYB1dhr1JZciVuXkmAMODMzdFfPN_9hWV6_YMwW6YWhU6jbnla3-I5RNQx9w89OtHDoqVzhbDXFuzPWdbdhwLfTx9P9cpn9w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgoaxvgD__HSmup7S7heaIXfad3IlY58p3ZbKIo-Kdb15GSkBBthj5ff2MzI1tdtXl6axwaw05o82_OaTJ5tf7H-zRYB1dhr1JZciVuXkmAMODMzdFfPN_9hWV6_YMwW6YWhU6jbnla3-I5RNQx9w89OtHDoqVzhbDXFuzPWdbdhwLfTx9P9cpn9w&quot; title=&quot;2025-1018-231808.png&quot; alt=&quot;2025-1018-231808.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然而，如果直接開啟Cloudflare Tunnel設定好的網址，我們卻會看到「400: Bad Request」的錯誤訊息畫面。別擔心，這不是Cloudflare Tunnel的問題，是Home Assistant的安全機制。&lt;/p&gt;
&lt;p&gt;讓我們看看Home Assistant主控臺的訊息，它可能會出現以下內容：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;nohighlight&quot;&gt;ha&amp;nbsp;&amp;nbsp;|&amp;nbsp;2025-10-18&amp;nbsp;20:45:46.002&amp;nbsp;ERROR&amp;nbsp;(MainThread)&amp;nbsp;[homeassistant.components.http.forwarded]&amp;nbsp;A&amp;nbsp;request&amp;nbsp;from&amp;nbsp;a&amp;nbsp;reverse&amp;nbsp;proxy&amp;nbsp;was&amp;nbsp;received&amp;nbsp;from&amp;nbsp;::1,&amp;nbsp;but&amp;nbsp;your&amp;nbsp;HTTP&amp;nbsp;integration&amp;nbsp;is&amp;nbsp;not&amp;nbsp;set-up&amp;nbsp;for&amp;nbsp;reverse&amp;nbsp;proxies&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;這表示Home Assistant拒絕了來自「::1」的反向代理請求。&lt;/p&gt;
&lt;p&gt;要解決這個問題，我們需要在Home Assistant的configuration.yaml裡面，加入以下內容：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;yaml&quot;&gt;http:&lt;br&gt;&amp;nbsp;&amp;nbsp;use_x_forwarded_for:&amp;nbsp;true&lt;br&gt;&amp;nbsp;&amp;nbsp;trusted_proxies:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;127.0.0.1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;::1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然後重新啟動Home Assistant，讓設定檔生效。最後我們就能透過Cloudflare Tunnel來開啟Home Assistant了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;6. 設定GCP跟Android的Google Home&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiO8CU0ZvThWZg8xDp2mo764e7dBMEZWGlTOWnj5yAwQFQYlpuUMjAKkgq4O0TTf_Fe16p0W6avP33V7fDE4SyOYSxoK_42WD7EPtw5IWikDugdJA4dld2DzQMZOAJPAt3mWsudNZ524uKp5wYB-1_XZBuNj0JKtjEbpXtqUZ_90m7TKGW8FaZapw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiO8CU0ZvThWZg8xDp2mo764e7dBMEZWGlTOWnj5yAwQFQYlpuUMjAKkgq4O0TTf_Fe16p0W6avP33V7fDE4SyOYSxoK_42WD7EPtw5IWikDugdJA4dld2DzQMZOAJPAt3mWsudNZ524uKp5wYB-1_XZBuNj0JKtjEbpXtqUZ_90m7TKGW8FaZapw&quot; title=&quot;2025-1018-232455.png&quot; alt=&quot;2025-1018-232455.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最後要設定GCP的部分，請參考Home Assistant的Google Assistant中的「Google Cloud Platform configuration&amp;nbsp;」：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.home-assistant.io/integrations/google_assistant/#google-cloud-platform-configuration&quot; target=&quot;_blank&quot;&gt;https://www.home-assistant.io/integrations/google_assistant/#google-cloud-platform-configuration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;步驟非常多，而且常常會隨著GCP改版而有些許不同。遵循Home Assistant的步驟一步一步設定，大致上都能完成。祝好運。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;結語 / Conclusion&lt;/h2&gt;
&lt;p&gt;本篇講述了如何使用Cloudflare Tunnel內網穿透來讓Home Assistant可以被GCP連接，進而實現能在手機的Google助理上操控智慧設備的目的。&lt;/p&gt;
&lt;p&gt;這個目的到底是什麼呢？其實也只是能夠用語音操控「OK Google，關閉客廳燈光」而已。為了實現這個目的，背後需要仰賴非常多且不同的服務，而且設定的細節也會不斷改變。儘管我已經把整個設定建構完成，但考慮到所花費的時間、以及未來的可維護性，這讓我再次反思語音操控的必要性。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;如果是你的話，你會怎麽選擇呢？&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;1. 主要重點還是在能用Google助理來操控Home Assistant，這可以延伸出很多變化，因此很值得。&lt;/li&gt;
  &lt;li&gt;2. 用&lt;a href=&quot;https://www.nabucasa.com/pricing/&quot;&gt;Home Assistant Cloud&lt;/a&gt;，每年付65美金，就能省下這篇文章所要做的所有事情喔。&lt;/li&gt;
  &lt;li&gt;3. 直接在手機上操控Home Assistant不是更快嗎？&lt;/li&gt;
  &lt;li&gt;4. 我連出聲或動手都不想做，用感應器自動判斷吧。&lt;/li&gt;
  &lt;li&gt;5. 其他：你有什麼其他想法，歡迎在下面留言分享喔！&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/1076502317428475260/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/10/using-cloudflare-tunnel-for-internal-network-penetration-to-connect-home-assistant-to-google-assistant.html#comment-form' title='6 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/1076502317428475260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/1076502317428475260'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/10/using-cloudflare-tunnel-for-internal-network-penetration-to-connect-home-assistant-to-google-assistant.html' title='用Cloudflare Tunnel的內網穿透來連接Home Assistant的Google助理 / Using Cloudflare Tunnel for Internal Network Penetration to Connect Home Assistant to Google Assistant'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjUL4tFpOuYTZuMKj5ZB3XvdLUw7G1JGb_i9TugpT0vW_Xbvj9ElxzZZV9zADynvRIifngj9l_XeJD2AVDJonz1e5eMglOsSpZ5pBUsfjMB-dr5U-Z9bF6iHdWQMaa8MmxcBFqoNpx9lRTPIc0IM_2wMRXr3Rr4_E_O-1IRgmLdCU-QKnWy9HAHZw=s72-c" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-3444732229069304510</id><published>2025-10-06T12:00:00.006+08:00</published><updated>2025-10-06T12:00:00.270+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sissi"/><title type='text'>希希助教祝各位同學中秋節快樂！ / TA. Sissi Wishes Everyone a Happy Mid-Autumn Festival!</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjYFoV0n17DrBWBWdbm0rgyIz1doLYbonmuWAE9DTpIy7YlsD6-XjK9KyX-BJJpBoTPZHjVvnGFIvuwtclXPfVm_WktsgYsNcs-kIt2QGhr9K6HwHyTy3C0f2yukCJ4bwnRGeU3EC9XT6eyMm5lJkS5iduVT3qfDdHeme7NX-RsYIToPU-93NQxMA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjYFoV0n17DrBWBWdbm0rgyIz1doLYbonmuWAE9DTpIy7YlsD6-XjK9KyX-BJJpBoTPZHjVvnGFIvuwtclXPfVm_WktsgYsNcs-kIt2QGhr9K6HwHyTy3C0f2yukCJ4bwnRGeU3EC9XT6eyMm5lJkS5iduVT3qfDdHeme7NX-RsYIToPU-93NQxMA&quot; title=&quot;20250101_BLOG_.note_01.png&quot; alt=&quot;20250101_BLOG_.note_01.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;與家人團圓之後，做好開學的準備了嗎？新學期也要加油喔！&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;AI藝術字 /&amp;nbsp;AI Art Font&lt;/h2&gt;
&lt;p&gt;字型的部分並不是使用AI繪圖，而是來自真實的字型。&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;印章文字：汉仪新蒂唐朝体 - Hanyi Senty Tang Type&lt;br&gt;&lt;a href=&quot;https://www.sentyfont.com/sentytang.htm&quot; target=&quot;_blank&quot;&gt;https://www.sentyfont.com/sentytang.htm&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;春聯題字：汉仪新蒂春联体 Hanyi Senty Spring Brush&lt;br&gt;&lt;a href=&quot;https://www.sentyfont.com/springbrush.htm&quot; target=&quot;_blank&quot;&gt;https://www.sentyfont.com/springbrush.htm&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiKLcnEmZXmeTzqQul_eT5zv7fze2gb8AKrzNvtdALumIMHdnucA7H2oA2Cfx7W5KXqBdFa33UcHDDs_vcwLG6WBD3GXLaScYwc360zA3axI7YOdEQHpD62jKy-HMLFJ8vmWR9YNzav_Rsq-kC0rHwGs4DMy11o81eaxNWMbJcIjt5wxdM7bvkVFw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiKLcnEmZXmeTzqQul_eT5zv7fze2gb8AKrzNvtdALumIMHdnucA7H2oA2Cfx7W5KXqBdFa33UcHDDs_vcwLG6WBD3GXLaScYwc360zA3axI7YOdEQHpD62jKy-HMLFJ8vmWR9YNzav_Rsq-kC0rHwGs4DMy11o81eaxNWMbJcIjt5wxdM7bvkVFw&quot; title=&quot;2025-0101-201558.png&quot; alt=&quot;2025-0101-201558.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本來一開始我也是想用AI繪圖來產生文字，但實際上用起來，Bing的英文文字能夠順利畫出來，但中文字就成了奇妙的字體。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhbD6vx_vxkoIBBK9popxqoIfW_0Tx4iE78Hldne9dU7O9GD-DZ41X2q4zY4W61fbyBRQy7N3uY0AEHWDgcXtqd6XhD3PFDpuRjTob5tpHL2GRAO6k9-ChckEPQcNz9ZU8i_lCBm6O0gqECr7e7-CgAb8ME4QkIc9D2b5NalwruZanhKKN-mMfG7Q&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhbD6vx_vxkoIBBK9popxqoIfW_0Tx4iE78Hldne9dU7O9GD-DZ41X2q4zY4W61fbyBRQy7N3uY0AEHWDgcXtqd6XhD3PFDpuRjTob5tpHL2GRAO6k9-ChckEPQcNz9ZU8i_lCBm6O0gqECr7e7-CgAb8ME4QkIc9D2b5NalwruZanhKKN-mMfG7Q&quot; title=&quot;2025-0101-201713.png&quot; alt=&quot;2025-0101-201713.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這點ChatGPT也一樣。毛筆字看起來很厲害，但這到底在寫什麼呢？&lt;/p&gt;
&lt;p&gt;研究了半天，還是回來用字型好了。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/3444732229069304510/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/10/ta-sissi-wishes-everyone-a-happy-midautumn-festival.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/3444732229069304510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/3444732229069304510'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/10/ta-sissi-wishes-everyone-a-happy-midautumn-festival.html' title='希希助教祝各位同學中秋節快樂！ / TA. Sissi Wishes Everyone a Happy Mid-Autumn Festival!'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjYFoV0n17DrBWBWdbm0rgyIz1doLYbonmuWAE9DTpIy7YlsD6-XjK9KyX-BJJpBoTPZHjVvnGFIvuwtclXPfVm_WktsgYsNcs-kIt2QGhr9K6HwHyTy3C0f2yukCJ4bwnRGeU3EC9XT6eyMm5lJkS5iduVT3qfDdHeme7NX-RsYIToPU-93NQxMA=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-7523888999189016729</id><published>2025-08-25T12:00:00.007+08:00</published><updated>2025-08-25T12:00:00.112+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Glare"/><category scheme="http://www.blogger.com/atom/ns#" term="Lighting"/><category scheme="http://www.blogger.com/atom/ns#" term="Monitor"/><title type='text'>看電腦覺得疲憊嗎？比起螢幕，你更應該注意炫光的問題 / Are You Tired of Looking at the Computer? Pay More Attention to Glare Than the Screen</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhkKehad4z5vBUmoUKjO57Rv2MZ77_77WOdMH1nlDM7Nzsi7D7tZb43ZwDI0uOanL1FyUyZUgXdl191fLCB4axZI-EskNkk0sc1O1Zt_ZT6w6VyA67cNEz54WGAf-XwFO70LAu-QJdLMVIl0QnzoGQrdeVzFpgz0k01u7lZQtv0qcTPQEZicu-BxQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhkKehad4z5vBUmoUKjO57Rv2MZ77_77WOdMH1nlDM7Nzsi7D7tZb43ZwDI0uOanL1FyUyZUgXdl191fLCB4axZI-EskNkk0sc1O1Zt_ZT6w6VyA67cNEz54WGAf-XwFO70LAu-QJdLMVIl0QnzoGQrdeVzFpgz0k01u7lZQtv0qcTPQEZicu-BxQ&quot; title=&quot;2025-0326-161840.png&quot; alt=&quot;2025-0326-161840.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;說到人體工學這件事情，我想講一下燈光的問題。作為租屋族，我發現大部分租屋環境的燈光都不太適合長時間使用電腦。這個問題有兩個層面：一個是螢幕前的光線不足，另一個是螢幕後的光線不足。瞭解這兩種燈光的問題，才能改善眼睛疲勞的狀況。&lt;/p&gt;
&lt;p&gt;Speaking of ergonomics, I want to talk about lighting. As a renter, I&#39;ve found that the lighting in most rentals isn&#39;t suitable for prolonged computer use.&amp;nbsp; There are two aspects to this problem: insufficient light in front of the screen, and insufficient light behind the screen. Understanding these two lighting issues is key to improving eye strain.&lt;/p&gt;
&lt;p&gt;(這篇本來是&lt;a href=&quot;https://www.facebook.com/blog.pulipuli.info/posts/9085396304819077?__cft__[0]=AZWxPfsV3sHUhMAt0XRwRO-er_be9T4XE7eW8Jsvph0KUgsEAxJsmTMutX-CwijHjvqP0c73y7BRrzyy39gCwjK-AcnOOAsORgC6yBaPaKN29qkX_QBq-X1VitJeT101hBCC7Wl6V5Q35svYg7HMhIiP&amp;amp;__tn__=%2CO%2CP-R&quot; target=&quot;_blank&quot;&gt;2022年發佈在Facebook粉專&lt;/a&gt;上的文章，但實在是太多人都有同樣的問題，我想還是在Blog再重發一次好了，這樣也比較好找。)&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;螢幕前的光線：掛燈幫助有限 /&amp;nbsp;Screen Light: Desk Lamps Offer Limited Help&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg-AmYFsiy8VF99qwYBJnTR_vBNJAFFb3hCfQKBfAeeCjTiN-ziBbMPo354PcsE2ibbQXd3tG6D6i5NUXvejAJ963SfiQGKgqmg3sv7znLIvNRnsZ7TL45EfZuUGo26lywrQnDCVn-7LVQbwMxz31grAPQRq5igbEYex8TRCLpVyV5J_m3fLcJaoQ&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg-AmYFsiy8VF99qwYBJnTR_vBNJAFFb3hCfQKBfAeeCjTiN-ziBbMPo354PcsE2ibbQXd3tG6D6i5NUXvejAJ963SfiQGKgqmg3sv7znLIvNRnsZ7TL45EfZuUGo26lywrQnDCVn-7LVQbwMxz31grAPQRq5igbEYex8TRCLpVyV5J_m3fLcJaoQ&quot; title=&quot;https://youtu.be/0pUtp0xL4Tk&quot; alt=&quot;https://youtu.be/0pUtp0xL4Tk&quot; class=&quot;original-size&quot;&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://youtu.be/0pUtp0xL4Tk&quot; target=&quot;_blank&quot;&gt;https://youtu.be/0pUtp0xL4Tk&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;說到不夠亮，大部分的人想到的都是螢幕前的光線不足，然後想到的是可以用螢幕掛燈來解決這個問題。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhq3FLgZkpfOcTch7OT6WhCaxagPdHwy3Lig114Rk3uIH4XEwFsCLAiYJq5OAWxZMNimlqgk8y37uI9Bi2gakRDnwoiEQwAKaUGk3G_N9GrYLD3UHWrVGasFLzcp7C086egkTi1e3zBmAlmyXtzEVLmcOPmUaUKCiUPrSCGm4uJGf3btefB6_qtLw&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhq3FLgZkpfOcTch7OT6WhCaxagPdHwy3Lig114Rk3uIH4XEwFsCLAiYJq5OAWxZMNimlqgk8y37uI9Bi2gakRDnwoiEQwAKaUGk3G_N9GrYLD3UHWrVGasFLzcp7C086egkTi1e3zBmAlmyXtzEVLmcOPmUaUKCiUPrSCGm4uJGf3btefB6_qtLw&quot; title=&quot;2025-0326-160621.png&quot; alt=&quot;2025-0326-160621.png&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.kinyo.tw/products/pced855&quot; target=&quot;_blank&quot;&gt;https://www.kinyo.tw/products/pced855&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;令人覺得弔詭的是，螢幕本身就會發光，那為什麼我們還需要螢幕掛燈？我買了螢幕掛燈後，發現螢幕掛燈主要只有改善「桌面」的照度。我的桌面有八成都只有鍵盤跟滑鼠。而我打字操控滑鼠，又不太需要低頭操作。螢幕掛燈的確有讓我的螢幕前變亮了些，但改善的幅度相當有限。反而螢幕掛燈有時候調整不好會造成螢幕反光，反而帶來更多眩光問題。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;螢幕周圍太暗帶來對比炫光的問題 /&amp;nbsp;Contrast Glare from Dark Surroundings Around the Screen&lt;/h2&gt;
&lt;p&gt;另一個很少人注意到的問題是螢幕後的光線不足。「&lt;a href=&quot;https://www.benq.com/zh-tw/reading/mindduo/eye-protection/glare.html&quot; target=&quot;_blank&quot; style=&quot;font-weight: 400; background-color: rgb(255, 255, 255);&quot;&gt;眩光是什麼？5個方法改善眩光問題&lt;/a&gt;」這篇提到了三種炫光種類：直接炫光、反射炫光、跟對比炫光。螢幕後光線不足，造成的結果就是「對比眩光」。&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgD1uk6vqGWhQYmVjrEkdAJO754WcBKXIIRmICxlaoRoRCXWTM_A5NQTcQIOgtIkdzRLK_T89789QZnLyUcYJrhfn20sFRkW939vUcZaAykuJqPBdyvZ9IxA7o0ADyrlopU-NKiCfSY-3-6SguzBfmu32WCUVCqwSygVWEXH1XbLE5PCwQeH2uLJg&quot; style=&quot;color: rgb(35, 82, 124); outline: 0px;&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgD1uk6vqGWhQYmVjrEkdAJO754WcBKXIIRmICxlaoRoRCXWTM_A5NQTcQIOgtIkdzRLK_T89789QZnLyUcYJrhfn20sFRkW939vUcZaAykuJqPBdyvZ9IxA7o0ADyrlopU-NKiCfSY-3-6SguzBfmu32WCUVCqwSygVWEXH1XbLE5PCwQeH2uLJg&quot; title=&quot;2025-0326-162146.png&quot; alt=&quot;2025-0326-162146.png&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.soft4fun.net/product-test-report/benq-wit-lamp.htm&quot; target=&quot;_blank&quot;&gt;https://www.soft4fun.net/product-test-report/benq-wit-lamp.htm&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;造成對比眩光的原因主燈跟背景的明暗對比過大，更容易造成眼睛的疲勞。最常見的就是螢幕本身很亮，可是背景很暗，這樣非常容易造成眼睛的疲憊。上圖的例子就是一個很明顯的對比炫光案例。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEirRl0PplZChDUT0oTQAf-gS9OK12s_P9QMTts_MAVjsPvSV_nZAIwogAxokLJHtQPzRwD7GcqMQVoYYk3hX2qWJ4bMe2i82cocT44YElpUx1JjBHoJUp5l71N_Srl2QSwUPRiNn9gi2-knwBwSj0fKGkyQIqk4vIZktjCvsDWtntFKMmInzaPadA&quot;&gt; &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEirRl0PplZChDUT0oTQAf-gS9OK12s_P9QMTts_MAVjsPvSV_nZAIwogAxokLJHtQPzRwD7GcqMQVoYYk3hX2qWJ4bMe2i82cocT44YElpUx1JjBHoJUp5l71N_Srl2QSwUPRiNn9gi2-knwBwSj0fKGkyQIqk4vIZktjCvsDWtntFKMmInzaPadA&quot; title=&quot;https://www.ikea.com.tw/zh/products/luminaires/floor-lamps/tagarp-art-50486396?gclid=Cj0KCQjw4omaBhDqARIsADXULuVQuU44rWVqTDzPTXih67790Qn_aQaPRrF9sFxr-q6f9JvTMqVdbf8aAtO9EALw_wcB&quot; alt=&quot;https://www.ikea.com.tw/zh/products/luminaires/floor-lamps/tagarp-art-50486396?gclid=Cj0KCQjw4omaBhDqARIsADXULuVQuU44rWVqTDzPTXih67790Qn_aQaPRrF9sFxr-q6f9JvTMqVdbf8aAtO9EALw_wcB&quot; class=&quot;original-size&quot;&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.ikea.com.tw/zh/products/luminaires/floor-lamps/tagarp-art-50486396?gclid=Cj0KCQjw4omaBhDqARIsADXULuVQuU44rWVqTDzPTXih67790Qn_aQaPRrF9sFxr-q6f9JvTMqVdbf8aAtO9EALw_wcB&quot; target=&quot;_blank&quot;&gt;https://www.ikea.com.tw/zh/products/luminaires/floor-lamps/tagarp-art-50486396?gclid=Cj0KCQjw4omaBhDqARIsADXULuVQuU44rWVqTDzPTXih67790Qn_aQaPRrF9sFxr-q6f9JvTMqVdbf8aAtO9EALw_wcB&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我以前也有試著在桌上架設檯燈，但每次都讓我覺得眼睛更不舒服。現在才知道，這就是對比炫光的問題。後來我的解決方法是買一盞上照落地燈。不是往下照的檯燈，因為檯燈只會加劇對比眩光，我的目的是讓整個房間變亮。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgWhSuxicTMI9Qm_arVp73rE7YxTNvwrUBfW6lMq-7fepYnLWfBT9I79a7hzjOrXM-ZBaQ8NZiFNFHBpWk9gLkTc1ROCPpFNyuQQbYrEWMok1N4gmKI7NDsOhLTAsDbjWqLqEuq2Ram57bJW4o8WDas2d30UL2dQnXBF9Y7QN2jROJ7UoW8SLMw2Q&quot;&gt; &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgWhSuxicTMI9Qm_arVp73rE7YxTNvwrUBfW6lMq-7fepYnLWfBT9I79a7hzjOrXM-ZBaQ8NZiFNFHBpWk9gLkTc1ROCPpFNyuQQbYrEWMok1N4gmKI7NDsOhLTAsDbjWqLqEuq2Ram57bJW4o8WDas2d30UL2dQnXBF9Y7QN2jROJ7UoW8SLMw2Q&quot; title=&quot;https://www.youtube.com/watch?v=PTyBt8KqVL0&quot; alt=&quot;https://www.youtube.com/watch?v=PTyBt8KqVL0&quot; class=&quot;original-size&quot;&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=PTyBt8KqVL0&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=PTyBt8KqVL0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;IKEA的落地燈真的解決了我的困擾。而且落地燈的支柱是分多節組裝，我少裝兩節，它放在桌上就很剛好了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg4M4GmFrMTV2xet9va1FlNh3dQsWwIn_lNPV3B0ppFRVpbpQ0I37yVBj5evYI6ESlUtJsqpSo_5Qs15aC-akp1zXt0o7qtTxhuRmEXdETRgjuhCLOaH4AfgC9DwwvzMS78HwmuZEwAV2JX2ljJP2PVhVyMbtA-kNNXfMwmWRFUu1tnPDQNZwvmgg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg4M4GmFrMTV2xet9va1FlNh3dQsWwIn_lNPV3B0ppFRVpbpQ0I37yVBj5evYI6ESlUtJsqpSo_5Qs15aC-akp1zXt0o7qtTxhuRmEXdETRgjuhCLOaH4AfgC9DwwvzMS78HwmuZEwAV2JX2ljJP2PVhVyMbtA-kNNXfMwmWRFUu1tnPDQNZwvmgg&quot; title=&quot;20250326_160414.jpg&quot; alt=&quot;20250326_160414.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;此外，讓螢幕周圍盡可能呈現跟螢幕相同的亮度，例如用白牆、白色簾子遮蓋、減少陰影，這樣也可以減少對比炫光帶來的影響。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;結語：工作桌燈光佈置的考量 / Conclusion: Considerations for Desk Lighting Placement&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgQhG2cIWcGGBqdrfcFsNCi_oxpB-_yku440oRPxscyUfEiMuMVibHiex0XGuFgTa4upeAW_pfMS8kAW1sTwORORbwmfSJc7FkwF69C_M6yKBYKQxTYAlF6YcQfAnzbf-dn7LOTcOIFa2IV2xW0nQdPQ_MCKh6AcLGDIpysNEh6AI2pFGgnr6vH7A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgQhG2cIWcGGBqdrfcFsNCi_oxpB-_yku440oRPxscyUfEiMuMVibHiex0XGuFgTa4upeAW_pfMS8kAW1sTwORORbwmfSJc7FkwF69C_M6yKBYKQxTYAlF6YcQfAnzbf-dn7LOTcOIFa2IV2xW0nQdPQ_MCKh6AcLGDIpysNEh6AI2pFGgnr6vH7A&quot; title=&quot;2025-0326-161444.png&quot; alt=&quot;2025-0326-161444.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我現在工作時通常會同時開啟螢幕掛燈跟落地燈。其中落地燈真的改善了整個工作的環境。沒有開落地燈的話，我很快就會覺得眼睛痠、無法繼續工作。但開了落地燈、照亮房間之後，我會覺得整個人舒適很多。&lt;/p&gt;
&lt;p&gt;當然，很多人就是不希望家裡的燈光太亮。如果亮的跟辦公室一樣的話，那回家不就沒有放鬆的氣氛了嗎？呃，對，我得說這幾乎是我個人，以及少部分需要在家裡工作的人才會有的問題。&lt;/p&gt;
&lt;h3&gt;氣氛燈跟工作照明的實用時機不同 /&amp;nbsp;Practical Uses of Mood Lighting and Task Lighting&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhtkVw4xZx9Ng9Nb0I0r1z7cNNi2_-dW_PtqZPLvhMWUhoUcfKm2XkeChR8SH07ttD_YOd9JcXVTwl6qUPz4pkOZMPR1yZ1neg_8WnukKghEEyYQdxDa6boybLN63raUPl9alGY12Y_a-ozfpAidnvPyq1mCNmHrOz-wmWvfOPdLXpH8m0AE2VxRg&quot;&gt; &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhtkVw4xZx9Ng9Nb0I0r1z7cNNi2_-dW_PtqZPLvhMWUhoUcfKm2XkeChR8SH07ttD_YOd9JcXVTwl6qUPz4pkOZMPR1yZ1neg_8WnukKghEEyYQdxDa6boybLN63raUPl9alGY12Y_a-ozfpAidnvPyq1mCNmHrOz-wmWvfOPdLXpH8m0AE2VxRg&quot; title=&quot;https://www.youtube.com/watch?v=7vMIsKNAvUs&quot; alt=&quot;https://www.youtube.com/watch?v=7vMIsKNAvUs&quot; class=&quot;original-size&quot;&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=7vMIsKNAvUs&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=7vMIsKNAvUs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;有些人主張應該在背景裝氣氛燈。就是不太亮、有多種顏色的那種燈。最好能夠隨著電腦狀態、音樂的播放同步改變顏色。&lt;/p&gt;
&lt;p&gt;前面提到的對比眩光是因為前景(螢幕)跟背景(房間)的光亮程度差異過大，造成讓人眼睛疲憊的炫光現象。為什麼大家會使用跟一般燈泡暗很多的氣氛燈，還主張在這種環境下長時間使用電腦呢？&lt;/p&gt;
&lt;p&gt;這個問題經過我長時間的思索，其中一個可能是：大家的螢幕並不是顯示高亮度的畫面。舉例來說，我需要讀paper跟寫文件，PDF跟編輯器的背景大多都是白色底，整個螢幕就會很亮。但如果是玩遊戲、看電影，那大家的螢幕就不會這麼亮。這時候如果背後的燈光太亮，反而才會造成落差。&lt;/p&gt;
&lt;p&gt;所以結論就是，這是不是又是我個人的問題啊...？&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;你有使用電腦時光線不足的問題嗎？&lt;/p&gt;
&lt;p&gt;你都是怎麼解決的呢？&lt;/p&gt;
&lt;p&gt;在下面跟大家分享吧！&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/7523888999189016729/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/08/are-you-tired-of-looking-at-the-computer-pay-more-attention-to-glare-than-the-screen.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/7523888999189016729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/7523888999189016729'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/08/are-you-tired-of-looking-at-the-computer-pay-more-attention-to-glare-than-the-screen.html' title='看電腦覺得疲憊嗎？比起螢幕，你更應該注意炫光的問題 / Are You Tired of Looking at the Computer? Pay More Attention to Glare Than the Screen'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhkKehad4z5vBUmoUKjO57Rv2MZ77_77WOdMH1nlDM7Nzsi7D7tZb43ZwDI0uOanL1FyUyZUgXdl191fLCB4axZI-EskNkk0sc1O1Zt_ZT6w6VyA67cNEz54WGAf-XwFO70LAu-QJdLMVIl0QnzoGQrdeVzFpgz0k01u7lZQtv0qcTPQEZicu-BxQ=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-6722666992487662012</id><published>2025-08-18T12:00:00.007+08:00</published><updated>2025-08-18T12:00:00.113+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="chair"/><category scheme="http://www.blogger.com/atom/ns#" term="Ergonomics"/><category scheme="http://www.blogger.com/atom/ns#" term="Monitor"/><category scheme="http://www.blogger.com/atom/ns#" term="Table"/><title type='text'>為何桌前打字總是腰痠背痛？桌子高度和螢幕高度對人體工學的影響 / The Effect of Desk and Monitor Height on Ergonomics: Why Does Typing at a Desk Often Lead to Back Pain?</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgir4cQQf1yr2Qerqfkyr-l-h7XWNS8EDEeQV62dNaDDVtP1KYiTRtIsjTGkFZFOfAHqMt7pl7_4pgUIGAF_FfsHCt37Pa6a42uQ74dhvoNGeKDjdvH_-7pFFRATVIggCx34XoW-izeAfMHWWSNQLczUahKqP9ib2OHYhzLfxJ4znX7sur1gioYWw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgir4cQQf1yr2Qerqfkyr-l-h7XWNS8EDEeQV62dNaDDVtP1KYiTRtIsjTGkFZFOfAHqMt7pl7_4pgUIGAF_FfsHCt37Pa6a42uQ74dhvoNGeKDjdvH_-7pFFRATVIggCx34XoW-izeAfMHWWSNQLczUahKqP9ib2OHYhzLfxJ4znX7sur1gioYWw&quot; title=&quot;2025-0326-155218.png&quot; alt=&quot;2025-0326-155218.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;自從買了螢幕支架之後，我開始對所謂的「人體工學」完全改觀了。我認為比起購買昂貴的「人體工學椅」，調整合適的桌子高度跟螢幕高度，可能才是解決你腰痠背痛的關鍵因素。&lt;/p&gt;
&lt;p&gt;Ever since I bought a monitor stand, my entire perspective on &quot;ergonomics&quot; has completely changed. I think that adjusting your desk and monitor to the proper height is probably more key to solving your back pain than buying an expensive &quot;ergonomic chair&quot;.&lt;/p&gt;
&lt;p&gt;(這篇本來是&lt;a href=&quot;https://www.facebook.com/blog.pulipuli.info/posts/9080620268630014&quot; target=&quot;_blank&quot;&gt;2022年發佈在Facebook粉專上的文章&lt;/a&gt;，但實在是太多人都有同樣的問題，我想還是在Blog再重發一次好了，這樣也比較好找。)&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;椅子不是人體工學的全部 /&amp;nbsp;Chairs Are Not the Whole of Ergonomics&lt;/h2&gt;
&lt;p&gt;對於我們這種時常坐在辦公桌前面的工作者來說，談到人體工學，你會想到什麼呢？很多人直覺上應該想到的是「椅子」吧。「人體工學椅」，「人體工學」四個字明明白白地寫在上面了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhyf4xdeITjxiDjAAwNqpZMq6WoYqPvHU8te5o8kTHhrwgRBNLX6myhpo2tSaYMTG8D3w31Vmw5Rr2INgj0rHf1JA9lNOAFNFeFg8kVB27B1wF9bGUQxORD5GDEAww3rs4gKP2f9wPZeFcc3pSYJiq9Njj2qkhy3MHnY0wCbGFh-cw9KHnGKe--PA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhyf4xdeITjxiDjAAwNqpZMq6WoYqPvHU8te5o8kTHhrwgRBNLX6myhpo2tSaYMTG8D3w31Vmw5Rr2INgj0rHf1JA9lNOAFNFeFg8kVB27B1wF9bGUQxORD5GDEAww3rs4gKP2f9wPZeFcc3pSYJiq9Njj2qkhy3MHnY0wCbGFh-cw9KHnGKe--PA&quot; title=&quot;https://www.youtube.com/watch?v=_uFc5MyV6ag&quot; alt=&quot;https://www.youtube.com/watch?v=_uFc5MyV6ag&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=_uFc5MyV6ag&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=_uFc5MyV6ag&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;但我最近研究的結果是：椅子反而是最不重要的一塊。&lt;/p&gt;
&lt;p&gt;因為普通的一張摺疊椅，有靠背，椅墊到地板的高度大概在45cm左右，大概都可以滿足「雙腳平放在地面」、「背部稍微有依靠」的最低需求。&lt;/p&gt;
&lt;p&gt;當然，更高級的椅子坐起來更舒適，但它並不能改善你的腰痠背痛。&lt;/p&gt;
&lt;p&gt;大家應該都知道，腰痠背痛的原因是來自於坐姿不正確。說到坐姿不正確，大家應該都會想到的是椅子不夠人體工學。一把好的椅子的確可以讓你坐得端正，不過很遺憾的是，我們工作時並不只是坐在椅子上。&lt;/p&gt;
&lt;p&gt;我認為影響辦公人體工學的兩個關鍵因素：桌子高度跟螢幕高度。改善這兩個因素，就能夠改善90%腰痠背痛的症狀。&lt;br&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;桌子高度才是人體工學的關鍵 /&amp;nbsp;Desk Height Is Key to Ergonomics&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEifMPx40Lp1C1DDsbyZ3cEEFwNzTDToKmE8ZQe-xb8tr3a2IiFVZEYPuf7YD-f3-N5cjnb8prprp4iIijOp4PJR08hyz_RjjOKTEFTX45CTeMKDIAk5xwYiUv3SSpt41AIrf3GHUM0c_gpF4EP62joQGCHKShByxrkpJgkJ8-NrkdSIleg8vK-ayA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEifMPx40Lp1C1DDsbyZ3cEEFwNzTDToKmE8ZQe-xb8tr3a2IiFVZEYPuf7YD-f3-N5cjnb8prprp4iIijOp4PJR08hyz_RjjOKTEFTX45CTeMKDIAk5xwYiUv3SSpt41AIrf3GHUM0c_gpF4EP62joQGCHKShByxrkpJgkJ8-NrkdSIleg8vK-ayA&quot; title=&quot;2025-0326-155350.png&quot; alt=&quot;2025-0326-155350.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://youtu.be/_uFc5MyV6ag&quot; target=&quot;_blank&quot;&gt;https://youtu.be/_uFc5MyV6ag&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;第一個要克服的是聳肩的問題：&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: red; font-weight: bold; text-decoration: underline;&quot;&gt;1. 桌子的高度應該在65公分高&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;標準辦公桌的高度是75公分高，但這個高度其實是造成你聳肩的元兇。如果是寫文件、看文件，75公分相對合理，但以打鍵盤、操作滑鼠來說，75公分真的是太高了。根據我的觀察，就算是200公分高的人，75公分的桌子也還是聳肩。(有人主張45公分高的茶几就能工作，我得說，放過那些孩子吧。)&lt;/p&gt;
&lt;p&gt;研究下來，我認為理想的桌面高度大概是&lt;span style=&quot;color: red; font-weight: bold; text-decoration: underline;&quot;&gt;65公分高&lt;/span&gt;。&lt;/p&gt;
&lt;p&gt;很多人以為要把桌面高度降到65公分就只能去買升降桌，這也是謬誤。有些兩節式升降桌最低高度還是75公分，只有更貴的三節式才有機會降到65公分。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh07vsBfddC_pBTkQsPtv7HT4y0FX-2vapoL3EBg_fMxM9TprG4V5CzeFJbsk0tk-7CEVDJMbw46RrFDPXt19r8vtNBS67o70WnrAheGS0DOqCRmeEfZvOxZoSch6ZKQuH4-HrUoM_AV6Wz7TjZD2Wa2pX-evX3B3ofFeuOT_ZCE8yNYIVWLCXg7w&quot; style=&quot;color: rgb(35, 82, 124); outline: 0px; font-weight: 400; background-color: rgb(255, 255, 255);&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh07vsBfddC_pBTkQsPtv7HT4y0FX-2vapoL3EBg_fMxM9TprG4V5CzeFJbsk0tk-7CEVDJMbw46RrFDPXt19r8vtNBS67o70WnrAheGS0DOqCRmeEfZvOxZoSch6ZKQuH4-HrUoM_AV6Wz7TjZD2Wa2pX-evX3B3ofFeuOT_ZCE8yNYIVWLCXg7w&quot; title=&quot;2025-0326-150405.png&quot; alt=&quot;2025-0326-150405.png&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEimlzivZCl17S6cpPQrhJliZrB0-TV2ssBNvMVcG7khgNd5nLWU4INmzgwwy4rNox8vLtAdVhdZplH-6NftIaJ0gyqGMFI8J5M4F_emT01HKX5Ifj8UodVVFIvQkNHBaZ3cMocGqESX1pZOpI9HybSOkM2EwN920V3ZrSBwEd8OwZI0sSSITzRIgQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEimlzivZCl17S6cpPQrhJliZrB0-TV2ssBNvMVcG7khgNd5nLWU4INmzgwwy4rNox8vLtAdVhdZplH-6NftIaJ0gyqGMFI8J5M4F_emT01HKX5Ifj8UodVVFIvQkNHBaZ3cMocGqESX1pZOpI9HybSOkM2EwN920V3ZrSBwEd8OwZI0sSSITzRIgQ&quot; title=&quot;2025-0326-150432.png&quot; alt=&quot;2025-0326-150432.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.ikea.cn/cn/zh/p/bekant-bei-ken-te-you-ce-zhuan-jiao-shi-ban-gong-zhuo-bai-se-hei-se-s39222533/&quot; target=&quot;_blank&quot;&gt;https://www.ikea.cn/cn/zh/p/bekant-bei-ken-te-you-ce-zhuan-jiao-shi-ban-gong-zhuo-bai-se-hei-se-s39222533/&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;不過就算不買升降桌，用心一點還是可以找到65公分高的桌子。IKEA BEKANT轉角桌能夠手動調整桌子的高低，最低就是65公分。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh8O9veGSdMeQlRA23Qg3QMK8cA2viBnG98XHy5VkuaL5MniXDhz3JAmuy15Zw91oME-xyvezLKGfK5d5ZvKsMRGPAR50BIGYTWfFBHnyLbFEAf59_8hxzlDVhPKSCaR_UT9PDw0mWjyBtndYM1xGsSIow0kaKeuWeHkhhgY317eZ1Aru7SxzLkbQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh8O9veGSdMeQlRA23Qg3QMK8cA2viBnG98XHy5VkuaL5MniXDhz3JAmuy15Zw91oME-xyvezLKGfK5d5ZvKsMRGPAR50BIGYTWfFBHnyLbFEAf59_8hxzlDVhPKSCaR_UT9PDw0mWjyBtndYM1xGsSIow0kaKeuWeHkhhgY317eZ1Aru7SxzLkbQ&quot; title=&quot;2025-0326-150446.png&quot; alt=&quot;2025-0326-150446.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.ergomap.com.tw/product/kt_ez33/?utm_source=Google%20Shopping&amp;amp;utm_campaign=Google%20shopping%20product%20feed&amp;amp;utm_medium=cpc&amp;amp;utm_term=2966&amp;amp;gclid=Cj0KCQjw4omaBhDqARIsADXULuU0dgQuK2Se3EMf6jQboitAld6-S-Fk3Tmu_EZ1ByfCS18AXtW0APMaAk_kEALw_wcB&quot; target=&quot;_blank&quot;&gt;https://www.ergomap.com.tw/product/kt_ez33/?utm_source=Google%20Shopping&amp;amp;utm_campaign=Google%20shopping%20product%20feed&amp;amp;utm_medium=cpc&amp;amp;utm_term=2966&amp;amp;gclid=Cj0KCQjw4omaBhDqARIsADXULuU0dgQuK2Se3EMf6jQboitAld6-S-Fk3Tmu_EZ1ByfCS18AXtW0APMaAk_kEALw_wcB&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一般做法大多都是安裝鍵盤支撐架，讓桌面下方加上一塊鍵盤滑鼠擺放的層架。&lt;br&gt;但鍵盤滑鼠的操作空間會變得很侷促，人又必須坐得離桌面更遠一點才行。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;螢幕高度造成駝背的問題 /&amp;nbsp;Screen Height Causes Hunchback&lt;/h2&gt;
&lt;p&gt;就算桌面成功降低，讓你打字不再聳肩。我們還要克服第二個問題：駝背。&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: red; font-weight: bold; text-decoration: underline;&quot;&gt;2. 螢幕高度應該要讓你不用低頭或彎頭&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;現代很多人都用筆電取代桌上型電腦，整個人只能駝背打字、看螢幕，這當然不好。但外接了螢幕，螢幕支架通常也不夠高，導致很多人看螢幕還是繼續駝背。特別是如果我們把桌子降低到65公分，那就會讓螢幕的高度更矮了些。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiUVAcSau9GNeZ7VZ1YjctG36I-QnW_7JZ8YZ9KmypVn8ck3lcHxomcVijJvUopnGjQNopQFP9Efji6gAjHTu6FtEar_LefiqaKPBKltO6Psx59Uh8F5yWeo5x4hmQZFMlN3MSrmfq5T561gfsfHuzVs2jlpKL8dAeMWH1AZHYfQC0ihfnehRv9fA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiUVAcSau9GNeZ7VZ1YjctG36I-QnW_7JZ8YZ9KmypVn8ck3lcHxomcVijJvUopnGjQNopQFP9Efji6gAjHTu6FtEar_LefiqaKPBKltO6Psx59Uh8F5yWeo5x4hmQZFMlN3MSrmfq5T561gfsfHuzVs2jlpKL8dAeMWH1AZHYfQC0ihfnehRv9fA&quot; title=&quot;2025-0326-151847.png&quot; alt=&quot;2025-0326-151847.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://store.raymii.com.tw/pages/raymii-monitor-arm-guide&quot; target=&quot;_blank&quot;&gt;https://store.raymii.com.tw/pages/raymii-monitor-arm-guide&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這時候，螢幕支撐架就是不可或缺的關鍵設備了。&lt;/p&gt;
&lt;p&gt;我以前大多用墊箱子或架子來架高螢幕，但是一來這樣架螢幕不太穩，二來是不太容易調整到理想高度，最後就是墊高的架子跟箱子非常佔桌面空間。&lt;/p&gt;
&lt;p&gt;這時候花些錢買個螢幕支撐架，真的可以大副度改善上述狀況。我們很容易可以把螢幕高度跟角度調整到合適的位置。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgFL5BZtIHDbgf2xp86ILKx0uox5Z3VGXdSYAElr3oid_jsnlL5HwtdOsoEnB3PxwWipUorPXpB9gVrZVDd3OGBdZZc_OPqsas6rRtL3JBtQiB3LtFPwHsvREngsk1CD8rjvaP3xTQGAicNJDveZ81fpL8DkpEQ8gfTL-57iCL9ZVzOsIgiuNzcRA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgFL5BZtIHDbgf2xp86ILKx0uox5Z3VGXdSYAElr3oid_jsnlL5HwtdOsoEnB3PxwWipUorPXpB9gVrZVDd3OGBdZZc_OPqsas6rRtL3JBtQiB3LtFPwHsvREngsk1CD8rjvaP3xTQGAicNJDveZ81fpL8DkpEQ8gfTL-57iCL9ZVzOsIgiuNzcRA&quot; title=&quot;2025-0326-151930.png&quot; alt=&quot;2025-0326-151930.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.ergotron.com/tools/workspace-planner&quot; target=&quot;_blank&quot;&gt;https://www.ergotron.com/tools/workspace-planner&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;那話說回來，什麼是螢幕合適的位置呢？&lt;/p&gt;
&lt;p&gt;很多人都說是「螢幕上緣應該跟視線齊平」，但事實上那是使用15吋螢幕的時代才會用的基準。我主要使用的螢幕都是24吋，很多人的螢幕都比我大得多。如果你平視只能看到螢幕上緣，那表示你得低頭才能看到螢幕其他部分。&lt;/p&gt;
&lt;p&gt;根據我的經驗來看，我們要把握的原則仍然是「不要駝背」跟「盡可能讓眼睛直視前方」。以我24吋的螢幕來看，我的水平視線會在螢幕上面量下來的1/3，也就是說螢幕稍微比我本人坐著的時候還要高一點。這樣子的配置下，我的頭可以保持水平，不需要大副度擺動，眼球也只要稍微上下就能掌握整個桌面的狀態。而且這個高度配置會引導我維持正確的坐姿，不會低頭，也不會駝背。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;不是買椅子就能解決人體工學的問題 /&amp;nbsp;Ergonomics Is Not Solved by Buying a Chair&lt;/h2&gt;
&lt;p&gt;根據我的觀察，坐辦公桌抱怨腰痠背痛、手腕痛的人，有9成都沒有做到上述兩點，剩下那1成是真的坐太久了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEglEkQssHL2xcLyI_NYCqFlKjrvJ3Qa02w3KM_-X46jy5mLlrmSHrWxMrvw30GvfvCq__q5oeVoKA0dBfR5IyLPTzmt-KL2qkSmLU_814EDx6kfEFdK5leteALPlEha0XCvsZb9zyEbz8dlVzFpZ3xpfra2o-sI6ASU3Cy6xUh49U-G5Vh0ogIDoA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEglEkQssHL2xcLyI_NYCqFlKjrvJ3Qa02w3KM_-X46jy5mLlrmSHrWxMrvw30GvfvCq__q5oeVoKA0dBfR5IyLPTzmt-KL2qkSmLU_814EDx6kfEFdK5leteALPlEha0XCvsZb9zyEbz8dlVzFpZ3xpfra2o-sI6ASU3Cy6xUh49U-G5Vh0ogIDoA&quot; title=&quot;2025-0326-150713.png&quot; alt=&quot;2025-0326-150713.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://forum.gamer.com.tw/C.php?bsn=60030&amp;amp;snA=507763&quot; target=&quot;_blank&quot;&gt;https://forum.gamer.com.tw/C.php?bsn=60030&amp;amp;snA=507763&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這些人之中，有八成的人會以為是椅子的問題，轉而去買人體工學椅。&lt;br&gt;大部分人體工學椅的賣家都會斥責你坐姿不對，只有坐好椅子，你才能擁有正確坐姿。&lt;/p&gt;
&lt;p&gt;但桌面問題不改善的話，人體工學椅引導你正確的坐姿，會跟不正確的桌面配置相互衝突，導致腰痠背痛的狀況更加明顯。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=hM2AL7XUoHg&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=hM2AL7XUoHg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;有三成的人認為買升降桌來站著工作可以解決這個問題。殊不知，站著工作還是會遭遇上面兩個因素：桌子高度導致聳肩，螢幕高度讓你駝背。此外還會延伸其他問題。&lt;/p&gt;
&lt;p&gt;大概會有七成的人會說你應該要站起來動一動，不要一直坐著。或著是什麼核心肌群不夠有力，身體肌肉不足才無法抵抗疼痛。這些人認為坐辦公桌的各種疼痛是必要之惡，無法避免。也就自然沒有想過要去改善聳肩跟駝背的根本元兇。&lt;/p&gt;
&lt;p&gt;至於為什麼上面的幾成幾成好像加起來超過10成，那是因為大多數人都會抱持複數的解決方案。例如「要改善痠痛問題，必須要買人體工學椅，然後不要常常坐著」。&lt;/p&gt;
&lt;p&gt;嗯？是不是邏輯上看起來怪怪的？&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;結語：偽人體工學設計反而傷身體 / Conclusion: Pseudo-Ergonomic Designs That Hurt the Body&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhSI8o_oIHsmHKQh4GfX3se6hdnqe6IYPR5zKGaIigXA3hljcybqWeeFVzHof8Ic4EvrZ3SfgCewQeaSMqtoF4DfEqoRL_NPStVMo9SAGSxgk9ZkH-NV2DXjVoftbo1HCuOHn_GDAuk0my0jI9YK3WeX2gTCUigkgkjy240xuCuVyTED_bN38daAQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhSI8o_oIHsmHKQh4GfX3se6hdnqe6IYPR5zKGaIigXA3hljcybqWeeFVzHof8Ic4EvrZ3SfgCewQeaSMqtoF4DfEqoRL_NPStVMo9SAGSxgk9ZkH-NV2DXjVoftbo1HCuOHn_GDAuk0my0jI9YK3WeX2gTCUigkgkjy240xuCuVyTED_bN38daAQ&quot; title=&quot;2025-0326-152953.png&quot; alt=&quot;2025-0326-152953.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://finance.ettoday.net/news/732267&quot; target=&quot;_blank&quot;&gt;https://finance.ettoday.net/news/732267&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;自從研究這個議題之後，我覺得自己整個人變得超級草莓。&lt;/p&gt;
&lt;p&gt;大部分的桌椅配置，每次看都覺得這裡痛、那裡痛。光是上面這張職場示意圖，我們就可以看出許多問題：桌子太高了導致人體肩膀往上擡，會傷到肩膀跟脖子；座椅無法坐到底，讓坐姿的力量無法分散到腰、大腿和腳底。而且這種辦公椅會滑動，你要用腰和腿來固定身體，會給腰帶來更多負擔。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEixV204Ii0ME7avptC5MyA6eiefiBSmPAKxlAL7wvA-zYX8SH66VpUn9RCIIgD_Qp0Qf71-pmVHaqbqpDuiC2fEYIz_t5pWyFgUTP3hMMra3eOppwd38rNmciD65IJ3gAWI_e_6RK7LINNADTaq_GfOEPupXJMMygR9LJl-MGc3ReKlLA4ww-gzMg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEixV204Ii0ME7avptC5MyA6eiefiBSmPAKxlAL7wvA-zYX8SH66VpUn9RCIIgD_Qp0Qf71-pmVHaqbqpDuiC2fEYIz_t5pWyFgUTP3hMMra3eOppwd38rNmciD65IJ3gAWI_e_6RK7LINNADTaq_GfOEPupXJMMygR9LJl-MGc3ReKlLA4ww-gzMg&quot; title=&quot;2025-0326-153530.png&quot; alt=&quot;2025-0326-153530.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://shopee.tw/%E3%80%90%E7%A7%91%E6%8A%80%E5%B8%83%E6%96%99%E3%80%91XpanseD001%E6%B7%B5%E7%81%B0-%E9%9B%BB%E7%AB%B6%E6%A4%85%E4%BA%BA%E9%AB%94%E5%B7%A5%E5%AD%B8%E6%A4%85-%E8%A8%98%E6%86%B6%E6%B5%B7%E7%B6%BF-%E9%9B%BB%E8%85%A6%E6%A4%85%E8%BE%A6%E5%85%AC%E6%A4%85%E9%81%8A%E6%88%B2%E6%A4%85-%E5%8D%87%E9%99%8D%E6%97%8B%E8%BD%89%E6%A4%85-i.33230814.24789090925?sp_atk=27778689-53e5-4f1c-b24f-f2177c23486a&amp;amp;xptdk=27778689-53e5-4f1c-b24f-f2177c23486a&quot; target=&quot;_blank&quot;&gt;https://shopee.tw/%E3%80%90%E7%A7%91%E6%8A%80%E5%B8%83%E6%96%99%E3%80%91XpanseD001%E6%B7%B5%E7%81%B0-%E9%9B%BB%E7%AB%B6%E6%A4%85%E4%BA%BA%E9%AB%94%E5%B7%A5%E5%AD%B8%E6%A4%85-%E8%A8%98%E6%86%B6%E6%B5%B7%E7%B6%BF-%E9%9B%BB%E8%85%A6%E6%A4%85%E8%BE%A6%E5%85%AC%E6%A4%85%E9%81%8A%E6%88%B2%E6%A4%85-%E5%8D%87%E9%99%8D%E6%97%8B%E8%BD%89%E6%A4%85-i.33230814.24789090925?sp_atk=27778689-53e5-4f1c-b24f-f2177c23486a&amp;amp;xptdk=27778689-53e5-4f1c-b24f-f2177c23486a&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;另一方面，很多人體工學椅的展示影片，我光看就覺得身體開始痛了起來。上面這張椅子坐深太深了，模特兒無法坐到底，於是只好翹腳或盤腿，這樣會加重對腰部的傷害；左右扶手太寬了，模特兒如果要靠手，就得要張開雙臂或讓姿勢傾斜，這也會對脊椎和肩膀造成傷害。&lt;br&gt;&lt;/p&gt;
&lt;p&gt;現在一堆人追求電競椅、人體工學椅、升降桌什麼的，就讓人覺得更加無奈...&lt;/p&gt;
&lt;p&gt;這段期間試坐了一堆人體工學椅，沒有一把比我這張六百元的摺疊椅更不會讓我腰痛。到最後拯救我坐姿的，還是高度65公分的桌子，以及抬起我螢幕的支撐架。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg75ECDTjkH3sV-wRR4NmmwR4qq40Esk5aUNDGtiW0zaJ1EeK01aYYSAhc-jZPdBNOXOyK10SYPRR7tZPi4jEX2JA4i9doOEtqSD4LFASzDLWGragT0JAC8zYAaAgmVUSAY2X73u2GBOdD3yNBxQweMh_AMJu0MRqAvzuHnuwvbk9HadtPvvhb5dw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg75ECDTjkH3sV-wRR4NmmwR4qq40Esk5aUNDGtiW0zaJ1EeK01aYYSAhc-jZPdBNOXOyK10SYPRR7tZPi4jEX2JA4i9doOEtqSD4LFASzDLWGragT0JAC8zYAaAgmVUSAY2X73u2GBOdD3yNBxQweMh_AMJu0MRqAvzuHnuwvbk9HadtPvvhb5dw&quot; title=&quot;https://youtu.be/I2hvD9Y2CbA&quot; alt=&quot;https://youtu.be/I2hvD9Y2CbA&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://youtu.be/I2hvD9Y2CbA&quot; target=&quot;_blank&quot;&gt;https://youtu.be/I2hvD9Y2CbA&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;如果想要獲得正確的人體工學知識，真的應該多看看三個字物理治療的介紹。解決根本原因才是克服腰痠背痛的正確做法，針灸跟推拿只是治標不治本而已。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;你有坐辦公桌坐到腰痠背痛的經驗嗎？&lt;/p&gt;
&lt;p&gt;你都是怎麼克服的呢？&lt;/p&gt;
&lt;p&gt;歡迎下面分享~&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/6722666992487662012/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/08/the-effect-of-desk-and-monitor-height-on-ergonomics-why-does-typing-at-a-desk-often-lead-to-back-pain.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/6722666992487662012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/6722666992487662012'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/08/the-effect-of-desk-and-monitor-height-on-ergonomics-why-does-typing-at-a-desk-often-lead-to-back-pain.html' title='為何桌前打字總是腰痠背痛？桌子高度和螢幕高度對人體工學的影響 / The Effect of Desk and Monitor Height on Ergonomics: Why Does Typing at a Desk Often Lead to Back Pain?'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgir4cQQf1yr2Qerqfkyr-l-h7XWNS8EDEeQV62dNaDDVtP1KYiTRtIsjTGkFZFOfAHqMt7pl7_4pgUIGAF_FfsHCt37Pa6a42uQ74dhvoNGeKDjdvH_-7pFFRATVIggCx34XoW-izeAfMHWWSNQLczUahKqP9ib2OHYhzLfxJ4znX7sur1gioYWw=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-1466584669031105670</id><published>2025-08-11T12:00:00.007+08:00</published><updated>2025-08-11T12:00:00.109+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hardware"/><category scheme="http://www.blogger.com/atom/ns#" term="Network"/><category scheme="http://www.blogger.com/atom/ns#" term="Phone"/><title type='text'>行動網路無法連線？三星手機簡易解決方案 / Mobile Network Not Connecting? Easy Solutions for Samsung Phones</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiXXKXuSmI3wA3y30VxANDeXSsqrOcDitceEPT84U-VfzkhLCs-d_7zC8SbEhzikktTh0ukY9a6oPGu1O52rOkJzPYnAYgUpTp7ME4tHxNc2ALBCBcUw8qv7K5DRwGG1Oxd5A2BBPoPy8_G1wXWsLYB-YKOXomn-SsKuermNDbMPki1Q9ui3AXFPg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiXXKXuSmI3wA3y30VxANDeXSsqrOcDitceEPT84U-VfzkhLCs-d_7zC8SbEhzikktTh0ukY9a6oPGu1O52rOkJzPYnAYgUpTp7ME4tHxNc2ALBCBcUw8qv7K5DRwGG1Oxd5A2BBPoPy8_G1wXWsLYB-YKOXomn-SsKuermNDbMPki1Q9ui3AXFPg&quot; title=&quot;2025-0301-162157.png&quot; alt=&quot;2025-0301-162157.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果手機無法連上4G或5G網路，除了重開機或短暫切換成飛航模式之外，還可以將SIM卡的網路模式暫時切換，讓4G或5G網路斷線後重連，這樣就可以讓行動網路重新運作了。&lt;/p&gt;
&lt;p&gt;If your phone can&#39;t connect to a 4G or 5G network, besides restarting your phone or briefly switching to airplane mode, you can also temporarily switch the network mode of your SIM card to disconnect and reconnect to the 4G or 5G network. This can get your mobile network working again.&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;問題說明 / Issue&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhoyE3GxA6seo-deSQbvMRlGnQEsNOLschD6GauGJPvn8i92kdfOaJgVUifQ4u4luJObMY7O4pFBYesfzOcjNx8_JK-U-Eddt1EgsTwXCxW7KMKFuGdt7pHkJ74b7InwqK3hDcRKkdoYSR1FiDG2xclrqIa4tK3lZGOtNtKddoJ8MJJ10EUriN11Q&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhoyE3GxA6seo-deSQbvMRlGnQEsNOLschD6GauGJPvn8i92kdfOaJgVUifQ4u4luJObMY7O4pFBYesfzOcjNx8_JK-U-Eddt1EgsTwXCxW7KMKFuGdt7pHkJ74b7InwqK3hDcRKkdoYSR1FiDG2xclrqIa4tK3lZGOtNtKddoJ8MJJ10EUriN11Q&quot; title=&quot;IMG_20250301_154117994.jpg&quot; alt=&quot;IMG_20250301_154117994.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我使用的手機是Samsung XCover6 Pro，作業系統是Android 14、One UI 6.1。今天出門的時候赫然發現手機沒辦法使用行動網路了。確認了合約依然生效、通訊商的行動網路也正常之後，打電話向客服求救。&lt;/p&gt;
&lt;p&gt;客服耐心地指示我怎麼處理問題，而這的確也很有幫助，因此我也在這裡把做法整個敘述一次。&lt;/p&gt;
&lt;h2&gt;解決方法 / Solution&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhPIsG1nzsqBGW0zZhCz3bQko4C6jOSGef4NrBDVIcVAdP7q06LDewlCQbFbFgfeGWFEZ8DjtJydbksKFgTYBq0siaT6GkS5HiOz34eSC0orRluZzYgy6smM07IBYZ6f4aMnGyAWtrma3EglmrIWdDe5JrHesiVGyJP0fukgXuENygsLjwLMrjw0g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhPIsG1nzsqBGW0zZhCz3bQko4C6jOSGef4NrBDVIcVAdP7q06LDewlCQbFbFgfeGWFEZ8DjtJydbksKFgTYBq0siaT6GkS5HiOz34eSC0orRluZzYgy6smM07IBYZ6f4aMnGyAWtrma3EglmrIWdDe5JrHesiVGyJP0fukgXuENygsLjwLMrjw0g&quot; title=&quot;2025-0301-154801.png&quot; alt=&quot;2025-0301-154801.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;首先進入手機的「設定」，然後進入「連接」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiqM5ekyB0anukUt8FXSBkmnYkSiW3b7X7a66nRRF1rHpn3HsrSaOrcuFqqrKTiCWKAgm-pv_ywcu9hsrChjj0AwDLNXjzYKfhofPnYZsv9hOBiNxbgJE4Wq-m1L8w0zswddpbmtSZbKDc1QphvU3VZmRtOt9WyEsng4SblGCLqCBsj5hBICZHCwg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiqM5ekyB0anukUt8FXSBkmnYkSiW3b7X7a66nRRF1rHpn3HsrSaOrcuFqqrKTiCWKAgm-pv_ywcu9hsrChjj0AwDLNXjzYKfhofPnYZsv9hOBiNxbgJE4Wq-m1L8w0zswddpbmtSZbKDc1QphvU3VZmRtOt9WyEsng4SblGCLqCBsj5hBICZHCwg&quot; title=&quot;Screenshot_20250301_153251_Settings.png&quot; alt=&quot;Screenshot_20250301_153251_Settings.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;進入到「行動網路」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi9Xn73S_xTuaeLR9kqbRTWSKt1OjdRTvlYQS7sfeConAxyf0Ee2k_2HaMphJuFBfj1QZo2r5ZXpjPN_MLUxEeGQvT8nJUAJbyiUo7XvHjYnVfBLT_baOIv56VFFey1zDm3wAO6QS6Z7cc_hatKy9phK1Xouqd8-6X2cN-sdU4gRosbr50AGV9P2A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi9Xn73S_xTuaeLR9kqbRTWSKt1OjdRTvlYQS7sfeConAxyf0Ee2k_2HaMphJuFBfj1QZo2r5ZXpjPN_MLUxEeGQvT8nJUAJbyiUo7XvHjYnVfBLT_baOIv56VFFey1zDm3wAO6QS6Z7cc_hatKy9phK1Xouqd8-6X2cN-sdU4gRosbr50AGV9P2A&quot; title=&quot;Screenshot_20250301_153116_Call_settings.png&quot; alt=&quot;Screenshot_20250301_153116_Call_settings.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;找到無法連線到行動網路的SIM卡，例如我的是SIM1。點選它的「網路模式」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjlvPkGjtAgLxKCjNzBi8WOAaCKNy4QGDP4scg_bzUyJZTbEbUOyQqNV-wampggda5hoyBDndnmHZG8BWxe40uStKcMI-_ImgwfxAYQs6S1n97mOIGRYxdEKqLx_WpqFOe14_OLt5-J3ni-HqAaHWmnMQb6JR3Lvejw9jelhhYIU2cGFhsKwy7mNg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjlvPkGjtAgLxKCjNzBi8WOAaCKNy4QGDP4scg_bzUyJZTbEbUOyQqNV-wampggda5hoyBDndnmHZG8BWxe40uStKcMI-_ImgwfxAYQs6S1n97mOIGRYxdEKqLx_WpqFOe14_OLt5-J3ni-HqAaHWmnMQb6JR3Lvejw9jelhhYIU2cGFhsKwy7mNg&quot; title=&quot;Screenshot_20250301_153110_Call_settings.png&quot; alt=&quot;Screenshot_20250301_153110_Call_settings.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;原本我是用4G連線，現在要先改成沒有4G的模式，也就是「3G/2G(自動連線)」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh61xqwg763WgI-4wf0FnQWBa1x40Evsm5N3ndVaiOaqH0wlMAMdBTzCsTnG5TRc3m5UmC_8XEj3xX3vkNYP9928OIbLjeq6EzCX4f6fT3meAFyq7_IEQ4uUkHdLSoaXah8IJdXNGeIyiC-HgeieOwlas_rgTRHE5ojkOyF6iVcq2BBdDpours6lQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh61xqwg763WgI-4wf0FnQWBa1x40Evsm5N3ndVaiOaqH0wlMAMdBTzCsTnG5TRc3m5UmC_8XEj3xX3vkNYP9928OIbLjeq6EzCX4f6fT3meAFyq7_IEQ4uUkHdLSoaXah8IJdXNGeIyiC-HgeieOwlas_rgTRHE5ojkOyF6iVcq2BBdDpours6lQ&quot; title=&quot;Screenshot_20250301_153105_Call_settings.png&quot; alt=&quot;Screenshot_20250301_153105_Call_settings.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;就這樣稍待片刻，大概5秒鐘。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi9Xn73S_xTuaeLR9kqbRTWSKt1OjdRTvlYQS7sfeConAxyf0Ee2k_2HaMphJuFBfj1QZo2r5ZXpjPN_MLUxEeGQvT8nJUAJbyiUo7XvHjYnVfBLT_baOIv56VFFey1zDm3wAO6QS6Z7cc_hatKy9phK1Xouqd8-6X2cN-sdU4gRosbr50AGV9P2A&quot; style=&quot;font-weight: 400; background-color: rgb(255, 255, 255);&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi9Xn73S_xTuaeLR9kqbRTWSKt1OjdRTvlYQS7sfeConAxyf0Ee2k_2HaMphJuFBfj1QZo2r5ZXpjPN_MLUxEeGQvT8nJUAJbyiUo7XvHjYnVfBLT_baOIv56VFFey1zDm3wAO6QS6Z7cc_hatKy9phK1Xouqd8-6X2cN-sdU4gRosbr50AGV9P2A=s450&quot; title=&quot;Screenshot_20250301_153116_Call_settings.png&quot; alt=&quot;Screenshot_20250301_153116_Call_settings.png&quot; width=&quot;220&quot; height=&quot;450&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;再用同樣的方法切回到有4G的網路模式。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiIgpoZnpj-v6tJfQc6I8zDniVota0onWoY52czDradRsQMPFOn1q6ZPFAB06JQV5FBEBnlrKFy18nKzu-d1AcjikEhbD5OZKxvt-G03LUvjodv7KwimWp6TTqzzrF1MRAu1qztgTcLXisyR7Fg8qDLuNDKpcApF8FoPVgJZEWz6RiT5xb4wg_-1g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiIgpoZnpj-v6tJfQc6I8zDniVota0onWoY52czDradRsQMPFOn1q6ZPFAB06JQV5FBEBnlrKFy18nKzu-d1AcjikEhbD5OZKxvt-G03LUvjodv7KwimWp6TTqzzrF1MRAu1qztgTcLXisyR7Fg8qDLuNDKpcApF8FoPVgJZEWz6RiT5xb4wg_-1g&quot; title=&quot;Screenshot_20250301_153233_Speedtest.png&quot; alt=&quot;Screenshot_20250301_153233_Speedtest.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;行動網路終於可以恢復正常連線了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;其他解決方案 / Other Solutions&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh3AicpODaUvTyAuCXb6NZ4rhrTXcntDE5-NgnGCO2Rls6b99PJ4Rno7RuX6Q-0n2jmTscEPYn1ToltagLchYtCKyh7Vb8pZUNewyky3xATMGwxtPmOxbnhtqlQo0q3oDTvLt2fOdjrs-hOIu9zZkZ00e2P31Cj6-n2TGS9BNXK6ZlZ44WoJx5aZA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh3AicpODaUvTyAuCXb6NZ4rhrTXcntDE5-NgnGCO2Rls6b99PJ4Rno7RuX6Q-0n2jmTscEPYn1ToltagLchYtCKyh7Vb8pZUNewyky3xATMGwxtPmOxbnhtqlQo0q3oDTvLt2fOdjrs-hOIu9zZkZ00e2P31Cj6-n2TGS9BNXK6ZlZ44WoJx5aZA&quot; title=&quot;https://www.storm.mg/lifestyle/5302590&quot; alt=&quot;https://www.storm.mg/lifestyle/5302590&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.storm.mg/lifestyle/5302590&quot; target=&quot;_blank&quot;&gt;https://www.storm.mg/lifestyle/5302590&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果你無法使用這個方法來解決問題，網路上的「&lt;a href=&quot;https://www.storm.mg/lifestyle/5302590&quot; target=&quot;_blank&quot;&gt;為何手機有訊號卻無法上網？一文教你5種方法解決&lt;/a&gt;」跟「&lt;a href=&quot;https://tw.imyfone.com/iphone-issues/wifi-connected-no-internet-access/&quot; target=&quot;_blank&quot;&gt;手機有訊號沒網路 iPhone 難題超快解決！&lt;/a&gt;」還有建議其他的做法：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;重新開機。&lt;/li&gt;
  &lt;li&gt;開啟飛航模式，讓行動網路暫時中斷，然後再關閉飛航模式恢復連線。&lt;/li&gt;
  &lt;li&gt;關閉行動網路，讓行動網路暫時中斷，然後再開啟行動網路恢復連線。&lt;/li&gt;
  &lt;li&gt;iPhone可以使用「重置網路設定」，請看「&lt;a href=&quot;https://support.apple.com/zh-tw/111786&quot; target=&quot;_blank&quot;&gt;如果 iPhone 或 iPad 無法連線到 Wi-Fi 網路&lt;/a&gt;」的「7. 重置網路設定」。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最後就是去詢問電信供應商的客戶服務了。&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.cht.com.tw/zh-tw/home/cht/service/call-line&quot; target=&quot;_blank&quot;&gt;中華電信&lt;/a&gt;：0800-080-123(中華市話、行動直撥123)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.fetnet.net/content/cbu/tw/help-center/contact-us.html&quot; target=&quot;_blank&quot;&gt;遠端FET&lt;/a&gt;：0800-058-885 (免費)、遠傳手機直撥 888 (免費)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.taiwanmobile.com/csonline/call/call.html&quot; target=&quot;_blank&quot;&gt;台灣大哥大&lt;/a&gt;：0809-000-852&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;希望這些做法對大家有所幫助。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/1466584669031105670/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/08/mobile-network-not-connecting-easy-solutions-for-samsung-phones.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/1466584669031105670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/1466584669031105670'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/08/mobile-network-not-connecting-easy-solutions-for-samsung-phones.html' title='行動網路無法連線？三星手機簡易解決方案 / Mobile Network Not Connecting? Easy Solutions for Samsung Phones'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiXXKXuSmI3wA3y30VxANDeXSsqrOcDitceEPT84U-VfzkhLCs-d_7zC8SbEhzikktTh0ukY9a6oPGu1O52rOkJzPYnAYgUpTp7ME4tHxNc2ALBCBcUw8qv7K5DRwGG1Oxd5A2BBPoPy8_G1wXWsLYB-YKOXomn-SsKuermNDbMPki1Q9ui3AXFPg=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-7524634111623317815</id><published>2025-08-04T12:00:00.006+08:00</published><updated>2025-08-04T12:00:00.112+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Dify"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenAI"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>實作相容OpenAI API，但背後不是OpenAI的API服務 / Implementing OpenAI API-Compatible Services, But Not Powered by OpenAI</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjxXqBObyXW8-hgWfQVRrRtKFShFxR1aY68cI2P3zR60Tu2vhOVTWLc8r6bym8JhIHe5C4Xs0LYlz2W2kL6Rddh_zfUdlsXAceBiund9uNPmsbJvbSffu4Sz8AsFVujxWqFe88jxon9vYKNoH4bbwRoyakZ8Qc0ui4xVyye7yLPqCCfwe7cEHIdnQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjxXqBObyXW8-hgWfQVRrRtKFShFxR1aY68cI2P3zR60Tu2vhOVTWLc8r6bym8JhIHe5C4Xs0LYlz2W2kL6Rddh_zfUdlsXAceBiund9uNPmsbJvbSffu4Sz8AsFVujxWqFe88jxon9vYKNoH4bbwRoyakZ8Qc0ui4xVyye7yLPqCCfwe7cEHIdnQ&quot; title=&quot;2025-0212-193808.png&quot; alt=&quot;2025-0212-193808.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我們上次談到了不是背後說&lt;a href=&quot;/2025/06/talk-not-every-api-is-called-openais-api.html&quot; target=&quot;_blank&quot;&gt;用到OpenAI模型的API不見得能相容OpenAI API&lt;/a&gt;，那我們這次就來做個能夠相容於OpenAI API的服務，但只會回答「喵」的「喵型語言模型」。&lt;/p&gt;
&lt;p&gt;Last time we talked about &lt;a href=&quot;/2025/06/talk-not-every-api-is-called-openais-api.html&quot; target=&quot;_blank&quot;&gt;how not all APIs that claim to use OpenAI models are necessarily compatible with the OpenAI API&lt;/a&gt;. This time, let&#39;s create a service compatible with the OpenAI API, but it only responds with &quot;Meow.&quot; We&#39;ll call it the &quot;Meow Language Model.&quot;&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;系統架構 /&amp;nbsp;System Architecture&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjMKQIgVg36zqkzph0UpdMj1IHlUHEo03VWf038skLw4gXgFxLWelefH1CAx__ksOkvUVWGPX-npVYm3Vr76vCNrkYfD56LfWsIOOIztQ_Yriv4KyFpINzt4zpUqDSPxM5lZ9QRXC_R10kFjogzTPhgppszT6nvntqjWFyyIMjx7ehvI2SqN9tyEg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjMKQIgVg36zqkzph0UpdMj1IHlUHEo03VWf038skLw4gXgFxLWelefH1CAx__ksOkvUVWGPX-npVYm3Vr76vCNrkYfD56LfWsIOOIztQ_Yriv4KyFpINzt4zpUqDSPxM5lZ9QRXC_R10kFjogzTPhgppszT6nvntqjWFyyIMjx7ehvI2SqN9tyEg&quot; title=&quot;20250212_BLOG_OpenAI_API.note.note.pptx_1_-cropped.png&quot; alt=&quot;20250212_BLOG_OpenAI_API.note.note.pptx_1_-cropped.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;整個架構會由五個元件所組成：&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Python程式碼：不管你傳送什麼資訊，它只會回「喵」。&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://dify.ai/&quot; target=&quot;_blank&quot;&gt;Dify&lt;/a&gt;：AI應用程式框架的Dify裡面，可以用Code節點讓我們執行這段Python程式碼，然後把它包裝成Chatflow API。&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/fatwang2/dify2openai&quot; target=&quot;_blank&quot;&gt;dify2openai&lt;/a&gt;：fatwang2開發的dify2openai將Dify的API模擬成OpenAI API格式。&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/&quot; target=&quot;_blank&quot;&gt;Cloudflare Tunnel&lt;/a&gt;：將運作在本地的API服務連接到Cloudflare提供的臨時網址上。&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://tryfastgpt.ai/&quot; target=&quot;_blank&quot;&gt;FastGPT&lt;/a&gt;：使用自製的OpenAI API。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;程式碼 / Source Code&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgnw4JVXkB5n8jObJt40Yj6cwMl2-re6prpUr85iZ_FAfC111cvyj0-fxmxhv233wMeoy2nxj8-rhR5huOK6s_C9xKTJrJjuqHwnLULYpRITZLb5aGd43JQkGxpV4qirwb1yTsoqKYOOedd6XOE1Mfqm_LXg9cIRWHdPLM1fI3pilU0m4cMJuO0-A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgnw4JVXkB5n8jObJt40Yj6cwMl2-re6prpUr85iZ_FAfC111cvyj0-fxmxhv233wMeoy2nxj8-rhR5huOK6s_C9xKTJrJjuqHwnLULYpRITZLb5aGd43JQkGxpV4qirwb1yTsoqKYOOedd6XOE1Mfqm_LXg9cIRWHdPLM1fI3pilU0m4cMJuO0-A&quot; title=&quot;https://github.com/pulipulichen/practice-Dify-OpenAI-API-2025.git&quot; alt=&quot;https://github.com/pulipulichen/practice-Dify-OpenAI-API-2025.git&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/pulipulichen/practice-Dify-OpenAI-API-2025.git&quot; target=&quot;_blank&quot;&gt;https://github.com/pulipulichen/practice-Dify-OpenAI-API-2025.git&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;相關程式碼放在「practice-Dify-OpenAI-API-2025」保存庫裡面。這些程式碼是以Linux作業系統為主要環境，需要搭配Docker才能運作。這些程式碼並非給普通使用者執行，而是給開發者作為參考的資料。如果環境設置正確的話，執行 startup.sh 就能完成整個設定。&lt;/p&gt;
&lt;p&gt;以下概述整個系統中需要設定的關鍵部分。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1. Python: Dify裡面的聊天流 / Python: The Chatflow in Dify&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjeyjutP7Y8vTrmxd11e30P6C8SYR8KS3Uv5D2o7QanafSh9lDmSm-bEbkYs-KpUqDT5JXBErdo9e0nt_0oWA4MsLrzyN9dnlRyczXMtt3IM8_JLh1ZbVbWenmkYm-OwlDMoyovXnh-qL4dWRbw188nCgMbNJnDppQIlX2AkSmDRRvIzScFI6tI-A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjeyjutP7Y8vTrmxd11e30P6C8SYR8KS3Uv5D2o7QanafSh9lDmSm-bEbkYs-KpUqDT5JXBErdo9e0nt_0oWA4MsLrzyN9dnlRyczXMtt3IM8_JLh1ZbVbWenmkYm-OwlDMoyovXnh-qL4dWRbw188nCgMbNJnDppQIlX2AkSmDRRvIzScFI6tI-A&quot; title=&quot;2025-0212-173558.png&quot; alt=&quot;2025-0212-173558.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;首先，我們在Dify中建立一個Chatflow，用來實作「喵型語言模型」。你可以用我事先準備好的DSL檔案來建立。DSL檔案的下載網址如下：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pulipulichen.github.io/practice-Dify-OpenAI-API-2025/dify-dsl/Cat_LLM.yml&quot; target=&quot;_blank&quot;&gt;https://pulipulichen.github.io/practice-Dify-OpenAI-API-2025/dify-dsl/Cat_LLM.yml&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhW1_cw7XjQiNtN5ZxUZbg3MoPnZjbDbYUBvtqlKXoEnzcjqzTK8bza9LsVb-5nHfrWPthtq7cVQ5elDivrbJH9ojbfbjE3JMfKP9qves3zlPeFONeNjwETaeKAg_dnFmOOoZVThAPzgDJ4ypT7-TwbVPNJNDm_cyJgJikfbsPQnSDUcafwBMjgCA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhW1_cw7XjQiNtN5ZxUZbg3MoPnZjbDbYUBvtqlKXoEnzcjqzTK8bza9LsVb-5nHfrWPthtq7cVQ5elDivrbJH9ojbfbjE3JMfKP9qves3zlPeFONeNjwETaeKAg_dnFmOOoZVThAPzgDJ4ypT7-TwbVPNJNDm_cyJgJikfbsPQnSDUcafwBMjgCA&quot; title=&quot;2025-0212-173843.png&quot; alt=&quot;2025-0212-173843.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我們可以看到應用程式裡面的「Code」揭露了「喵型語言模型」的秘密。&lt;/p&gt;
&lt;h2&gt;2. Dify：API的發佈 / Dify: Publish API Service&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjytAq4JtDoXcWYlEPuXfWAum7SOYOjGEvx6JKhcQ9NdsjQgIu2yTV7yjFerZnmUjV4e6n_HnZeBxoVvs0MA8WpINy1TodVZ8yhlczTi7gWmCxil_6Om7u04a4bnKj6GU3Xtk43q5lke3EQZ8FxuN2GOAxuLRIE1atyaBfL50I6LY1o3_DeD3ek_g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjytAq4JtDoXcWYlEPuXfWAum7SOYOjGEvx6JKhcQ9NdsjQgIu2yTV7yjFerZnmUjV4e6n_HnZeBxoVvs0MA8WpINy1TodVZ8yhlczTi7gWmCxil_6Om7u04a4bnKj6GU3Xtk43q5lke3EQZ8FxuN2GOAxuLRIE1atyaBfL50I6LY1o3_DeD3ek_g&quot; title=&quot;2025-0212-174052.png&quot; alt=&quot;2025-0212-174052.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我們從「Publish」保存建立好的聊天流(chatflow)。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgOoIpEjEae9dLTwKharI59Og73z6yNNnh54CaI2yA96OjCM8mw0F44vVoAt3tM35oznFoZKQmo6c04bhWRIKhrpByTIDEM8Jcd4ZfVVMV2oPqoxDfeur_s_PCAbiSUyItMqplSZnuWvtLYq-h2nksMqQM6Q6MXgJN4f2KU7qj08u0n7Qkel8C3wg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgOoIpEjEae9dLTwKharI59Og73z6yNNnh54CaI2yA96OjCM8mw0F44vVoAt3tM35oznFoZKQmo6c04bhWRIKhrpByTIDEM8Jcd4ZfVVMV2oPqoxDfeur_s_PCAbiSUyItMqplSZnuWvtLYq-h2nksMqQM6Q6MXgJN4f2KU7qj08u0n7Qkel8C3wg&quot; title=&quot;2025-0212-174133.png&quot; alt=&quot;2025-0212-174133.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;從左邊的「Monitoring」找到Backend Service API的「API Key」按鈕。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhm8lW4UB0zPh1ELkapj4IVK7YKK_eznWB6bCDbZA2_yDBJ8Q9Uj-7ujo8QDQJOnC_guMj9_C-8PtEtuJCfsaiOfcYwpfXYG8DIa0lUs4UCYh5j6VjLfXNWfBGyTjnbGH8pvWSqWT4RYsIHzY042UlekNOhBvIFrMMOAJ0vCHnCf-WdXkaOKKCPFQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhm8lW4UB0zPh1ELkapj4IVK7YKK_eznWB6bCDbZA2_yDBJ8Q9Uj-7ujo8QDQJOnC_guMj9_C-8PtEtuJCfsaiOfcYwpfXYG8DIa0lUs4UCYh5j6VjLfXNWfBGyTjnbGH8pvWSqWT4RYsIHzY042UlekNOhBvIFrMMOAJ0vCHnCf-WdXkaOKKCPFQ&quot; title=&quot;2025-0212-174224.png&quot; alt=&quot;2025-0212-174224.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;按下「Create new Secret key」，然後Dify會建立一個隨機的API Key，例如：「&lt;span style=&quot;white-space: pre; color: inherit;&quot;&gt;app-wUJxFJBqbPhZLUwkxGoI2qJQ&lt;/span&gt;」。我們複製它即可。&lt;/p&gt;
&lt;h2&gt;3. Dify2OpenAI：API轉換 / Dify2OpenAI: API Adapter&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhyKiYPLtmBxg_Acd_sh0wWV1G2BGUWn6HsTbr2TZBJZIQdizYHXx6uZHwDkwpLr8VGurKmSbW0ft4MgQvFeNdH-jnt-G-XOn_O9X_sFHq5qfpt00r5h5C1T4p3i8Cyt-WIybSq84yvSj585Bi6BfFJ2yKieF0hTyNOVTCdAdi8ERd5wbGfXBfXEg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhyKiYPLtmBxg_Acd_sh0wWV1G2BGUWn6HsTbr2TZBJZIQdizYHXx6uZHwDkwpLr8VGurKmSbW0ft4MgQvFeNdH-jnt-G-XOn_O9X_sFHq5qfpt00r5h5C1T4p3i8Cyt-WIybSq84yvSj585Bi6BfFJ2yKieF0hTyNOVTCdAdi8ERd5wbGfXBfXEg&quot; title=&quot;2025-0212-174425.png&quot; alt=&quot;2025-0212-174425.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/pulipulichen/practice-Dify-OpenAI-API-2025/blob/main/dify2openai/docker-compose.yml&quot; target=&quot;_blank&quot;&gt;https://github.com/pulipulichen/practice-Dify-OpenAI-API-2025/blob/main/dify2openai/docker-compose.yml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;dify2openai的設定我已經在docker-compose.yml設定完成。它會連結Dify的服務(主要是Dify用來對外顯示網頁的nginx)，只要輸入正確的API Key就能順利呼叫。在我預設的設定下，dify2openai會模擬成OpenAI的o1模型。如果需要修改的話，可以在 .env 環境變數裡面宣告。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhivksNniuNxRL5WrexqIcB-I7KkqdPh94ZObbmRQBiEvjoK1kHDS9sbSt6HvEetr6wNcu6yrLAx9jppklS0rrmwzZcdQ_nMyAqJw0BaKxK1YRuoJef1fykCYoGf4X-DOZZYn7jdTFQ9zct9HBvpIEhbQLDTwVP_7rBJWtuY4hw-71vg_Sg55tEUg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhivksNniuNxRL5WrexqIcB-I7KkqdPh94ZObbmRQBiEvjoK1kHDS9sbSt6HvEetr6wNcu6yrLAx9jppklS0rrmwzZcdQ_nMyAqJw0BaKxK1YRuoJef1fykCYoGf4X-DOZZYn7jdTFQ9zct9HBvpIEhbQLDTwVP_7rBJWtuY4hw-71vg_Sg55tEUg&quot; title=&quot;2025-0212-174531.png&quot; alt=&quot;2025-0212-174531.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果在瀏覽器輸入dify2openai預設的網址： &lt;a href=&quot;http://localhost:18081&quot; target=&quot;_blank&quot;&gt;http://localhost:18081&lt;/a&gt;&amp;nbsp;，就會看到正常顯示的樣子。&lt;/p&gt;
&lt;h2&gt;4. Cloudflare Tunnel：將API轉換成公開網址 /&amp;nbsp;Cloudflare Tunnel:&amp;nbsp;Converting API into Public URL&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjF_I_72lJmwCR9HUnMB5IL94lYw2shG1VAQwiaKTmfojAFRA0tDZoOnZrX8eSGfn5y2HeYqjRpMeYscl0IDEuz-6s0Q_FanwpJnmk3PCX44v7fQXTPWftPgm5pNNNcY6bflk3twaVvgHOqsqzdiroAYzSXhjQF2WgBzldY992NvqAqZkOapD-THg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjF_I_72lJmwCR9HUnMB5IL94lYw2shG1VAQwiaKTmfojAFRA0tDZoOnZrX8eSGfn5y2HeYqjRpMeYscl0IDEuz-6s0Q_FanwpJnmk3PCX44v7fQXTPWftPgm5pNNNcY6bflk3twaVvgHOqsqzdiroAYzSXhjQF2WgBzldY992NvqAqZkOapD-THg&quot; title=&quot;2025-0212-174835.png&quot; alt=&quot;2025-0212-174835.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我在startup.sh腳本裡面使用了Cloudflare Tunnel將dify2openai的網址連接到了Cloudflare上。Cloudflare Tunnel會隨機分配一個網址，例如「 &lt;a href=&quot;https://exam-therapist-disclaimer-compromise.trycloudflare.com&quot; target=&quot;_blank&quot;&gt;https://exam-therapist-disclaimer-compromise.trycloudflare.com&lt;/a&gt;&amp;nbsp; 」。每次連接所獲得的網址都不一樣。&lt;/p&gt;
&lt;h2&gt;5. FastGPT：使用API /&amp;nbsp;FastGPT: Using the API&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiBj6MgzXBScJ-hZUAIfKwhiW3xIZkFzjp4HBxxDAnEE5AdmR10LayF7oXtbI8ylUKqvtMAfwIN8Hhkz___as_fTrshHYbiFDyXqvsTMT_NfR5fbzf7VAKUnx0zXfjBnQTWkHw85XvIM7GoiHzQayDnQeRv3IFXkl2j1yLTgxS8FuWbs1WqPPhohA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiBj6MgzXBScJ-hZUAIfKwhiW3xIZkFzjp4HBxxDAnEE5AdmR10LayF7oXtbI8ylUKqvtMAfwIN8Hhkz___as_fTrshHYbiFDyXqvsTMT_NfR5fbzf7VAKUnx0zXfjBnQTWkHw85XvIM7GoiHzQayDnQeRv3IFXkl2j1yLTgxS8FuWbs1WqPPhohA&quot; title=&quot;2025-0212-175134.png&quot; alt=&quot;2025-0212-175134.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://cloud.tryfastgpt.ai/account/thirdParty&quot; target=&quot;_blank&quot;&gt;https://cloud.tryfastgpt.ai/account/thirdParty&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接著我們到FastGPT裡面。FastGPT的Third Pary account可以讓我們設定OpenAI/OneAPI account，而在這之中我們可以設定API Key跟BaseUrl。API Key就是從Dify取得的API Key，而BaseUrl則是剛剛連接到Cloudflare Tunnel的網址，並在路徑上加上「/v1」，例如「https://exam-therapist-disclaimer-compromise.trycloudflare.com&lt;font color=&quot;#ff0000&quot;&gt;&lt;b&gt;/v1&lt;/b&gt;&lt;/font&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhj7q6O9d7qiQn25EfLhhL9KJbaR8gRKGeheHpbvsoSwZKzyf7N22GSwyusQeItRxlIYD_O5KbFcguw6arMXmVJhuyKkKXjLoBBeQ0LkVKjuLRwrmOaHUKi_CRSwuLFEcK4ecGc2OiOQypasVp61xTgwqrLQA9SPbvNtRLrWGAELgSjdPVpR3oBhg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhj7q6O9d7qiQn25EfLhhL9KJbaR8gRKGeheHpbvsoSwZKzyf7N22GSwyusQeItRxlIYD_O5KbFcguw6arMXmVJhuyKkKXjLoBBeQ0LkVKjuLRwrmOaHUKi_CRSwuLFEcK4ecGc2OiOQypasVp61xTgwqrLQA9SPbvNtRLrWGAELgSjdPVpR3oBhg&quot; title=&quot;2025-0212-175536.png&quot; alt=&quot;2025-0212-175536.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接著便可到Studio建立應用程式，模型選用OpenAI的o1。此時使用的o1模型其實是連接到Dify的「喵型語言模型」，因此不管使用者講什麼內容，模型一律都只會回「喵」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj9Wiyj_j-Z_U67ZDlpD0DBkAM5wHpOuhmnEcton5kDOhLmLuGfPE92vZ_d0RYrHCcAd7hX4OsbRw7_-e5vcORbjeQhAgegteBAEl-L_jL4xfC4ZWzzxcZw6QaIJM3xKENol0i2zkmapFb4-paXNgiE9Ek8aevGbipl0za8VM8W3zdjbUOggYlBPw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj9Wiyj_j-Z_U67ZDlpD0DBkAM5wHpOuhmnEcton5kDOhLmLuGfPE92vZ_d0RYrHCcAd7hX4OsbRw7_-e5vcORbjeQhAgegteBAEl-L_jL4xfC4ZWzzxcZw6QaIJM3xKENol0i2zkmapFb4-paXNgiE9Ek8aevGbipl0za8VM8W3zdjbUOggYlBPw&quot; title=&quot;2025-0212-180839.png&quot; alt=&quot;2025-0212-180839.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如此一來，我們製作的相容於OpenAI API的「喵型語言模型」就打造完成了。這應該比&lt;a href=&quot;https://technews.tw/2025/02/07/reasoning-s1/&quot; target=&quot;_blank&quot;&gt;花50美元打造蒸餾模型&lt;/a&gt;還要便宜喔？(誤)&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;結語 / Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiNRSIwpa7djv1Pq843YxKqPEkgjsPW0IaMnJOPK-D-rx3H5HNyt4hQBW5Kn0NmsZ1PS81bZnMhWsqIf_hT-Zi-Ni6ElaBu23LYtDSusAGqIM47O8r2bh893hJ4tHfGXSd7NLG-_mXhEi2C6gFRNe23AzTGKfAmrtjZNiZdhKLLbrMSeJvPlsxKVQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiNRSIwpa7djv1Pq843YxKqPEkgjsPW0IaMnJOPK-D-rx3H5HNyt4hQBW5Kn0NmsZ1PS81bZnMhWsqIf_hT-Zi-Ni6ElaBu23LYtDSusAGqIM47O8r2bh893hJ4tHfGXSd7NLG-_mXhEi2C6gFRNe23AzTGKfAmrtjZNiZdhKLLbrMSeJvPlsxKVQ&quot; title=&quot;2025-0212-193455.png&quot; alt=&quot;2025-0212-193455.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這篇的做法的重點並不是在「喵型語言模型」，而是「能夠跟OpenAI API相容」的這一個特性。只要能將你的服務封裝成OpenAI API的相容格式，那麼就能將它跟目前大多數主流系統相互整合。&lt;/p&gt;
&lt;p&gt;舉例來說，以為我們雖然可以用LightRAG打造更先進的RAG架構，但打造出來的結果卻難以跟其他系統整合。現在我們有這一套Dify跟Dify2OpenAI轉換的做法，那就可以利用Dify的靈活性，將LightRAG結合到Dify的Chatflow裡面，最後就能整合到任何支援OpenAI API的系統上。&lt;/p&gt;
&lt;p&gt;當然，Dify2OpenAI實際上只實作了OpenAI API的大型語言模型接口，並沒有實作全部的功能，它也不能完全替代OpenAI API。儘管如此，能將我們製作的「喵型語言模型」整合在其他系統上，其實就有很多應用價值了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;這篇介紹如何打造OpenAI API相容服務的文章就到此為止了。文章的最後要來問大家的是，這個OpenAI API你認為還有什麼值得注意的價值呢？&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;1. 蒐集與記錄使用者的對談記錄。&lt;br&gt;&lt;/li&gt;
  &lt;li&gt;2. 可以加上一些自訂的規則。&lt;/li&gt;
  &lt;li&gt;3. 跟客製化的RAG整合。&lt;/li&gt;
  &lt;li&gt;4. 背後介接Google Gemini模型。這難道是AI界的NTR？&lt;/li&gt;
  &lt;li&gt;5. 開發「汪型語言模型」。&lt;/li&gt;
  &lt;li&gt;6. 其他：歡迎在下面留言，分享你的看法吧！&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/7524634111623317815/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/08/implementing-openai-api-compatible-services-but-not-powered-by-openai.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/7524634111623317815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/7524634111623317815'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/08/implementing-openai-api-compatible-services-but-not-powered-by-openai.html' title='實作相容OpenAI API，但背後不是OpenAI的API服務 / Implementing OpenAI API-Compatible Services, But Not Powered by OpenAI'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjxXqBObyXW8-hgWfQVRrRtKFShFxR1aY68cI2P3zR60Tu2vhOVTWLc8r6bym8JhIHe5C4Xs0LYlz2W2kL6Rddh_zfUdlsXAceBiund9uNPmsbJvbSffu4Sz8AsFVujxWqFe88jxon9vYKNoH4bbwRoyakZ8Qc0ui4xVyye7yLPqCCfwe7cEHIdnQ=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-340812705391143470</id><published>2025-08-01T12:00:00.008+08:00</published><updated>2025-08-01T12:00:00.109+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Life"/><category scheme="http://www.blogger.com/atom/ns#" term="Talk"/><title type='text'>雜談：生活小技巧之用魔鬼氈避免機車鑰匙脫落吧 / Talk: Use Velcro to Prevent Your Motorcycle Key From Falling Off</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjg5p5Pn2NxUsNSx7lw0P6he4nqV0k7Dq2x0szOl2g_gNlS8RjM4hxNNVrzr9ypNB8ILYr7ekjMxf1VDiZr7LuQRdVnXKm6ytb6PyS6QdEI5GjTcmAEvYBfSFhAkVoK16egB09drqSOIZtfX9auZMi-FQv6BVRdx2dmM-1u6jz5hFPzDutCi0adtg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjg5p5Pn2NxUsNSx7lw0P6he4nqV0k7Dq2x0szOl2g_gNlS8RjM4hxNNVrzr9ypNB8ILYr7ekjMxf1VDiZr7LuQRdVnXKm6ytb6PyS6QdEI5GjTcmAEvYBfSFhAkVoK16egB09drqSOIZtfX9auZMi-FQv6BVRdx2dmM-1u6jz5hFPzDutCi0adtg&quot; title=&quot;2025-0514-172516.png&quot; alt=&quot;2025-0514-172516.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這幾天騎機車騎到鑰匙居然整個掉出來了，這該怎麼辦好呢？&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;鑰匙孔鬆動的問題 /&amp;nbsp;Loose Keyhole Problem&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEia1c_1QUHYQmQVfV0lGm1-z6-iI04AfeGMJ6hQ0UzzYgCV18peWgKK9n2JN7HljqADGRzixYeffxwuTMsLAv2pEvZXKIe-eyDgxS0YjcETJRQx933XRCZuwDNLIfR2PJB2shTlmFA2CWhIDliPpzbjj_kvIA6_P-Il-Nt5FWZqUQYTwE3Ad35HpQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEia1c_1QUHYQmQVfV0lGm1-z6-iI04AfeGMJ6hQ0UzzYgCV18peWgKK9n2JN7HljqADGRzixYeffxwuTMsLAv2pEvZXKIe-eyDgxS0YjcETJRQx933XRCZuwDNLIfR2PJB2shTlmFA2CWhIDliPpzbjj_kvIA6_P-Il-Nt5FWZqUQYTwE3Ad35HpQ&quot; title=&quot;20250514_144624.jpg&quot; alt=&quot;20250514_144624.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;摩托車使用一段時間之後，似乎就很容易遇到鑰匙孔鬆動的問題。原本機車鑰匙在轉到可以發動的位置後，鑰匙應該會卡住、不能拔出。不過現在我的機車鑰匙孔，即使是轉動到可以發動的位置、並且在啟動中，鑰匙還是可以拿出來。&lt;/p&gt;
&lt;p&gt;我本來想說，鑰匙雖然可以拔出來，但放著不動鑰匙也還是會插在裡面，應該沒差吧。結果上次騎車的時候我膝蓋碰到鑰匙，它就這樣掉了下來。嚇得我趕緊停到路邊，把鑰匙收好。&lt;/p&gt;
&lt;h2&gt;可能原因 /&amp;nbsp;Possible Causes&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEixWdd3_geFT9DddDSW8O3DQr-HojYZs7igN6Jg0-Yumfzn73w6Dmitp7R_ZHSaE67V4srG7TEHNlZP0kilpBiXGYEfnj0FkJfyDVoz2RkVzJ3uc_BEqKvaRxU85HJx7EaxD8IN0XczwhQcRotULiObjwfhiBcBe1n2GfY49P0uO4k3NQOwzx_fng&quot; style=&quot;font-weight: 400; background-color: rgb(255, 255, 255);&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEixWdd3_geFT9DddDSW8O3DQr-HojYZs7igN6Jg0-Yumfzn73w6Dmitp7R_ZHSaE67V4srG7TEHNlZP0kilpBiXGYEfnj0FkJfyDVoz2RkVzJ3uc_BEqKvaRxU85HJx7EaxD8IN0XczwhQcRotULiObjwfhiBcBe1n2GfY49P0uO4k3NQOwzx_fng&quot; title=&quot;2025-0514-161731.png&quot; alt=&quot;2025-0514-161731.png&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.mobile01.com/topicdetail.php?f=266&amp;amp;t=2376250&amp;amp;p=9#31045150&quot; target=&quot;_blank&quot;&gt;https://www.mobile01.com/topicdetail.php?f=266&amp;amp;t=2376250&amp;amp;p=9#31045150&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;有這樣問題的網友並不在少數。根據「&lt;a href=&quot;https://disp.cc/b/Motorcycle/dQYF&quot; target=&quot;_blank&quot;&gt;[問題] 機車行進中鑰匙可以拔出&lt;/a&gt;」這篇的討論，造成機車鑰匙鎖頭鬆動、無法固定鑰匙這個結果的原因，不外乎以下幾點：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;b&gt;鑰匙過重&lt;/b&gt;：大多數的人都擁有多把鑰匙，而機車孔上插著鑰匙時掛著一大串其他物品，會讓鎖頭的彈簧承擔過重的負荷，最後導致無法固定。&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;路面不平&lt;/b&gt;：騎車的路徑不斷上上下下的晃動，也會使得鑰匙持續甩動，最後讓鎖頭變鬆。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;解決的方法 /&amp;nbsp;Solution Method&lt;/h2&gt;
&lt;p&gt;解決鎖頭鬆動這個問題的做法大致上分成三種：更換鎖頭、更換鑰匙、取出、防掉落。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj-Fh6WwPNW7-g6_b9Md4Vbd8LeHK6ABeSh6OZCOFTPjIXRwi4I94-uuKmIM7onkz1ftNXJcuUFXTwAejIX7Ztx3_yABUZbFPnppAbME33j0_OBgo1qRK3zxdAEoQH9vtJnywNHJtCOFnEAeejWpiu_TjPgYD7u_UX-Oo2ICebS3ff-uNZINNtJZQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj-Fh6WwPNW7-g6_b9Md4Vbd8LeHK6ABeSh6OZCOFTPjIXRwi4I94-uuKmIM7onkz1ftNXJcuUFXTwAejIX7Ztx3_yABUZbFPnppAbME33j0_OBgo1qRK3zxdAEoQH9vtJnywNHJtCOFnEAeejWpiu_TjPgYD7u_UX-Oo2ICebS3ff-uNZINNtJZQ&quot; title=&quot;https://www.youtube.com/watch?v=vE3v_pNJV_Y&quot; alt=&quot;https://www.youtube.com/watch?v=vE3v_pNJV_Y&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=vE3v_pNJV_Y&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=vE3v_pNJV_Y&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;第一種更換鎖頭做法可能是根絕問題的主要方法。不過更換鎖頭的安裝和維修並不容易，建議是到機車行處理，一般人應該比較難自行更換。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEggBNbEotw8hNLa-NOUcGhrPZcrWqArP-EFhL6rQfSnN6lel0W2Unokvxh_VXjWaoSlvoadO5EkANmySYEmDeRrqNdBA_0DM8ZjkHDIFJO1boAY7Pr7JnWMaBktaevLjhI5ozzJTcxt5qQfauX4zLLwX5_4FtAk7-8EwxdyBm_2ty5ynTD0ZDPd-g&quot; style=&quot;color: rgb(35, 82, 124); outline: 0px; font-weight: 400; background-color: rgb(255, 255, 255);&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEggBNbEotw8hNLa-NOUcGhrPZcrWqArP-EFhL6rQfSnN6lel0W2Unokvxh_VXjWaoSlvoadO5EkANmySYEmDeRrqNdBA_0DM8ZjkHDIFJO1boAY7Pr7JnWMaBktaevLjhI5ozzJTcxt5qQfauX4zLLwX5_4FtAk7-8EwxdyBm_2ty5ynTD0ZDPd-g&quot; title=&quot;2025-0514-163831.png&quot; alt=&quot;2025-0514-163831.png&quot; class=&quot;original-size&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://disp.cc/b/Motorcycle/dQYF&quot; target=&quot;_blank&quot;&gt;https://disp.cc/b/Motorcycle/dQYF&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;費用的部分，網友Dcpp2015提到可能超過1000左右。但每臺機車可用的零件價格應該不太一樣。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhgHes6uYxgzMhmX06lEQs6yW2Z39K_hy24Hi-iREbxz98MEK7OPJV4MG73bt1zJfJVU1-1JyGZzVNLS8HztFjTphRBiRVN5IPSMVtSRWwv5o9wIp19AMKCCTyqNrE3UwZ3szuipYHFOoT0_bVYZ4ymxS0i-bHf2UTjLHGmEB5yWQeupyDEtl3q1g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhgHes6uYxgzMhmX06lEQs6yW2Z39K_hy24Hi-iREbxz98MEK7OPJV4MG73bt1zJfJVU1-1JyGZzVNLS8HztFjTphRBiRVN5IPSMVtSRWwv5o9wIp19AMKCCTyqNrE3UwZ3szuipYHFOoT0_bVYZ4ymxS0i-bHf2UTjLHGmEB5yWQeupyDEtl3q1g&quot; title=&quot;20250514_164009.jpg&quot; alt=&quot;20250514_164009.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;第二種做法是在鑰匙上。有人認為可能是因為鑰匙磨損導致無法固定在鑰匙孔裡。比較簡單的做法就是再換一隻鑰匙，費用自然也比更換鎖頭還要便宜許多。不過如果是鎖頭本身已經鬆脫的話，更換鑰匙也無法解決問題。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjPh1SE0HACYkNs_3r0nYJjOI0QEEwzPOZhyoCS8Tf5qclXkrCC8LXrMNSl7eTVCiH_-ZBtyehDQjqPLO_nsEasdcJjnN-5UqdhS_zNs7_5tvzUy_0kfn9_5ezEj8OMBJ1MuGnG-IDZESPGaOrGlJ4qUIGfo5bovQrstNp2uOzZy9QKREGygKJ8lg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjPh1SE0HACYkNs_3r0nYJjOI0QEEwzPOZhyoCS8Tf5qclXkrCC8LXrMNSl7eTVCiH_-ZBtyehDQjqPLO_nsEasdcJjnN-5UqdhS_zNs7_5tvzUy_0kfn9_5ezEj8OMBJ1MuGnG-IDZESPGaOrGlJ4qUIGfo5bovQrstNp2uOzZy9QKREGygKJ8lg&quot; title=&quot;2025-0514-164331.png&quot; alt=&quot;2025-0514-164331.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://disp.cc/b/Motorcycle/dQYF&quot; target=&quot;_blank&quot;&gt;https://disp.cc/b/Motorcycle/dQYF&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;operatorm提議可以讓鑰匙店打一隻加厚的鑰匙。不過我不確定鑰匙店能不能這樣做。&lt;/p&gt;
&lt;p&gt;第三種做法是在機車發動之後，先把鑰匙收起來，以免它行進中掉落。這可能也是避免機車鑰匙丟失的好做法。不過這樣騎機車的操作就多了兩個手續，有點繁瑣。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi601jEpU16aoR4Hnn7jyZSRH-fOPCPxnOH-J82Xp6o-yXLYYwP8LSjfWrrRhPjaCTURvLRwXiWEy0hNL3isnG0T86yWFGPHqdMr9vNma8t43bzyY7GP3ubxBcPChHVt2--KB92OMsdhvm4ifmdGcwZY39bqYr4e_-enRJXPJphuCScAT68ivtV8g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi601jEpU16aoR4Hnn7jyZSRH-fOPCPxnOH-J82Xp6o-yXLYYwP8LSjfWrrRhPjaCTURvLRwXiWEy0hNL3isnG0T86yWFGPHqdMr9vNma8t43bzyY7GP3ubxBcPChHVt2--KB92OMsdhvm4ifmdGcwZY39bqYr4e_-enRJXPJphuCScAT68ivtV8g&quot; title=&quot;2025-0514-165505.png&quot; alt=&quot;2025-0514-165505.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://disp.cc/b/Motorcycle/dQYF&quot; target=&quot;_blank&quot;&gt;https://disp.cc/b/Motorcycle/dQYF&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;最後一種做法是用各種方法勾住鑰匙，避免騎車時鑰匙直接掉落在路邊。cyuan0301的建議是將鑰匙的吊繩掛在機車內建的吊掛鉤子上，這樣至少可以在鑰匙鬆脫的時候有機會仍掛在鉤子上。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgst9bV4pjKHPVjMXPCpJYPpnMoWpbhCLO8kKa8RoXUu4k0eDgN8K1Q1hSs6V0eFCqyBpY9efNOP0cNj5Vk_JxjBduFkAclbYoDe-bnIX0_5NiPQhYeZM6watBzXR3RXfTPP0zUZq0EN0RtGLxq8zTUBp0PQkvrh6FK20DzVR6iypJBF5WJN9khPw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgst9bV4pjKHPVjMXPCpJYPpnMoWpbhCLO8kKa8RoXUu4k0eDgN8K1Q1hSs6V0eFCqyBpY9efNOP0cNj5Vk_JxjBduFkAclbYoDe-bnIX0_5NiPQhYeZM6watBzXR3RXfTPP0zUZq0EN0RtGLxq8zTUBp0PQkvrh6FK20DzVR6iypJBF5WJN9khPw&quot; title=&quot;2025-0514-165928.png&quot; alt=&quot;2025-0514-165928.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.buybike.com.tw/04-%E9%9A%B1%E8%97%8F%E5%BC%8F%E9%98%B2%E8%B7%B3%E8%84%AB%E6%8E%9B%E5%8B%BE/&quot; target=&quot;_blank&quot;&gt;https://www.buybike.com.tw/04-%E9%9A%B1%E8%97%8F%E5%BC%8F%E9%98%B2%E8%B7%B3%E8%84%AB%E6%8E%9B%E5%8B%BE/&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;就算是本來沒有鉤子的機車，有人也會為了避免鑰匙鬆脫而特地裝個鉤子來掛鑰匙。有些人更喜歡裝上圖這種可以合起來的防脫落掛鉤，這比開放式的掛鉤更穩定。不過這也讓騎機車的操作變得更加複雜就是了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;防掉落的取捨：魔鬼粘 /&amp;nbsp;Drop Prevention Trade-off: Velcro&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiS8AjjSGFMZLUVxOjdrkUKMND1Lq2WIxCGNGTu0WVll5PPf6Xr4i9dAQ0yFYAIW8t57plTf0MkQwp7D0sS1OTDMgZwwwjPqHV9c0kbU1CRqksS_qNd_y58ZnRFdoDs_wembey1Z2_AZ1CINGxm_dI-mibdOKnCsw6G7jD8ZwF61_-ryU3xEGqE1A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiS8AjjSGFMZLUVxOjdrkUKMND1Lq2WIxCGNGTu0WVll5PPf6Xr4i9dAQ0yFYAIW8t57plTf0MkQwp7D0sS1OTDMgZwwwjPqHV9c0kbU1CRqksS_qNd_y58ZnRFdoDs_wembey1Z2_AZ1CINGxm_dI-mibdOKnCsw6G7jD8ZwF61_-ryU3xEGqE1A&quot; title=&quot;20250514_140533.jpg&quot; alt=&quot;20250514_140533.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;那麼，在防止掉落的做法上，如果沒有鉤子的話，那有沒有什麼簡單、又能夠固定鑰匙的做法呢？魔鬼粘可能是一個折衷的方案。&lt;/p&gt;
&lt;h3&gt;安裝 / Setup&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgOeJpBFS4eGRfXGOJB6nIZKpQQvLY0P3qkwFyg34X94x0UTA1vwI_FId6VGPx587TP_v8wMJilDCCHlYmwje0PZ5Z_UvWgy-9g_B2YEuPzC2NexKYA6z-kkC-Ki0LUX0EaAMT2pO52UZ0giEbf56yoYsbUPfbUMxfBY7aRRjudJKaHedGpo6_1NQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgOeJpBFS4eGRfXGOJB6nIZKpQQvLY0P3qkwFyg34X94x0UTA1vwI_FId6VGPx587TP_v8wMJilDCCHlYmwje0PZ5Z_UvWgy-9g_B2YEuPzC2NexKYA6z-kkC-Ki0LUX0EaAMT2pO52UZ0giEbf56yoYsbUPfbUMxfBY7aRRjudJKaHedGpo6_1NQ&quot; title=&quot;20250514_144452.jpg&quot; alt=&quot;20250514_144452.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我在機車鑰匙孔旁邊貼了一個2公分的小型魔鬼粘。機車面板上貼著的是刺面、帶鉤子的那一面，另一面毛面則粘在鑰匙吊繩上。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh9IFbkSXe9hCOjeNQ2Tdzd_PWFBcqctNcNWr6DTXlwepptrlV2I5Mzz5ZLW9CMk2hrF8wyT7a1qbUIKgejz8wunMu9Mqc3i-KeBGfyWytkf6CLgwdvOwzeqytUPytuYrkNh19Q0B05-VDrQEaB5wq6DveU_nmkx75Y55014oKBkT6wybxoe_lZ-A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh9IFbkSXe9hCOjeNQ2Tdzd_PWFBcqctNcNWr6DTXlwepptrlV2I5Mzz5ZLW9CMk2hrF8wyT7a1qbUIKgejz8wunMu9Mqc3i-KeBGfyWytkf6CLgwdvOwzeqytUPytuYrkNh19Q0B05-VDrQEaB5wq6DveU_nmkx75Y55014oKBkT6wybxoe_lZ-A&quot; title=&quot;20250514_144300.jpg&quot; alt=&quot;20250514_144300.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我加上釘書針來固定魔鬼粘的毛面，這樣可以確保毛面不會掉落。&lt;/p&gt;
&lt;h3&gt;使用 / Usage&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiXFLXEJqKjQb1lWdi-cvJVkUTJyHtbpvC8d4xy51zoRzUQU_O6OuYG8qAATRhcTZkrgWAQSZjxY8J3oysUpW2YCdu-c9OOrJuM_Eh7tU9-CMGU2f7qO-cd6jPQEnJC6MjDRLWwu6cME_AqcSJWdDqOjiiTw_aE1U-OA2uoBJgm6qqtGafNLnJbrQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiXFLXEJqKjQb1lWdi-cvJVkUTJyHtbpvC8d4xy51zoRzUQU_O6OuYG8qAATRhcTZkrgWAQSZjxY8J3oysUpW2YCdu-c9OOrJuM_Eh7tU9-CMGU2f7qO-cd6jPQEnJC6MjDRLWwu6cME_AqcSJWdDqOjiiTw_aE1U-OA2uoBJgm6qqtGafNLnJbrQ&quot; title=&quot;20250514_140543.jpg&quot; alt=&quot;20250514_140543.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;用魔鬼粘來固定的話，使用時操作起來就很簡單，只要將吊繩的毛面壓到機車的刺面就能固定。不要看魔鬼粘的尺寸只有2公分而已，這已經足夠固定鑰匙本身的重量，就算整個鑰匙掉落，魔鬼粘還是可以抓住整個鑰匙。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjP-aDyLIBmOZcpJHRypxCrSnO5tm1E0euRtZH3nt8cWCvYqv0BLiCC42dhkbraYrcGC80508WhOLjNcyj7RA16AxSPbtzYm5xbEqnQNRzKLoX9gjEIar0ON-1UFIVEEsDL46dl9R_1ECucOYsvOt4gRRp84FtuF_Q1SjhluvrlzxSq8lVbVwbUlw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjP-aDyLIBmOZcpJHRypxCrSnO5tm1E0euRtZH3nt8cWCvYqv0BLiCC42dhkbraYrcGC80508WhOLjNcyj7RA16AxSPbtzYm5xbEqnQNRzKLoX9gjEIar0ON-1UFIVEEsDL46dl9R_1ECucOYsvOt4gRRp84FtuF_Q1SjhluvrlzxSq8lVbVwbUlw&quot; title=&quot;20250514_150550.jpg&quot; alt=&quot;20250514_150550.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;取出鑰匙的時候，則需要出力將吊繩扯出來。一開始常常忘記鑰匙的吊繩還粘在魔鬼粘上，導致收鑰匙的時候覺得不太順手、覺得很卡。後來習慣了就還好。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;小結：魔鬼粘是理想的做法嗎？ /&amp;nbsp;In Closing: Is Velcro the Ideal Approach?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjanKDojYpseyMYUG0YkW9C40cAPGKTwDDq97E7F86mJb-x_JovgYWXPV1p3Qhd4RIlTR0t4wAEhiU6p7NhqQxaTc2hOKMC7CHcnN3n-jY7AITBwiZg31Mhqn45LFJRJ3KDYI3jh4SPg3P_5oC1Z9LaXhIjm1dug1aEtslLehLPvWFvQmoWgzg0dA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjanKDojYpseyMYUG0YkW9C40cAPGKTwDDq97E7F86mJb-x_JovgYWXPV1p3Qhd4RIlTR0t4wAEhiU6p7NhqQxaTc2hOKMC7CHcnN3n-jY7AITBwiZg31Mhqn45LFJRJ3KDYI3jh4SPg3P_5oC1Z9LaXhIjm1dug1aEtslLehLPvWFvQmoWgzg0dA&quot; title=&quot;2025-0514-171631.png&quot; alt=&quot;2025-0514-171631.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://shop.showba.com.tw/SalePage/Index/7803780&quot; target=&quot;_blank&quot;&gt;https://shop.showba.com.tw/SalePage/Index/7803780&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;這個在小北百貨購買的20元魔鬼粘，的確一定程度上解決了我的機車鑰匙鎖頭鬆脫而掉落的問題。不過魔鬼粘的做法本身仍有幾個可能的隱憂需要注意：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;魔鬼粘的固定力道真的足夠嗎？儘管鑰匙自然掉落的情況下，魔鬼粘確實有足夠的力道可以抓住整個鑰匙，不過如果是遇到激烈晃動、甩動的狀況，魔鬼粘夠用嗎？&lt;/li&gt;
  &lt;li&gt;魔鬼粘與機車外殼的粘貼處足夠牢靠嗎？我使用原本魔鬼粘背後的粘膠黏在機車上，不過這種粘膠在機車日曬雨淋的狀況下，很難確保它是否能夠維持原本的粘性。這點需要經過時間觀察。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不管怎麼說，目前在成本和便利上，魔鬼粘的做法只能說是取得了一定的平衡。未來使用一段時間之後，可能還是要再來評估看看這是否合適吧。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/340812705391143470/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/08/talk-use-velcro-to-prevent-your-motorcycle-key-from-falling-off.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/340812705391143470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/340812705391143470'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/08/talk-use-velcro-to-prevent-your-motorcycle-key-from-falling-off.html' title='雜談：生活小技巧之用魔鬼氈避免機車鑰匙脫落吧 / Talk: Use Velcro to Prevent Your Motorcycle Key From Falling Off'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjg5p5Pn2NxUsNSx7lw0P6he4nqV0k7Dq2x0szOl2g_gNlS8RjM4hxNNVrzr9ypNB8ILYr7ekjMxf1VDiZr7LuQRdVnXKm6ytb6PyS6QdEI5GjTcmAEvYBfSFhAkVoK16egB09drqSOIZtfX9auZMi-FQv6BVRdx2dmM-1u6jz5hFPzDutCi0adtg=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-3925185912054948641</id><published>2025-07-28T12:00:00.008+08:00</published><updated>2025-07-28T12:00:00.113+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AdGuard"/><category scheme="http://www.blogger.com/atom/ns#" term="DNS"/><category scheme="http://www.blogger.com/atom/ns#" term="Network"/><title type='text'>AdGuard Home不只是拿來擋廣告 / AdGuard Home Is More Than Just an Ad Blocker</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhRqdiSQW7obyhTBLRnRbqKM4dCgHgh4HER5ZtdJjQJgY8KCp08MWSz-Eu0K1CDjdQxeN9QGlFCqWV4v1mzjRFrbqiy3glmzAaDNZgsaKZITpm_YmZ_xBLfHxSNNhWvwTvYFwH__G7WOv7v7Z7NsBpFAC9kHWdIqPWVrXTNVSR9JktPNnrUd2c0hA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhRqdiSQW7obyhTBLRnRbqKM4dCgHgh4HER5ZtdJjQJgY8KCp08MWSz-Eu0K1CDjdQxeN9QGlFCqWV4v1mzjRFrbqiy3glmzAaDNZgsaKZITpm_YmZ_xBLfHxSNNhWvwTvYFwH__G7WOv7v7Z7NsBpFAC9kHWdIqPWVrXTNVSR9JktPNnrUd2c0hA&quot; title=&quot;2025-0123-041105.png&quot; alt=&quot;2025-0123-041105.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;自從裝起了&lt;a href=&quot;https://adguard.com/zh_tw/adguard-home/overview.html&quot; target=&quot;_blank&quot;&gt;AdGuard Home&lt;/a&gt;來擔任我住處的DNS伺服器之後，我用它擋掉了很多奇怪的廣告。除此之外，它還能拿來自訂Domain Name，真的是太實用了！&lt;/p&gt;
&lt;p&gt;Since I set up &lt;a href=&quot;https://adguard.com/zh_tw/adguard-home/overview.html&quot; target=&quot;_blank&quot;&gt;AdGuard Home&lt;/a&gt; as the DNS server for my place, it has blocked a lot of weird ads. Besides that, it can also be used for custom domain names, which is really practical!&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;AdGuard Home&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgzdiTx11-H17W09yK6whnRteMnefG6mwFJPWr_Z-A6gLNonYPqA2i6ali6QYyuTu4WdaQupBjlszCbd0uq6sUN_UbDA9L0uJj9pLQvKkFij_vCWoyyEQ7wH-jp-nmlECfftoNaTUKKlsmKvc50JkUyJYZZ8c0M6X6E63ykX9KQA2ycPbwINhqFdg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgzdiTx11-H17W09yK6whnRteMnefG6mwFJPWr_Z-A6gLNonYPqA2i6ali6QYyuTu4WdaQupBjlszCbd0uq6sUN_UbDA9L0uJj9pLQvKkFij_vCWoyyEQ7wH-jp-nmlECfftoNaTUKKlsmKvc50JkUyJYZZ8c0M6X6E63ykX9KQA2ycPbwINhqFdg&quot; title=&quot;https://adguard.com/zh_tw/adguard-home/overview.html&quot; alt=&quot;https://adguard.com/zh_tw/adguard-home/overview.html&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://adguard.com/zh_tw/adguard-home/overview.html&quot; target=&quot;_blank&quot;&gt;https://adguard.com/zh_tw/adguard-home/overview.html&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;AdGuard Home 是一款免費開源的全網路廣告和追蹤器阻擋軟體（Network-wide ad and tracker blocking software）。它作為一個 DNS 伺服器（DNS Server）運作，將追蹤網域重新導向至一個「黑洞」（Black hole），進而防止你的裝置連線到這些帶有廣告或危險的伺服器。&lt;/p&gt;
&lt;p&gt;AdGuard Home 不僅可以阻擋網頁和應用程式中的廣告及追蹤器，還能保護你的隱私和資料，進而加快網頁載入速度。它支援 DNSSEC（域名系統安全擴充, Domain Name System Security Extensions），提供可自訂的過濾清單和家長控制功能。你可以透過網頁介面或手機應用程式輕鬆管理過濾程序。此外，AdGuard Home 也提供 Docker（軟體容器化平台）安裝方式，方便在不同平台上部署。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;AdGuard Home的安裝與設定 /&amp;nbsp;Installing and Configuring AdGuard Home&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjnSWO_dpCiIi6_uKcFvIPQ5o1_hB9ocF2poUS8-uz6AjbJQLs0gmiFq4SRuOXSzIBTLU0oTNdYjCD-zhLQcp_NvguWNMSrfjMb-LeTHxGBHZKjvO64GY-snbrETGA1V_uGqTjgBghb4RZDoUdaxxUlLRPYryG6mBnt4Hh24dLug8VJfX3WQkiDoA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjnSWO_dpCiIi6_uKcFvIPQ5o1_hB9ocF2poUS8-uz6AjbJQLs0gmiFq4SRuOXSzIBTLU0oTNdYjCD-zhLQcp_NvguWNMSrfjMb-LeTHxGBHZKjvO64GY-snbrETGA1V_uGqTjgBghb4RZDoUdaxxUlLRPYryG6mBnt4Hh24dLug8VJfX3WQkiDoA&quot; title=&quot;https://adguard.com/zh_tw/adguard-android/overview.html&quot; alt=&quot;https://adguard.com/zh_tw/adguard-android/overview.html&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://adguard.com/zh_tw/adguard-android/overview.html&quot; target=&quot;_blank&quot;&gt;https://adguard.com/zh_tw/adguard-android/overview.html&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;一開始是我朋友推薦我在手機安裝AdGuard，說可以防止手機連上廣告網站。我看了看AdGuard的原理，想說弄個DNS伺服器好像也不難，而且中國大陸那邊很多網友也都會架設AdGuard來作為居家資安的第一道防護，那我也來架設看看好了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgphlOBR_cQOrNSrg20abRBihoYyXY5oP5IHfRwx-Ib1SKMaIY_QCtwfS4BJ1wZdp7zAV6EDofh77GONB8C7AdYSgKY3A4dyi_QCbCAax3BEGE3dipHDsEPG9f9Eu37uYN_FwXFYG2C5gdcFVJGDyipZmxPneQHC4QiLoLjly7KruPQhEMelVOizg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgphlOBR_cQOrNSrg20abRBihoYyXY5oP5IHfRwx-Ib1SKMaIY_QCtwfS4BJ1wZdp7zAV6EDofh77GONB8C7AdYSgKY3A4dyi_QCbCAax3BEGE3dipHDsEPG9f9Eu37uYN_FwXFYG2C5gdcFVJGDyipZmxPneQHC4QiLoLjly7KruPQhEMelVOizg&quot; title=&quot;https://github.com/AdguardTeam/AdGuardHome?tab=readme-ov-file#getting-started&quot; alt=&quot;https://github.com/AdguardTeam/AdGuardHome?tab=readme-ov-file#getting-started&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/AdguardTeam/AdGuardHome?tab=readme-ov-file#getting-started&quot; target=&quot;_blank&quot;&gt;https://github.com/AdguardTeam/AdGuardHome?tab=readme-ov-file#getting-started&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;佈署AdGuard Home的方式很多，我參考了「&lt;a href=&quot;https://youtu.be/2AJbAcGVwlA&quot; target=&quot;_blank&quot;&gt;Install AdGuard on Ubuntu 20.0.4 using Proxmox and one line of command&lt;/a&gt;」這篇的做法，使用的是自動安裝腳本安裝。我在Proxmox VE裡面建立CT容器，作業系統是Ubuntu 22.04。安裝AdGuard Home的自動腳本如下：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;curl&amp;nbsp;-s&amp;nbsp;-S&amp;nbsp;-L&amp;nbsp;https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh&amp;nbsp;|&amp;nbsp;sh&amp;nbsp;-s&amp;nbsp;--&amp;nbsp;-v&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjgo3Gnm7nxbRQ-TH3aZF2WsWcibREx6W3xOTBeynAf8vUKO1QhfkdVZ6bTZvGCJ9iziz6CYch_ZWP66D8ivjsCEy1uhKhT6zypgRuRrWSjXWZxc03YV6yqp5tA7dTun0L-K2rjMfp-Z_ixkpkCllQxgzGH4IgXNN0632ZFy8Xgkn_CIKT9kcE09w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjgo3Gnm7nxbRQ-TH3aZF2WsWcibREx6W3xOTBeynAf8vUKO1QhfkdVZ6bTZvGCJ9iziz6CYch_ZWP66D8ivjsCEy1uhKhT6zypgRuRrWSjXWZxc03YV6yqp5tA7dTun0L-K2rjMfp-Z_ixkpkCllQxgzGH4IgXNN0632ZFy8Xgkn_CIKT9kcE09w&quot; title=&quot;2025-0123-031259.png&quot; alt=&quot;2025-0123-031259.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://youtu.be/2AJbAcGVwlA&quot; target=&quot;_blank&quot;&gt;https://youtu.be/2AJbAcGVwlA&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;第一次安裝完後，連上AdGuard Home伺服器的網址，會出現初次佈署的設定。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjvRiMKn-WWnAYbNEQWTN-AtgJtFZTzTyjlfWBOCyiO2Stb4uQSvKYShQn9yqAZNBgddmD-ATt5SEwNnnKioY_oSftMF1AaYqp0e9qVcvLonGD9C-IdUOIhRWuWajU4dr8s4uCX8J1ZgrySpLUP7RHQbvJPqYQ94tp39yzOdcrRlIoleRxWNp96AA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjvRiMKn-WWnAYbNEQWTN-AtgJtFZTzTyjlfWBOCyiO2Stb4uQSvKYShQn9yqAZNBgddmD-ATt5SEwNnnKioY_oSftMF1AaYqp0e9qVcvLonGD9C-IdUOIhRWuWajU4dr8s4uCX8J1ZgrySpLUP7RHQbvJPqYQ94tp39yzOdcrRlIoleRxWNp96AA&quot; title=&quot;2025-0123-031455.png&quot; alt=&quot;2025-0123-031455.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;參考佈署說明設定完之後就可以登入AdGuard Home了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi2SwK2xhH_LX8LGOBEUCIvCBVyI1psuCnfpP_S55ZP70R9QvRqMzYKPIjpZ_JmzWf9Jdtk9STtbB5F_HtkO8-qfHvDOXbrBuQ8TKq9UN01K5KxamVDkLiqfhw6m0GWyBQAQcnDfXUFRC0irto8dP9BWrhxYsquYE4m550QpOOfKNWBVopVmIRzwg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi2SwK2xhH_LX8LGOBEUCIvCBVyI1psuCnfpP_S55ZP70R9QvRqMzYKPIjpZ_JmzWf9Jdtk9STtbB5F_HtkO8-qfHvDOXbrBuQ8TKq9UN01K5KxamVDkLiqfhw6m0GWyBQAQcnDfXUFRC0irto8dP9BWrhxYsquYE4m550QpOOfKNWBVopVmIRzwg&quot; title=&quot;2025-0123-035014.png&quot; alt=&quot;2025-0123-035014.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;建立好AdGuard Home之後，我把家裡路由器的DHCP中DNS伺服器的設定改成AdGuard Home的網址。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh6m-r_VDSK2F6du7QFM6fsLqzeoV17JB9YbUc9haUcmSCs-CuMiJkYY7gXIazqLkoX1MLtZU4pDdH2M_MeaEDOPrPxlsq7HM8rOMS318PFK0WjoDZzF7q41HZxYJU87uSpe3Qp5Bh2xrPAdxeyoo9IrKhyjJOPxy9SCsohoRTGppruxJHY9WaBKQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh6m-r_VDSK2F6du7QFM6fsLqzeoV17JB9YbUc9haUcmSCs-CuMiJkYY7gXIazqLkoX1MLtZU4pDdH2M_MeaEDOPrPxlsq7HM8rOMS318PFK0WjoDZzF7q41HZxYJU87uSpe3Qp5Bh2xrPAdxeyoo9IrKhyjJOPxy9SCsohoRTGppruxJHY9WaBKQ&quot; title=&quot;2025-0123-035039.png&quot; alt=&quot;2025-0123-035039.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然後確認我透過DHCP連線的裝置，DNS使用的是AdGuard Home伺服器。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgSJ_lQ4oubs2OdZmar9qT8jd2_WSmO15UPDqEPW3tySwvGjWx0seuUFrDJJoelC4BveqrEZU7fUP1AaxgdFNaMJXLsElbgdHpPbI5C7zRzm0SVBHFXx5LhXNWzXZ7953PvvsoF0pX_u4PPMz7vG1oES1FdZf4e2kgWAA0ugvbhlDN4CRVxN0Gy-w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgSJ_lQ4oubs2OdZmar9qT8jd2_WSmO15UPDqEPW3tySwvGjWx0seuUFrDJJoelC4BveqrEZU7fUP1AaxgdFNaMJXLsElbgdHpPbI5C7zRzm0SVBHFXx5LhXNWzXZ7953PvvsoF0pX_u4PPMz7vG1oES1FdZf4e2kgWAA0ugvbhlDN4CRVxN0Gy-w&quot; title=&quot;2025-0123-031751.png&quot; alt=&quot;2025-0123-031751.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接著在AdGuard Home的Query Log裡面，就可以看到裝置連上網路查詢的DNS。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhYxYp7Q6PmlYevhV7zDypXb2kO91fftA9dUl0Pn7Suu2VXM7d8SaI9U7Yo1j5LA4hoh7Yx_J0_Oc0Vjmtqkx6Z5hLnM4EJlDhpwXYEj5_QOc7govwai3TKAPmLqs_SKJBzkJ-pzR0W2o8c5WACFf4fGSyhdRAguN0LsBh3FT8rL9UyNFt1H1oMnQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhYxYp7Q6PmlYevhV7zDypXb2kO91fftA9dUl0Pn7Suu2VXM7d8SaI9U7Yo1j5LA4hoh7Yx_J0_Oc0Vjmtqkx6Z5hLnM4EJlDhpwXYEj5_QOc7govwai3TKAPmLqs_SKJBzkJ-pzR0W2o8c5WACFf4fGSyhdRAguN0LsBh3FT8rL9UyNFt1H1oMnQ&quot; title=&quot;2025-0123-031853.png&quot; alt=&quot;2025-0123-031853.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;有些可能是廣告的網址就會被AdGuard Home擋下來。這樣就初步設定完成了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;要用那些禁用清單？ /&amp;nbsp;Which Banned Lists Should Be Used?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh-b89B7kN1nK40uEJZ_H-Zd_IV2vSWE4RpyvfWJFeeesOUBsbfAvwFH56zUZ8aZqFtmuaEFPFwpVFpACaZ_m9xw7VCWCa83_7M5w0emWdRsVg7FZMf1ep-Vb2qwpkjwSOQv9qwAHnlwUgqWuk3UKtoxdUNzyyW4MtWr72adEVIwsD9Yd_ZtEeUtw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh-b89B7kN1nK40uEJZ_H-Zd_IV2vSWE4RpyvfWJFeeesOUBsbfAvwFH56zUZ8aZqFtmuaEFPFwpVFpACaZ_m9xw7VCWCa83_7M5w0emWdRsVg7FZMf1ep-Vb2qwpkjwSOQv9qwAHnlwUgqWuk3UKtoxdUNzyyW4MtWr72adEVIwsD9Yd_ZtEeUtw&quot; title=&quot;2025-0123-032023.png&quot; alt=&quot;2025-0123-032023.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;AdGuard Home的原理是設定一堆黑名單來阻止裝置連上黑名單的網站，而這個黑名單其實是由不同單位各自維護與管理的清單。在DNS blocklists裡面我們可以看到很多不同的清單，有勾選套用的清單，AdGuard Home就會把清單裡面的規則加入黑名單。&lt;/p&gt;
&lt;p&gt;一開始我嘗試把所有清單都勾選，但很快我就發現網路無法正常運作。全部勾選之後，我自己的Blog「布丁布丁吃什麼？」會無法開啟，而且巴哈姆特動畫瘋也會因為無法播放廣告而進入不了動畫本身。可能是某些清單包含了過於激進的擋廣告策略吧，這樣下去可不行。所以現在我只有勾選預設的AdGuard DNS filter而已。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;擋掉聯想平板奇怪的查詢 /&amp;nbsp;Blocking Strange Queries from Lenovo Tablet&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhckc59bjR1NiAzYwLXzTnl_4Y0oqdo-A0YpoxJ6apQ18coKjuaYHBlkh2AgwNGF31x9jsS1l2bBmFoDaALbJRgrXXsRnFkF5yUstUB2bM35bXRFesraSLIbjf6ecWbnFrqWXIiVdqyK38reUwEpxA0ffGuUi1wY989ZAa5oTOX7GntJ8X-3_L3kA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhckc59bjR1NiAzYwLXzTnl_4Y0oqdo-A0YpoxJ6apQ18coKjuaYHBlkh2AgwNGF31x9jsS1l2bBmFoDaALbJRgrXXsRnFkF5yUstUB2bM35bXRFesraSLIbjf6ecWbnFrqWXIiVdqyK38reUwEpxA0ffGuUi1wY989ZAa5oTOX7GntJ8X-3_L3kA&quot; title=&quot;2025-0123-032607.png&quot; alt=&quot;2025-0123-032607.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在觀察Query Log的時候，我發現聯想的平板一直在跟「lenovomm.com」網域的伺服器連線，而且連線的頻率非常頻繁。我感覺這不太像是系統更新的檢查，更像是平板自動傳送訊息給遠端的伺服器。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiGWNfEjV2SzWausTIf9SOcGbiCarHElDgXv0RMh_JfzbiopGpyWiA29mnqdK0A2rNOpFYk8yfjLEDmPhZoHUuCGrGhYMFnEvFOkTWLBQHZtnyHt4-spm0nJKiyv1u7SwGWIDyT77DqDQGaMrZu3-3LvMefX88lAbF48du4yDw1Met9hWgs87y11A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiGWNfEjV2SzWausTIf9SOcGbiCarHElDgXv0RMh_JfzbiopGpyWiA29mnqdK0A2rNOpFYk8yfjLEDmPhZoHUuCGrGhYMFnEvFOkTWLBQHZtnyHt4-spm0nJKiyv1u7SwGWIDyT77DqDQGaMrZu3-3LvMefX88lAbF48du4yDw1Met9hWgs87y11A&quot; title=&quot;2025-0123-033030.png&quot; alt=&quot;2025-0123-033030.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;於是我在Custom filtering rules裡面，將平板持續傳送的這些網域禁止掉。後來看起來平板似乎也沒有什麼異狀。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgQChVlwYaiNUq57yohxEFyl30zD5JAAYZd2_g2T69RuCv0pEqXcfdfqMYWs4UD3YoC2KG7OvCPkONfENc1zyvArdCsV_Qbc1a-z3bpNQcLKpAcVDNhUhieCr2_MhHx9H5gEhvCwvZf01JAg9DXFtemc5tMxF2g8U1DEdlvW2kBeIIfxIuiN3doXA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgQChVlwYaiNUq57yohxEFyl30zD5JAAYZd2_g2T69RuCv0pEqXcfdfqMYWs4UD3YoC2KG7OvCPkONfENc1zyvArdCsV_Qbc1a-z3bpNQcLKpAcVDNhUhieCr2_MhHx9H5gEhvCwvZf01JAg9DXFtemc5tMxF2g8U1DEdlvW2kBeIIfxIuiN3doXA&quot; title=&quot;Screenshot_20250123-033148.png&quot; alt=&quot;Screenshot_20250123-033148.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;不過如果可以的話，我還是希望能將平板裡面奇怪的新聞查詢功能也一起關掉。可惜現在我還找不到怎麼在AdGuard Home阻止它們。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;自訂Domain Name /&amp;nbsp;Customize the Domain Name&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEik_CjCHKYqfKNF5kLWmj0jpDAjL4-bT7b9VQBd0pAiDTOGex-s07eqY8A-PCpqQj6M05GnoB0pgCZu-chFcGp7F0HMrZ9qrU4h50-hAcZECxupy0KjyejKa2r3jGBzZ1OjqiQJJPSG0Ol2LJlRRx48nmvRmSaYISbne3zcteI-EH8SWqXR1sCT9w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEik_CjCHKYqfKNF5kLWmj0jpDAjL4-bT7b9VQBd0pAiDTOGex-s07eqY8A-PCpqQj6M05GnoB0pgCZu-chFcGp7F0HMrZ9qrU4h50-hAcZECxupy0KjyejKa2r3jGBzZ1OjqiQJJPSG0Ol2LJlRRx48nmvRmSaYISbne3zcteI-EH8SWqXR1sCT9w&quot; title=&quot;https://youtu.be/KdxGklRyx5E&quot; alt=&quot;https://youtu.be/KdxGklRyx5E&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://youtu.be/KdxGklRyx5E&quot; target=&quot;_blank&quot;&gt;https://youtu.be/KdxGklRyx5E&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;AdGuard Home還一項特殊功能：DNS Rewrites。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiNDASVnxYZrHBNQSs3Uo48TvV6kT84iu9acmIa5GHJ6xub9wxua_Gj199ZfzuTKL38_mMcN7-GjAeHgBm-h5QqaPfjT_kIky0Qv3NINNnCZBoi4NQTlUdVXUliOkw4OVakSoBl1KVC50-dBmef9A8FktJnuUsB3S79pU1r1AgXtmB03I7H0uQMDg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiNDASVnxYZrHBNQSs3Uo48TvV6kT84iu9acmIa5GHJ6xub9wxua_Gj199ZfzuTKL38_mMcN7-GjAeHgBm-h5QqaPfjT_kIky0Qv3NINNnCZBoi4NQTlUdVXUliOkw4OVakSoBl1KVC50-dBmef9A8FktJnuUsB3S79pU1r1AgXtmB03I7H0uQMDg&quot; title=&quot;2025-0123-034119.png&quot; alt=&quot;2025-0123-034119.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我們可以自行設定IP跟Domain Name，而這個Domain Name只有使用AdGuard Home作為DNS的裝置才能正確識別。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgaQimtUNbeF4-8PXAc--iohNu1crIG7jf76XZGsVAwlxMdE524KxaCNcrRwgGgrp1CGypbD5bJR_rRVfNsoyshoyupEXyhzJ8IfU_E0iOdTSBOQ6kXgj_BIih0QKUnTvLmtzcYgijYbMxZROMV0wX_tlDt92UsrWfu4KgjqaOl-lMfXlDVFz0TJA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgaQimtUNbeF4-8PXAc--iohNu1crIG7jf76XZGsVAwlxMdE524KxaCNcrRwgGgrp1CGypbD5bJR_rRVfNsoyshoyupEXyhzJ8IfU_E0iOdTSBOQ6kXgj_BIih0QKUnTvLmtzcYgijYbMxZROMV0wX_tlDt92UsrWfu4KgjqaOl-lMfXlDVFz0TJA&quot; title=&quot;2025-0123-035132.png&quot; alt=&quot;2025-0123-035132.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如此一來，我們就可以用自訂的Domain Name連線。這樣我們就可以用比較容易的Domain Name來稱呼設備，未來就不用記IP數字了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;結語 / Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhXsY2G1H-xKY19oar32dIJ0SvGBnvl7KJten3AwZydFwHJqr0wPOD4d9FkMWz93DDF8KNHNT82oyQZiMNCZWzC1p9eltKYCQQyzMk2inht6rYR6Skw-A-zeI8dTKRVSViF-ysWRKoWxZEHywQ7j8RVMYUKF9vRKmqbfR6KfftkUMoQ2qYNabwxjA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhXsY2G1H-xKY19oar32dIJ0SvGBnvl7KJten3AwZydFwHJqr0wPOD4d9FkMWz93DDF8KNHNT82oyQZiMNCZWzC1p9eltKYCQQyzMk2inht6rYR6Skw-A-zeI8dTKRVSViF-ysWRKoWxZEHywQ7j8RVMYUKF9vRKmqbfR6KfftkUMoQ2qYNabwxjA&quot; title=&quot;2025-0123-035526.png&quot; alt=&quot;2025-0123-035526.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;其實當初我買&lt;a href=&quot;/2025/01/talki-placed-a-mikrotik-router-in-the-lowvoltage-wiring-box.html&quot; target=&quot;_blank&quot;&gt;Router OS&lt;/a&gt;的其中一個原因是聽說它可以裝AdGuard Home。不過我看了「&lt;a href=&quot;https://blog.ty-wu.com/posts/rosconatineradguardhome/&quot; target=&quot;_blank&quot;&gt;RouterOS 使用容器搭建 AdGuard Home&lt;/a&gt;」這篇的說法，原來它是將AdGuard Home用container的形式安裝到Router OS，整個操作頗為複雜。因此我才決定改用Proxmox VE來佈署AdGuard Home，整個程序就簡單很多。&lt;/p&gt;
&lt;p&gt;在AdGuard佈署的過程中我還犯了很多錯。像是把8.8.8.8當作是第二Name Server，結果被AdGuard Home擋掉的網站通通都從8.8.8.8查了回來。結果就什麼也沒擋到。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEijXBp_uxmVxpEUQd1QxMk2Md0tjrl-havL5NCcuFecng8hYBc6-NY9o1r1Iw9iuAzF4cj_cR8d2QasocOc0V8kryLU1hTWudXlxSbSxTbHbodR3wH_6GBl4px6cH4feaC1c5hWDg7vxO8UQDVevuMrAaDdCNQku0uU-Hn_-YhzjV0MBzb19XXF9Q&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEijXBp_uxmVxpEUQd1QxMk2Md0tjrl-havL5NCcuFecng8hYBc6-NY9o1r1Iw9iuAzF4cj_cR8d2QasocOc0V8kryLU1hTWudXlxSbSxTbHbodR3wH_6GBl4px6cH4feaC1c5hWDg7vxO8UQDVevuMrAaDdCNQku0uU-Hn_-YhzjV0MBzb19XXF9Q&quot; title=&quot;2025-0123-040132.png&quot; alt=&quot;2025-0123-040132.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然而AdGuard Home只能擋掉網頁上面的佔版廣告，或是防止裝置探訪特定網域。如果是應用程式裡面結合的廣告，通常都不能把它擋下。例如YouTube的內建廣告、或是巴哈姆特動畫瘋影片前的廣告。擋掉的話就會連影片都無法觀看。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgObEYwSSmSSwz3jAqcqyRtmSXZa1R_bvlGEGmBhQTVJ0MU7VF_PnV8pfhijA0uvRJe5wP1BYf757smfFtn0BMaUelhjpZDzezdKTB0JJ_09TS1qeC3LHCegAcVLIS8Ov-nKSzQ_U4I5QwVnk0UwAcD-tIWHdWHCoMlOpSIthWUwIFiw2SzXCWymw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgObEYwSSmSSwz3jAqcqyRtmSXZa1R_bvlGEGmBhQTVJ0MU7VF_PnV8pfhijA0uvRJe5wP1BYf757smfFtn0BMaUelhjpZDzezdKTB0JJ_09TS1qeC3LHCegAcVLIS8Ov-nKSzQ_U4I5QwVnk0UwAcD-tIWHdWHCoMlOpSIthWUwIFiw2SzXCWymw&quot; title=&quot;2025-0123-040527.png&quot; alt=&quot;2025-0123-040527.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.pixiv.net/artworks/119644871&quot;&gt;https://www.pixiv.net/artworks/119644871&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;儘管如此，AdGuard Home將大部分網頁上的佔版廣告擋掉的這個功能，已經幫了很大的忙了。現在看很多網站會出現莫名其妙的空白區域，或是連線錯誤的訊息。搞不好哪裡原本就是廣告的位置呢。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;這篇關於使用AdGuard擋廣告跟設定Domain Name的過程就到此為止了。文章的最後要來問大家的是，你對網路廣告的看法是？&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;1. 還是擋掉吧。都2025年了，網頁的佔版廣告還能賺錢嗎？&lt;/li&gt;
  &lt;li&gt;2. 留著廣告吧。偶爾也會看到一些有趣的內容，讓人不禁想要點進去看看啊。&lt;/li&gt;
  &lt;li&gt;3. 有廣告嗎？我都買YouTube Premium。&lt;/li&gt;
  &lt;li&gt;4. 其他：歡迎在下面留言，分享你的看法吧！&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/3925185912054948641/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/07/adguard-home-is-more-than-just-an-ad-blocker.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/3925185912054948641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/3925185912054948641'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/07/adguard-home-is-more-than-just-an-ad-blocker.html' title='AdGuard Home不只是拿來擋廣告 / AdGuard Home Is More Than Just an Ad Blocker'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhRqdiSQW7obyhTBLRnRbqKM4dCgHgh4HER5ZtdJjQJgY8KCp08MWSz-Eu0K1CDjdQxeN9QGlFCqWV4v1mzjRFrbqiy3glmzAaDNZgsaKZITpm_YmZ_xBLfHxSNNhWvwTvYFwH__G7WOv7v7Z7NsBpFAC9kHWdIqPWVrXTNVSR9JktPNnrUd2c0hA=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-749217337413107728</id><published>2025-07-25T12:00:00.006+08:00</published><updated>2025-07-25T12:00:00.227+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Proxmox VE"/><category scheme="http://www.blogger.com/atom/ns#" term="Talk"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>雜談：在實體機器裡面架設虛擬機器的虛擬機器失敗 / TALK: Virtual Machine Failure Within Nested Virtualization on a Physical Machine</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhT3IvPXRL_AVndcL4jIxOSkRUzOwCGAVEhriHDzEmLm0Gm6sGBerZC5TpIDAwvajTwCoobq_q6f6x7uYPp28hTecxapZUsq91nqhf9F57RDqRaftCTycKudizi6839cqgjHMKt6EbvqzG60obped9HnS9XWRYjnH2qB4XMw7jC3jx6-8Q24hpjzg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhT3IvPXRL_AVndcL4jIxOSkRUzOwCGAVEhriHDzEmLm0Gm6sGBerZC5TpIDAwvajTwCoobq_q6f6x7uYPp28hTecxapZUsq91nqhf9F57RDqRaftCTycKudizi6839cqgjHMKt6EbvqzG60obped9HnS9XWRYjnH2qB4XMw7jC3jx6-8Q24hpjzg&quot; title=&quot;2025-0320-111359.png&quot; alt=&quot;2025-0320-111359.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;沒想到Proxmox VE裡面的Windows無法啟動WSL2的原因，可能是因為Proxmox VE宿主機的CPU是AMD。&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;Windows中的虛擬機器 /&amp;nbsp;Virtual Machines in Windows&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgMSQuwXaJIbpSGTjSTcLNYs_sF3PN9kfxhzseVyHJgxaqdCOUC69v60erDstLU_BzkOyelPpN5EyJtNQWy6oeG90NOcLTGPE8kOxtpX0hPqo_l3EEpVaVibrl36LDhKf6fzcnGpKz00rhfUwD_QyK74iXv6NDheafqEqUHSdrLx2q0qXzSKgcqzA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgMSQuwXaJIbpSGTjSTcLNYs_sF3PN9kfxhzseVyHJgxaqdCOUC69v60erDstLU_BzkOyelPpN5EyJtNQWy6oeG90NOcLTGPE8kOxtpX0hPqo_l3EEpVaVibrl36LDhKf6fzcnGpKz00rhfUwD_QyK74iXv6NDheafqEqUHSdrLx2q0qXzSKgcqzA&quot; title=&quot;2025-0320-105456.png&quot; alt=&quot;2025-0320-105456.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;為了測試Docker Desktop在Windows環境下的運作，我用Proxmox VE架設了Windows 11 Pro N作業系統，然後安裝Docker Desktop來使用。Docker Desktop需要使用Windows的WSL (Windows Subsystem for Linux)來執行Docker容器，通常安裝完Docker Desktop後，軟體會再要求Windows配置好WSL。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjtk2a2r3PvLYbnKXHBFTq8pzwmbghYxUij9DYAQMRrg--eK5SzxmeujDWkUYMrkyfJZgoQlXKm4c7Rz0M04FESE6wvUAgcuzgfx65Jvs9bwtdACw4ihyw-8N76THIpECEZYL0d-iH5Zq-y4R_Dhn2BC135b39-Q98Q8BHYbteF1xfS1ybQnlMOLQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjtk2a2r3PvLYbnKXHBFTq8pzwmbghYxUij9DYAQMRrg--eK5SzxmeujDWkUYMrkyfJZgoQlXKm4c7Rz0M04FESE6wvUAgcuzgfx65Jvs9bwtdACw4ihyw-8N76THIpECEZYL0d-iH5Zq-y4R_Dhn2BC135b39-Q98Q8BHYbteF1xfS1ybQnlMOLQ&quot; title=&quot;2025-0320-105958.png&quot; alt=&quot;2025-0320-105958.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然而，當我嘗試使用「wsl --install」來安裝Ubuntu時，卻收到了以下錯誤訊息：&lt;/p&gt;
&lt;blockquote&gt;PS C:\Users\user&amp;gt; wsl --install&lt;br&gt;Downloading: Ubuntu&lt;br&gt;Installing: Ubuntu&lt;br&gt;WSL2 is not supported with your current machine configuration.&lt;br&gt;Please enable the &quot;Virtual Machine Platform&quot; optional component and ensure virtualization is enabled in the BIOS.&lt;br&gt;Enable &quot;Virtual Machine Platform&quot; by running: wsl.exe --install --no-distribution&lt;br&gt;For information please visit https://aka.ms/enablevirtualization&lt;br&gt;Error code: Wsl/InstallDistro/Service/RegisterDistro/CreateVm/HCS/HCS_E_HYPERV_NOT_INSTALLED&lt;/blockquote&gt;
&lt;p&gt;幾經調查後，似乎是因為虛擬機器本身沒有啟動硬體虛擬化功能的緣故。那接下來就要離開Windows虛擬機器，從宿主機(host)來看看可能的原因了。&lt;/p&gt;
&lt;h2&gt;Proxmox VE環境 /&amp;nbsp;Proxmox VE Environment&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhEfBSQIw3F3JbOBydlRrmkmRzxBSTJa9HfAkdRBpbYlVhYaax77zJappUZ7gOOl-Lpy9W_4IcdU4z-iYzzpc1GhYaWF9_XlNftkyVHdcMhOkpJy9lWsOIkRl7qF8rPX5LXcF83a-wo8vMIoxLWJIln9tvu0gJzmDm_icJ0smz4HbwUuxtj3p6NGQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhEfBSQIw3F3JbOBydlRrmkmRzxBSTJa9HfAkdRBpbYlVhYaax77zJappUZ7gOOl-Lpy9W_4IcdU4z-iYzzpc1GhYaWF9_XlNftkyVHdcMhOkpJy9lWsOIkRl7qF8rPX5LXcF83a-wo8vMIoxLWJIln9tvu0gJzmDm_icJ0smz4HbwUuxtj3p6NGQ&quot; title=&quot;2025-0320-105303.png&quot; alt=&quot;2025-0320-105303.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;宿主機使用的CPU是AMD Ryzen 9 7940HS。就跟現代的CPU一樣，基本上都支援硬體虛擬化的功能。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiGQIfCwcmueTIBFEmTm8ariP9El5DbN9w1i0D-mnXRUZDxVpKCb-WBNlphIkQ_Ghw-BhOHU9zexDJyqKvfWA1KrmM8d2hutTfIdVpBalEJrveGQBYHijOSG_uNuE3RAZ6jQE6QvsEMHkvR5s5Ijb7vaYy9r5VQcXZ2UKzZeJNRe_AlkvCiAPZLUg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiGQIfCwcmueTIBFEmTm8ariP9El5DbN9w1i0D-mnXRUZDxVpKCb-WBNlphIkQ_Ghw-BhOHU9zexDJyqKvfWA1KrmM8d2hutTfIdVpBalEJrveGQBYHijOSG_uNuE3RAZ6jQE6QvsEMHkvR5s5Ijb7vaYy9r5VQcXZ2UKzZeJNRe_AlkvCiAPZLUg&quot; title=&quot;2025-0320-110454.png&quot; alt=&quot;2025-0320-110454.png&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;根據Proxmox VE在&lt;a href=&quot;https://pve.proxmox.com/wiki/Nested_Virtualization&quot; target=&quot;_blank&quot;&gt;Enable Nested Hardware-assisted Virtualization&lt;/a&gt;裡面的說明，虛擬化的參數已經開啟。但因為我使用的是AMD的CPU，跟PVE說明中的Intel有點不一樣。&lt;/p&gt;
&lt;h2&gt;設定CPU / CPU Settings&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEht4mr7slJhnj3LmVI0lA_zqZh7D6eCpQcQgVpxKrV99v0Q00pLGPLo_ufVw3jzfN9LKiljz8OfxB863JvVE9qI1_hf7dKpnAeCZ0oNSjOgWk0a4xf0G2qlDgxexLLf1YTRLMOz_fiKoexm9k-VCF5ovR0YjY4FIvFdPrhzME299Spywg7pZaRcAg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEht4mr7slJhnj3LmVI0lA_zqZh7D6eCpQcQgVpxKrV99v0Q00pLGPLo_ufVw3jzfN9LKiljz8OfxB863JvVE9qI1_hf7dKpnAeCZ0oNSjOgWk0a4xf0G2qlDgxexLLf1YTRLMOz_fiKoexm9k-VCF5ovR0YjY4FIvFdPrhzME299Spywg7pZaRcAg&quot; title=&quot;2025-0320-110333.png&quot; alt=&quot;2025-0320-110333.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;說明中也提到應該讓客機的CPU使用宿主機的CPU，設定為host即可。但結果依然是無法成功。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhVAxP8swYga_i-nXxudA8wWDle2VuqIEJZsDvaZ03Mbz97seXoD4xm7e7ivlIkIxbAJmWrw6NuQCY4TzeKE25a3A1Th5lMa8erZAuWXNf4zzMbEiVXsAWrj4HvINYTd9Y3fYHgCwwNtlp2CUAk73ytYnz9hDdE1wmmde96rBuQNodNMRFrWoTADw&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhVAxP8swYga_i-nXxudA8wWDle2VuqIEJZsDvaZ03Mbz97seXoD4xm7e7ivlIkIxbAJmWrw6NuQCY4TzeKE25a3A1Th5lMa8erZAuWXNf4zzMbEiVXsAWrj4HvINYTd9Y3fYHgCwwNtlp2CUAk73ytYnz9hDdE1wmmde96rBuQNodNMRFrWoTADw&quot; title=&quot;2025-0320-110802.png&quot; alt=&quot;2025-0320-110802.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我嘗試了網路上提到的幾種設定，不過還是無法在客機Windows裡面啟用WSL。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj1hs0iAYzJgr157nzubm7AiI54IqSnuzjpHeVegDhSdqjqRYWzHvFPZsOPgo9rellW9Gg82d35hm5trVDs7RzDY8Qg__3wmmm7vsy5TlsJSf1PMBvCUAJ-EOXHjSKMuOirqgT1Wi8zNV0pDCJmuCKvg-e9v8fGrGYjIe85ufVOqto9znGEZWppHQ&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj1hs0iAYzJgr157nzubm7AiI54IqSnuzjpHeVegDhSdqjqRYWzHvFPZsOPgo9rellW9Gg82d35hm5trVDs7RzDY8Qg__3wmmm7vsy5TlsJSf1PMBvCUAJ-EOXHjSKMuOirqgT1Wi8zNV0pDCJmuCKvg-e9v8fGrGYjIe85ufVOqto9znGEZWppHQ&quot; title=&quot;2025-0320-110931.png&quot; alt=&quot;2025-0320-110931.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;有許多建議跟教學，不過看起來大家使用的CPU都是Intel系列。而Proxmox VE在CPU設定裡面也有hv-evmcs可供設定，這個設定似乎可以加強客機巢狀虛擬化的功能，但只能在Intel CPU裡面使用。&lt;/p&gt;
&lt;h2&gt;小結 / In Closing&lt;/h2&gt;
&lt;p&gt;幾經研究之後，感覺似乎是AMD的CPU無法啟用巢狀虛擬化，抑或是Windows的WSL還有其他要求，可能還有我沒察覺到的細節？&lt;/p&gt;
&lt;p&gt;總之這次嘗試算是失敗了。這篇就把過程記錄一下，看看未來有沒有辦法克服吧。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/749217337413107728/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/07/talk-virtual-machine-failure-within-nested-virtualization-on-a-physical-machine.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/749217337413107728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/749217337413107728'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/07/talk-virtual-machine-failure-within-nested-virtualization-on-a-physical-machine.html' title='雜談：在實體機器裡面架設虛擬機器的虛擬機器失敗 / TALK: Virtual Machine Failure Within Nested Virtualization on a Physical Machine'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhT3IvPXRL_AVndcL4jIxOSkRUzOwCGAVEhriHDzEmLm0Gm6sGBerZC5TpIDAwvajTwCoobq_q6f6x7uYPp28hTecxapZUsq91nqhf9F57RDqRaftCTycKudizi6839cqgjHMKt6EbvqzG60obped9HnS9XWRYjnH2qB4XMw7jC3jx6-8Q24hpjzg=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-1012851589926286288</id><published>2025-07-21T12:00:00.008+08:00</published><updated>2025-07-21T12:00:00.112+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Home Assistant"/><category scheme="http://www.blogger.com/atom/ns#" term="NWT"/><category scheme="http://www.blogger.com/atom/ns#" term="Tuya"/><title type='text'>如何在Home Assistant的localTuya設定裝置的實體？ / How to Set Up Device Entities in LocalTuya on Home Assistant?</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjZKyPQpsJjFEKqWJfSkRdeSu71bxJShitAJnMuJisFc7rzqCvjjON0tnUNVKWFSlCNiXne3gCbBbZ_C9hX864q7hxmMOl6DupuEJbyrIYb2sHeob_ockJR_sNq0Z07rYsm4jxit6gZYMR0Cn0YUGCjzW5J3CRVZryFAGqEr2W7jzAleVZzS_oOCQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjZKyPQpsJjFEKqWJfSkRdeSu71bxJShitAJnMuJisFc7rzqCvjjON0tnUNVKWFSlCNiXne3gCbBbZ_C9hX864q7hxmMOl6DupuEJbyrIYb2sHeob_ockJR_sNq0Z07rYsm4jxit6gZYMR0Cn0YUGCjzW5J3CRVZryFAGqEr2W7jzAleVZzS_oOCQ&quot; title=&quot;2025-0123-004235.png&quot; alt=&quot;2025-0123-004235.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;要在Home Assistant裡面使用localTuya，我們除了要取得裝置的&lt;a href=&quot;https://youtu.be/Q1ZShFJDvE0&quot; target=&quot;_blank&quot;&gt;local key&lt;/a&gt;之外，還需要自行設定裝置的實體在Home Assistant的控制方式。以下我們就用&lt;a href=&quot;https://www.newwidetech.com/catalog-detail/61/&quot; target=&quot;_blank&quot;&gt;威技除溼機WDH-11FS&lt;/a&gt;為例子，來看看怎麽將UVC模式設定到Home Assistant上。&lt;/p&gt;
&lt;p&gt;To use localTuya in Home Assistant, besides &lt;a href=&quot;https://youtu.be/Q1ZShFJDvE0&quot; target=&quot;_blank&quot;&gt;obtaining the device&#39;s local key&lt;/a&gt;, we also need to configure how the physical device is controlled within Home Assistant.&amp;nbsp; Below, we&#39;ll use the &lt;a href=&quot;https://www.newwidetech.com/catalog-detail/61/&quot; target=&quot;_blank&quot;&gt;NWT WDH-11FS dehumidifier&lt;/a&gt; as an example to demonstrate how to set up the UVC mode in Home Assistant.&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;前置作業 /&amp;nbsp;Preliminary Work&lt;/h2&gt;
&lt;p&gt;這篇的操作我主要想講Entity的設定，不過我們還是有必要提一下在這之前的操作。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgrz8dPNaG05gI1m-uE4YC_7ug8m5p5i0oh_erKxyzZiM1aoj-6_ooT_0RW8OnCqGJpoLBqD19IZ_ovTASVu2scJy58bRkFmkuC8cPczBIi2wj-CS3YdCfaXyS6YGGdPzRBDWrBzxeAY9ya3alrjW1fr0qHmcP1LJ3IZkX5acanMc_4bRCDeWeeJQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgrz8dPNaG05gI1m-uE4YC_7ug8m5p5i0oh_erKxyzZiM1aoj-6_ooT_0RW8OnCqGJpoLBqD19IZ_ovTASVu2scJy58bRkFmkuC8cPczBIi2wj-CS3YdCfaXyS6YGGdPzRBDWrBzxeAY9ya3alrjW1fr0qHmcP1LJ3IZkX5acanMc_4bRCDeWeeJQ&quot; title=&quot;2025-0122-212151.png&quot; alt=&quot;2025-0122-212151.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;首先，我們必須確保你的Home Assistant有正確安裝localTyua，也就是LocalTuya integration。localTuya的保存庫有寫到&lt;a href=&quot;https://github.com/rospogrigio/localtuya?tab=readme-ov-file#installation&quot; target=&quot;_blank&quot;&gt;如何安裝&lt;/a&gt;，最簡單的做法是用&lt;a href=&quot;https://hacs.xyz/&quot; target=&quot;_blank&quot;&gt;HACS&lt;/a&gt;。手動安裝的教學可以參考「&lt;a href=&quot;https://blog.csdn.net/gitblog_01177/article/details/141838029&quot; target=&quot;_blank&quot;&gt;LocalTuya Home Assistant 使用教程&lt;/a&gt;」這篇的做法。安裝完成後，啟動Home Assistant，在整合裡面就可以找到LocalTuya integration。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgjTXAYqfxzTnBbFrh7rTY5LlTRW6WEFXFYduXMRHzhHzaGIxH5NLyn0e9Y1E4HPaoveAdLu_Ag7V8w-6EkgZqYouB9WuGSTa94A0OZT11mKXYIs_9OrGTbsF4I2VrVBBG-xeF9mk0lpOyx6e5szL3YxdZ1ewGU07DmIjNUPkOopjVr6Bd1IqLLcg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgjTXAYqfxzTnBbFrh7rTY5LlTRW6WEFXFYduXMRHzhHzaGIxH5NLyn0e9Y1E4HPaoveAdLu_Ag7V8w-6EkgZqYouB9WuGSTa94A0OZT11mKXYIs_9OrGTbsF4I2VrVBBG-xeF9mk0lpOyx6e5szL3YxdZ1ewGU07DmIjNUPkOopjVr6Bd1IqLLcg&quot; title=&quot;https://www.youtube.com/watch?v=Q1ZShFJDvE0&quot; alt=&quot;https://www.youtube.com/watch?v=Q1ZShFJDvE0&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=Q1ZShFJDvE0&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=Q1ZShFJDvE0&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;下一步是要取得裝置的local key。這個步驟需要先讓裝置連上手機的Tuya APP，讓Tuya IoT伺服器取得裝置的資訊。接著需要你註冊並登入Tuya的IoT開發者平臺：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://iot.tuya.com/cloud/&quot; target=&quot;_blank&quot;&gt;https://iot.tuya.com/cloud/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhQgTz4bhEJci1_W6ijwlclk1XWrq_0kVVg1oHVX0niRhLeN6MpGVHNQm-nPqncqGecrxlQT3XGCnFtCZnAaFxrECsSGVd5H4J_qSRoxeMGJbpPxiotI6dlIMEdLyG6LtXVCr8b6Hb7A2oDpJsgf1_zVmE7sceYvLhOiu-_90nYLGK2uPmPr8GaFA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhQgTz4bhEJci1_W6ijwlclk1XWrq_0kVVg1oHVX0niRhLeN6MpGVHNQm-nPqncqGecrxlQT3XGCnFtCZnAaFxrECsSGVd5H4J_qSRoxeMGJbpPxiotI6dlIMEdLyG6LtXVCr8b6Hb7A2oDpJsgf1_zVmE7sceYvLhOiu-_90nYLGK2uPmPr8GaFA&quot; title=&quot;2025-0122-213756.png&quot; alt=&quot;2025-0122-213756.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然後經歷一連串的設定，你要找到裝置的&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;device_id&lt;/span&gt;，最後就能在API Explorer &amp;gt; IoT Core &amp;gt; Device Management &amp;gt; &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;Query Device Details &lt;/span&gt;in Bulk裡面，用device_id找到它的local_key。整個操作非常的複雜，而且Tuya不時會更動系統的操作邏輯。我看的每個教學細節都不太一樣，最後還是要靠自己摸索才能找到。&lt;/p&gt;
&lt;p&gt;附帶一提，如果你的裝置有經過重置WIFI的話，local_key也會跟著改變。到時候記得要再回去Tuya IoT找尋改變後的local_key喔。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhVqSO6csIOKH1F1DuCacps4PD9lEdnSwzGcpAw1yZitODiwVrzq66I8qMAG5QolzpVODe7C63KbqNRx7EDxqqidQy7L-S8Es_bGXTtnpf94VWEfK4Iu6JpkLc2gOURcSviYEIfTfjMlmhB0gt3GDET_4wpP33XgqRM1ZFTFEojnfJm8h1OwWizYw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhVqSO6csIOKH1F1DuCacps4PD9lEdnSwzGcpAw1yZitODiwVrzq66I8qMAG5QolzpVODe7C63KbqNRx7EDxqqidQy7L-S8Es_bGXTtnpf94VWEfK4Iu6JpkLc2gOURcSviYEIfTfjMlmhB0gt3GDET_4wpP33XgqRM1ZFTFEojnfJm8h1OwWizYw&quot; title=&quot;2025-0122-214013.png&quot; alt=&quot;2025-0122-214013.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果你要控制的WIFI裝置跟Home Assistant在同一個區域網路底下，localTuya應該能夠抓到你的WIFI裝置，然後你就可以進入設定。設定裡面的Device ID、Local key都是前面步驟中找到的關鍵資訊。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjMe141541q01yAj0LpM6PZNBLIgQ9Ff14I-7XonzhqVKucH4kk93xSLlCpIaC7FAutxkBEdvnDLZ3GVFnEg2i0H4AyKU3utVxSvx9tqIXhQKfXjzMMmg3BI9PFTPvZ4oP6dTTcfDgvBPYb_n_n0Sdu_qfHSyEG8zYMMn1Op8z_rIUstgwAmWjBYQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjMe141541q01yAj0LpM6PZNBLIgQ9Ff14I-7XonzhqVKucH4kk93xSLlCpIaC7FAutxkBEdvnDLZ3GVFnEg2i0H4AyKU3utVxSvx9tqIXhQKfXjzMMmg3BI9PFTPvZ4oP6dTTcfDgvBPYb_n_n0Sdu_qfHSyEG8zYMMn1Op8z_rIUstgwAmWjBYQ&quot; title=&quot;2025-0122-214157.png&quot; alt=&quot;2025-0122-214157.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;但如果你繼續設定，就會發現localTuya開始問你關於實體的設定方式。通常這時候我們就會不知道該怎麼進行設定了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;實體裝置跟虛擬的「實體」 /&amp;nbsp;Physical Devices and Virtual &quot;Entities&quot;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj8pHWDpV3LNoSezreI_5xRH3igV7AxbJ1-AM1F2r3EkMREaxwX9a122DEZ1p0BK_nPP_kLv2DEej26_Uy_4v1T6IUgqWeqgsN2UriGUKjA0KjW_U5bwpdsHLHBgka_OugXPaA-6AmkQ1MGCicdRS-_nUNcR2iB3h0aZjQ_MC3psK_cHzGR3ggdJw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj8pHWDpV3LNoSezreI_5xRH3igV7AxbJ1-AM1F2r3EkMREaxwX9a122DEZ1p0BK_nPP_kLv2DEej26_Uy_4v1T6IUgqWeqgsN2UriGUKjA0KjW_U5bwpdsHLHBgka_OugXPaA-6AmkQ1MGCicdRS-_nUNcR2iB3h0aZjQ_MC3psK_cHzGR3ggdJw&quot; title=&quot;20250122_214253.jpg&quot; alt=&quot;20250122_214253.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這裡我們要先來說明Home Assistant裡面「實體」(entity)的概念。一臺真實的除溼機上面有很多按鈕，這包括了電源開關、除溼模式、風速、定時等等。這些每一個可控制的開關、每一個負責感應與記錄數值的感應器，它們在Home Assistant裡面都會對應成虛擬的「實體」(entity)。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEggH4hdquR7r5o2eTqRE2ZkM1ugySEIDt7J7HU8EyfrYwZHa9_lpP-TU6r5zDcL34qJwrN-T_kIkvF0hiwN3WPLpmmCg1n3MaHOCwvl3kX4mj6gcIn9nrwWmuiYeljVZoTDj9ECTqRdKPJEuYJ2N6VvTSxbdg1VJS9B2CxJZdxlNEn7PV-3fJFGVQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEggH4hdquR7r5o2eTqRE2ZkM1ugySEIDt7J7HU8EyfrYwZHa9_lpP-TU6r5zDcL34qJwrN-T_kIkvF0hiwN3WPLpmmCg1n3MaHOCwvl3kX4mj6gcIn9nrwWmuiYeljVZoTDj9ECTqRdKPJEuYJ2N6VvTSxbdg1VJS9B2CxJZdxlNEn7PV-3fJFGVQ&quot; title=&quot;2025-0122-214706.png&quot; alt=&quot;2025-0122-214706.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一般來說，經過配置好的智慧家電，通常會自己能夠告知Home Assistant自己有哪些實體可以使用。而Home Assistant會自動把它加入到系統中，你就能夠直接控制。但在localTuya裡面，這些實體得要你自己手動設定才行。&lt;/p&gt;
&lt;p&gt;手動設定，意味著你要瞭解這臺裝置它的以下資訊：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;ID，在Tuya裡面稱為「dp_id」，在localTuya裡面稱為「ID」。這是用來表示裝置上某個實體的代號。&lt;/li&gt;
  &lt;li&gt;用途，在Tuya裡面稱為「code」，localTuya裡面則是代表你設定的名稱「name」：這表示該代號的功能，例如「switch」表示電源開關。每個裝置自己的code都不一樣，需要各別去解讀。&lt;/li&gt;
  &lt;li&gt;類型，在Tuya裡面稱為「type」，在localTuye裡面就是Entity Type。這是用來呈現實體的表現形式。常用的type設定大概有這幾種：&lt;ul&gt;
      &lt;li&gt;它是開關的的話，Tuya會記錄成「bool」(boolean的簡稱)，在localTuya裡，可控制的實體要設定成「switch」，不可控制的感應器則設為「binary_sensor」。&lt;/li&gt;
      &lt;li&gt;記錄數值的感應器，Tuya會記錄成「value」，在localTuya則要設定成「sensor」。&lt;/li&gt;
      &lt;li&gt;多種選項中其中一種的選項，在Tyua會記錄成「enum」，在localTuya則要設定成「select」。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;數值，在Tuya跟localTuya裡面都稱為「value」。這是用來表示現在該ID的狀態。&lt;ul&gt;
      &lt;li&gt;如果是開關類型的「switch」，大多value都是true或false。&lt;/li&gt;
      &lt;li&gt;感應器類型則會以數字表示。&lt;/li&gt;
      &lt;li&gt;多種選項的話通常會以字串記錄。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;除了數值之外，ID、用途(名稱)、類型，這些都是我們要在localTuya裡面配置的參數。但我們不能光靠localTuya就知道裝置的細節，還是要上Tuya IoT網站查詢。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;查詢裝置的屬性 / Query Properites of the Device&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgQGCIWHjNy4HtWg43plhKCGaiMv3F86QM85kYMJ5Iym5MF9CIhNotEDJG7CYaYbu-6XRCtr2QVO04U_DTi2_61qvf-67YRQZjZJdAj8GFTXWYLDuP3dTnmBEp926Vxs4EbmY4_8b729tJYuCk8EEJnzCkPUiWQ1GvGjW6qEGTof5i2-YDfulkl-w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgQGCIWHjNy4HtWg43plhKCGaiMv3F86QM85kYMJ5Iym5MF9CIhNotEDJG7CYaYbu-6XRCtr2QVO04U_DTi2_61qvf-67YRQZjZJdAj8GFTXWYLDuP3dTnmBEp926Vxs4EbmY4_8b729tJYuCk8EEJnzCkPUiWQ1GvGjW6qEGTof5i2-YDfulkl-w&quot; title=&quot;2025-0122-232422.png&quot; alt=&quot;2025-0122-232422.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上述屬性我們要在API Explorer裡面查詢，也就是跟查詢local_key類似的位置。請按照以下步驟進入查詢：&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;進入Device Control。&lt;/li&gt;
  &lt;li&gt;進入Query Properties。&lt;/li&gt;
  &lt;li&gt;輸入device_id。&lt;/li&gt;
  &lt;li&gt;在Response取得結果。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我們來看一下部分Response的結果：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;json&quot;&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&quot;result&quot;:&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;properties&quot;:&amp;nbsp;[&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;code&quot;:&amp;nbsp;&quot;switch&quot;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;custom_name&quot;:&amp;nbsp;&quot;&quot;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;dp_id&quot;:&amp;nbsp;1,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;time&quot;:&amp;nbsp;1737549561825,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;type&quot;:&amp;nbsp;&quot;bool&quot;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;value&quot;:&amp;nbsp;false&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;code&quot;:&amp;nbsp;&quot;dehumidify_set_value&quot;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;custom_name&quot;:&amp;nbsp;&quot;&quot;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;dp_id&quot;:&amp;nbsp;2,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;time&quot;:&amp;nbsp;1733855769285,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;type&quot;:&amp;nbsp;&quot;value&quot;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;value&quot;:&amp;nbsp;60&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;中間省略&lt;br&gt;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我們可以從這裡查到「dp_id」，也就是裝置各項控制或感應器的實體，例如1；然後再看到「code」，這表示實體的名稱，例如「switch」；然後我們要看看它的「type」，例如「bool」，這是boolean二元值的簡稱；最後關注到「value」，就是它實際的值。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEibbJTYHA5hZldzOCwTEYaTkHPmq8tJz8sAEkqm-lgRjhR8HPop_qDZZbJv6pTmcbnzRx57X6tdgF7cKqyvoE5Syn6zSueUbn-57ljI1ZaZVrFnNdLAkcafh3-zP3XjQALq8rXvrqfA3aW9hHfgovuWp664KfLQh8wNAxml6cpwkLs_kyW9o_9g_g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEibbJTYHA5hZldzOCwTEYaTkHPmq8tJz8sAEkqm-lgRjhR8HPop_qDZZbJv6pTmcbnzRx57X6tdgF7cKqyvoE5Syn6zSueUbn-57ljI1ZaZVrFnNdLAkcafh3-zP3XjQALq8rXvrqfA3aW9hHfgovuWp664KfLQh8wNAxml6cpwkLs_kyW9o_9g_g&quot; title=&quot;20250122_232849.jpg&quot; alt=&quot;20250122_232849.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;其實我們光看code還是很難猜得到這個實體到底是什麼意思。這時候我們可以嘗試手動開關除溼機設備的各項控制器，再去觀察各個實體的變化。例如我把除溼機的開關給打開，然後再到Tuya IoT網站上去查詢。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiiBxjM2bNytbMxmOLtuWvFtucqjc1k2oEQySSub_fQ0r9Q82DpQhehuWodatLLwMn-J1D0kOkM_uDZcmmGrOzyGCcN4ouT8aPT1PQr_6RkQqrtpy-rbCYyVm9SI_0z3WavSHe_TolDP4R07nIUsjIEqIUN4jYiivq4EdPpWp1B7GyiBzU4YrGmmg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiiBxjM2bNytbMxmOLtuWvFtucqjc1k2oEQySSub_fQ0r9Q82DpQhehuWodatLLwMn-J1D0kOkM_uDZcmmGrOzyGCcN4ouT8aPT1PQr_6RkQqrtpy-rbCYyVm9SI_0z3WavSHe_TolDP4R07nIUsjIEqIUN4jYiivq4EdPpWp1B7GyiBzU4YrGmmg&quot; title=&quot;2025-0122-233113.png&quot; alt=&quot;2025-0122-233113.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;此時dp_id為1，意思為switch的實體，數值變成了true。因此可以推測這可能是電源開關。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgT4l4qnps1MQW23AhvsL_ByLcv2ZbVp8blDQY8eJglc1h6gyvEF0Xj61cuV-c8O00zSFgcdGeovAv9vjBCEd2cQ3JyUHyLermToNXGNct60kOlcnxNVSH3oTH5gALgmxwBfcnD-ye3y9_NGslYlWaR8UfQI5q8tnr1lzAjfPRsCRph7g6Y4XKnVA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgT4l4qnps1MQW23AhvsL_ByLcv2ZbVp8blDQY8eJglc1h6gyvEF0Xj61cuV-c8O00zSFgcdGeovAv9vjBCEd2cQ3JyUHyLermToNXGNct60kOlcnxNVSH3oTH5gALgmxwBfcnD-ye3y9_NGslYlWaR8UfQI5q8tnr1lzAjfPRsCRph7g6Y4XKnVA&quot; title=&quot;2025-0122-233202.png&quot; alt=&quot;2025-0122-233202.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;用類似的邏輯來看，我們也可以發現dp_id為6的實體，它其實是室內溼度的感應器。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhLm8a_Q4BSKeyxYhsE_G00D3sfrxvt-0uTUmJpSbFUhZASsea8D5j_j7Y22e1VJwuBFdxM8tGt-uBs8rnFMEHQctzPgJ0mcXukJ3_e5xMK8FiiyU2ux4rmD6j-n1XRhjTXdPZf-qUcfWmPh5vOxT1lRM01JNsQRZWoSayG8bGHvYOh_q3XDmLEWA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhLm8a_Q4BSKeyxYhsE_G00D3sfrxvt-0uTUmJpSbFUhZASsea8D5j_j7Y22e1VJwuBFdxM8tGt-uBs8rnFMEHQctzPgJ0mcXukJ3_e5xMK8FiiyU2ux4rmD6j-n1XRhjTXdPZf-qUcfWmPh5vOxT1lRM01JNsQRZWoSayG8bGHvYOh_q3XDmLEWA&quot; title=&quot;2025-0122-233359.png&quot; alt=&quot;2025-0122-233359.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;如何查詢enum可能的value？ /&amp;nbsp;How to Query Possible Values of an Enum?&lt;/h3&gt;
&lt;p&gt;比較麻煩的是UVC它的類型是「enum」，而數值是字串「low」，這又是什麼意思呢？&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhU1GVey4n1jYW14_lMSN-FWV3Js0duCmYUufuy7SwmkrpdBEzunO9lv4dcDaUdgTDEKpzMTJ5h_EmG4y5rFJ5YusP85IzA4PKwLtpGml1kNUsDeJ_8PSMRCcbcG8nKjOIer0MAX6R660Tj1WRmBUtMCPKS9Hgdgv7xjm7Xb02WRTQ9YTbd-IEe_w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhU1GVey4n1jYW14_lMSN-FWV3Js0duCmYUufuy7SwmkrpdBEzunO9lv4dcDaUdgTDEKpzMTJ5h_EmG4y5rFJ5YusP85IzA4PKwLtpGml1kNUsDeJ_8PSMRCcbcG8nKjOIer0MAX6R660Tj1WRmBUtMCPKS9Hgdgv7xjm7Xb02WRTQ9YTbd-IEe_w&quot; title=&quot;20250122_233622.jpg&quot; alt=&quot;20250122_233622.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這時候我們就需要一邊調整可以一邊搭配控制裝置，一邊查詢API，以此瞭解實體可能的值。舉例來說，剛剛UVC模式是「弱速」，所以Tuya API的數值是「low」。現在我們把UVC模式調整為「強速」來看看。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgp5t4RgyJ9UGPiYqL31eMooM0jd9QdCtN4_CgZoUUAruQvuItlAUaN02a2hdVkbzkziUkBjDw1-RS5QkeK-NEEIjXfu8b_1gXyXXbTrxVeZlKJ39Eh4DYV7fo8rC0W8tb4Jw7mV2oHTBm19iqqUj6b7bXg8R09uBzFWNAp-zQgW0EoVlHWr0BYeQ&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgp5t4RgyJ9UGPiYqL31eMooM0jd9QdCtN4_CgZoUUAruQvuItlAUaN02a2hdVkbzkziUkBjDw1-RS5QkeK-NEEIjXfu8b_1gXyXXbTrxVeZlKJ39Eh4DYV7fo8rC0W8tb4Jw7mV2oHTBm19iqqUj6b7bXg8R09uBzFWNAp-zQgW0EoVlHWr0BYeQ&quot; title=&quot;2025-0122-233916.png&quot; alt=&quot;2025-0122-233916.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;再查詢API，你就會發現value變成了「high」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgAUTC0sUH6OA8_-8-3Lb_6YyH1BF8qVewKxxJxVjslb2u5_z1c5lzMa6i3KXglP9HTKYEUhtTty5gBFxvOkPGI5VaUXPGWWdGV8Te5YuXOTu5vTUSzr2fBe7gb7RDGBoPTu_odLTfPoNNKyZGNpQc1qtHzdFHKX3C6JhQQSBSpXq7R9VACsChNwA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgAUTC0sUH6OA8_-8-3Lb_6YyH1BF8qVewKxxJxVjslb2u5_z1c5lzMa6i3KXglP9HTKYEUhtTty5gBFxvOkPGI5VaUXPGWWdGV8Te5YuXOTu5vTUSzr2fBe7gb7RDGBoPTu_odLTfPoNNKyZGNpQc1qtHzdFHKX3C6JhQQSBSpXq7R9VACsChNwA&quot; title=&quot;2025-0122-233949.png&quot; alt=&quot;2025-0122-233949.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;UVC模式設為「自動」的話，value就變成了「auto」。&lt;/p&gt;
&lt;h3&gt;在localTuya裡面設定UVC模式 /&amp;nbsp;Setting UVC Mode in LocalTuya&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjCAIP0Ev5pvNlELTCDeabqakW-1TPdGsp4aeey28Yis3BJtMT2stP7s4tSU6xjrO10oXvHNvF17JvxHEeduFkYizvAEHtpQgpAmyrOY3nNWH_nMXb8IduVsQdjGJ8WhNqKlOjf_fYYbPpBRoUx5j2dwN_HgbKsOltNUvF0FdmDHuVEKsNWrIMTEw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjCAIP0Ev5pvNlELTCDeabqakW-1TPdGsp4aeey28Yis3BJtMT2stP7s4tSU6xjrO10oXvHNvF17JvxHEeduFkYizvAEHtpQgpAmyrOY3nNWH_nMXb8IduVsQdjGJ8WhNqKlOjf_fYYbPpBRoUx5j2dwN_HgbKsOltNUvF0FdmDHuVEKsNWrIMTEw&quot; title=&quot;2025-0122-234453.png&quot; alt=&quot;2025-0122-234453.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;瞭解了enum的可能數值後，我們就可以回到localTuya裡面設定裝置的Entity。enum的Entity type請選擇select。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiyxvM_r2mgj9QDxyGj-ECGEYr_K5iZZMrdnRkxhKgop0uHkqORoO2ZKw8RIetf4h6BPjvynHd0t7-ncfkYLmr3k7hJjEmqBKd4myMAvCSmuFBeFXgRl0IVvyjocxVvWf-HrJ_2Ne3sgoDd2JiTuun0JTY2vCCZnKAEH4yaMdlXAAU37fEMeYEOig&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiyxvM_r2mgj9QDxyGj-ECGEYr_K5iZZMrdnRkxhKgop0uHkqORoO2ZKw8RIetf4h6BPjvynHd0t7-ncfkYLmr3k7hJjEmqBKd4myMAvCSmuFBeFXgRl0IVvyjocxVvWf-HrJ_2Ne3sgoDd2JiTuun0JTY2vCCZnKAEH4yaMdlXAAU37fEMeYEOig&quot; title=&quot;2025-0122-234611.png&quot; alt=&quot;2025-0122-234611.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在Configure entity裡面進行以下設定：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;ID設定為UVC模式的dp_id，也就是106。&lt;/li&gt;
  &lt;li&gt;Friendly name則參考code的寫法，寫上便於理解的名稱，例如「uvc」。&lt;/li&gt;
  &lt;li&gt;Valid enties裡面就得要設定「off;low;high;auto」，各別代表UVC模式的「關閉」、「低速」、「高速」、「自動」。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgIqgBsXo0rCoi6yJ61S6PHTecmxOMdb6-qk03uOzuSkHXX67H-igFAG6jCI3kt1nmgfxgKuC-OMcCi4gTlS1cTJ6gdMX9Y2SdOhXfcyvRlnAVlVL-GKpaxBIckCBlaXuyw5NobQriq3s10h24COA6Mscd78DcLAVEeKVY7754RN0LS_YJ9uNUAPQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgIqgBsXo0rCoi6yJ61S6PHTecmxOMdb6-qk03uOzuSkHXX67H-igFAG6jCI3kt1nmgfxgKuC-OMcCi4gTlS1cTJ6gdMX9Y2SdOhXfcyvRlnAVlVL-GKpaxBIckCBlaXuyw5NobQriq3s10h24COA6Mscd78DcLAVEeKVY7754RN0LS_YJ9uNUAPQ&quot; title=&quot;2025-0122-234935.png&quot; alt=&quot;2025-0122-234935.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這樣就能將uvc新增為Home Assistant的實體，在Home Assistant裡面控制除溼機的UVC模式。我為了避免uvc名稱太容易跟其他實體混淆，我就把除溼機的全名寫了上去，看起來有點長。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;威技WDH-11FS的設定 /&amp;nbsp;Configuration of NWT WDH-11FS&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiLtOSNySugMvDzOv6JgXwGODoIs3F_Ss1O3aaS8Bcwl8czNCpcjfldbx1cKEJzH4bf1qmtaXYu78SY4jfJInHJsFnpB2-KlNHGa2-8NaH87wLosXzgOYhlguYY_1btTJcXcW1yaaAcUk2NrAoYnEd4KFpQnvAwlNmMIrWno05te3SmOStRWS3tWw&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiLtOSNySugMvDzOv6JgXwGODoIs3F_Ss1O3aaS8Bcwl8czNCpcjfldbx1cKEJzH4bf1qmtaXYu78SY4jfJInHJsFnpB2-KlNHGa2-8NaH87wLosXzgOYhlguYY_1btTJcXcW1yaaAcUk2NrAoYnEd4KFpQnvAwlNmMIrWno05te3SmOStRWS3tWw&quot; title=&quot;2025-0122-235128.png&quot; alt=&quot;2025-0122-235128.png&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;在瞭解如何查詢裝置的API，獲得實體的設定值之後，我們就能逐步查詢裝置的細節。最後我把威技WDH-11FS裡我會用到的設定整理如下。&lt;/p&gt;
&lt;h3&gt;開關類別 / Switch&lt;/h3&gt;

&lt;table dir=&quot;ltr&quot; border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-sheets-root=&quot;1&quot; data-sheets-baot=&quot;1&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;td&gt;實體&lt;/td&gt;
      &lt;td&gt;localTuya: Friendly Name&lt;/td&gt;
      &lt;td&gt;Tuya: dp_id&lt;br&gt;localTuya: ID&lt;/td&gt;
      &lt;td&gt;Tuya: type&lt;/td&gt;
      &lt;td&gt;localTuya: platform&lt;/td&gt;
      &lt;td&gt;
        localTuya: Current
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;thead&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;除溼機電源開關&lt;/td&gt;
      &lt;td&gt;Dehumidifier NWT WDH-11FS Power&lt;/td&gt;
      &lt;td&gt;1&lt;/td&gt;
      &lt;td&gt;switch&lt;/td&gt;
      &lt;td&gt;switch&lt;/td&gt;
      &lt;td&gt;1&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;選單類別 / Select&lt;/h3&gt;

&lt;table dir=&quot;ltr&quot; border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-sheets-root=&quot;1&quot; data-sheets-baot=&quot;1&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;td&gt;實體&lt;/td&gt;
      &lt;td&gt;localTuya: Friendly Name&lt;/td&gt;
      &lt;td&gt;Tuya: dp_id&lt;br&gt;localTuya: ID&lt;/td&gt;
      &lt;td&gt;Tuya: type&lt;/td&gt;
      &lt;td&gt;localTuya: platform&lt;/td&gt;
      &lt;td&gt;localTuya: Valid entries
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;除溼模式&lt;/td&gt;
      &lt;td&gt;Dehumidifier NWT WDH-11FS Dehumidify Mode&lt;/td&gt;
      &lt;td&gt;5&lt;/td&gt;
      &lt;td&gt;enum&lt;/td&gt;
      &lt;td&gt;select&lt;/td&gt;
      &lt;td&gt;
        auto;dehumidify;continuous;off
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;風扇方向&lt;/td&gt;
      &lt;td&gt;Dehumidifier NWT WDH-11FS swing_set&lt;/td&gt;
      &lt;td&gt;105&lt;/td&gt;
      &lt;td&gt;enum&lt;/td&gt;
      &lt;td&gt;select&lt;/td&gt;
      &lt;td&gt;off;ud;lr;all&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;UVC模式&lt;/td&gt;
      &lt;td&gt;Dehumidifier NWT WDH-11FS UVC&lt;/td&gt;
      &lt;td&gt;106&lt;/td&gt;
      &lt;td&gt;enum&lt;/td&gt;
      &lt;td&gt;select&lt;/td&gt;
      &lt;td&gt;off;low;high
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;二元感應器類別 / Binary Sensor&lt;/h3&gt;

&lt;table dir=&quot;ltr&quot; border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-sheets-root=&quot;1&quot; data-sheets-baot=&quot;1&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;td&gt;實體&lt;/td&gt;
      &lt;td&gt;localTuya: Friendly Name&lt;/td&gt;
      &lt;td&gt;Tuya: dp_id&lt;br&gt;localTuya: ID&lt;/td&gt;
      &lt;td&gt;Tuya: type&lt;/td&gt;
      &lt;td&gt;localTuya: platform&lt;/td&gt;
      &lt;td&gt;
        localTyua: On Value&lt;br&gt;(for binary_sensor)
      &lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
      &lt;td&gt;localTyua: Device Class&lt;br&gt;(for sensor and binary_sensor)
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;水箱是否已滿&lt;/td&gt;
      &lt;td&gt;Dehumidifier NWT WDH-11FS tank_full&lt;/td&gt;
      &lt;td&gt;101&lt;/td&gt;
      &lt;td&gt;bool&lt;/td&gt;
      &lt;td&gt;binary_sensor&lt;/td&gt;
      &lt;td&gt;TRUE&lt;/td&gt;
      &lt;td&gt;FALSE&lt;/td&gt;
      &lt;td&gt;safety&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;HEPA濾網是否需要更換&lt;/td&gt;
      &lt;td&gt;Dehumidifier NWT WDH-11FS hepa_change&lt;/td&gt;
      &lt;td&gt;103&lt;/td&gt;
      &lt;td&gt;bool&lt;/td&gt;
      &lt;td&gt;binary_sensor&lt;/td&gt;
      &lt;td&gt;TRUE&lt;/td&gt;
      &lt;td&gt;FALSE&lt;/td&gt;
      &lt;td&gt;safety&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;感應器類別 / Sensor&lt;/h3&gt;

&lt;table dir=&quot;ltr&quot; border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-sheets-root=&quot;1&quot; data-sheets-baot=&quot;1&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;td&gt;實體&lt;/td&gt;
      &lt;td&gt;localTuya: Friendly Name&lt;/td&gt;
      &lt;td&gt;Tuya: dp_id&lt;br&gt;localTuya: ID&lt;/td&gt;
      &lt;td&gt;Tuya: type&lt;/td&gt;
      &lt;td&gt;localTuya: platform&lt;/td&gt;
      &lt;td&gt;localTyua: Unit of Measurement&lt;br&gt;(for sensor)&lt;/td&gt;
      &lt;td&gt;localTyua: Device Class&lt;br&gt;(for sensor and binary_sensor)
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;室內溼度&lt;/td&gt;
      &lt;td&gt;Dehumidifier NWT WDH-11FS humidity_indoor&lt;/td&gt;
      &lt;td&gt;6&lt;/td&gt;
      &lt;td&gt;value&lt;/td&gt;
      &lt;td&gt;sensor&lt;/td&gt;
      &lt;td&gt;%&lt;/td&gt;
      &lt;td&gt;humidity&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;PM2.5感測器&lt;/td&gt;
      &lt;td&gt;Dehumidifier NWT WDH-11FS UVC PM25&lt;/td&gt;
      &lt;td&gt;15&lt;/td&gt;
      &lt;td&gt;value&lt;/td&gt;
      &lt;td&gt;sensor&lt;/td&gt;
      &lt;td&gt;ppm&lt;/td&gt;
      &lt;td&gt;aqi&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;hr&gt;
&lt;h2&gt;結語 / Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg4xUF4jzlDoaGgeKRPE0SC78-vMUWN17BIqNHBva143rhBj3WEZml3rgaD_MU5pAHBEPvO1bl0h0Y8NUIjrmTcXauHAwg7SY-KT1G5mCbI_3_Qw7KTZRLPbCs-p1EHnbsfDGVJhispwiJddqlqNmsru6PLozEprP_uottjHbPrQC-aZt3oQVA0VA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg4xUF4jzlDoaGgeKRPE0SC78-vMUWN17BIqNHBva143rhBj3WEZml3rgaD_MU5pAHBEPvO1bl0h0Y8NUIjrmTcXauHAwg7SY-KT1G5mCbI_3_Qw7KTZRLPbCs-p1EHnbsfDGVJhispwiJddqlqNmsru6PLozEprP_uottjHbPrQC-aZt3oQVA0VA&quot; title=&quot;2025-0123-002844.png&quot; alt=&quot;2025-0123-002844.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;除溼機能夠跟Home Assistant整合嗎？大部分的商家都會跟你說，不行，只能跟我自家的APP整合，頂多是跟Google助理或Homekit整合。至於為什麼客服會這樣說，你看了我這篇的說明大概也能猜到一二，那就是Home Assistant的設定的確是複雜很多。&lt;/p&gt;
&lt;p&gt;這篇是因為使用了localTuya的方案，不僅local_key得要自己查詢，所有的entity都得要一一查詢、設定，通常還需要多次的嘗試錯誤，最後才能找到正確的設定。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhptxvQJlpDa-7lRs5t0kM0_09hvq9rNevFNsK3myXxzK53J1dO999rGe8QG7RoYjbOA2lvwFkqBUU6MNWVeILo_mfxe70gHfUcTQpkxcgHfvIuGr829wEhvKMDeWBm7qch6UKEG1K0-zt95PIDfiD-BJbSI_2YA2nIZTpfApxKq26IIllQv_rdRQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhptxvQJlpDa-7lRs5t0kM0_09hvq9rNevFNsK3myXxzK53J1dO999rGe8QG7RoYjbOA2lvwFkqBUU6MNWVeILo_mfxe70gHfUcTQpkxcgHfvIuGr829wEhvKMDeWBm7qch6UKEG1K0-zt95PIDfiD-BJbSI_2YA2nIZTpfApxKq26IIllQv_rdRQ&quot; title=&quot;2025-0123-003457.png&quot; alt=&quot;2025-0123-003457.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果直接使用Home Assistant裡面的Tuya整合，那應該可以更簡單一點。但是Tuya整合要求每半年都要上平臺申請驗證，久了也覺得麻煩，所以才有了這次嘗試localTuya的打算。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhrTaSUQgbulE46vdfpq98pNQ5w16-nnjctViPtzKLN0m1aztB5fYjA_8PQO9dhk_nsG-e4xpwzu9mBhJnIOA6cvIZm5vyhoi_eT-Gt3fA7ty8rGdzH3rP9unalaMdwqKR0H2EFbd1N4TBQsWJ6tRzwLeeeYdXxbchdaonelitZcTaK2PLigkO8fg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhrTaSUQgbulE46vdfpq98pNQ5w16-nnjctViPtzKLN0m1aztB5fYjA_8PQO9dhk_nsG-e4xpwzu9mBhJnIOA6cvIZm5vyhoi_eT-Gt3fA7ty8rGdzH3rP9unalaMdwqKR0H2EFbd1N4TBQsWJ6tRzwLeeeYdXxbchdaonelitZcTaK2PLigkO8fg&quot; title=&quot;2025-0123-003650.png&quot; alt=&quot;2025-0123-003650.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;雖然設定好localTuya除溼機跟自動化規則之後，我就不太需要再回去設定localTuya。但未來如果還要繼續使用localTuya方案，我肯定會忘記上面那串查詢跟設定的操作方式。還是趁自己還有記憶的時候，趕快把它記錄下來吧。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;這篇關於在Home Assistant使用localTuya的教學就到此為止了。文章最後的問題是，你對於localTuya的設定過程有什麼看法呢？&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;1. 雖然很複雜，但設定完之後就可以不用再調整，還是蠻值得一試的。&lt;/li&gt;
  &lt;li&gt;2. 用Tuya整合就好了吧？頂多每半年去申請一次延長，還有裝置一定要連上網際網路而已。&lt;/li&gt;
  &lt;li&gt;3. 太麻煩了，有沒有更容易整合的除溼機？&lt;/li&gt;
  &lt;li&gt;4. 為什麼除溼機要整合到智慧家居？自己按個按鈕不行嗎？&lt;/li&gt;
  &lt;li&gt;5. 為什麼要用除溼機？&lt;/li&gt;
  &lt;li&gt;6. 其他：歡迎在下面留言，分享你的看法吧！&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/1012851589926286288/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/07/how-to-set-up-device-entities-in-localtuya-on-home-assistant.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/1012851589926286288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/1012851589926286288'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/07/how-to-set-up-device-entities-in-localtuya-on-home-assistant.html' title='如何在Home Assistant的localTuya設定裝置的實體？ / How to Set Up Device Entities in LocalTuya on Home Assistant?'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjZKyPQpsJjFEKqWJfSkRdeSu71bxJShitAJnMuJisFc7rzqCvjjON0tnUNVKWFSlCNiXne3gCbBbZ_C9hX864q7hxmMOl6DupuEJbyrIYb2sHeob_ockJR_sNq0Z07rYsm4jxit6gZYMR0Cn0YUGCjzW5J3CRVZryFAGqEr2W7jzAleVZzS_oOCQ=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-446700006852307302</id><published>2025-07-18T12:00:00.008+08:00</published><updated>2025-07-18T12:00:00.113+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="NAS"/><category scheme="http://www.blogger.com/atom/ns#" term="Server"/><category scheme="http://www.blogger.com/atom/ns#" term="Talk"/><title type='text'>雜談：也許NAS作為NAS就好 / TALK: Perhaps a NAS Should Just Be a NAS</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjkwd8S8WoBsN-MWEVRZ0vmQLjEdJvgXy9_0Drhpj7-BAo33n4t5Yz1JjIktaT24o8C5EcWMu81pO-2DBe9biVuXnWMRO4qZyc40wklySoRiSZtPXbDTjZ0PZKfIXU_f4HZ5_2Awq64maz_KlUtW3l-ObdHoNzmCyDI8MlUyWLSkYa1I7OO4LK4PQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjkwd8S8WoBsN-MWEVRZ0vmQLjEdJvgXy9_0Drhpj7-BAo33n4t5Yz1JjIktaT24o8C5EcWMu81pO-2DBe9biVuXnWMRO4qZyc40wklySoRiSZtPXbDTjZ0PZKfIXU_f4HZ5_2Awq64maz_KlUtW3l-ObdHoNzmCyDI8MlUyWLSkYa1I7OO4LK4PQ&quot; title=&quot;2025-0220-174221.png&quot; alt=&quot;2025-0220-174221.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;近期在更換QNAP NAS硬碟的時候，不禁思考起我對NAS看法的轉變。&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;硬碟健康度出現問題 / Hard Drive Health Issues&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjS6ui2toaRXEYwyu7KpdGsZTymG6XYHCO7FbGI6DtYBmrf_FCSPkc9amIb_38kE6KoZEhbIitpSphELi7odNx7G2EkFR4Vb5VL0Zw3UPKx-6b-90hcrAoAxYzj2dxP-1sYMtRpTzvAn3OXCUlKHwWA0y4HGue1JzORrE61_8EAhCDxzA6QRGXzWg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjS6ui2toaRXEYwyu7KpdGsZTymG6XYHCO7FbGI6DtYBmrf_FCSPkc9amIb_38kE6KoZEhbIitpSphELi7odNx7G2EkFR4Vb5VL0Zw3UPKx-6b-90hcrAoAxYzj2dxP-1sYMtRpTzvAn3OXCUlKHwWA0y4HGue1JzORrE61_8EAhCDxzA6QRGXzWg&quot; title=&quot;2025-0220-150113.png&quot; alt=&quot;2025-0220-150113.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;事情是來自於我注意到NAS硬碟健康度出現警告的時候開始。&lt;/p&gt;
&lt;p&gt;之前在工作時也碰過不少NAS，不過當時並沒有做好監控機制，幾乎都是等到整個NAS都不能正常運作的時候，我們才會注意到NAS硬碟出問題了。當然，這並不是什麼很好的做法。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjrqo03DHsSzTcUpW8uHqtqpm6nEdBP2In4-dkScRbWMtXVHYRysZfL_vmyNjE4dB2FbEjx3626KRBdV5agXHCi9DVBntgR2RcobURzizikU3HC6YkqrQPVGmKUU3kgFULIbghFthuJKA0DGUgPnPHitzHY1iWHRjKk_YwLpaNv6a3wW1JagHIuvw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjrqo03DHsSzTcUpW8uHqtqpm6nEdBP2In4-dkScRbWMtXVHYRysZfL_vmyNjE4dB2FbEjx3626KRBdV5agXHCi9DVBntgR2RcobURzizikU3HC6YkqrQPVGmKUU3kgFULIbghFthuJKA0DGUgPnPHitzHY1iWHRjKk_YwLpaNv6a3wW1JagHIuvw&quot; title=&quot;2025-0220-164819.png&quot; alt=&quot;2025-0220-164819.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我在個人使用的NAS選擇的是QNAP的小主機。這臺QNAP NAS上的硬碟配置很簡單，連RAID都沒有設。它內建的硬碟插槽只有兩個，與其硬是拿來組RAID，我的做法是將這兩顆硬碟當作各別的兩個儲存池來處理。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgSFjpu-4yh4PTjLqbPjwhv_jgFckyfbARRDZzvU8QkXXv0Ev9XZp2c1zk4JmUWmPrNHnJX9jCF0H7DodySLG5UxejhuFJxgP8587M4CB5Tz5e8asl5qxZk2jVCzPk98hFEMhUWjSJpK15k8pw7PYjuHZfyur-GwLqzjV1uQqe3OHKcD7WScE--CQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgSFjpu-4yh4PTjLqbPjwhv_jgFckyfbARRDZzvU8QkXXv0Ev9XZp2c1zk4JmUWmPrNHnJX9jCF0H7DodySLG5UxejhuFJxgP8587M4CB5Tz5e8asl5qxZk2jVCzPk98hFEMhUWjSJpK15k8pw7PYjuHZfyur-GwLqzjV1uQqe3OHKcD7WScE--CQ&quot; title=&quot;2025-0220-150400.png&quot; alt=&quot;2025-0220-150400.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這次是我在登入NAS的時候注意到系統發出了硬碟健康度的警告。這個警告是來自於S. M. A. R. T. 機制，它指出這可硬碟在「Current_Pending_Sector」跟「Uncorrectable_Sector_Count」上面出現了問題。前者可能可以透過硬碟區塊修復來解決，但無法修復的區塊就會加入到「Uncorrectable_Sector_Count」，而這就是硬碟即將嚴重毀損的跡象。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjmvvL08tGdzvVBB7cSYzJgdaw0rnrf80OoCvyvymJ7_NNlg3NeeZxJnHJwfi1_ZI-ZLhXFH8BOwmWPldm4zm3tiuQGVfOjbf99QcAN6mbNrAb25XXlCjsxpthi5r0kcKYEzbeSgQdPF9nBYaBhpthJE8beeQIWvqza8KN04ulbBsvUzXM48ZSWVg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjmvvL08tGdzvVBB7cSYzJgdaw0rnrf80OoCvyvymJ7_NNlg3NeeZxJnHJwfi1_ZI-ZLhXFH8BOwmWPldm4zm3tiuQGVfOjbf99QcAN6mbNrAb25XXlCjsxpthi5r0kcKYEzbeSgQdPF9nBYaBhpthJE8beeQIWvqza8KN04ulbBsvUzXM48ZSWVg&quot; title=&quot;2025-0220-152948.png&quot; alt=&quot;2025-0220-152948.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://forum.qnap.com/viewtopic.php?t=167523#top&quot; target=&quot;_blank&quot;&gt;https://forum.qnap.com/viewtopic.php?t=167523#top&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;簡單來說就是——該換硬碟了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg79Ct-zORG05WLSti1NBckjITd5jXlS-2OsTKCuahArq5kpwMZ1a1QAYAJmii6Dlq9mdIdOXLarthtfNzaiE6FYCK3wsZDaMQz3wop7pcOdlvfGXDvWZsdwvlH08BvAq0lF1__KpH3a1j7BIutByiascJUG1jq9AeMRwWedP_tIvJ3by4QCGw3cA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg79Ct-zORG05WLSti1NBckjITd5jXlS-2OsTKCuahArq5kpwMZ1a1QAYAJmii6Dlq9mdIdOXLarthtfNzaiE6FYCK3wsZDaMQz3wop7pcOdlvfGXDvWZsdwvlH08BvAq0lF1__KpH3a1j7BIutByiascJUG1jq9AeMRwWedP_tIvJ3by4QCGw3cA&quot; title=&quot;2025-0220-151824.png&quot; alt=&quot;2025-0220-151824.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;QNAP的Notication Center能將硬體發出的警告用Email傳送通知。不過我之前設定的Gmail授權不知不覺過期了，難怪通知也沒在正常運作。現在可得要多多注意通知了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;硬碟空間與NAS的使用 /&amp;nbsp;Hard Drive Space and NAS Use&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgxNvsED7DA9oVfYP4sQYdkoyV47QDXG0nAwxb1K7XY6pOp4FeubzBkr1Ei69CjdU7EviwWbiAKZqLM4VIgpgJQbJHzbzwnqdzQRgvav95i0CSDyiKRYxQ0tGpkINTV2aQObtFjUfDTpvZUhZvwVjh7rXmlNmQkqjtB1v1tVb5T3_D4LKLYeeAnUA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgxNvsED7DA9oVfYP4sQYdkoyV47QDXG0nAwxb1K7XY6pOp4FeubzBkr1Ei69CjdU7EviwWbiAKZqLM4VIgpgJQbJHzbzwnqdzQRgvav95i0CSDyiKRYxQ0tGpkINTV2aQObtFjUfDTpvZUhZvwVjh7rXmlNmQkqjtB1v1tVb5T3_D4LKLYeeAnUA&quot; title=&quot;20250220_124651.jpg&quot; alt=&quot;20250220_124651.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;既然已經決定要把硬碟替換了，那我要做的事情，就是把快壞掉的硬碟上的資料移動到其他地方去。我買了一顆8T的硬碟，用外接USB的方式接上NAS，然後在QNAP裡面把硬碟格式化、再逐漸把檔案搬移過去。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgpQ6r4sFXas9gLJTybVGLvUawEg3K5CRwBeKIGmIjx46rjcsanFeIPy4sH_mNKUZeZ0YWvP3l6wHPT686hHKEGBH5AkKRyM77WxVkkZe0kUwxs8-0p3TsNykZM3QX0z1BWoGX06Tyzc5IyhhEf73hFf9p1AqlUiRlWNqVJssY2kyPdZG_54PIpNA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgpQ6r4sFXas9gLJTybVGLvUawEg3K5CRwBeKIGmIjx46rjcsanFeIPy4sH_mNKUZeZ0YWvP3l6wHPT686hHKEGBH5AkKRyM77WxVkkZe0kUwxs8-0p3TsNykZM3QX0z1BWoGX06Tyzc5IyhhEf73hFf9p1AqlUiRlWNqVJssY2kyPdZG_54PIpNA&quot; title=&quot;2025-0220-164210.png&quot; alt=&quot;2025-0220-164210.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;另一方面，安裝在QNAP裡面的應用程式是不能搬移到外接硬碟，而只能轉移到安裝在QNAP裡面的另一顆硬碟裡面。藉這個機會，我也把原本在QNAP裡面架設的服務通盤了一下，將資料匯出、備份後，刪除了不使用的服務。&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhq4fQwnvIXgPeJ99sJuX1QqojinBs2PEcb34zLCiopbFpWHuywYSzEb18hC7H5nyYohYH224SXDzjEFrut3cop1MjSLVgGP37fIEidAKlG5hzVy-EHVjYANVPNx0CSRmO-Y252I4QkVmO2kXCIhBzH1TXhEAU2ZAdjDTMsIgW79R9iTw2rNUfWnw&quot; style=&quot;color: rgb(35, 82, 124); font-weight: 400; background-color: rgb(255, 255, 255); outline: 0px;&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhq4fQwnvIXgPeJ99sJuX1QqojinBs2PEcb34zLCiopbFpWHuywYSzEb18hC7H5nyYohYH224SXDzjEFrut3cop1MjSLVgGP37fIEidAKlG5hzVy-EHVjYANVPNx0CSRmO-Y252I4QkVmO2kXCIhBzH1TXhEAU2ZAdjDTMsIgW79R9iTw2rNUfWnw&quot; title=&quot;2025-0220-163939.png&quot; alt=&quot;2025-0220-163939.png&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;調整過後，有問題需要替換的硬碟佔用的空間只剩下3百多GB，另一顆同樣裝在NAS上的4TB硬碟也只用了1.86TB。看起來現在的使用量真的是綽綽有餘。倒是準備拿來替換的8TB硬碟已經使用了4.7TB，看來之後要再花些時間整理一下了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;NAS不架站了 /&amp;nbsp;Giving Up on Setting Up a Website Using a NAS&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEggMrUPLJ9jG5TpzqC-ZEJDUrNRE_e6u2UXfUwo7FtI1BGlW3T9XYzkzLdu665sy3v77QE3GAgqskuvm5nJirg7-MHY2xckv3ao6JokN082f7mUK0wLOGS1zPJS4XanfI84biAvLeLUwdkYdvoUZqZ9FNMYICv8ubLrMhXNjcTIwEh5u97WnQzogw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEggMrUPLJ9jG5TpzqC-ZEJDUrNRE_e6u2UXfUwo7FtI1BGlW3T9XYzkzLdu665sy3v77QE3GAgqskuvm5nJirg7-MHY2xckv3ao6JokN082f7mUK0wLOGS1zPJS4XanfI84biAvLeLUwdkYdvoUZqZ9FNMYICv8ubLrMhXNjcTIwEh5u97WnQzogw&quot; title=&quot;2025-0220-165431.png&quot; alt=&quot;2025-0220-165431.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在整理QNAP安裝服務的過程裡，其實還蠻令人感慨的。&lt;/p&gt;
&lt;p&gt;剛買NAS的時候，我還期待把NAS當作網頁伺服器來運作服務。但到現在，我已經把QNAP的大部分虛擬化服務都關掉了。&lt;/p&gt;
&lt;p&gt;由於小主機性能孱弱的關係，跑Virtualization Station的全虛擬化虛擬機器的體驗不太好。而Container Station雖然能運作門檻比較低的Docker跟LXD，但在我用另一臺電腦架設Proxmox VE之後，在QNAP跑Docker或LXD也就顯得沒那麼好用了。&lt;/p&gt;
&lt;p&gt;原本靜態網站的架設全部轉移到GitHub Page上。而動態網頁的需求也被拆分到各個其他服務去。API服務我會用Apps Script或Vercel來實作，而各別分析的需求則是用Colab來完成。若真的要架設並運作大型系統，那就在Proxmox VE上搭配Cloudflare Tunnel內網穿透就好了，不用再勉強配一個獨立IP才能使用。&lt;/p&gt;
&lt;h2&gt;沒有公開IP的網路環境 /&amp;nbsp;Network Environments Without a Public IP&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj8qUWXvFkBDuMkhxhqg0XRrDb2xxk61UdOI1r32Yr9M5K3tZGc1qqhWWLUPot_WiA8a-5wxLmz2Kbc6_tZyS7PNZy6sAbGzl5gHh0FOdKSpCJZvD5bivjUiOt67YLemuNgEakU7ME9JKF2XI94hMUT5ru-hS5pQa-bcasN-AqgOSD7XgDwa-x4Gg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj8qUWXvFkBDuMkhxhqg0XRrDb2xxk61UdOI1r32Yr9M5K3tZGc1qqhWWLUPot_WiA8a-5wxLmz2Kbc6_tZyS7PNZy6sAbGzl5gHh0FOdKSpCJZvD5bivjUiOt67YLemuNgEakU7ME9JKF2XI94hMUT5ru-hS5pQa-bcasN-AqgOSD7XgDwa-x4Gg&quot; title=&quot;2025-0220-165810.png&quot; alt=&quot;2025-0220-165810.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;另一個主要的變動是myQNAPPcloud Link也被我關掉了。這個功能是在撥接取得動態IP的網路環境下，讓QNAP能用固定的網域名稱連線的一種做法。以前我要在區域網路之外取用QNAP的檔案，就得透過myQNAPcloud來連線。&lt;/p&gt;
&lt;p&gt;然而，我後來所在的網路環境，其實是連撥接取得動態IP的資格都沒有，純粹就是在NAT區網內用DHCP來取得區域IP而已，而且上層管理者也不給開Port Forwarding。在這個情況下，就算是myQNAPcloud也無法連線。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjbgAVwTa9qGUE35ZZSrzF_8SaRazzu5tSOV9HQKeehSJacB4YYBhHVMm3lE-iMQqrPU0611wbw5X69GO3PSB4nsXFvvlYIenevWeikoO4t1NTeeyGQiZD_PCPqnaKhWwqwx5afPgWUcKoKpAR0BZ8V44Bpmya8y5RsorrMdTKBV2DhYNaxZ9SZpQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjbgAVwTa9qGUE35ZZSrzF_8SaRazzu5tSOV9HQKeehSJacB4YYBhHVMm3lE-iMQqrPU0611wbw5X69GO3PSB4nsXFvvlYIenevWeikoO4t1NTeeyGQiZD_PCPqnaKhWwqwx5afPgWUcKoKpAR0BZ8V44Bpmya8y5RsorrMdTKBV2DhYNaxZ9SZpQ&quot; title=&quot;2025-0220-170309.png&quot; alt=&quot;2025-0220-170309.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;後來我改用ZeroTier建立虛擬內網。只要裝置連上ZeroTier加入虛擬的區域網路，彼此之間就能用IP來連線。這樣的做法甚至可以避免QNAP NAS暴露在網際網路上，減少被攻擊的危險。這也是我在QNAP的Container Station裡唯一保留運作的Docker容器。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhYfAWl_-n_YdlmyWN6bH_42qQsTn0mQQu6pZ4HU0qDvZD-RhL42XHbFBx1-O1QZ2zrb3Xo-r36eOIwTnJjGz8btdnUAHf7QTDE9DgxXpmnuL5Mu-7YJ8agDNEUYiUAkXprhpgCERQPovXOIK3nmuH-1t7Ta3-xoT0UjubeBLLNrQQBVjG_jQdT2A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhYfAWl_-n_YdlmyWN6bH_42qQsTn0mQQu6pZ4HU0qDvZD-RhL42XHbFBx1-O1QZ2zrb3Xo-r36eOIwTnJjGz8btdnUAHf7QTDE9DgxXpmnuL5Mu-7YJ8agDNEUYiUAkXprhpgCERQPovXOIK3nmuH-1t7Ta3-xoT0UjubeBLLNrQQBVjG_jQdT2A&quot; title=&quot;https://blog.qnap.com/zh/%E6%8E%A8%E8%96%A6%E4%B8%89%E7%A8%AE%E9%80%8F%E9%81%8E%E5%A4%96%E7%B6%B2%E5%AE%89%E5%85%A8%E5%AD%98%E5%8F%96-nas-%E7%9A%84%E6%96%B9%E5%BC%8F/&quot; alt=&quot;https://blog.qnap.com/zh/%E6%8E%A8%E8%96%A6%E4%B8%89%E7%A8%AE%E9%80%8F%E9%81%8E%E5%A4%96%E7%B6%B2%E5%AE%89%E5%85%A8%E5%AD%98%E5%8F%96-nas-%E7%9A%84%E6%96%B9%E5%BC%8F/&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.qnap.com/zh/%E6%8E%A8%E8%96%A6%E4%B8%89%E7%A8%AE%E9%80%8F%E9%81%8E%E5%A4%96%E7%B6%B2%E5%AE%89%E5%85%A8%E5%AD%98%E5%8F%96-nas-%E7%9A%84%E6%96%B9%E5%BC%8F/&quot; target=&quot;_blank&quot;&gt;https://blog.qnap.com/zh/%E6%8E%A8%E8%96%A6%E4%B8%89%E7%A8%AE%E9%80%8F%E9%81%8E%E5%A4%96%E7%B6%B2%E5%AE%89%E5%85%A8%E5%AD%98%E5%8F%96-nas-%E7%9A%84%E6%96%B9%E5%BC%8F/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;關於ZeroTier的詳細操作可以參考QNAP的Blog「&lt;a href=&quot;https://blog.qnap.com/zh/%E6%8E%A8%E8%96%A6%E4%B8%89%E7%A8%AE%E9%80%8F%E9%81%8E%E5%A4%96%E7%B6%B2%E5%AE%89%E5%85%A8%E5%AD%98%E5%8F%96-nas-%E7%9A%84%E6%96%B9%E5%BC%8F/&quot; target=&quot;_blank&quot;&gt;推薦三種透過外網安全存取 NAS 的方式&lt;/a&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiOY6CeVymvLsDimFqhvsI0eBbszh-QwxbfVPRqiDAr0J1flhHW4sK-q0-ErZGCW_pmiOJOu7dZq9aZzGxb3m2MnX3gxajyXOMvn3c_7K9NomGCyYL6Zi3rp9xEQVlWuot1Wren32V-AGt-DuHOlGtmt6VKk3n2bP6fLkdSamwFOsHNXEK6hcS1Zg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiOY6CeVymvLsDimFqhvsI0eBbszh-QwxbfVPRqiDAr0J1flhHW4sK-q0-ErZGCW_pmiOJOu7dZq9aZzGxb3m2MnX3gxajyXOMvn3c_7K9NomGCyYL6Zi3rp9xEQVlWuot1Wren32V-AGt-DuHOlGtmt6VKk3n2bP6fLkdSamwFOsHNXEK6hcS1Zg&quot; title=&quot;Screenshot_20250220_170933_QuMagie_a.png&quot; alt=&quot;Screenshot_20250220_170933_QuMagie_a.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;設定好ZeroTier後，即使QNAP NAS沒有公開在網際網路，我們在離開內網的時候，還是可以用ZeroTier的虛擬IP來連上QNAP NAS。這個意思是說，即使是在外面使用手機，我們依然可以用行動網路來連上QNAP，並用QuMagie備份手機的相片跟影片。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;讓NAS專心做好儲存跟檢索的工作 / Let NAS Focus on Storage and Searching&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjP5CjiMTMxQh-l2yJ1o0e0cwp7CA4ZYSmhJJYurWt_LgyXDk5dMiEEsBlNscUO3zPq7JXXHlL9uq-srt6jY3U8kV5AhBpSBB4T0nFR3y6xTZ34YAC0ke46iN4ClTXkWp3KYo5zfmRwcq9oERmBJxeVyCqwCISfTzqYLm-v1wnIXNpNXxLPUQTejw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjP5CjiMTMxQh-l2yJ1o0e0cwp7CA4ZYSmhJJYurWt_LgyXDk5dMiEEsBlNscUO3zPq7JXXHlL9uq-srt6jY3U8kV5AhBpSBB4T0nFR3y6xTZ34YAC0ke46iN4ClTXkWp3KYo5zfmRwcq9oERmBJxeVyCqwCISfTzqYLm-v1wnIXNpNXxLPUQTejw&quot; title=&quot;2025-0220-172217.png&quot; alt=&quot;2025-0220-172217.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;撇除掉作為網頁伺服器的工作後，現在這臺QNAP NAS主要的工作就是提供NFS跟Samba區域網路硬碟的服務。它不僅僅只是讓Proxmox VE外掛成為備份資料跟保存ISO檔案的儲存空間，在Proxmox VE裡面的虛擬機器也會掛載NAS來存放檔案。這次我在架設Stable Diffusion的時候就把模型檔案跟繪圖結果存放在NAS裡面，大幅度減少了虛擬機器佔用的空間，而且也可以避免虛擬機器壞掉或關機的時候無法存取檔案。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEisRKrciLwzCpxGDSnrxA49wGQ8Aox-t5lac3y-CbG0ZJ3Vo4TyXwNuHaLLBUDdjbDF046bpQ5jtJ4nmIcBbSAJ3if5_I89LRtH4KrDwnb-qrGi8CCZSegYMzN1WDFJEUzmyCI7vk2uZAd-BgNXdyBNt0Cu4Q_JebPG3fENxOg0F3I_7_raXc9CFA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEisRKrciLwzCpxGDSnrxA49wGQ8Aox-t5lac3y-CbG0ZJ3Vo4TyXwNuHaLLBUDdjbDF046bpQ5jtJ4nmIcBbSAJ3if5_I89LRtH4KrDwnb-qrGi8CCZSegYMzN1WDFJEUzmyCI7vk2uZAd-BgNXdyBNt0Cu4Q_JebPG3fENxOg0F3I_7_raXc9CFA&quot; title=&quot;2025-0220-172701.png&quot; alt=&quot;2025-0220-172701.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在另一臺電腦執行程式、NAS只是作為儲存空間的做法還有很多種應用。我也將網路上看到的重要文章或資料，用&lt;a href=&quot;/2024/05/htmlsinglefile-save-the-webpage-as-a-single-html-file-singlefile.html&quot; target=&quot;_blank&quot;&gt;SingleFile&lt;/a&gt;儲存成HTML檔案，並轉換成docx後，放到NAS上保存。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgi05qQBBDRODd-f_36dzSF3tbY-lY3GDYdnwjKMfDdLBw9bSNRIGrfbBYnnByVrkOMVFaWN9kR0mCzdvtdKYtopfvTLrb_Otx3yGW9CYbedmcBpKc-xU1kk2G-MmNLO8XpdLqMXmzC17q1G05RCWrajLvA0pNmZrt6dY1qyAhYSSHTuP0anUgu6g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgi05qQBBDRODd-f_36dzSF3tbY-lY3GDYdnwjKMfDdLBw9bSNRIGrfbBYnnByVrkOMVFaWN9kR0mCzdvtdKYtopfvTLrb_Otx3yGW9CYbedmcBpKc-xU1kk2G-MmNLO8XpdLqMXmzC17q1G05RCWrajLvA0pNmZrt6dY1qyAhYSSHTuP0anUgu6g&quot; title=&quot;2025-0220-173001.png&quot; alt=&quot;2025-0220-173001.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這個做法可以搭配QNAP的QSirch全文檢索資料庫來查找資料，效果還不錯。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjxnWVvDD2nTecxE_etPWRovudSALC2Xz0AD84SzRjzeHLbiibNVQ3hqAgxQ0hy0jS6BijsjzY38wASSYgCdCSvih-6HSzaWN8QA81hrR2Qo2rh4rww-jWRcE8-h72g3eZZNf4uUdPDYurSzvNGnlEwLQrEPQnThHsXA36eXPiNjYPQb-LMbNEN_A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjxnWVvDD2nTecxE_etPWRovudSALC2Xz0AD84SzRjzeHLbiibNVQ3hqAgxQ0hy0jS6BijsjzY38wASSYgCdCSvih-6HSzaWN8QA81hrR2Qo2rh4rww-jWRcE8-h72g3eZZNf4uUdPDYurSzvNGnlEwLQrEPQnThHsXA36eXPiNjYPQb-LMbNEN_A&quot; title=&quot;2025-0220-173211.png&quot; alt=&quot;2025-0220-173211.png&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.qnap.com/zh-tw/software/qsirch&quot; target=&quot;_blank&quot;&gt;https://www.qnap.com/zh-tw/software/qsirch&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;QNAP後來有在QSirch加上了語意搜圖的功能，不過這功能只限於搜尋圖片，還不能用於搜尋文字上。希望未來能夠結合語意向量來實現文字上的語意搜尋啊。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;小結 / In Closing&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgYIA244L6rn5DWSAcgDj1z1kj4IsYPMHOrpHNR_Mb2G-mfNx46JJdvIHWaeDXxJhQwra9ApKrRKUOTdgTmlXogOKfD8DedvVNoVxcJM_uPe5IC9P471LMex6F0RxEs5HhGpi5D22ww9V620Qi0i0AvB2R40u8zmJHAO5yRvA0ZTBQlwIX3qMJtzQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgYIA244L6rn5DWSAcgDj1z1kj4IsYPMHOrpHNR_Mb2G-mfNx46JJdvIHWaeDXxJhQwra9ApKrRKUOTdgTmlXogOKfD8DedvVNoVxcJM_uPe5IC9P471LMex6F0RxEs5HhGpi5D22ww9V620Qi0i0AvB2R40u8zmJHAO5yRvA0ZTBQlwIX3qMJtzQ&quot; title=&quot;2025-0220-173605.png&quot; alt=&quot;2025-0220-173605.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.qnap.com/zh-tw/product/ts-253d&quot; target=&quot;_blank&quot;&gt;https://www.qnap.com/zh-tw/product/ts-253d&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;這臺QNAP NAS買到現在已經有四年了。當初為了讓它能夠跑虛擬機器，我還特別把記憶體從4GB加裝到32GB。不過現在看來，好像也沒那個必要。&lt;/p&gt;
&lt;p&gt;現在我對NAS的期望回歸到「儲存」跟「檢索」這兩個功能上。「儲存」是NAS本來就做的很好的部分，但「檢索」則是一直讓我很不滿意。&lt;/p&gt;
&lt;p&gt;在靜待更好的技術出來之前，我還是繼續把壞掉的硬碟換掉吧。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/446700006852307302/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/07/talk-perhaps-a-nas-should-just-be-a-nas.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/446700006852307302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/446700006852307302'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/07/talk-perhaps-a-nas-should-just-be-a-nas.html' title='雜談：也許NAS作為NAS就好 / TALK: Perhaps a NAS Should Just Be a NAS'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjkwd8S8WoBsN-MWEVRZ0vmQLjEdJvgXy9_0Drhpj7-BAo33n4t5Yz1JjIktaT24o8C5EcWMu81pO-2DBe9biVuXnWMRO4qZyc40wklySoRiSZtPXbDTjZ0PZKfIXU_f4HZ5_2Awq64maz_KlUtW3l-ObdHoNzmCyDI8MlUyWLSkYa1I7OO4LK4PQ=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-9123624252154596227</id><published>2025-07-14T12:00:00.007+08:00</published><updated>2025-07-14T12:00:00.220+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Home Assitant"/><category scheme="http://www.blogger.com/atom/ns#" term="IR"/><category scheme="http://www.blogger.com/atom/ns#" term="Zigbee2MQTT"/><title type='text'>在Home Assistant使用紅外線遙控器Moes UFO-R11 / Using Infrared Remote Control Moes UFO-R11 in Home Assistant</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiwNWb5hsenFeX4YtkB7zEFeEPrvcTIW5GF8EhDfO3plD-wdZfyoYaXEuhq9selrtic7kdRJu3TeYgN32GTFpOAIXyRrXEKqJAxhqu9nMGk50Ym3mbWAgFOLGvKH9HGAGxCioEsEj6JECDnpLKSAnfwedxgh2fdVKL9hC5cidzYGVWVbIQoJoMkIg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiwNWb5hsenFeX4YtkB7zEFeEPrvcTIW5GF8EhDfO3plD-wdZfyoYaXEuhq9selrtic7kdRJu3TeYgN32GTFpOAIXyRrXEKqJAxhqu9nMGk50Ym3mbWAgFOLGvKH9HGAGxCioEsEj6JECDnpLKSAnfwedxgh2fdVKL9hC5cidzYGVWVbIQoJoMkIg&quot; title=&quot;2025-0122-012555.png&quot; alt=&quot;2025-0122-012555.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.zigbee2mqtt.io/devices/UFO-R11.html&quot; target=&quot;_blank&quot;&gt;紅外線遙控器Moes UFO-R11&lt;/a&gt;可以透過Zigbee2MQTT跟Home Assistant整合在一起，讓我們能夠在Home Assistant裡面直接控制冷氣、電風扇等紅外線遙控的裝置。但是UFO-R11的設定可是出乎意料之外的複雜，讓我們用這篇來記錄一下做法吧。&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.zigbee2mqtt.io/devices/UFO-R11.html&quot; target=&quot;_blank&quot;&gt;Moes UFO-R11&lt;/a&gt; infrared remote control can be integrated with Home Assistant via Zigbee2MQTT, allowing us to directly control infrared-controlled devices like air conditioners and fans within Home Assistant. However, setting up the UFO-R11 is unexpectedly complex. Let&#39;s use this post to document the process.&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;Home Assistant與Zigbee2MQTT的關係 / The relationship between Home Assistant and Zigbee2MQTT&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj9E6XR5ExCJ7-U_oZSBH7_nmcfRIRPwg4Go_4vNgtq4YVPQMCvIrtcpRQse5QavUFKXPWDM7oHWvYWvG3vHpx9Aoh4lXVUlCbsx5jRHFQmaWHd7vvggTc0IHrdnJI99jMKYYRUOCYA3R46xvaC30QSlawNIeb2aqmY4h7tmAgSXAySGJc_lPDK5w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj9E6XR5ExCJ7-U_oZSBH7_nmcfRIRPwg4Go_4vNgtq4YVPQMCvIrtcpRQse5QavUFKXPWDM7oHWvYWvG3vHpx9Aoh4lXVUlCbsx5jRHFQmaWHd7vvggTc0IHrdnJI99jMKYYRUOCYA3R46xvaC30QSlawNIeb2aqmY4h7tmAgSXAySGJc_lPDK5w&quot; title=&quot;2025-0122-003502.png&quot; alt=&quot;2025-0122-003502.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Home Assistant (HA) 是一款開源的居家自動化平台，它內建了多種連結方式，能夠與各種智慧裝置連接。舉例來說，我們可以透過WIFI連接Tuya或Broadlink的設備，或是透過藍芽連線到SwitchBot的手指機器人。那如果我們要連上Zigbee設備的話，一般來說我們都會透過Zigbee2MQTT來居中協調。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgOZwBCBMp8rIauHBros7BEPDQoigoDK3QDieW7ra9OxzIk7EU60DQC54_hHok8YUaKJEl0hZesjrQZx_M2QRAlBDHDFryi3O8gyq-wrKopcjZpBg6_NUgTq7pohif98lnfGPrY55K2-2KYcZ_yeaZzQ_LBzZfuWr1N-BQJeq0H1ITZ2ny9veHt8g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgOZwBCBMp8rIauHBros7BEPDQoigoDK3QDieW7ra9OxzIk7EU60DQC54_hHok8YUaKJEl0hZesjrQZx_M2QRAlBDHDFryi3O8gyq-wrKopcjZpBg6_NUgTq7pohif98lnfGPrY55K2-2KYcZ_yeaZzQ_LBzZfuWr1N-BQJeq0H1ITZ2ny9veHt8g&quot; title=&quot;2025-0122-003743.png&quot; alt=&quot;2025-0122-003743.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Zigbee2MQTT，簡稱z2m，是一個將 Zigbee 裝置橋接到 MQTT 的橋接器，然後z2m會將各式各樣的 Zigbee 裝置整合到 Home Assistant 中。Zigbee2MQTT 就像一座橋樑，連線 Zigbee 裝置和 MQTT 伺服器。它將 Zigbee 裝置的資料轉換成 MQTT 訊息，讓 Home Assistant 可以讀取和控制這些裝置。透過 Zigbee2MQTT，使用者可以擺脫廠商專屬的閘道器或應用程式，自由選擇和組合不同品牌的 Zigbee 裝置，打造更彈性、客製化的智慧家庭環境。&lt;/p&gt;
&lt;h2&gt;&lt;span style=&quot;font-weight: 700; color: inherit;&quot;&gt;Zigbee紅外線遙控器Moes UFO-R11 / Zigbee infrared remote control Moes UFO-R11&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiWzbFAXQN07cOJqJqmEltXnlLKjwDNe4hgpOz_5Ta-obg3XPXWg_wArQmxjsWtmK6XUY7S8zEolQUeUkk-m0BrL91Za29ovwNZsMnMUiY9QYJOcyPT4nuSZfxzpUzDU2DRw5k2x3N4TOki9wBFQHlNF0m0FZm_52AhlVpyQU1kMi4Qxs0AVhIBPw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiWzbFAXQN07cOJqJqmEltXnlLKjwDNe4hgpOz_5Ta-obg3XPXWg_wArQmxjsWtmK6XUY7S8zEolQUeUkk-m0BrL91Za29ovwNZsMnMUiY9QYJOcyPT4nuSZfxzpUzDU2DRw5k2x3N4TOki9wBFQHlNF0m0FZm_52AhlVpyQU1kMi4Qxs0AVhIBPw&quot; title=&quot;2025-0122-003826.png&quot; alt=&quot;2025-0122-003826.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Moes UFO-R11是一款透過Zigbee通訊的智慧型紅外線萬用遙控器，旨在取代家中眾多的紅外線遙控器。它可以學習並發送各種紅外線訊號，控制家中例如冷氣、電視、風扇等支援紅外線遙控的電器。透過連線Zigbee閘道器(Gateway)，你可以將Moes UFO-R11整合到智慧家庭系統中，包括Home Assistant，進而使用智慧型手機App或語音助理來控制家電，提升居家生活的便利性。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiwpYzh9d6HfxDx8I-RewIpMpIqh0sGPLD2wbZOEkE9y1N7LHGNIatWTsWBzPI4vUq-016LsW6-4teKUKFjBvm-qOnHkq_OMlZmfi3sp6HXO5gkM3pUxe742nU_Dl1Ush7vMzJxn2CSRsuvdpVEPS7JZKPB6Gzcre5KIk1nLiKmDFm0HxJLhI1F4g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiwpYzh9d6HfxDx8I-RewIpMpIqh0sGPLD2wbZOEkE9y1N7LHGNIatWTsWBzPI4vUq-016LsW6-4teKUKFjBvm-qOnHkq_OMlZmfi3sp6HXO5gkM3pUxe742nU_Dl1Ush7vMzJxn2CSRsuvdpVEPS7JZKPB6Gzcre5KIk1nLiKmDFm0HxJLhI1F4g&quot; title=&quot;20250122_004004.jpg&quot; alt=&quot;20250122_004004.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Moes UFO-R11最特別的地方在於能用兩顆AAA電池來進行供電。我用過許多智慧家電的紅外線遙控器，大多數都是用WIFI連接。WIFI的高耗電量註定了這些裝置必須一直接著電線，這讓我在佈置智慧家電的時候受到了很大的限制。Moes UFO-R11使用的Zigbee協定都相當節能，因此Zigbee裝置大多都可以用電池就能獨立運作。這讓我能將Moes UFO-R11輕鬆放置在家中任何角落。&lt;/p&gt;
&lt;p&gt;這下子萬能遙控器總算像是遙控器了，不然一直接著線非常不方便啊。&lt;br&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;將UFO-R11加入到Zigbee2MQTT / Add UFO-R11 to Zigbee2MQTT&lt;/h2&gt;
&lt;p&gt;在使用UFO-R11之前，我們要先將UFO-R11加入z2m。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEibC_9UwmRIXEVGmfWi_aihOo7i4bydSpUtE-PMmJhLQoSydS3locT7V1QY37-k0vTiGbeL9_AgB2P8W3DvUfJGcxKUcy3RRu37W8QZeHnhF9B7NbZGcgkO-AZWfxRoEgytnio3t_04MmsOZ5HChn18xnycIKCVuEdeqv1rKI5oq8r87-vzbb-r_A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEibC_9UwmRIXEVGmfWi_aihOo7i4bydSpUtE-PMmJhLQoSydS3locT7V1QY37-k0vTiGbeL9_AgB2P8W3DvUfJGcxKUcy3RRu37W8QZeHnhF9B7NbZGcgkO-AZWfxRoEgytnio3t_04MmsOZ5HChn18xnycIKCVuEdeqv1rKI5oq8r87-vzbb-r_A&quot; title=&quot;2025-0122-004853.png&quot; alt=&quot;2025-0122-004853.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我們在z2m開啟允許讓裝置加入。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg1Z5R9C2lqwI0TYT4vD_eEh5A53TfS9Mg0Hh1vZvVBJ8JJ4L0Qio24I0cofnyhLuWFxNxiW9h-QvRC_VWCaqJwsYPS2Jb2c2SC1wcx4PEwYoadVivY_tW46BJ4_AJfd02rYj3GQxIHt-RroAsao3xiKUZsf5TaNgNoQehrvDsKj1tRcQUVFNq8CA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg1Z5R9C2lqwI0TYT4vD_eEh5A53TfS9Mg0Hh1vZvVBJ8JJ4L0Qio24I0cofnyhLuWFxNxiW9h-QvRC_VWCaqJwsYPS2Jb2c2SC1wcx4PEwYoadVivY_tW46BJ4_AJfd02rYj3GQxIHt-RroAsao3xiKUZsf5TaNgNoQehrvDsKj1tRcQUVFNq8CA&quot; title=&quot;20250116_BLOG_HA_UFO-R11.note-cropped.png&quot; alt=&quot;20250116_BLOG_HA_UFO-R11.note-cropped.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我們打開UFO-R11底下的電池蓋板，然後長按Reset按鈕。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj9m-yRR3Z3Rz0QS7sHqUWir5_RWQdxOZCZG8fWnk7mRCx9wSI0sj-P9ifRA3uPE9FTNyOb7SnUgWEj5ysDs6Cae5y4dxyetfSBUdL47_n2PI8hezAhS4zSzywCnBPKpYl5TFfXpiGWbleayQ15NdMrECGsYw8XRJC1cVGmsMOolr6cdYn3-ckGHA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj9m-yRR3Z3Rz0QS7sHqUWir5_RWQdxOZCZG8fWnk7mRCx9wSI0sj-P9ifRA3uPE9FTNyOb7SnUgWEj5ysDs6Cae5y4dxyetfSBUdL47_n2PI8hezAhS4zSzywCnBPKpYl5TFfXpiGWbleayQ15NdMrECGsYw8XRJC1cVGmsMOolr6cdYn3-ckGHA&quot; title=&quot;2025-0122-005019.png&quot; alt=&quot;2025-0122-005019.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接著Moes UFO-R11應該就能順利加入。&lt;/p&gt;
&lt;p&gt;由於UFO-R11本身沒有指示燈，我們很難判斷UFO-R11有沒有正常啟動。如果一直沒能順利加入的話，有時候是電池的問題。我裝充電電池的時候無法順利啟動UFO-R11，但換成鹼性電池就可以運作了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjGVOiBTSpf6nVw_8o3KehtPpvSiAqX_iI-CEX50A-QvH3GJB75atSvERlXUnzqFRO_GDvcEYxMbfDY_gjm7F6HAy3beQC0vIUbXG4O2ZciboEugKaNyP4Q5eNpGFEhttSHOgkUkCQoyCFm4BDyp5Mhvduy0g4b-oWxKb-w2HBwJ8kfwPkQuTCk5w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjGVOiBTSpf6nVw_8o3KehtPpvSiAqX_iI-CEX50A-QvH3GJB75atSvERlXUnzqFRO_GDvcEYxMbfDY_gjm7F6HAy3beQC0vIUbXG4O2ZciboEugKaNyP4Q5eNpGFEhttSHOgkUkCQoyCFm4BDyp5Mhvduy0g4b-oWxKb-w2HBwJ8kfwPkQuTCk5w&quot; title=&quot;2025-0122-005316.png&quot; alt=&quot;2025-0122-005316.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;讓我們進入UFO-R11設備，把它設定一個自己容易記憶的名稱後，切換Exposes頁面。以下的操作大多都會在Exposes頁面這裡進行。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;學習紅外線指令 / Learning IR Code&lt;/h2&gt;
&lt;p&gt;像是Moes UFO-R11這種學習型紅外線遙控器的操作，我們需要關注兩個重點：學習與發送。學習是學習原始紅外線遙控器發出的訊號，將它保存到設備裡面；發送則是將學習到的訊號發送給冷氣或電風扇等裝置。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjHS8GjUJqzaZWVz6aG9M1qMXXbjJwwOloQe1tZbF3xU3gw9rn_KP0oLaw8fr550IZv_C0PLWe5JIdCK18nutPVQoutH-0zpSBxi6ZHAaZzbnOnqxTWh3hR5zq9Q4lTUBCMjuZ7bkkWVeLnFnVpvDZ65tEnUeNsXxhwZlOsHGSBsM1S0APbsbc3yg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjHS8GjUJqzaZWVz6aG9M1qMXXbjJwwOloQe1tZbF3xU3gw9rn_KP0oLaw8fr550IZv_C0PLWe5JIdCK18nutPVQoutH-0zpSBxi6ZHAaZzbnOnqxTWh3hR5zq9Q4lTUBCMjuZ7bkkWVeLnFnVpvDZ65tEnUeNsXxhwZlOsHGSBsM1S0APbsbc3yg&quot; title=&quot;2025-0122-005451.png&quot; alt=&quot;2025-0122-005451.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;開啟Zigbee2MQTT中UFO-R11的Expose。我們可以看到learn_ir_code跟learned_ir_code的資訊。前者是開啟學習功能的開關，後者是記錄學習到的訊號。我們先把這個頁面開好，然後來準備硬體的設定。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjRDa23e-5xI8P2KGiwTbck2v-oY1JEpO12VQuyaLG7bpuwCXbZZ6qEydfWh5AR6gc1zQYs51OHmBQ1sLmDg1JZVeH4fTaA7ImLTwNw0Jt2-sWMaLsLVj8GU5ZMXaeMdUXsyEMf7rwMJCliCyRNfyI76kFysiRKD88SWTMPMxfP8GOcGBzPQjlGLw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjRDa23e-5xI8P2KGiwTbck2v-oY1JEpO12VQuyaLG7bpuwCXbZZ6qEydfWh5AR6gc1zQYs51OHmBQ1sLmDg1JZVeH4fTaA7ImLTwNw0Jt2-sWMaLsLVj8GU5ZMXaeMdUXsyEMf7rwMJCliCyRNfyI76kFysiRKD88SWTMPMxfP8GOcGBzPQjlGLw&quot; title=&quot;20250122_005702.jpg&quot; alt=&quot;20250122_005702.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接下來拿出你的UFO-R11跟原本的紅外線遙控器。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhnmgdbJCqGSjjQd0vdQHdH5L7szCGp6odDUYoufC1xV-8QmsPDAVfjQ-pUB7xjp2W3NkfjXk3OED9yzNa922R84LbJ3bjhuoy3xmgXZ0ps0MG8Jj9ZS0tHOC5Y2CnfGQV-azt-GBCvrVbDmnMKxuWsU3yB6197JeP0phVtCaKWQ05IJCHjhyMChA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhnmgdbJCqGSjjQd0vdQHdH5L7szCGp6odDUYoufC1xV-8QmsPDAVfjQ-pUB7xjp2W3NkfjXk3OED9yzNa922R84LbJ3bjhuoy3xmgXZ0ps0MG8Jj9ZS0tHOC5Y2CnfGQV-azt-GBCvrVbDmnMKxuWsU3yB6197JeP0phVtCaKWQ05IJCHjhyMChA&quot; title=&quot;20250116_BLOG_HA_UFO-R11.note_1_-cropped.png&quot; alt=&quot;20250116_BLOG_HA_UFO-R11.note_1_-cropped.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;假如我們現在要學習的是「開機」按鈕。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhBEyoE5Elv0B7TNYUV6JpzvyLqWQ_QVnw8kQmV50BCO40w63RrQNqyLpwMdfofswCihvhwDcRCx6GzsZHtQDBYJd6OkvMecDTC2YK3lLtthdxCP56nyf1qbLBuNpt54eJGjFdHN77Y00Sd6WNLpu5j4krHAGRodg2yXVnr_Q4WAZKfFcNLBSawTQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhBEyoE5Elv0B7TNYUV6JpzvyLqWQ_QVnw8kQmV50BCO40w63RrQNqyLpwMdfofswCihvhwDcRCx6GzsZHtQDBYJd6OkvMecDTC2YK3lLtthdxCP56nyf1qbLBuNpt54eJGjFdHN77Y00Sd6WNLpu5j4krHAGRodg2yXVnr_Q4WAZKfFcNLBSawTQ&quot; title=&quot;2025-0122-010032.png&quot; alt=&quot;2025-0122-010032.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;回到Zigbee2MQTT裡，按下learn_ir_code的「ON」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiGWdKkuxaJ84_oVOp4ppDbMwMMCKB6t-D5hE_ih6DpHhbLXhkDsAq5jROd_aC2EHh_8_7dDfILQTM27mFS73pmOyTefRmaBi8MuQEhyqB0Wx4MTvAau_ChwZyB0nWPXGo3ESBmDTr90433KlaxwAj5EevX84tI6Yz2WhotyjA3FT0ATkz9noM-4g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiGWdKkuxaJ84_oVOp4ppDbMwMMCKB6t-D5hE_ih6DpHhbLXhkDsAq5jROd_aC2EHh_8_7dDfILQTM27mFS73pmOyTefRmaBi8MuQEhyqB0Wx4MTvAau_ChwZyB0nWPXGo3ESBmDTr90433KlaxwAj5EevX84tI6Yz2WhotyjA3FT0ATkz9noM-4g&quot; title=&quot;20250122_010057.jpg&quot; alt=&quot;20250122_010057.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;對UFO-U11按下紅外線遙控器的按鈕。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgeH_X0n1zP54lpqtcIF1nmTAE36VHaCPqP_SJ-1pERtUHQBUjukXcnQ7BLErpJvBwP7ay6ED2zdS4kHAt8Ozvr9eS18eFCfr1CsqT2Iuegd6MpMY4Mp9x13LkG9qnt4d-C1ThMeC2DhXqO3kG_v8KtF5Ahxwv0L7iXcpeFfFrjfT_dGP4bEJqZuw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgeH_X0n1zP54lpqtcIF1nmTAE36VHaCPqP_SJ-1pERtUHQBUjukXcnQ7BLErpJvBwP7ay6ED2zdS4kHAt8Ozvr9eS18eFCfr1CsqT2Iuegd6MpMY4Mp9x13LkG9qnt4d-C1ThMeC2DhXqO3kG_v8KtF5Ahxwv0L7iXcpeFfFrjfT_dGP4bEJqZuw&quot; title=&quot;2025-0122-010228.png&quot; alt=&quot;2025-0122-010228.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;回到Zigbee2MQTT，此時learned_ir_code應該會出現一長串文字，這就是紅外線指令訊號。紅外線訊號的文字大概會像是這樣：&lt;/p&gt;
&lt;blockquote&gt;B4EgphE7AqEGgAPgCwFAG0ABQAdAA+APAUAbQAPgEwHgCx/gCxPgJwEDgSA7AuATR8AbwAdAAQJmAjvggAHAl0AHQANAAcAHwAFAD8ADQAFAC8ABQAtBA+AXAUAn4AcBQQdAA+AHAcAT4AcH4BsBQDNAa0AHwAFAC8ADQAFAC0ABQAfAA0AzQAFAD+ADCwdmAjsCOwI7Ag==&lt;br&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgBtvZ17eCOuWwEHeaPQe438QnfA6RW1dPUlBEGfs-AFodSyS3OQGagPHlnfSq5Ep5-q6kjla3zEDPOO4hFjAn6sbWu9eV6dHppFQex-952RrrLAeopQUyBJgmFz7zrAe1_SlXb7xNQ3zDbYh0DYFzl16V9qOEjsLlBpEWTrffYwwaNQE36d6B51A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgBtvZ17eCOuWwEHeaPQe438QnfA6RW1dPUlBEGfs-AFodSyS3OQGagPHlnfSq5Ep5-q6kjla3zEDPOO4hFjAn6sbWu9eV6dHppFQex-952RrrLAeopQUyBJgmFz7zrAe1_SlXb7xNQ3zDbYh0DYFzl16V9qOEjsLlBpEWTrffYwwaNQE36d6B51A&quot; title=&quot;2025-0122-010329.png&quot; alt=&quot;2025-0122-010329.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;UFO-R11不會保存訊號內容，所以這個紅外線訊號，我是另外用Google Sheet表格來記錄。這個紅外線訊號會在後面發送的時候用到，請好好記下來吧。如果要學習其他訊號，請依樣畫葫蘆地取得紅外線遙控器上面每個按鈕的指令訊號。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;發送紅外線指令訊號 / Send infrared command signal&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh4sXE6cIZOBQMs_c7EDA2LEajuMPXLQZD8mqjxC94MO4jGvWsxXi_uyU5lJeVm6CgXbGW8uMU4UlIv5LnTtDe76xKQ7i45G_E2VkPfuzOGccS6Zd4xFKEU-dr5LV3lvpatqfoe7YUoro_gpt6TOoVGI05YSzD0i82HRi8S5ukJMkLMkZ-aPVcQOw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh4sXE6cIZOBQMs_c7EDA2LEajuMPXLQZD8mqjxC94MO4jGvWsxXi_uyU5lJeVm6CgXbGW8uMU4UlIv5LnTtDe76xKQ7i45G_E2VkPfuzOGccS6Zd4xFKEU-dr5LV3lvpatqfoe7YUoro_gpt6TOoVGI05YSzD0i82HRi8S5ukJMkLMkZ-aPVcQOw&quot; title=&quot;2025-0122-010703.png&quot; alt=&quot;2025-0122-010703.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;相較於學習指令的容易理解，UFO-R11要發送指令就困難得多。從原理來看，我們要在UFO-R11的ir_code_to_send欄位裡填上紅外線訊號，這樣就能讓它發送訊號。但如果我們要在Home Assistant裡面操作的話，因為紅外線訊號的長度超過了Home Assistant的限制，所以我們得用MQTT發佈的方式將紅外線訊號設定到ir_code_to_send。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiXvGexwb7z4TOQOMi1iTnNgeVn2k4qa7Oy78BIA96WVv8HZzXDACZZx_66L-G45AXcvOleFzV8_rzh7jqQcaxV-NVspPUNpMR5TWb2qBqcCqQ0rrfGB9QZv7qd4XeDOTaMjmY2AdkqUa9VEo6xHcDvbmPbTnILDeKPlJ3-6SJv7fQIPCz2HT_-GQ&quot; style=&quot;font-weight: 400; background-color: rgb(255, 255, 255);&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiXvGexwb7z4TOQOMi1iTnNgeVn2k4qa7Oy78BIA96WVv8HZzXDACZZx_66L-G45AXcvOleFzV8_rzh7jqQcaxV-NVspPUNpMR5TWb2qBqcCqQ0rrfGB9QZv7qd4XeDOTaMjmY2AdkqUa9VEo6xHcDvbmPbTnILDeKPlJ3-6SJv7fQIPCz2HT_-GQ&quot; title=&quot;2025-0122-010520.png&quot; alt=&quot;2025-0122-010520.png&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;腳本內容的YAML如下：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;yaml&quot;&gt;action:&amp;nbsp;mqtt.publish&lt;br&gt;metadata:&amp;nbsp;{}&lt;br&gt;data:&lt;br&gt;&amp;nbsp;&amp;nbsp;evaluate_payload:&amp;nbsp;false&lt;br&gt;&amp;nbsp;&amp;nbsp;qos:&amp;nbsp;&quot;2&quot;&lt;br&gt;&amp;nbsp;&amp;nbsp;retain:&amp;nbsp;false&lt;br&gt;&amp;nbsp;&amp;nbsp;topic:&amp;nbsp;zigbee2mqtt/&lt;font color=&quot;#ff0000&quot;&gt;紅外線遙控器&amp;nbsp;電池&amp;nbsp;Zigbee&amp;nbsp;UFO-R11&amp;nbsp;{Drosera&amp;nbsp;heliamphora}&lt;/font&gt;/set&lt;br&gt;&amp;nbsp;&amp;nbsp;payload:&amp;nbsp;&amp;gt;-&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&quot;ir_code_to_send&quot;:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;B8Ug6BEuArUGgANAAQJmAi7gAgEBZgJAG0ABQAdAA8ABAmYCLuAAAUAXwAPAAeAHH4APgAXAK0AHwAGAGQEuAsAH4CMBA8UgLgJAAeADT8ALQE/AC8AHwAHgAw9AJ+ABAeATDeAFAeALKUAT4CMDQIdAA8AzQAtAA8APQAdAD+AHA8AXQAdBA0AHQANAJ0AHQAFAB8ADwBfAD+AvB0AB4Bc74CtrwDNAB0AD4ARjAgIuAg==&lt;/span&gt;&quot;}&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中紅字的「&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;紅外線遙控器 電池 Zigbee UFO-R11 {Drosera heliamphora}&lt;/span&gt;」是UFO-R11在Home Assistant的名稱，不是Entity ID。而&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;藍字&lt;/span&gt;的部分就是紅外線訊號。&lt;/p&gt;
&lt;p&gt;這個腳本就能讓紅外線訊號設定到UFO-R11的ir_code_to_send欄位，然後UFO-R11就會發送紅外線訊號。接著UFO-R11會自動清空ir_code_to_send，並等待下一個要發送的訊號，因此我們不需要手動重置ir_code_to_send，不用擔心UFO-R11會重複發送訊號。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgJN500YfNVk0eAmifeJNNg2g9dij5O1NKUfc8Vw_J-XxndbtTXKsjcb7NI0giJFyW6pysCR5LEcy2v-ovkPqfxPsqBOtPQUEeRvB87eKFdvok_uFcaQGyMzAra51OFRb3SM3KCYJnJ2Vnjv4J-GnuP5fCt3A9s1ulb93WNQ9qRqPBwRS5gGLwxLw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgJN500YfNVk0eAmifeJNNg2g9dij5O1NKUfc8Vw_J-XxndbtTXKsjcb7NI0giJFyW6pysCR5LEcy2v-ovkPqfxPsqBOtPQUEeRvB87eKFdvok_uFcaQGyMzAra51OFRb3SM3KCYJnJ2Vnjv4J-GnuP5fCt3A9s1ulb93WNQ9qRqPBwRS5gGLwxLw&quot; title=&quot;2025-0122-011409.png&quot; alt=&quot;2025-0122-011409.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;值得注意的是，在UFO-R11設定ir_code_to_send、實際發送、清空ir_code_to_send的整個動作大概要3秒鐘。因此我們在Home Assistant發送紅外線訊號的時候，如果要發送多個紅外線指令，指令之間必須加上「delay」3秒以上的設定。這樣才能確保UFO-R11確實發送每一條紅外線指令。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;結語 / Conclusion&lt;/h2&gt;
&lt;p&gt;在使用Home Assistant的這段經驗中，我用過了非常多種「萬能遙控器」。奇怪的是，每種萬能遙控器的學習指令與發送指令的方式都大不相同。本篇介紹的Moes UFO-R11要用z2m學習指令、用MQTT發佈來發送指令；&lt;a href=&quot;/2023/10/how-to-learn-rf-radio-frequency-with-broadlink-rm-pro-in-home-assistant.html&quot; target=&quot;_blank&quot;&gt;Broadlink RM4 Pro&lt;/a&gt;要用Home Assistant的Learn Command學習指令、用Send Command發送指令；塗鴉系列的萬能遙控器則是在塗鴉自己的APP裡面學習指令，然後用「場景」來發送指令。目前看來，塗鴉的邏輯最容易理解，也非常好操作。但一定要用WIFI跟遠端伺服器連線才能運作的這點，還是讓我決定逐步替換塗鴉的WIFI設備。&lt;/p&gt;
&lt;p&gt;雖然UFO-R11的學習跟發送都有點麻煩，但設定好之後，運作起來倒是意外地穩定。即時稍微被物品遮擋，紅外線訊號也能順利發送給冷氣。最後就是不知道這2顆AAA電池可以使用多久就是了。沒關係，兵來將擋、水來土掩，到時候冷氣開不起來我就知道了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;那這篇關於Moes UFO-R11跟Home Assistant的整合就介紹到這裡了。文章的最後要來問大家的是，你會想用萬能遙控器跟智慧家居整合嗎？&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;1. 會：回家自動開冷氣、離家自動關冷氣，幸福感UPUP。&lt;/li&gt;
  &lt;li&gt;2. 不會：這麼懶幹嘛，不過就是按個按鈕而已啊。&lt;/li&gt;
  &lt;li&gt;3. 再想想：如果遙控器沒電了怎麼辦？ (A：就...換電池而已)&lt;/li&gt;
  &lt;li&gt;4. 好恐怖：這樣駭客不就可以遠端操控我們家的冷氣嗎？太危險了！&lt;/li&gt;
  &lt;li&gt;5. 其他：歡迎在下面留言，分享你的看法吧！&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/9123624252154596227/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/07/using-infrared-remote-control-moes-ufo-r-in-home-assistant.html#comment-form' title='5 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/9123624252154596227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/9123624252154596227'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/07/using-infrared-remote-control-moes-ufo-r-in-home-assistant.html' title='在Home Assistant使用紅外線遙控器Moes UFO-R11 / Using Infrared Remote Control Moes UFO-R11 in Home Assistant'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiwNWb5hsenFeX4YtkB7zEFeEPrvcTIW5GF8EhDfO3plD-wdZfyoYaXEuhq9selrtic7kdRJu3TeYgN32GTFpOAIXyRrXEKqJAxhqu9nMGk50Ym3mbWAgFOLGvKH9HGAGxCioEsEj6JECDnpLKSAnfwedxgh2fdVKL9hC5cidzYGVWVbIQoJoMkIg=s72-c" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-7724057661123298021</id><published>2025-07-11T12:00:00.007+08:00</published><updated>2025-07-11T12:00:00.219+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hardware"/><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><category scheme="http://www.blogger.com/atom/ns#" term="Talk"/><title type='text'>雜談：MacBook好像不是只有一種 / TALK: MacBook Seems Not to Be the Only One</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg3sOVNWgu7B0yIEBk7osb0sVNdHVz82Qd1phMh4rP51ouVzVAZTFBeTSPRZHjucbd-LkHdedpQ_anqUkKpxCkxlw9xQsQZDvQU8w9h8w2-NlN5TXH3xlNZbggX2tUoO-Ll2HdZyPWf6skI9MFlVBxa_fHAz_LiuNOPrHiVGlPFHr23r7Vy0yMSdg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg3sOVNWgu7B0yIEBk7osb0sVNdHVz82Qd1phMh4rP51ouVzVAZTFBeTSPRZHjucbd-LkHdedpQ_anqUkKpxCkxlw9xQsQZDvQU8w9h8w2-NlN5TXH3xlNZbggX2tUoO-Ll2HdZyPWf6skI9MFlVBxa_fHAz_LiuNOPrHiVGlPFHr23r7Vy0yMSdg&quot; title=&quot;2025-0220-000626.png&quot; alt=&quot;2025-0220-000626.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最近拿到了一台別人不要的MacBook Air，這是2015年出產的版本。但沒想到MacBook Air的種類比我想像中的還要複雜許多。這個種類不只是指筆電的型號，還有它的週邊們。&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;2015年的MacBook Air /&amp;nbsp;2015 MacBook Air&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiMrMq9uHneSj_6N56jYAj3yhtJwT1g-ewJudXoYaJJajwfYdmm1Sr8tvrVjbhBUPeY-n8wGIs6Is6J7TnPqkRo02NkPkB0CnslicE0whjNR3qm2SGU7A2YwPtl-6igCivJTXqZmm_Zy4ZUqgRF55pOnduTcRe_h_cBEY4BBHdVHvZ94p_wNvKnBA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiMrMq9uHneSj_6N56jYAj3yhtJwT1g-ewJudXoYaJJajwfYdmm1Sr8tvrVjbhBUPeY-n8wGIs6Is6J7TnPqkRo02NkPkB0CnslicE0whjNR3qm2SGU7A2YwPtl-6igCivJTXqZmm_Zy4ZUqgRF55pOnduTcRe_h_cBEY4BBHdVHvZ94p_wNvKnBA&quot; title=&quot;20250219_225502.jpg&quot; alt=&quot;20250219_225502.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;拿到MacBook Air的第一件令我困擾的事情是：我沒有充電的裝置。它似乎是因為沒有電的關係，連開機都無法啟動。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiJkPMInQrJxr3ym8g_F5LBsj2wKjrs5DbLAdQ278t6c4lIxhEPdwdrKnwwKT6SUOhIg5iZL3QHyV3tV-R1kfv71yKed1Te-BQpVbLaPzID6UKAfNjr_VJtgVZUuMsl8YVybAbr7Q90P53kD_bFkaCF8yHoZmds2_HqIY5aX2RFxVB7Xe09guEt9w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiJkPMInQrJxr3ym8g_F5LBsj2wKjrs5DbLAdQ278t6c4lIxhEPdwdrKnwwKT6SUOhIg5iZL3QHyV3tV-R1kfv71yKed1Te-BQpVbLaPzID6UKAfNjr_VJtgVZUuMsl8YVybAbr7Q90P53kD_bFkaCF8yHoZmds2_HqIY5aX2RFxVB7Xe09guEt9w&quot; title=&quot;2025-0219-225713.png&quot; alt=&quot;2025-0219-225713.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://support.apple.com/zh-tw/109509&quot; target=&quot;_blank&quot;&gt;https://support.apple.com/zh-tw/109509&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;印象中，MacBook系列的充電器可都不便宜。而且這臺並不像是如今的MacBook已經採用了USB Type-C接頭來充電，而是使用著早期的磁吸充電的形式。&lt;/p&gt;
&lt;p&gt;我朋友聽了我的苦惱，拍拍胸脯跟我說：「沒問題，我家有之前MacBook Pro的充電線，借你。」過幾天我興高采烈地拿著朋友借我的接頭，然後我才意識到，原來MacBook的磁吸接頭有不同的規格。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiPA1b8PGpbcBFlkmBgogADc6Stx6uYLLRNNDPWcSg3vju16yYFVfKgCBbwzdkc3xB5iUhnYHRNBT7KC9tMVevfz3GVfD6XTm7Y8oVJqkhZ7NxbedesjfTb92-TBQmXYWguW_S7wfjnru7ZCGxOIpP6keGOfsup6WgRVbamA6swhsu-Et_N6loM6g&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiPA1b8PGpbcBFlkmBgogADc6Stx6uYLLRNNDPWcSg3vju16yYFVfKgCBbwzdkc3xB5iUhnYHRNBT7KC9tMVevfz3GVfD6XTm7Y8oVJqkhZ7NxbedesjfTb92-TBQmXYWguW_S7wfjnru7ZCGxOIpP6keGOfsup6WgRVbamA6swhsu-Et_N6loM6g&quot; title=&quot;2025-0219-230140.png&quot; alt=&quot;2025-0219-230140.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://support.apple.com/zh-tw/109509&quot; target=&quot;_blank&quot;&gt;https://support.apple.com/zh-tw/109509&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;首先，這是2012年到2017年的MacBook Air充電線，規格是MagSafe 2。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjof7i9ki59FZY0p-KPxlLLgCRf0MSgiiZpvWKS0uvbOo_A8aKmV55yEHp0k2IjuEiwrt_UPMxkxQ71_8-2ztPf5O-H-wzg3CQQhwEbP74sjgHo_tjBVugzNRddpwwV6Etvb89QRt1-U5In6GMZjyHom3LQmNfb1vkOa3i5XSwLO-A0eCXx8pE2hw&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjof7i9ki59FZY0p-KPxlLLgCRf0MSgiiZpvWKS0uvbOo_A8aKmV55yEHp0k2IjuEiwrt_UPMxkxQ71_8-2ztPf5O-H-wzg3CQQhwEbP74sjgHo_tjBVugzNRddpwwV6Etvb89QRt1-U5In6GMZjyHom3LQmNfb1vkOa3i5XSwLO-A0eCXx8pE2hw&quot; title=&quot;2025-0219-230250.png&quot; alt=&quot;2025-0219-230250.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://support.apple.com/zh-tw/109509&quot; target=&quot;_blank&quot;&gt;https://support.apple.com/zh-tw/109509&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;而這個是2011年以前MacBook Air使用的L型連接器充電線。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhuu9vC1OIiW_PQ-SMVlGuo3gPACtyLGTI6m3UtUkZSMA4TrusJ7f3Fvm-0HIIgsVfJlUF1UkDoapRVZqWaX94Snjpf2JIfzt7SUINp3Mp2kojiSOfShkdt6_iaCnUyf0dQMMjduAivM7XLJk_jb-cUGv_J4XNijjMQw0_qkhpiJJkli7Mkj3EBBg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhuu9vC1OIiW_PQ-SMVlGuo3gPACtyLGTI6m3UtUkZSMA4TrusJ7f3Fvm-0HIIgsVfJlUF1UkDoapRVZqWaX94Snjpf2JIfzt7SUINp3Mp2kojiSOfShkdt6_iaCnUyf0dQMMjduAivM7XLJk_jb-cUGv_J4XNijjMQw0_qkhpiJJkli7Mkj3EBBg&quot; title=&quot;2025-0219-230346.png&quot; alt=&quot;2025-0219-230346.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://support.apple.com/zh-tw/109509&quot; target=&quot;_blank&quot;&gt;https://support.apple.com/zh-tw/109509&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然後這是2006年到2009年MacBook Pro 15&quot;跟17&quot;使用的附「T」型連接器...等等，這跟前面的MagSafe 2看起來有什麼不同？難道只是一個是銀色跟白色的差異嗎？&lt;/p&gt;
&lt;p&gt;當然不是，雖然照片上看不出來，但實際上兩者的規格並不相同，連插都插不進去。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEit-qPPJGpFntHuupaJO03C46wyqy3i1Obh5-anec2FKUNiDuVW1nWXcHbQw8G9A6uxEqLyI2BMnsZtoVXc8w_9T0Go3ZJb_X_AhnVnjUq-8X1KGWinFypXmhvSOPV64_RwjiDgJwkYTPMvT1_tAFPtGnJfz91jfr9yJXnohUow6rYAKX7sGWr0xA&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEit-qPPJGpFntHuupaJO03C46wyqy3i1Obh5-anec2FKUNiDuVW1nWXcHbQw8G9A6uxEqLyI2BMnsZtoVXc8w_9T0Go3ZJb_X_AhnVnjUq-8X1KGWinFypXmhvSOPV64_RwjiDgJwkYTPMvT1_tAFPtGnJfz91jfr9yJXnohUow6rYAKX7sGWr0xA&quot; title=&quot;2025-0219-230726.png&quot; alt=&quot;2025-0219-230726.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;後來我決定直接去買一個USB Type-C轉到MacBook磁吸充電頭的轉接器。為了確認這件事情，還跟店家來回問了好多回，最後才確認了要買MagSafe2的規格。真是感謝店家的耐心溝通。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhBvhQoONWfP0MhM27Tn7PG-6WIcnOHcxZAmz_iwwS-_EA2vwfII6lGhfV_eqmpZ1l7kAmh8N76TQgA6BMh2Xmb5cwZR8RFlI7fUI2pmToW7322DgJ3zk0clrH2jtpJNvJNDFaufXttM3PZUVnWPE3SMfB0MPIvY36AFtlOEhHvYe0bRMdmO8ZswA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhBvhQoONWfP0MhM27Tn7PG-6WIcnOHcxZAmz_iwwS-_EA2vwfII6lGhfV_eqmpZ1l7kAmh8N76TQgA6BMh2Xmb5cwZR8RFlI7fUI2pmToW7322DgJ3zk0clrH2jtpJNvJNDFaufXttM3PZUVnWPE3SMfB0MPIvY36AFtlOEhHvYe0bRMdmO8ZswA&quot; title=&quot;20250219_224412.jpg&quot; alt=&quot;20250219_224412.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最後花了149買到這個轉接頭，而且的確能夠正常使用。這樣我就可以拿USB Type-C的充電線，用PD來給MacBook Air充電了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;毀損的硬碟 /&amp;nbsp;Damaged Hard Drive&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhHtmJmmcage6HfqPhyH6ezZoKcpKquwcx4JgTWCslUEDGZBb0IWnNYyRoSdhDPBnQz8nZ2DPW8rxFkWst7dMf7c6lbR0UDz4hV16sOrJksC6PFd6gwBINMVMiZxagh3ZMR5a50w42AKKRdNjagOtx2WVZa4EPmmDz69I9UJrbdCCFjbCJrqSUa8Q&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhHtmJmmcage6HfqPhyH6ezZoKcpKquwcx4JgTWCslUEDGZBb0IWnNYyRoSdhDPBnQz8nZ2DPW8rxFkWst7dMf7c6lbR0UDz4hV16sOrJksC6PFd6gwBINMVMiZxagh3ZMR5a50w42AKKRdNjagOtx2WVZa4EPmmDz69I9UJrbdCCFjbCJrqSUa8Q&quot; title=&quot;20250219_231107.jpg&quot; alt=&quot;20250219_231107.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;順利開機之後迎接我們的畫面是...一個標示著「?」的資料夾不斷的閃爍。&lt;/p&gt;
&lt;p&gt;「這一看就知道是硬碟或作業系統壞掉了。」Mac大師我朋友這樣說。&lt;/p&gt;
&lt;p&gt;我們嘗試讓它連上網路並修復看看，結果是連硬碟本身都已經找不到了。看來這的確只能說是硬碟壞掉了吧。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhCby4Rf0ugAm3y_mStqO9f5qx-NKJlY5HnYjU6LQ5U6iUK3_vxKz4n1TXo8Pmn5q7x9jmxlCpDVGfplqaTotZ08Fmnj9th6vxerc4S5-D2lxKawPyM2X7uVhS5eXh9ud5PeL9zIz-YFMSoOSSsP7YT857kTSbG7kpga3zSqsASCW-vFsxymukVfw&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhCby4Rf0ugAm3y_mStqO9f5qx-NKJlY5HnYjU6LQ5U6iUK3_vxKz4n1TXo8Pmn5q7x9jmxlCpDVGfplqaTotZ08Fmnj9th6vxerc4S5-D2lxKawPyM2X7uVhS5eXh9ud5PeL9zIz-YFMSoOSSsP7YT857kTSbG7kpga3zSqsASCW-vFsxymukVfw&quot; title=&quot;2025-0219-231425.png&quot; alt=&quot;2025-0219-231425.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我記得當年我拿過2017的MacBook Air，裡面的硬碟已經使用的是SSD。剛好手邊也有一條沒有用到的NVMe SSD，不知道能不能直接拿來用呢？這樣的話我是不是只要花不到百元買個MacBook Air拆機工具就可以了？&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjJz-3MRajOkoBBCyLDGWrAJAbaWwBlhLuluEuAO6nc5uY3bNGTNriR2KrisoX356c4eqqDpaMXjWFtW1RRC1Ii3vpWNq8SgkTWN5yVcSYJIfDqZbBibT3o75Ba0jmeeK0n_vuuLt2vcH8A-Tq0_VgRnls6tYpqEgwFWZ0UfQby7dCFWXQ2IM2Wzg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjJz-3MRajOkoBBCyLDGWrAJAbaWwBlhLuluEuAO6nc5uY3bNGTNriR2KrisoX356c4eqqDpaMXjWFtW1RRC1Ii3vpWNq8SgkTWN5yVcSYJIfDqZbBibT3o75Ba0jmeeK0n_vuuLt2vcH8A-Tq0_VgRnls6tYpqEgwFWZ0UfQby7dCFWXQ2IM2Wzg&quot; title=&quot;2025-0219-231819.png&quot; alt=&quot;2025-0219-231819.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.mobile01.com/topicdetail.php?f=481&amp;amp;t=5572538&quot; target=&quot;_blank&quot;&gt;https://www.mobile01.com/topicdetail.php?f=481&amp;amp;t=5572538&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;不過查了一下，雖然都是使用SSD，但是需要轉接卡才能運作。而且2016之後有些版本的MacBook Air是焊在主機板上，不能替換。&lt;/p&gt;
&lt;p&gt;想了想，成本好像太高了。而且說真的我也沒有使用MacOS的動機，好像不需要為它付出這麼多心力。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;記憶卡的規格 /&amp;nbsp;Memory Card Specifications&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjiknTL7Bq2Kv1WH_FtQ7uS5GDYNbtJ7ufRtPtTiOg3j6hIIahkbw4Ab85z7L-KwdXt5hNGGltKf2R1m-hOpDPstzeAKaMw2ao3l4kfUfgCbEjwn7g0yrhzHDondAl9jN40DyQNcyaX1L615cs--THphpP-4xXnvGF6Ey-P5APTQEDLmWD9z__2-A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjiknTL7Bq2Kv1WH_FtQ7uS5GDYNbtJ7ufRtPtTiOg3j6hIIahkbw4Ab85z7L-KwdXt5hNGGltKf2R1m-hOpDPstzeAKaMw2ao3l4kfUfgCbEjwn7g0yrhzHDondAl9jN40DyQNcyaX1L615cs--THphpP-4xXnvGF6Ey-P5APTQEDLmWD9z__2-A&quot; title=&quot;20250214_224401.jpg&quot; alt=&quot;20250214_224401.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;比起MacOS，我更寧願用我現在用的很順的Kubuntu。於是我找了個Kubuntu 22.04 LiveUSB，把作業系統安裝在記憶卡上，然後確實能用記憶卡來啟動Kubuntu。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhp_3YQ02UkNnelyfu8pR1XZ3JHCUQBweAdJlKvOAl8qR8SOYXbxd0jYId0No1Tfyh7kSqcmCGrY-8-i7Hv8lrOydhoimzWDlaArFRTjq88FWNTyQM2xEfU5ncb_ohRZW4vid2RgfH_XZVtsfSDtEUgMKMXdXsgmV-d_87garR_JmzZlU5qZ2SZRg&quot; style=&quot;color: rgb(35, 82, 124); outline: 0px; font-weight: 400; background-color: rgb(255, 255, 255);&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhp_3YQ02UkNnelyfu8pR1XZ3JHCUQBweAdJlKvOAl8qR8SOYXbxd0jYId0No1Tfyh7kSqcmCGrY-8-i7Hv8lrOydhoimzWDlaArFRTjq88FWNTyQM2xEfU5ncb_ohRZW4vid2RgfH_XZVtsfSDtEUgMKMXdXsgmV-d_87garR_JmzZlU5qZ2SZRg&quot; title=&quot;20250219_224446.jpg&quot; alt=&quot;20250219_224446.jpg&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;只是這個由MicroSD轉接成SD的記憶卡插著總是會突出一大截。這可能不太容易攜帶或塞進包包，不小心折斷了怎麼辦。&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjmC8xTSAm4qyXfRt7Un7uIEy_jFPYQ6XDmniy_GPSXO4TMvOvgpdlZEme3LcQNpAWzgy0ohEKrjeaNr49pGp_vpw5z425wHlkehrBSgdxoAOf3DEGcK6y495FQwOPhWkWg5InxlhAgibmO887wgiYeIB-7HAAPhIicXT4YDxmeHLDCqNmev3Ivhw&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjmC8xTSAm4qyXfRt7Un7uIEy_jFPYQ6XDmniy_GPSXO4TMvOvgpdlZEme3LcQNpAWzgy0ohEKrjeaNr49pGp_vpw5z425wHlkehrBSgdxoAOf3DEGcK6y495FQwOPhWkWg5InxlhAgibmO887wgiYeIB-7HAAPhIicXT4YDxmeHLDCqNmev3Ivhw&quot; title=&quot;2025-0219-232442.png&quot; alt=&quot;2025-0219-232442.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;印象中有人為了MacBook推出了短板的MicroSD轉接卡，號稱插入後可以直接貼合筆電本身。不過這勾起了我當年使用MacBook Air的回憶。我記得那時候也是買了類似的卡片，然後實際上根本就無法貼合，轉接卡還是在外面露出一節，搬動的時候特別容易卡到。&lt;/p&gt;
&lt;p&gt;後來我也跟店家確認型號，所有的店家也都跟我說並不適用在MacBook Air 2015的這臺筆電上。我嘆了口氣，只好放棄用記憶卡開機的做法。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi5hK2lNTT5-Xh5EDPAb9uz2lL96TT15FETFue9PYp1HKcF38fa9jMHZ1Skv2LgqyiKxvv2wkEMKE9UwnQAZUzTcX3cwzaKxyrk2BKqYCM6Ma52YV9NzP68Oii20v6SokStDvTW-phT2to5ND-aSmgKHQO8LgTITYkdfVYTX-PZFB7mZ7QBoUIuNQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi5hK2lNTT5-Xh5EDPAb9uz2lL96TT15FETFue9PYp1HKcF38fa9jMHZ1Skv2LgqyiKxvv2wkEMKE9UwnQAZUzTcX3cwzaKxyrk2BKqYCM6Ma52YV9NzP68Oii20v6SokStDvTW-phT2to5ND-aSmgKHQO8LgTITYkdfVYTX-PZFB7mZ7QBoUIuNQ&quot; title=&quot;20250219_224348.jpg&quot; alt=&quot;20250219_224348.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;後來我是拿SanDisk的USB隨身碟開機。SanDisk的Ultra Fit隨身碟刻意做成非常短的形式，即使插在主機上也不太醒目或卡手。缺點是也很難拔出來，而且很容易忘記帶走。反正充電轉換頭本來就會突出一節，那多一個隨身碟也不會差太多，我就這樣將就著用吧。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;鍵盤 / Keyboard&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg02dwB1XZE3S9oZUQf4yyV8IBhFAs2daPPClSRWFZYdQyEjI9ufBfTmNlfcuaGnqzcHrokFKTRzy2FaL99A1xZr8FUqUkR8QqfP_15U6BC0mBXukq00zcAdLs9xSqm6u1a2jP8RcWlYlnWVyw1C7-UdjVQb300F5j9P_o2a0LY25JgsodSMJc3xg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg02dwB1XZE3S9oZUQf4yyV8IBhFAs2daPPClSRWFZYdQyEjI9ufBfTmNlfcuaGnqzcHrokFKTRzy2FaL99A1xZr8FUqUkR8QqfP_15U6BC0mBXukq00zcAdLs9xSqm6u1a2jP8RcWlYlnWVyw1C7-UdjVQb300F5j9P_o2a0LY25JgsodSMJc3xg&quot; title=&quot;20250219_233049.jpg&quot; alt=&quot;20250219_233049.jpg&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;用隨身碟開啟Kubuntu，確實也可以用MacBook Air的硬體來開機。這樣我就可以看到亮麗的螢幕、漂亮的機身、寬廣的觸控板，還有……我一直無法適應的鍵盤。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjQuhIkQ7RWXGPZ1rCohz8EaQj9U_79ZxfF6mErdIKxXl1IAwwKb32_zIzzSOfc_ngozqjNOF9Sw1qpA-iCipS2FeursVqkVj70eiLFWmuegqgUNEkONvhEKIj2gwpf-fufbypWtcFxqWJnc-Aju_lsC4DJqMSByn1xb5FXcrZHDgj_LFX7Trcl-g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjQuhIkQ7RWXGPZ1rCohz8EaQj9U_79ZxfF6mErdIKxXl1IAwwKb32_zIzzSOfc_ngozqjNOF9Sw1qpA-iCipS2FeursVqkVj70eiLFWmuegqgUNEkONvhEKIj2gwpf-fufbypWtcFxqWJnc-Aju_lsC4DJqMSByn1xb5FXcrZHDgj_LFX7Trcl-g&quot; title=&quot;20250219_224355.jpg&quot; alt=&quot;20250219_224355.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mac OS的鍵盤左下角是用fn、control、option、command來構成。但是這些按鍵在Linux的對應中，control是對應到control鍵沒錯，而option對應到alt，然後command對應的是Windows鍵(Linux裡面稱它為Meta鍵)。而fn是用來搭配最上面一排功能鍵來啟用F1到F12。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhUt6-aHxqNicDWJbCCl3dL_TOOBAkfiL1nAbNNqCwova4cXkt0SyXvR6_DCszDqsjXc1HSrk1lXNyygeq0MO6cgrT8cvxfElGscqIeymq8dEcvudliIrLknc2Cms2yDs0XQ67Gs3ZwM2l6zzK9bLZPhyaIUJHTMDyBzylUwvLohnH_Kt-gEzKZFg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhUt6-aHxqNicDWJbCCl3dL_TOOBAkfiL1nAbNNqCwova4cXkt0SyXvR6_DCszDqsjXc1HSrk1lXNyygeq0MO6cgrT8cvxfElGscqIeymq8dEcvudliIrLknc2Cms2yDs0XQ67Gs3ZwM2l6zzK9bLZPhyaIUJHTMDyBzylUwvLohnH_Kt-gEzKZFg&quot; title=&quot;2025-0219-234728.png&quot; alt=&quot;2025-0219-234728.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;font color=&quot;#337ab7&quot;&gt;&lt;u&gt;https://www.duotin.com/en/61440.html&lt;/u&gt;&lt;/font&gt;&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;作為時常要使用Ctrl的人來說，我真的很難接受Control鍵不在左下角的鍵盤設計。有段時間鍵盤十分流行這種fn在左下角的設計，甚至有些Windows筆電的鍵盤也採用這種設計，讓使用者被迫接受fn在左下角的操作，當時真的是讓我痛苦萬分。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgXRfT9YQEcAOIFlFY9SBixsrZNonyIU3SLtZbGAvhCBxPHXaCYteX3vcBqEN0zRWneHEydEGv27qz6-ZSXpnKmlTrGj8u3VNsbJi3vIh275VOSXTKS6VbovSHL1dCk_mJwPKxtbySWPaIiEVhqzLqBlgbjxIiXTPOKXV3ohz0HXufovhPKPD4WOA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgXRfT9YQEcAOIFlFY9SBixsrZNonyIU3SLtZbGAvhCBxPHXaCYteX3vcBqEN0zRWneHEydEGv27qz6-ZSXpnKmlTrGj8u3VNsbJi3vIh275VOSXTKS6VbovSHL1dCk_mJwPKxtbySWPaIiEVhqzLqBlgbjxIiXTPOKXV3ohz0HXufovhPKPD4WOA&quot; title=&quot;2025-0219-235159.png&quot; alt=&quot;2025-0219-235159.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadl/thinkpad-l13-yoga-gen-2/22tpl13l3y2?orgRef=https%253A%252F%252Fwww.google.com%252F&quot; target=&quot;_blank&quot;&gt;https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadl/thinkpad-l13-yoga-gen-2/22tpl13l3y2?orgRef=https%253A%252F%252Fwww.google.com%252F&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;我現在在用的ThinkPad L13 Yoga就是fn在左下角的設計。不過ThinkPad可以在BIOS裡面調換fn跟ctrl的位置，因此現在左下角的fn實際上是作為ctrl使用，我才勉強能夠接受。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjsxzeBAGsrADSJh_qTDZZqeeUql19IG1jGRPPzI3iBPFOY-62Rr3H8tko-3VetJwlDJyt-NveVE8IAuv6I4axjsyPK9UkpBdASpyt5TFsLmxWTNrojIphuFQm90qD-Oo1qOZpnQIWxy48SJuYA_ASLTlZrFeIH3-_EWYwDOL8NjoPTGzsCnvO4Vw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjsxzeBAGsrADSJh_qTDZZqeeUql19IG1jGRPPzI3iBPFOY-62Rr3H8tko-3VetJwlDJyt-NveVE8IAuv6I4axjsyPK9UkpBdASpyt5TFsLmxWTNrojIphuFQm90qD-Oo1qOZpnQIWxy48SJuYA_ASLTlZrFeIH3-_EWYwDOL8NjoPTGzsCnvO4Vw&quot; title=&quot;2025-0219-235757.png&quot; alt=&quot;2025-0219-235757.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.momoshop.com.tw/goods/GoodsDetail.jsp?i_code=13370533&quot; target=&quot;_blank&quot;&gt;https://www.momoshop.com.tw/goods/GoodsDetail.jsp?i_code=13628590&amp;amp;Area=search&amp;amp;mdiv=403&amp;amp;oid=1_1&amp;amp;cid=index&amp;amp;kw=ideapad&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;不過我最近去電腦商店觀察筆電的時候，赫然發現現在很多筆電左下角都使用了Ctrl。這包括了ASUS、Acer、甚至是聯想的IdeaPad都是如此。不知不覺鍵盤的設計又輪迴了一圈了，真是微妙。之後微軟還要大家在鍵盤上加上Coplit鍵，可能到時候鍵盤又會變了個樣吧。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;結語 / Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhl-pgUsbCsF-uak0PSpjFsZ8UOlwEldyMHTrhCZhQYWqMkM-jUMcgBJ9A-UwqhaBtSegJ1sZeMA2ERcs403_-T1lst51nssnnKq0hbmCWi8sb7pCjRQ3OH7eXuT_BcTkpWzJURFZ6Rl8SjDFNjFIdGCNzeNflZusRlyxcXTzMiYs2b5C0pQtg8YQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhl-pgUsbCsF-uak0PSpjFsZ8UOlwEldyMHTrhCZhQYWqMkM-jUMcgBJ9A-UwqhaBtSegJ1sZeMA2ERcs403_-T1lst51nssnnKq0hbmCWi8sb7pCjRQ3OH7eXuT_BcTkpWzJURFZ6Rl8SjDFNjFIdGCNzeNflZusRlyxcXTzMiYs2b5C0pQtg8YQ&quot; title=&quot;20250220_000059.jpg&quot; alt=&quot;20250220_000059.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;話說回來，儘管我在MacBook Air上跑了Kubuntu 22.04，但因為隨身碟的速度實在是太慢了。只要電腦處理檔案的寫入跟讀取操作，整個畫面就會直接結凍、無法操作，直到檔案操作完成為主。簡單來說就是無法正常使用。&lt;/p&gt;
&lt;p&gt;目前我也暫時想不到到底可以拿它來作什麼好。畢竟是2015年的電腦，也不太能期待它的效能。&lt;/p&gt;
&lt;p&gt;就先這樣吧。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/7724057661123298021/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/07/talk-macbook-seems-not-to-be-the-only-one.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/7724057661123298021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/7724057661123298021'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/07/talk-macbook-seems-not-to-be-the-only-one.html' title='雜談：MacBook好像不是只有一種 / TALK: MacBook Seems Not to Be the Only One'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEg3sOVNWgu7B0yIEBk7osb0sVNdHVz82Qd1phMh4rP51ouVzVAZTFBeTSPRZHjucbd-LkHdedpQ_anqUkKpxCkxlw9xQsQZDvQU8w9h8w2-NlN5TXH3xlNZbggX2tUoO-Ll2HdZyPWf6skI9MFlVBxa_fHAz_LiuNOPrHiVGlPFHr23r7Vy0yMSdg=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-3131986598778398100</id><published>2025-07-07T12:00:00.006+08:00</published><updated>2025-07-07T12:00:00.221+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Docker"/><category scheme="http://www.blogger.com/atom/ns#" term="Nextcloud"/><title type='text'>在Docker的Nextcloud用腳本新增外部網頁連結 / Adding External Site Links Using Scripts in Nextcloud on Docker</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj28omAsuPzBhUG7EptTOI9oez8G0HjKIjwiU_uqUgnl7eMxNyjBx38_vqzjPgJjPJazs87-kZvQ5GgXZ3c6ws_SSeFaBnrg5rJ6f6X7K2Fi56h6TU9rZTKiqhnnMpZM5m4uQJskFiyaNR9pIGSA7BY5geGsgtUpXI0q_pwIssE8tyZMxoQZjeqmw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj28omAsuPzBhUG7EptTOI9oez8G0HjKIjwiU_uqUgnl7eMxNyjBx38_vqzjPgJjPJazs87-kZvQ5GgXZ3c6ws_SSeFaBnrg5rJ6f6X7K2Fi56h6TU9rZTKiqhnnMpZM5m4uQJskFiyaNR9pIGSA7BY5geGsgtUpXI0q_pwIssE8tyZMxoQZjeqmw&quot; title=&quot;2025-0121-233729.png&quot; alt=&quot;2025-0121-233729.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/2025/06/enabling-or-disabling-apps-by-default-in-a-dockerized-nextcloud-instance.html&quot; target=&quot;_blank&quot;&gt;客製化Nextcloud的下一步&lt;/a&gt;，我們能不能將外部網頁嵌入到Nextcloud的應用程式裡面呢？答案是使用&lt;a href=&quot;https://apps.nextcloud.com/apps/external&quot; target=&quot;_blank&quot;&gt;外部網頁(External sites)擴充功能&lt;/a&gt;。我們可以進一步在Docker的Hook Folders中的post-installation資料夾中加入腳本，讓Nextcloud安裝完成後，自動開啟外部網頁擴充功能，並且將指定的網址加入到Nextcloud系統中。&lt;/p&gt;
&lt;p&gt;The next step in &lt;a href=&quot;/2025/06/enabling-or-disabling-apps-by-default-in-a-dockerized-nextcloud-instance.html&quot; target=&quot;_blank&quot;&gt;customizing Nextcloud&lt;/a&gt;: can we embed external web pages into Nextcloud applications?&amp;nbsp; The answer is yes, using the &lt;a href=&quot;https://apps.nextcloud.com/apps/external&quot; target=&quot;_blank&quot;&gt;External sites&lt;/a&gt; app.&amp;nbsp; We can further automate this process by adding a script to the post-installation folder within the Docker Hook Folders. This script will enable the External sites app and add specific URLs to the Nextcloud system after Nextcloud installation is complete.&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;Nextcloud的外部網站應用程式 /&amp;nbsp;External Sites in Nextcloud&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg6ezKextFv1-u1qdRXTckpXLu-oEJwTlwVXzm8nym0nOAFhT1BQjrlo5DOBovKF7rkPXJaATH5R_5g3EqUZ2s3iFYyr0nLoWqgiG4vBGXBjhVTLkXzdoEaOccT-CgJIvfVD0j2ZEEL_CmpBmUSUA9pjKXAWB-oh86aYhDqrN2tIbM6IcPwDsaNlQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg6ezKextFv1-u1qdRXTckpXLu-oEJwTlwVXzm8nym0nOAFhT1BQjrlo5DOBovKF7rkPXJaATH5R_5g3EqUZ2s3iFYyr0nLoWqgiG4vBGXBjhVTLkXzdoEaOccT-CgJIvfVD0j2ZEEL_CmpBmUSUA9pjKXAWB-oh86aYhDqrN2tIbM6IcPwDsaNlQ&quot; title=&quot;2025-0121-230708.png&quot; alt=&quot;2025-0121-230708.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://apps.nextcloud.com/apps/external&quot; target=&quot;_blank&quot;&gt;https://apps.nextcloud.com/apps/external&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Nextcloud 的外部網站應用程式（External Sites App）是一個簡潔卻功能強大的工具，讓管理者可以輕鬆地將外部網站連結整合到 Nextcloud 的網路介面中。使用者只需點擊對應的圖示，即可在 Nextcloud 框架內直接瀏覽外部網站，帶來如同使用 Nextcloud 內建服務般的無縫體驗。這對於需要經常參考特定外部資源的團隊或個人來說，無疑提升了工作效率，也簡化了操作流程。例如，公司可以將內部網路（Intranet）、客戶關係管理系統（CRM）或其他常用線上工具的連結新增到 Nextcloud，讓員工可以集中管理和快速取用這些資源。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhT6GkhNwDjvH-qGjAzSbsAVjyxANHPhzBxRI0vgJdG7WwSaSRX0W5DQxgcua1Bjo6K3DtwjAtkhKC3433tVP_V8lMr1cNm4uMVTNyr-g-2zSBcGWtoANfvOP9JBfaqUwqAcBCIg8vCT6JuY1J6PyP67w8Jws21bxg7aWv0-OZFWJNgm-WHvnal1g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhT6GkhNwDjvH-qGjAzSbsAVjyxANHPhzBxRI0vgJdG7WwSaSRX0W5DQxgcua1Bjo6K3DtwjAtkhKC3433tVP_V8lMr1cNm4uMVTNyr-g-2zSBcGWtoANfvOP9JBfaqUwqAcBCIg8vCT6JuY1J6PyP67w8Jws21bxg7aWv0-OZFWJNgm-WHvnal1g&quot; title=&quot;2025-0121-231359.png&quot; alt=&quot;2025-0121-231359.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這個應用程式設定起來非常簡單，管理者只需提供外部網站的網址（URL）和名稱即可。系統會自動產生對應的圖示，並將其顯示在 Nextcloud 的應用程式選單中。更進一步地，管理者還可以針對不同的語言、裝置類型或使用者群組設定不同的外部網站連結，實現更精細的客製化管理。舉例來說，可以針對不同部門設定專屬的外部資源連結，或是根據使用者使用的裝置（例如電腦或手機）顯示不同的網站版本。&lt;/p&gt;
&lt;p&gt;除了基本功能外，外部網站應用程式還支援透過 OCS（OwnCloud/Nextcloud Service）API 進行互動。這表示開發者或系統管理者可以透過程式化的方式管理這些連結，例如自動新增、修改或刪除連結，進而實現自動化管理和與其他系統的整合。而我們這篇的做法，就是利用了Nextcloud內建的API，用指令來新增外部網站的網址。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;安裝後新增網站的腳本 / Add External Sites in&amp;nbsp;Post-Installation Script&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgYTSv0ZcNY12QT7Twi-0ugU9r0aVx6VLiU2up7P1vNYoQ1AsuVVsPctonFOT21B4l5CAyWViBmlm5ZiwsUKaQTVpUi-ZsOqZhxGt7wSM6dkl9xvMZk1Dtx2UJFM7UQBZ5s9vaLVP3frwYkucbNfS7KP4UVLzWgjP2AxaBjuu_H0phdUOuMKcM7Sw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgYTSv0ZcNY12QT7Twi-0ugU9r0aVx6VLiU2up7P1vNYoQ1AsuVVsPctonFOT21B4l5CAyWViBmlm5ZiwsUKaQTVpUi-ZsOqZhxGt7wSM6dkl9xvMZk1Dtx2UJFM7UQBZ5s9vaLVP3frwYkucbNfS7KP4UVLzWgjP2AxaBjuu_H0phdUOuMKcM7Sw&quot; title=&quot;2025-0121-231838.png&quot; alt=&quot;2025-0121-231838.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這篇的做法繼承自「&lt;a href=&quot;/2025/06/enabling-or-disabling-apps-by-default-in-a-dockerized-nextcloud-instance.html&quot; target=&quot;_blank&quot;&gt;讓Docker架設的Nextcloud預設關閉或開啟應用程式&lt;/a&gt;」的操作，我們一樣使用Docker的鉤子資料夾(hook folders)裡面的/docker-entrypoint-hooks.d/post-installation，將客製化的腳本放在裡面。這樣Nextcluod在安裝完成之後，就會自動執行這個資料夾裡面的腳本。&lt;/p&gt;
&lt;p&gt;我將啟用外部網站應用程式與新增網站的腳本寫成add_external_sites.sh腳本。檔案內容很簡單，只有兩行指令：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;#!/bin/bash&lt;br&gt;&lt;br&gt;/var/www/html/occ&amp;nbsp;app:enable&amp;nbsp;external&lt;br&gt;/var/www/html/occ&amp;nbsp;config:app:set&amp;nbsp;external&amp;nbsp;sites&amp;nbsp;--value=&#39;{&quot;1&quot;:{&quot;id&quot;:1,&quot;name&quot;:&quot;My&amp;nbsp;Blog&quot;,&quot;url&quot;:&quot;https://blog.pulipuli.info&quot;,&quot;icon&quot;:&quot;icon-external&quot;,&quot;lang&quot;:&quot;&quot;,&quot;redirect&quot;:false}}&#39;&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我們用「/var/www/html/occ app:enable external」開啟Nextcloud的外部網站應用程式。然後用後面的指令加入外部網站，其中值得注意的參數是：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;id：會影響Nextcloud開啟外部網站的網址，只能使用數字。如果設定為1，那麼你就可以用「http://localhost:8080/apps/external/1/」開啟該外部網站。&lt;/li&gt;
  &lt;li&gt;name：顯示在按鈕上的名稱。&lt;/li&gt;
  &lt;li&gt;url：外部網站的實際網址。&lt;/li&gt;
  &lt;li&gt;icon：外部網站的圖示。你可以在「&lt;a href=&quot;https://docs.nextcloud.com/server/21/developer_manual/design/icons.html&quot; target=&quot;_blank&quot;&gt;List of available icons&lt;/a&gt;」裡面找到其他圖示設定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEioAaR8LIdUogQknJfv0EFv4QF06AKeG7-qzj11VpYXWBeIzxsnpAYqaOGzKXg0T50IHcIOvmpuS7HdLQk8YuMD3Dl0cbNfISMLQdVOVb6VmO4SssVInDiYgEe_bDitTGMyvr7QS_CJeDbcMRPxlHaM8HcCv6rA92U-L9GbqywWw4h4IQ6ELAwRWw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEioAaR8LIdUogQknJfv0EFv4QF06AKeG7-qzj11VpYXWBeIzxsnpAYqaOGzKXg0T50IHcIOvmpuS7HdLQk8YuMD3Dl0cbNfISMLQdVOVb6VmO4SssVInDiYgEe_bDitTGMyvr7QS_CJeDbcMRPxlHaM8HcCv6rA92U-L9GbqywWw4h4IQ6ELAwRWw&quot; title=&quot;2025-0121-232816.png&quot; alt=&quot;2025-0121-232816.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如此一來，安裝好Nextcloud之後，腳本就會自動將外部網站的網址加入到Nextcloud中。我們就能在Nextcloud直接開啟這個外部網址了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;結語 / Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEih-i0CzuSYCarLudCnPm05TyfYSY0RtUPgtCh6Iw04DNCOB9w8PYX2JQj5LnqaqPI6RvU9h5EdOKDdG1ORcuG2ZzJYFdLEacuXlpiJGbCQ8gkq48_L3NuaLX5Z-EUe_IYIy1BfstZPbCDE_i7OcPBH26s59MBbDe4D0gHvMPwztOKhDzWiVYIJIw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEih-i0CzuSYCarLudCnPm05TyfYSY0RtUPgtCh6Iw04DNCOB9w8PYX2JQj5LnqaqPI6RvU9h5EdOKDdG1ORcuG2ZzJYFdLEacuXlpiJGbCQ8gkq48_L3NuaLX5Z-EUe_IYIy1BfstZPbCDE_i7OcPBH26s59MBbDe4D0gHvMPwztOKhDzWiVYIJIw&quot; title=&quot;2025-0121-233113.png&quot; alt=&quot;2025-0121-233113.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/nextcloud/external/issues/6&quot; target=&quot;_blank&quot;&gt;https://github.com/nextcloud/external/issues/6&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;乍看之下add_external_sties.sh只有兩行指令，但實際上我花了很多時間才找到正確的設定方式。一開始我本來是想用ChatGPT跟Gemini給我建議，但AI給的建議並不正確。而後我在很多網頁上找到各種可能的指令形式，直到最後找到&lt;a href=&quot;https://github.com/nextcloud/external/issues/6#issuecomment-1758344472&quot; target=&quot;_blank&quot;&gt;rbax&lt;/a&gt;的建議，才釐清正確的指令形式。&lt;/p&gt;
&lt;p&gt;可能是因為Nextcloud外部網站是一個很少人在使用的功能吧，找起來真是意外地棘手啊。希望未來有類似需求的開發者可以參考一下我這篇的做法。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;這篇關於在Nextcloud用腳本新增外部網站的做法就到此為止了。文章最後的問題是：你覺得雲端硬碟需要這種整合外部網站的功能嗎？&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;1. 需要：把相關網站都擺到Nextcloud，使用上應該會更為便利。&lt;/li&gt;
  &lt;li&gt;2. 不需要：Nextcloud就做好雲端硬碟即可，不需要搞這些雜七雜八的玩意兒。&lt;/li&gt;
  &lt;li&gt;3. 應該讓使用者自行判斷：(其實本來就可以讓使用者自己調整外部網站啦)&lt;/li&gt;
  &lt;li&gt;4. 其他：歡迎在下面留言，分享你的看法吧！&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/3131986598778398100/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/07/adding-external-site-links-using-scripts-in-nextcloud-on-docker.html#comment-form' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/3131986598778398100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/3131986598778398100'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/07/adding-external-site-links-using-scripts-in-nextcloud-on-docker.html' title='在Docker的Nextcloud用腳本新增外部網頁連結 / Adding External Site Links Using Scripts in Nextcloud on Docker'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEj28omAsuPzBhUG7EptTOI9oez8G0HjKIjwiU_uqUgnl7eMxNyjBx38_vqzjPgJjPJazs87-kZvQ5GgXZ3c6ws_SSeFaBnrg5rJ6f6X7K2Fi56h6TU9rZTKiqhnnMpZM5m4uQJskFiyaNR9pIGSA7BY5geGsgtUpXI0q_pwIssE8tyZMxoQZjeqmw=s72-c" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-5622889154914903339</id><published>2025-07-04T12:00:00.001+08:00</published><updated>2025-07-04T12:00:00.224+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Life"/><category scheme="http://www.blogger.com/atom/ns#" term="PFAS"/><category scheme="http://www.blogger.com/atom/ns#" term="Talk"/><title type='text'>雜談：3M牙線停售了 / TALK: 3M Dental Floss Discontinued</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiVwuMGj8csc0wMbVRQs7PF4ldvG8mbVUq8SSIn4X40OgMS3o1Y4XinMYLv-iGDoptBTCh7Su_PpSHQSLNge-4DKePjEUxskvzwYghJH9gIZK0kTtLFiwgkXQLgeumQcBIk5SOiAi3R6h-3NBeaUM-zXtbSRTogVgG1Dpmb9JIRx-XBNfQedFuv8A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiVwuMGj8csc0wMbVRQs7PF4ldvG8mbVUq8SSIn4X40OgMS3o1Y4XinMYLv-iGDoptBTCh7Su_PpSHQSLNge-4DKePjEUxskvzwYghJH9gIZK0kTtLFiwgkXQLgeumQcBIk5SOiAi3R6h-3NBeaUM-zXtbSRTogVgG1Dpmb9JIRx-XBNfQedFuv8A&quot; title=&quot;2025-0121-163523.png&quot; alt=&quot;2025-0121-163523.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;之前我很常用的3M牙線，最近想要補充庫存的時候，我才發現它因為生產過程造成PFAS而停售了。&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;3M細滑微孔結牙線 /&amp;nbsp;3M Stylish Dispenser&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi-71_kZyPuKN7I-9Od2oQ9xgUzRgJ-1JfFcpkHBXK4qPpTUzCb7QqUY4VdiDK2zhBSJ67jRgHuwDJDKZBb2x71_R1FY_eQF4ycdFs8dFJSrygKvcrhBIAmEt5uoNmrVe4RMBVIFrOgYI8Vq8XoqJ-cdyNFaNrozPzVDxE5AqoGWjLjB2rFpgQ1hA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi-71_kZyPuKN7I-9Od2oQ9xgUzRgJ-1JfFcpkHBXK4qPpTUzCb7QqUY4VdiDK2zhBSJ67jRgHuwDJDKZBb2x71_R1FY_eQF4ycdFs8dFJSrygKvcrhBIAmEt5uoNmrVe4RMBVIFrOgYI8Vq8XoqJ-cdyNFaNrozPzVDxE5AqoGWjLjB2rFpgQ1hA&quot; title=&quot;2025-0121-155303.png&quot; alt=&quot;2025-0121-155303.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://disp.cc/ptt/Gossiping/1ckCCX6y&quot; target=&quot;_blank&quot;&gt;https://disp.cc/ptt/Gossiping/1ckCCX6y&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;之前我用3M的牙線已經用了好一陣子。這是我用過的牙線中，少數不會分叉，而且清理效率也神奇地比其他牙線高的好用牙線。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhCWz3OZheGfvyVMd84yM0n_Dil3N9kOfHN-5jpboUE8jDAD8Re7XsbW8zPWNUKe80FoD5xDo1UwSdYJkjE11EyEv38pn3nR6QFTzKEpmkBeso7vyHZGNP4uZrOfN3XhCE72SAy7Ae3GebtDctQ2pcMHAhrZ654AUCmH8kOAJ3ZlC7qeHBcGjMxnA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhCWz3OZheGfvyVMd84yM0n_Dil3N9kOfHN-5jpboUE8jDAD8Re7XsbW8zPWNUKe80FoD5xDo1UwSdYJkjE11EyEv38pn3nR6QFTzKEpmkBeso7vyHZGNP4uZrOfN3XhCE72SAy7Ae3GebtDctQ2pcMHAhrZ654AUCmH8kOAJ3ZlC7qeHBcGjMxnA&quot; title=&quot;2025-0121-155427.png&quot; alt=&quot;2025-0121-155427.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;但是最近要購買補充庫存品的時候，發現到處都已經停產，再也買不到了。&lt;/p&gt;
&lt;h2&gt;3M停售PFAS產品 /&amp;nbsp;3M to Halt Production of PFAS Products&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjueyszjK9cAVc6hMTerihfcqO1TZVe_nF6PmoGgxL616ueQJiKTAgn_yhlhByNzQDJn6ApUCUWIJ8w8xKPXFJNrMbTeMNL64IsgZIHXC5wVMaAS5Bpm2UFsZSxZ7t-IfvrhWI2wUj9_9UP_VuywbHzh5PfF-Bte0Szys5ByWsqzJ8dsR-_GOPV4Q&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjueyszjK9cAVc6hMTerihfcqO1TZVe_nF6PmoGgxL616ueQJiKTAgn_yhlhByNzQDJn6ApUCUWIJ8w8xKPXFJNrMbTeMNL64IsgZIHXC5wVMaAS5Bpm2UFsZSxZ7t-IfvrhWI2wUj9_9UP_VuywbHzh5PfF-Bte0Szys5ByWsqzJ8dsR-_GOPV4Q&quot; title=&quot;2025-0121-155456.png&quot; alt=&quot;2025-0121-155456.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://disp.cc/ptt/Gossiping/1ckCCX6y&quot; target=&quot;_blank&quot;&gt;https://disp.cc/ptt/Gossiping/1ckCCX6y&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;根據yoshika的說法，3M因為生產PFAS造成環境汙染，因此停售了各種PFAS產品，而這款牙線也因此再也不生產。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjp1JcYctrUd9rGI3biC6lagR5L5cNrSUeCD-QR_AU9mviYjqA42lWkAnIgdPSohfHnBIlO1rbsXd5UBI6LqhOrKJDxsCKHdaSCO-zLBGL--mpZ5TR2Kxe-0oBzhhqsznnHGcgTXOcCzPldvl2UxCso7k0zBfHxL-HBz0D0xQpKL5tURhxXII_mNQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjp1JcYctrUd9rGI3biC6lagR5L5cNrSUeCD-QR_AU9mviYjqA42lWkAnIgdPSohfHnBIlO1rbsXd5UBI6LqhOrKJDxsCKHdaSCO-zLBGL--mpZ5TR2Kxe-0oBzhhqsznnHGcgTXOcCzPldvl2UxCso7k0zBfHxL-HBz0D0xQpKL5tURhxXII_mNQ&quot; title=&quot;https://topic.moenv.gov.tw/pops/cp-104-10935-53d66-2.html&quot; alt=&quot;https://topic.moenv.gov.tw/pops/cp-104-10935-53d66-2.html&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://topic.moenv.gov.tw/pops/cp-104-10935-53d66-2.html&quot; target=&quot;_blank&quot;&gt;https://topic.moenv.gov.tw/pops/cp-104-10935-53d66-2.html&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;PFAS是一種永久性的化學物質，它廣泛應用在各種商品上，但它因為需要很長的時間才能被分解，容易擴散到土壤、水質並影響生物，並不符合現在環保法規的要求。因此現在全球逐漸降低PFAS的使用。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj6fTL0x5IUi5iansuNBd3kffpJTB4jUbYjZ2sQyLx5zALf7UkSgiSW0CiW0vwZllKv8cjMRc_IVelCM972-ct8GPu8EYinZu3PixRBBZVd0qUvw0LlLDWgn6mhcQTB03SIux3O8HfwfKPIuCXj6dgL18PsAfORLYS6RVNPYePFlu1zucuAeny75Q&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj6fTL0x5IUi5iansuNBd3kffpJTB4jUbYjZ2sQyLx5zALf7UkSgiSW0CiW0vwZllKv8cjMRc_IVelCM972-ct8GPu8EYinZu3PixRBBZVd0qUvw0LlLDWgn6mhcQTB03SIux3O8HfwfKPIuCXj6dgL18PsAfORLYS6RVNPYePFlu1zucuAeny75Q&quot; title=&quot;https://youtu.be/9dE2hcUi7cU&quot; alt=&quot;https://youtu.be/9dE2hcUi7cU&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://youtu.be/9dE2hcUi7cU&quot; target=&quot;_blank&quot;&gt;https://youtu.be/9dE2hcUi7cU&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;YouTuber阿淇博士 Dr. Achi在頻道裡常常宣導儘量避免使用PFAS的產品，沒想到我自己使用的牙線竟然也有PFAS，真的是無所不在。&lt;/p&gt;
&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi0V7Q6MXTakfMR7MWXzx1yQxDDFtvu_Kc5_3Omt-ChX5GxZbd3x2sbWpLOpg8T6fwmQ9WjogkW8StXiRALy7ACr6s4GtalhJVTehRGlq3I9ACfQfdlHxIwFXYNOPhBQ1O-GYPLBGg6rHXYyYI8s-g72Kt-uDaOFH5u_1RKQTrCQ9bF4UK3Zwh_Hw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi0V7Q6MXTakfMR7MWXzx1yQxDDFtvu_Kc5_3Omt-ChX5GxZbd3x2sbWpLOpg8T6fwmQ9WjogkW8StXiRALy7ACr6s4GtalhJVTehRGlq3I9ACfQfdlHxIwFXYNOPhBQ1O-GYPLBGg6rHXYyYI8s-g72Kt-uDaOFH5u_1RKQTrCQ9bF4UK3Zwh_Hw&quot; title=&quot;oral-b-floss-cropped.png&quot; alt=&quot;oral-b-floss-cropped.png&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://lennychen.com/%E4%BD%A0%E6%88%96%E4%BD%A0%E5%AD%A9%E5%AD%90%E7%94%A8%E7%9A%84%E7%89%99%E7%B7%9A%E6%98%AF-ptfe-%E5%81%9A%E7%9A%84%E5%97%8E%EF%BC%9F/&quot; target=&quot;_blank&quot;&gt;https://lennychen.com/%E4%BD%A0%E6%88%96%E4%BD%A0%E5%AD%A9%E5%AD%90%E7%94%A8%E7%9A%84%E7%89%99%E7%B7%9A%E6%98%AF-ptfe-%E5%81%9A%E7%9A%84%E5%97%8E%EF%BC%9F/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;稍微調查一下，赫然發現網路上很多人推薦的Oral-B Glide牙線，竟然也可能含有PFAS化學物質。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh8toqCAlOPo3HxLffDx8b9xWTm8Yf0jEcZge5oWFJmtbnvGxoRdoJPWTDQIIjKJWBVYAhuJb7RyhQplyhYBRX9p99hlGaJcSUiNIUD4iRzY5OxQAhJ6-LuZkzlXE-mVZgqOgzeqSPKKInH9FOOZ1obR-BqP5nHsmbzGMjvWlZxjxL3daPjMxuPKg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh8toqCAlOPo3HxLffDx8b9xWTm8Yf0jEcZge5oWFJmtbnvGxoRdoJPWTDQIIjKJWBVYAhuJb7RyhQplyhYBRX9p99hlGaJcSUiNIUD4iRzY5OxQAhJ6-LuZkzlXE-mVZgqOgzeqSPKKInH9FOOZ1obR-BqP5nHsmbzGMjvWlZxjxL3daPjMxuPKg&quot; title=&quot;2025-0121-162258.png&quot; alt=&quot;2025-0121-162258.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.facebook.com/MedPartnerTW/posts/pfbid02jZD5GxPVknuWXdk1XiutFeWiGscEFQHhVmS5uZSB5ivdtcUx1GdpDXwb91XfX7avl?comment_id=1952482621529795&amp;amp;__cft__[0]=AZVfk9riqqnl90rXKtTamvbRaEq-RdGvbGaYpAhU2cM-iibiztGQ3hqowafEEDHsGeF5ZmtWp1sR8lK6PrC28f-dI9-eafZFzeEfjmZKCq-Wngrpd2PeBFX-gtzqyPiMAaJ_ixO5C4lO7CqhtMCz6MzqhSmHozC3L9EKLjkEo3NTyA&amp;amp;__tn__=R]-R&quot; target=&quot;_blank&quot;&gt;https://www.facebook.com/MedPartnerTW/posts/pfbid02jZD5GxPVknuWXdk1XiutFeWiGscEFQHhVmS5uZSB5ivdtcUx1GdpDXwb91XfX7avl?comment_id=1952482621529795&amp;amp;__cft__[0]=AZVfk9riqqnl90rXKtTamvbRaEq-RdGvbGaYpAhU2cM-iibiztGQ3hqowafEEDHsGeF5ZmtWp1sR8lK6PrC28f-dI9-eafZFzeEfjmZKCq-Wngrpd2PeBFX-gtzqyPiMAaJ_ixO5C4lO7CqhtMCz6MzqhSmHozC3L9EKLjkEo3NTyA&amp;amp;__tn__=R]-R&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;不過Oral-B也聲明過它們的牙線並不含PFAS，實際上檢測並沒有測到PFAS。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh8JldwT9IDTKYKOQZ_3Vd0Xqti24DjNBddUnqrueZUVs7JfLqwzMCZPWy82xATw1Zv7Pc3I_--czp4eqfWtVZUOr-Nq2TTEoRH044d1aDHFSIso6RGDo05DvVkUv-pf6qiFltV2RFP4zxnXwIW4Q8GBqYKFHXfQq17anj-p8AZZrCnVkhNS4po1Q&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh8JldwT9IDTKYKOQZ_3Vd0Xqti24DjNBddUnqrueZUVs7JfLqwzMCZPWy82xATw1Zv7Pc3I_--czp4eqfWtVZUOr-Nq2TTEoRH044d1aDHFSIso6RGDo05DvVkUv-pf6qiFltV2RFP4zxnXwIW4Q8GBqYKFHXfQq17anj-p8AZZrCnVkhNS4po1Q&quot; title=&quot;https://renouvo.net/zh/products-safety-quality/what-products-contain-pfas/&quot; alt=&quot;https://renouvo.net/zh/products-safety-quality/what-products-contain-pfas/&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://renouvo.net/zh/products-safety-quality/what-products-contain-pfas/&quot; target=&quot;_blank&quot;&gt;https://renouvo.net/zh/products-safety-quality/what-products-contain-pfas/&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;再深入調查一下，生活中竟然各種東西都包含了PFAS。這些包括個人護理用品、化妝品、電子產品、日常用品、戶外用品、房屋與傢俱、廚房用品、服飾、清潔劑、車輛、醫療用品、食品等等。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhNXo5BnxmzdbEV4nP8VLV1qwLQfTbS2tgC4ZGo3RwVkSMJO6p4sGzoILrq4YMqRpLpVXBrVNUglj7TAZwr_5BUKruzeVDY2cPpmFeI3_oE0MA3W3HMggVz81HZeElL1RLYUvw3_yFRhZQ8SNMd3HXZSWc11pU7aQcEuAsWM66sd9JjM3gn-2bUVg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhNXo5BnxmzdbEV4nP8VLV1qwLQfTbS2tgC4ZGo3RwVkSMJO6p4sGzoILrq4YMqRpLpVXBrVNUglj7TAZwr_5BUKruzeVDY2cPpmFeI3_oE0MA3W3HMggVz81HZeElL1RLYUvw3_yFRhZQ8SNMd3HXZSWc11pU7aQcEuAsWM66sd9JjM3gn-2bUVg&quot; title=&quot;2025-0121-162042.png&quot; alt=&quot;2025-0121-162042.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://shopee.tw/%EF%BC%88%E6%AD%A3%E5%93%81%EF%BC%89-%E7%8F%BE%E8%B2%A8%F0%9F%8C%B8-USDA%E8%AA%8D%E8%AD%89RADIUS%E7%B6%A0%E8%8C%B6%E8%8C%89%E8%8E%89%E7%89%99%E7%B7%9A%E4%B8%8D%E5%90%AB-PFAS-%E8%B5%A4%E8%98%9A%E7%B3%96%E9%86%87-%E8%96%84%E8%8D%B7-%E9%A6%99%E8%8D%89%E8%96%84%E8%8D%B7-%E5%8E%9F%E5%91%B3%E5%90%AB%E8%A0%B6%E7%B5%B2%E9%85%8D%E6%96%B9-i.4080726.11343715308&quot; target=&quot;_blank&quot;&gt;https://shopee.tw/%EF%BC%88%E6%AD%A3%E5%93%81%EF%BC%89-%E7%8F%BE%E8%B2%A8%F0%9F%8C%B8-USDA%E8%AA%8D%E8%AD%89RADIUS%E7%B6%A0%E8%8C%B6%E8%8C%89%E8%8E%89%E7%89%99%E7%B7%9A%E4%B8%8D%E5%90%AB-PFAS-%E8%B5%A4%E8%98%9A%E7%B3%96%E9%86%87-%E8%96%84%E8%8D%B7-%E9%A6%99%E8%8D%89%E8%96%84%E8%8D%B7-%E5%8E%9F%E5%91%B3%E5%90%AB%E8%A0%B6%E7%B5%B2%E9%85%8D%E6%96%B9-i.4080726.11343715308&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;網路上可以找得到不含PFAS的牙線，但是那個價格可就真的不便宜了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;小結 / In Closing&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg4Z5OdUgzOvZgHnNFzVW1ZdOHGKxjpiYLQXUb3XEBwqw3Wv5rpubIkQRM2UD0mJYzmB3URTIR9VOVrYi3_IOuAae0NMCD7_dWMr0YhPqkgkOJwhBekOo235YO5p_SjoTwDG6hXs2JcFZkWezyEF19sdT4q7KzdcJ06MRksWTlNZZjJtCR6YSVUtg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg4Z5OdUgzOvZgHnNFzVW1ZdOHGKxjpiYLQXUb3XEBwqw3Wv5rpubIkQRM2UD0mJYzmB3URTIR9VOVrYi3_IOuAae0NMCD7_dWMr0YhPqkgkOJwhBekOo235YO5p_SjoTwDG6hXs2JcFZkWezyEF19sdT4q7KzdcJ06MRksWTlNZZjJtCR6YSVUtg&quot; title=&quot;http://web.tccf.org.tw/lib/addon.php?act=post&amp;amp;id=4418&quot; alt=&quot;http://web.tccf.org.tw/lib/addon.php?act=post&amp;amp;id=4418&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://web.tccf.org.tw/lib/addon.php?act=post&amp;amp;id=4418&quot; target=&quot;_blank&quot;&gt;http://web.tccf.org.tw/lib/addon.php?act=post&amp;amp;id=4418&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;目前看下來，3M停售了含有PFAS的牙線，而Oral-B等幾家廠商宣稱自己的牙線不含PFAS。到底要抵制PFAS到什麼程度，似乎挺令人糾結的。但整體看來，牙線的PFAS似乎沒有傷害人體的直接證據，牙醫還是會建議大家使用牙線，然後盡可能挑選不含PFAS的牙線即可。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/5622889154914903339/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/04/talk-m-dental-floss-discontinued.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/5622889154914903339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/5622889154914903339'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/04/talk-m-dental-floss-discontinued.html' title='雜談：3M牙線停售了 / TALK: 3M Dental Floss Discontinued'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiVwuMGj8csc0wMbVRQs7PF4ldvG8mbVUq8SSIn4X40OgMS3o1Y4XinMYLv-iGDoptBTCh7Su_PpSHQSLNge-4DKePjEUxskvzwYghJH9gIZK0kTtLFiwgkXQLgeumQcBIk5SOiAi3R6h-3NBeaUM-zXtbSRTogVgG1Dpmb9JIRx-XBNfQedFuv8A=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-294630486148593140</id><published>2025-06-30T12:00:00.008+08:00</published><updated>2025-06-30T12:00:00.230+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Docker"/><category scheme="http://www.blogger.com/atom/ns#" term="Nextcloud"/><title type='text'>Nextcloud客製化網頁：插入外部JavaScript腳本 / Nextcloud Customized Webpage: Inserting External JavaScript Scripts</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgnKoOK2VklM_ULQhAoy9UpN3IvNOoBcrO2iYwByTvCmXXO8EF7-aem_Uya46t7qafiqRXpESKaMfGr735NwP6WYk4dLfrkB7aiMdjyKjHoxhJP9pxXXbiaTTWKy2NEDHsRMIv7wN1e2WCgDlYaEpCWE2Cbv9r75OUBAhC0RSRRVaLDEceyNWjfeA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgnKoOK2VklM_ULQhAoy9UpN3IvNOoBcrO2iYwByTvCmXXO8EF7-aem_Uya46t7qafiqRXpESKaMfGr735NwP6WYk4dLfrkB7aiMdjyKjHoxhJP9pxXXbiaTTWKy2NEDHsRMIv7wN1e2WCgDlYaEpCWE2Cbv9r75OUBAhC0RSRRVaLDEceyNWjfeA&quot; title=&quot;2025-0121-132355.png&quot; alt=&quot;2025-0121-132355.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;要大幅度修改Nextcloud的網頁的話，&lt;a href=&quot;https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/theming.html&quot; target=&quot;_blank&quot;&gt;建立主題(theme)&lt;/a&gt;可能是最常見的建議。但如果我們是要在Nextcloud的網頁裡面插入外部JavaScript腳本的話，這手續可就麻煩得多了。讓我們應用&lt;a href=&quot;/2025/06/enabling-or-disabling-apps-by-default-in-a-dockerized-nextcloud-instance.html&quot; target=&quot;_blank&quot;&gt;調整Docker的Nextcloud&lt;/a&gt;的技巧，在Nextcloud安裝完後，自動佈署修改後的程式碼吧。&lt;/p&gt;
&lt;p&gt;If you want to drastically modify the Nextcloud web interface, &lt;a href=&quot;https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/theming.html&quot; target=&quot;_blank&quot;&gt;creating a theme&lt;/a&gt; is probably the most common suggestion. However, if you want to insert external JavaScript scripts into the Nextcloud web pages, the procedure becomes much more complicated. Let&#39;s apply &lt;a href=&quot;/2025/06/enabling-or-disabling-apps-by-default-in-a-dockerized-nextcloud-instance.html&quot; target=&quot;_blank&quot;&gt;the techniques of customizing a Dockerized Nextcloud instance&lt;/a&gt; to automatically deploy modified code after Nextcloud is installed.&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;Nextcloud程式碼的位置 / Location of Nextcloud Code&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg5zQKDP5bXaL2wXhI7Vhqh1nOD4L-IX93H_cnXya-YNATOEa5F-GRvL1TgYR9A02VYNjpolzwOTdONfqCgtRdCtLrvsmJLxJTLz6d3eU7Y-upfzAqokURGjnW00rF2wzJqIeoWpyraj8l9eIvxrVhvgWf-d3EbxQUNlH0rQgX8nxHo2VtaRlPHTw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg5zQKDP5bXaL2wXhI7Vhqh1nOD4L-IX93H_cnXya-YNATOEa5F-GRvL1TgYR9A02VYNjpolzwOTdONfqCgtRdCtLrvsmJLxJTLz6d3eU7Y-upfzAqokURGjnW00rF2wzJqIeoWpyraj8l9eIvxrVhvgWf-d3EbxQUNlH0rQgX8nxHo2VtaRlPHTw&quot; title=&quot;https://hub.docker.com/_/nextcloud/&quot; alt=&quot;https://hub.docker.com/_/nextcloud/&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://hub.docker.com/_/nextcloud/&quot; target=&quot;_blank&quot;&gt;https://hub.docker.com/_/nextcloud/&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;在Nextcloud的Docker版本裡面，Nextcloud的程式碼被擺在「 /var/www/html&amp;nbsp; 」裡面。而影響Nextcloud顯示外觀的程式碼則擺在更深一層的「&amp;nbsp;/var/www/html/core/templates/ 」裡面。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhHEXBLb7SRePbUwN_Q-xFJKUvYye5r0Ud90M-GQ-ATISoCdcMQSwiivpHm1R9OVKIzi_6RBU36E_01ETOHJtNZ5z5OlnaoXitLbPFjISS8DA3ifrqobLZE3ahx_VmX8mxWWQva6v3TQTIJPKgphv2ijeUyKlciM9Y_fH3H-jsQGjklqfRnf_0_Hg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhHEXBLb7SRePbUwN_Q-xFJKUvYye5r0Ud90M-GQ-ATISoCdcMQSwiivpHm1R9OVKIzi_6RBU36E_01ETOHJtNZ5z5OlnaoXitLbPFjISS8DA3ifrqobLZE3ahx_VmX8mxWWQva6v3TQTIJPKgphv2ijeUyKlciM9Y_fH3H-jsQGjklqfRnf_0_Hg&quot; title=&quot;https://www.schillmania.com/projects/snowstorm/&quot; alt=&quot;https://www.schillmania.com/projects/snowstorm/&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.schillmania.com/projects/snowstorm/&quot; target=&quot;_blank&quot;&gt;https://www.schillmania.com/projects/snowstorm/&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;我們要客製化什麼功能呢？這邊舉的例子是scottschiller發佈的「&lt;a href=&quot;https://www.schillmania.com/projects/snowstorm/&quot; target=&quot;_blank&quot;&gt;Snowstorm&lt;/a&gt;」。它的程式碼可以讓網頁開始下雪。一般的做法是在網頁裡面插入以下程式碼即可：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&amp;lt;script&amp;nbsp;src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Snowstorm/20131208/snowstorm-min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是要在Docker的Nextcloud裡面就沒有這麼簡單了。首先，在Nextcloud安裝之前，其實「/var/www/html」並沒有任何檔案跟資料夾。如果我們用Docker的volume直接掛載，這會與Nextcloud內部的權限相互衝突，安裝會無法順利進行。解決方法是必須在安裝之後再複製修改後的腳本。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj3IrmIa1mhO4chwRQRehKw4j-adhkoyhSiZYmgN0M68sRNNkxHg9nFs3P8NJ706Qrz2XB_zFHNL7pH9dFszRZK77oq8PLBh826SLxTyleaLXGkGNS5HGad4VfcVi1MFf2Sd4m7o94qfPlNBYbSicYZwLy2iaB8bEKyDb2t8j2ciNdoamwMy54mZA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj3IrmIa1mhO4chwRQRehKw4j-adhkoyhSiZYmgN0M68sRNNkxHg9nFs3P8NJ706Qrz2XB_zFHNL7pH9dFszRZK77oq8PLBh826SLxTyleaLXGkGNS5HGad4VfcVi1MFf2Sd4m7o94qfPlNBYbSicYZwLy2iaB8bEKyDb2t8j2ciNdoamwMy54mZA&quot; title=&quot;2025-0121-120918.png&quot; alt=&quot;2025-0121-120918.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;另一個問題是Nextcloud在前端網頁執行的&amp;lt;script&amp;gt;需要加上「nonce」屬性。在 HTML 和 JavaScript 中，nonce (全稱為「number used once」，即「一次性數字」)是一種 安全機制，主要用於 &lt;b&gt;內容安全政策 (CSP，Content Security Policy)&lt;/b&gt;，以防止 跨站腳本攻擊（XSS，Cross-Site Scripting）。為了要讓，&amp;lt;script&amp;gt;能在Nextcloud裡面執行，我們需要把原始的&amp;lt;script&amp;gt;配合Nextcloud的寫法，修改成以下的樣子：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;php&quot;&gt;&amp;lt;script&lt;br&gt;&amp;nbsp;&amp;nbsp;nonce=&quot;&lt;font color=&quot;#ff0000&quot;&gt;&amp;lt;?php&amp;nbsp;p($_[&#39;cspNonce&#39;]);&amp;nbsp;?&amp;gt;&lt;/font&gt;&quot;&lt;br&gt;&amp;nbsp;&amp;nbsp;src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Snowstorm/20131208/snowstorm-min.js&quot;&lt;br&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj5IlrpKASFQIxHlmxUupgU9-mCSmiSsoAoJ6WmplaxAv4aHyx4u_EjXOYtL31GxHm5x9B_yNpUwEHZdhy0oO89p0Fs3p06ufCIJS36MTm8OmqPb_Cn4IpdoINcVkjjyrPsZnZeAZAqn0jOKfUeIPei7IC_Xzg0OzrIVSFapurEKmTUSnmFHU-sOw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj5IlrpKASFQIxHlmxUupgU9-mCSmiSsoAoJ6WmplaxAv4aHyx4u_EjXOYtL31GxHm5x9B_yNpUwEHZdhy0oO89p0Fs3p06ufCIJS36MTm8OmqPb_Cn4IpdoINcVkjjyrPsZnZeAZAqn0jOKfUeIPei7IC_Xzg0OzrIVSFapurEKmTUSnmFHU-sOw&quot; title=&quot;2025-0121-124109.png&quot; alt=&quot;2025-0121-124109.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;其中「&lt;font color=&quot;#ff0000&quot;&gt;&amp;lt;?php p($_[&#39;cspNonce&#39;]); ?&amp;gt;&lt;/font&gt;」便是由Nextcloud自動產生的nonce。每次讀取網頁都會不一樣，但只有擁有同樣nonce的JavaScript腳本才能順利執行。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;在Docker版本Nextcloud裡面客製化程式碼 / Customizing Code Within a Dockerized Nextcloud Instance&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgpUtV2Gua_oMxAwV5qyHInB_Oz6dkbmMDXFJRvhG_v-ucu22DXIRD3L5c1kwmvH9H1JCnr9NAf5f8uPSL2am1-LZXMzifS-MOiJuJx-Q70NdgPSFJPDi-C3YlyGTdpgWPUAukzY5fXiVMCCs-qLHvidwYAhlpSxJHbBB3rcURkyso92mwInTdYrA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgpUtV2Gua_oMxAwV5qyHInB_Oz6dkbmMDXFJRvhG_v-ucu22DXIRD3L5c1kwmvH9H1JCnr9NAf5f8uPSL2am1-LZXMzifS-MOiJuJx-Q70NdgPSFJPDi-C3YlyGTdpgWPUAukzY5fXiVMCCs-qLHvidwYAhlpSxJHbBB3rcURkyso92mwInTdYrA&quot; title=&quot;https://github.com/pulipulichen/docker-Nextcloud-demo-2025&quot; alt=&quot;https://github.com/pulipulichen/docker-Nextcloud-demo-2025&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/pulipulichen/docker-Nextcloud-demo-2025&quot; target=&quot;_blank&quot;&gt;https://github.com/pulipulichen/docker-Nextcloud-demo-2025&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;在瞭解問題之後，我們便能開始嘗試修改Docker版本Nextcloud的程式碼。為了方便說明，我將程式碼擺放到「docker-Nextcloud-demo-2025」GitHub保存庫，供大家參考。&lt;/p&gt;
&lt;p&gt;關鍵的修改點有三個：&lt;/p&gt;
&lt;h3&gt;1. 準備要修改的程式碼 /&amp;nbsp;Preparing to Modify the Code&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjGoaWf0X-v9fb0hiLT4r7_llE3T4At_-_y_kDFOfKb_aeMyo8AP6BMbJ8I-62YklAxlj2RoJYZItnR8gqlxHB9PA7L2qEa3cEu-jRF0EnGya88kbvmUyKhtGeAv88hg2xfWy8aD6O4eqDZ-Kn63g0gqvsiCOcn0HUpXisry_9dUhicN-ql_C9qzg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjGoaWf0X-v9fb0hiLT4r7_llE3T4At_-_y_kDFOfKb_aeMyo8AP6BMbJ8I-62YklAxlj2RoJYZItnR8gqlxHB9PA7L2qEa3cEu-jRF0EnGya88kbvmUyKhtGeAv88hg2xfWy8aD6O4eqDZ-Kn63g0gqvsiCOcn0HUpXisry_9dUhicN-ql_C9qzg&quot; title=&quot;2025-0121-122816.png&quot; alt=&quot;2025-0121-122816.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果我們要讓客製化的JavaScript在登入之後才會執行，那麼我們要修改的是「&amp;nbsp;/var/www/html/core/templates/layout.user.php」。layout.user.php的原始碼可以&lt;a href=&quot;https://github.com/nextcloud/server/blob/master/core/templates/layout.user.php&quot; target=&quot;_blank&quot;&gt;在nextcloud/server的GitHub保存庫&lt;/a&gt;找到。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgiSpreR4_RG6Di8nXkEhqz6T10oFCkZdF7xGedxostHcNg0T-ErZtfoSwxNSdWroRt2byLzJ2dQCICC3e1jQpkfvKIJKEkaKhE1x8L_OCCC2eUsCUwMftxrCLpg3SPfKs0aYBPLLBIen0B0YPoR3ac7Y03MGYXFq6xGSlU3rrw9vYgSGgki8qesg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgiSpreR4_RG6Di8nXkEhqz6T10oFCkZdF7xGedxostHcNg0T-ErZtfoSwxNSdWroRt2byLzJ2dQCICC3e1jQpkfvKIJKEkaKhE1x8L_OCCC2eUsCUwMftxrCLpg3SPfKs0aYBPLLBIen0B0YPoR3ac7Y03MGYXFq6xGSlU3rrw9vYgSGgki8qesg&quot; title=&quot;2025-0121-123150.png&quot; alt=&quot;2025-0121-123150.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/pulipulichen/docker-Nextcloud-demo-2025/blob/d7005e4844bd48eae56bfa99178c6ce74f234e69/html/core/templates/layout.user.php#L96&quot; target=&quot;_blank&quot;&gt;https://github.com/pulipulichen/docker-Nextcloud-demo-2025/blob/d7005e4844bd48eae56bfa99178c6ce74f234e69/html/core/templates/layout.user.php#L96&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;我們要作的事情是在layout.user.php加上需要客製化的程式碼。我把它加在&amp;lt;/body&amp;gt;前面。完整程式碼可以看我在GitHub上的&lt;a href=&quot;https://github.com/pulipulichen/docker-Nextcloud-demo-2025/blob/d7005e4844bd48eae56bfa99178c6ce74f234e69/html/core/templates/layout.user.php#L96&quot; target=&quot;_blank&quot;&gt;layout.user.php&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;2. 在docker-compose.yml掛載客製化程式碼 / Mounting Custom Code in Docker-Compose.yml&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhweUR63QJddC1tZ_z4wwKYOyZhcIKNHQpVEkf0kaT1ETy95T3PnF7x26Wt8QE6sHfNiH3YpsL-PhG8Bh4-Mh339kBS5_xeEPmhZeFgbqj4gqdble7vblbjxOP8Hc--oQD3hj-AwHMfps9yOL42HVdNNkI-BgFlY276u8tHFeuI-99gZAj7GstHJQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhweUR63QJddC1tZ_z4wwKYOyZhcIKNHQpVEkf0kaT1ETy95T3PnF7x26Wt8QE6sHfNiH3YpsL-PhG8Bh4-Mh339kBS5_xeEPmhZeFgbqj4gqdble7vblbjxOP8Hc--oQD3hj-AwHMfps9yOL42HVdNNkI-BgFlY276u8tHFeuI-99gZAj7GstHJQ&quot; title=&quot;2025-0121-123354.png&quot; alt=&quot;2025-0121-123354.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接下來我們要在docker-compose.yml，把客製化程式碼的資料夾用volumnes掛載。我把客製化程式碼放在「html」資料夾底下，而Docker裡面我則是掛載到「/html」路徑。完整配置可以看我在GitHub上的&lt;a href=&quot;https://github.com/pulipulichen/docker-Nextcloud-demo-2025/blob/d7005e4844bd48eae56bfa99178c6ce74f234e69/docker-compose.yml#L14&quot; target=&quot;_blank&quot;&gt;docker-compose.yml&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;3. Nextcloud安裝完成後複製客製化程式碼 /&amp;nbsp;Copy Customized Code After Installing Nextcloud&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgSOmFpLfrfWYpGltM1Zz2S7JHaVtiFR9lwVclif_C4KHUjhrdxPR2l0kX0XpZf1SZBt4W-oMz5RZwicO_LauHl8vBtSRrPoQCliJE2eEIxiDmPX6JO8FbrQ9UeakShEnzP3u9-W_k1BbLx0dr6yuUqKtUvdDKwJkgsgfgoCYB4BmEpbhTtX94v-A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgSOmFpLfrfWYpGltM1Zz2S7JHaVtiFR9lwVclif_C4KHUjhrdxPR2l0kX0XpZf1SZBt4W-oMz5RZwicO_LauHl8vBtSRrPoQCliJE2eEIxiDmPX6JO8FbrQ9UeakShEnzP3u9-W_k1BbLx0dr6yuUqKtUvdDKwJkgsgfgoCYB4BmEpbhTtX94v-A&quot; title=&quot;2025-0121-123834.png&quot; alt=&quot;2025-0121-123834.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接著我們使用「&lt;a href=&quot;/2025/06/enabling-or-disabling-apps-by-default-in-a-dockerized-nextcloud-instance.html&quot; target=&quot;_blank&quot;&gt;讓Docker架設的Nextcloud預設關閉或開啟應用程式&lt;/a&gt;」這篇的技巧，在「post-installation」裡面加上「copy_html.sh」，讓它出現在Nextcloud容器裡面的「/docker-entrypoint-hooks.d/post-installation」資料夾底下，這樣Nextcloud在初次安裝完成後便會執行裡面的程式碼。&lt;/p&gt;
&lt;p&gt;GitHub保存庫裡面可以看到&lt;a href=&quot;https://github.com/pulipulichen/docker-Nextcloud-demo-2025/blob/main/post-installation/copy_html.sh&quot; target=&quot;_blank&quot;&gt;copy_html.sh&lt;/a&gt;的完整內容，但其實主要程式碼只有兩行：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;#!/bin/bash&lt;br&gt;&lt;br&gt;cp&amp;nbsp;-rf&amp;nbsp;/html/*&amp;nbsp;/var/www/html/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;這個意思是在Nextcloud安裝完成後，將掛載到「/html」的客製化程式碼，全部複製到「/var/www/html/」裡面，並且直接覆蓋。&lt;/p&gt;
&lt;p&gt;這樣我們就設定完成了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;成果 / Outcomes&lt;/h2&gt;
&lt;p&gt;如果你之前已經安裝過Nextcloud，此時我們要先移除掉Docker建立的持久性檔案集 (volume)，指令如下：&lt;br&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;docker&amp;nbsp;compose&amp;nbsp;down&amp;nbsp;-v&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接著再用啟動Nextcloud：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;docker&amp;nbsp;compose&amp;nbsp;up&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj9vGYeTaquAXzTNjqZskY2SfnnW53o2uPnYzaisf204o4lPWCTnSt7yo07WYztMuI0EWMF0pp5cNo0vAFPIuUhSFE0H_7a1d1mVkBPKisZFMKvTXdec5XzkTzNlvto6FI7mJEHLaocNsrYQ7UQiWGQDJvUNQSiHZe7JlJh9iKO3_kv1QowVZDYTg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj9vGYeTaquAXzTNjqZskY2SfnnW53o2uPnYzaisf204o4lPWCTnSt7yo07WYztMuI0EWMF0pp5cNo0vAFPIuUhSFE0H_7a1d1mVkBPKisZFMKvTXdec5XzkTzNlvto6FI7mJEHLaocNsrYQ7UQiWGQDJvUNQSiHZe7JlJh9iKO3_kv1QowVZDYTg&quot; title=&quot;2025-0121-124742.png&quot; alt=&quot;2025-0121-124742.png&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;登入Nextcloud。登入的帳號密碼已經在&lt;a href=&quot;https://github.com/pulipulichen/docker-Nextcloud-demo-2025/blob/6d8455ad600d2b602deace0bb918d52d79eecc38/docker-compose.yml#L21&quot; target=&quot;_blank&quot;&gt;docker-compose.yml&lt;/a&gt;設定了，我這裡的預設是「admin」跟「password」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj8ywc0dpIzGwKWrWaBLAUQYnMUTtHnxmNNw5n8SUt7imG-UkUYlahRK17NXe9kiMp5_klAvtQ9h9SYTwLjqnNTDdjQez8VvtJrTLQXB7-iYyXRXSPkPlNBR_8S4RrLj-2P2lOvjk5TdOYROc2cyGo67h1Z4cyPJB6Fn-YVHjciOjDqZhpvXhQ0zg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj8ywc0dpIzGwKWrWaBLAUQYnMUTtHnxmNNw5n8SUt7imG-UkUYlahRK17NXe9kiMp5_klAvtQ9h9SYTwLjqnNTDdjQez8VvtJrTLQXB7-iYyXRXSPkPlNBR_8S4RrLj-2P2lOvjk5TdOYROc2cyGo67h1Z4cyPJB6Fn-YVHjciOjDqZhpvXhQ0zg&quot; title=&quot;2025-0121-124504.png&quot; alt=&quot;2025-0121-124504.png&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;登入之後，你可以注意到Nextcloud的介面有了雪花紛飛的特效。這樣就完成囉。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;結語 / Conclusion&lt;/h2&gt;
&lt;p&gt;由於Docker的設計方式，使得我們不容易修改安裝後的Nextcloud。現在借住鉤子資料夾post-installation的設計，我們得以在Nextcloud安裝完後還能修改程式碼。這篇也連帶解決了CSP安全性問題中較為常見的nonce機制。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjcActykQosw7IMXyf3HoNA6zeGOxSmSnrTf8B1Rgp3OlASNfMoVKWis9gOFv2A7RBo483WRI8DpQJXxEa0q9ZAoQO-yrO-s1cczhPTOGsUX4_PvV_n78elslLprF7C0utiWvFRyGN_PSeasI0jCUaXPUDM4f3HsN2f2lY6kKRGKjtGEGrjQn6Jeg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjcActykQosw7IMXyf3HoNA6zeGOxSmSnrTf8B1Rgp3OlASNfMoVKWis9gOFv2A7RBo483WRI8DpQJXxEa0q9ZAoQO-yrO-s1cczhPTOGsUX4_PvV_n78elslLprF7C0utiWvFRyGN_PSeasI0jCUaXPUDM4f3HsN2f2lY6kKRGKjtGEGrjQn6Jeg&quot; title=&quot;2025-0121-125558.png&quot; alt=&quot;2025-0121-125558.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果你在Nextcloud安裝完成後還想要修改程式碼的話，那要如何處理呢？很簡單，鉤子資料夾還有「/docker-entrypoint-hooks.d/before-starting」這項設定，可以讓你在啟動Nextcloud之前執行。那我們就可以這篇的做法，在Nextcloud執行之前複製客製化程式碼即可。&lt;/p&gt;
&lt;p&gt;有人可能會問，「在Nextcloud容器裡面複製到 /var/www/html 的檔案，會保存在主機的那個位置呢？」我們的設定是保存在「nextcloud:」volume裡面，而這是由Docker管理的內部保存位置。Linux裡是保存在「/var/lib/docker/」底下，但它並不是由我們在容器裡面看到的形式保存，而是用特殊的雜湊資料結構陳列。關於Docker Volume的概念可以看看flynncanfly所寫的「&lt;a href=&quot;https://ithelp.ithome.com.tw/m/articles/10241922&quot; target=&quot;_blank&quot;&gt;Day-7 解析 Docker Volume&lt;/a&gt;」。&lt;/p&gt;
&lt;p&gt;Docker的概念跟傳統程式教學那種修改程式碼的做法並不相同，但越熟悉Docker，就會越感嘆這種自動化微服務設計的精妙。一起學習吧。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;這篇關於在Docker版本Nextcloud加入客製化程式碼的介紹就到此為止了。文章最後要來問大家的是，要客製化Nextcloud的話，你會怎麽作呢？&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;1. 改PHP我最行，學校都教PHP。&lt;/li&gt;
  &lt;li&gt;2. Nextcloud不是可以&lt;a href=&quot;https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/theming.html&quot; target=&quot;_blank&quot;&gt;改css跟logo&lt;/a&gt;之類的外觀嗎？&lt;/li&gt;
  &lt;li&gt;3. 還是老老實實地開發&lt;a href=&quot;https://nextcloud.com/developer/&quot; target=&quot;_blank&quot;&gt;Nextcloud的應用程式&lt;/a&gt;吧。&lt;/li&gt;
  &lt;li&gt;4. &lt;a href=&quot;https://hub.docker.com/_/nextcloud/&quot; target=&quot;_blank&quot;&gt;Docker的環境變數&lt;/a&gt;就有很多可以調整的設定了吧？需要這麼複雜嗎？&lt;/li&gt;
  &lt;li&gt;5. 其它：歡迎在下面留言，分享你的看法吧！&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/294630486148593140/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/06/nextcloud-customized-webpage-inserting-external-javascript-scripts.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/294630486148593140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/294630486148593140'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/06/nextcloud-customized-webpage-inserting-external-javascript-scripts.html' title='Nextcloud客製化網頁：插入外部JavaScript腳本 / Nextcloud Customized Webpage: Inserting External JavaScript Scripts'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgnKoOK2VklM_ULQhAoy9UpN3IvNOoBcrO2iYwByTvCmXXO8EF7-aem_Uya46t7qafiqRXpESKaMfGr735NwP6WYk4dLfrkB7aiMdjyKjHoxhJP9pxXXbiaTTWKy2NEDHsRMIv7wN1e2WCgDlYaEpCWE2Cbv9r75OUBAhC0RSRRVaLDEceyNWjfeA=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-2611085950423661303</id><published>2025-06-27T12:00:00.007+08:00</published><updated>2025-06-27T12:00:00.131+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blog"/><category scheme="http://www.blogger.com/atom/ns#" term="Talk"/><title type='text'>雜談：修正「布丁布丁吃什麼？」部分功能 / TALK: “Pulipuli’s Blog” Feature Improvements</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgg_K4cepE976tfFydstSJ2DMaEXhs8SAXGkJbJuXhTdoxkXWpvbDhbaaBcFSyhcfnvLgei1hThYHuEpXVTgltyCA6CJcV7OmYJ839nTEgLmzx_bS3sK-wavm5R72iK7m-9jPqoWNwVcCCxK-lekzgp1qUhhds6DvNmiBZsS5yJAXazvhgqRm7ToQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgg_K4cepE976tfFydstSJ2DMaEXhs8SAXGkJbJuXhTdoxkXWpvbDhbaaBcFSyhcfnvLgei1hThYHuEpXVTgltyCA6CJcV7OmYJ839nTEgLmzx_bS3sK-wavm5R72iK7m-9jPqoWNwVcCCxK-lekzgp1qUhhds6DvNmiBZsS5yJAXazvhgqRm7ToQ&quot; title=&quot;2025-0219-063301.png&quot; alt=&quot;2025-0219-063301.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;每隔一段時間就把累積的問題逐步修正，這次要來修正的是下載跟目錄的問題。&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;下載文章 / Article Download&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgwcRySpl0UStI8oCsX36_ZfF3sTw9md_s8M1nL_3Yry-GZYYzvLnHqD-hEy8NPu74Z63zCvaHcq1qt35qy8UE6IvhhR_nPCN8QwXopg7SENgrZMz3CKkHyc-U1rjW_c0logzPduocv1ELNdfy2zeDTLjpY07WFigU2GFqGzrNDCOe8J-aSVTn8Eg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgwcRySpl0UStI8oCsX36_ZfF3sTw9md_s8M1nL_3Yry-GZYYzvLnHqD-hEy8NPu74Z63zCvaHcq1qt35qy8UE6IvhhR_nPCN8QwXopg7SENgrZMz3CKkHyc-U1rjW_c0logzPduocv1ELNdfy2zeDTLjpY07WFigU2GFqGzrNDCOe8J-aSVTn8Eg&quot; title=&quot;2025-0219-055446.png&quot; alt=&quot;2025-0219-055446.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果登入帳號是「布丁布丁吃什麼？」的管理者的話，文章的開頭會顯示相關的管理功能，包括編輯、複製HTML程式碼、下載、文章內容的統計功能等等。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgK7T50CbkD4M1GMOd15TNnFue92gtEWfo1GhOuQd-T8T3TCMVHXaKpP16AE--MqLprgA9ODiIspIHKphUtpVl9iwwAzu4Q3V6Fks0DLUtF3OYAlUwUuLCyfan7xuowNL50dEclyABQjrvWCYGyv_u4BOuF2ZwsBsaO0sUENN5PmgpxoSzLb8tCsA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgK7T50CbkD4M1GMOd15TNnFue92gtEWfo1GhOuQd-T8T3TCMVHXaKpP16AE--MqLprgA9ODiIspIHKphUtpVl9iwwAzu4Q3V6Fks0DLUtF3OYAlUwUuLCyfan7xuowNL50dEclyABQjrvWCYGyv_u4BOuF2ZwsBsaO0sUENN5PmgpxoSzLb8tCsA&quot; title=&quot;2025-0219-055603.png&quot; alt=&quot;2025-0219-055603.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;其中下載功能是讓整份文章變成單純的HTML跟完整圖片所壓縮而成的壓縮檔案。壓縮檔裡面的HTML檔案只保留了部落格文章的內文跟圖片連結，不包含「布丁布丁吃什麼？」的其他元素。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhuXOfU-Vq-zx-_k3QnGmjCa3yCF1P3FLH0a-F2-hb0LsqhonKq1Gjg8t7PX3R7cU9JI4HUq5STOu9c5hEarLIDF16ajnhvwRmTigA41SImTtDGj-KNNyq9dA7UAA6eooWskp8slq_d-ftNrJZCgInof44UMLDTkCfhI7vzU08HabdZkg8nB4ZoQA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhuXOfU-Vq-zx-_k3QnGmjCa3yCF1P3FLH0a-F2-hb0LsqhonKq1Gjg8t7PX3R7cU9JI4HUq5STOu9c5hEarLIDF16ajnhvwRmTigA41SImTtDGj-KNNyq9dA7UAA6eooWskp8slq_d-ftNrJZCgInof44UMLDTkCfhI7vzU08HabdZkg8nB4ZoQA&quot; title=&quot;2025-0219-060123.png&quot; alt=&quot;2025-0219-060123.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這不僅僅只是用於備份文章時可以節省一些空間，更重要的是，我可以將壓縮檔匯入到Blogger Editor裡面，方便編輯文章的內容。&lt;/p&gt;
&lt;p&gt;原本功能的問題是備份文章的時候圖片檔案名稱過長、圖片檔案未加上圖片相關的副檔名、備份抓取的文章內容包含了不相干的元素等等，現在總算修正這些問題了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;文章目次 / Table of Contents&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiCDkB2de1pvS1HYfA1wBngNJYVtsdzRihBw5Z-TWx-o52AOJd2zN-6Ru_j5bpi-BjNQ4xmDKarU6VppQOSIg3ioy0vvvhw07BaYZF1YY_0T8e7ECGK0fnk6LkMo958UpxQCa9e_4K35HaJcA8aGunTIsYQge4MSdHVPXNeVpe6yj5dXC8Hw41ZVA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiCDkB2de1pvS1HYfA1wBngNJYVtsdzRihBw5Z-TWx-o52AOJd2zN-6Ru_j5bpi-BjNQ4xmDKarU6VppQOSIg3ioy0vvvhw07BaYZF1YY_0T8e7ECGK0fnk6LkMo958UpxQCa9e_4K35HaJcA8aGunTIsYQge4MSdHVPXNeVpe6yj5dXC8Hw41ZVA&quot; title=&quot;2025-0219-060519.png&quot; alt=&quot;2025-0219-060519.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;「布丁布丁吃什麼？」文章的目次是由程式碼分析文章內容動態產生，但這個做法造成了許多問題。之前就有講過&lt;a href=&quot;/2024/10/finally-fixed-the-table-of-contents-function.html&quot; target=&quot;_blank&quot;&gt;目次的錨點造成CSS文章排版錯誤&lt;/a&gt;，這次的問題是文章目次快取帶來的錯誤。&lt;/p&gt;
&lt;p&gt;為了避免每次都要重新產生目次，瀏覽器只要產生過該文章的目次後，就會把它保存到localStorage作為快取。下次開啟文章的時候就會直接用快取的程式碼來顯示目次。&lt;/p&gt;
&lt;p&gt;但如果該文章原本就沒有目次的話，這個做法會造成文章排版的錯誤。這個問題會發生在有些沒有標題的文章裡面，並造成文章的水平線消失。&lt;/p&gt;
&lt;p&gt;現在已經修正這個問題了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;小結 / In Closing&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgtZx1TXAdXbPb61uzMdGit3vjJaWNRh15TsSr2muZ0zBk74z9mYD609U_76PvGTTSiM3RFx-j1bVG6nE3SvM8EOLPT1XLGpgXmA4sVIyaOLbJWGhJtjJuTZF3Gmzx-Oqbb0lOOOG0HnQYFxMehZXrcKOdVKGoCxaIdBUHN_Gul7FCFbOELvd8iPQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgtZx1TXAdXbPb61uzMdGit3vjJaWNRh15TsSr2muZ0zBk74z9mYD609U_76PvGTTSiM3RFx-j1bVG6nE3SvM8EOLPT1XLGpgXmA4sVIyaOLbJWGhJtjJuTZF3Gmzx-Oqbb0lOOOG0HnQYFxMehZXrcKOdVKGoCxaIdBUHN_Gul7FCFbOELvd8iPQ&quot; title=&quot;2025-0219-062736.png&quot; alt=&quot;2025-0219-062736.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;是說現在Google搜尋引擎的排序好像逐漸把社群媒體的重要性提高了。在Google上搜尋我自己的文章時，大多時候出現的都是發佈在&lt;a href=&quot;https://www.facebook.com/blog.pulipuli.info&quot; target=&quot;_blank&quot;&gt;Facebook&lt;/a&gt;或&lt;a href=&quot;https://www.instagram.com/pulipulichen&quot; target=&quot;_blank&quot;&gt;Instagram&lt;/a&gt;的連結。社群媒體上的內容其實都是部落格的引流工具而已，怎麽喧賓奪主了呢？&lt;/p&gt;
&lt;p&gt;我也不確定這個問題該怎麽處理好，這也可能代表著部落格的沒落吧，真是無奈啊。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/2611085950423661303/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/06/talk-pulipulis-blog-feature-improvements.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/2611085950423661303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/2611085950423661303'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/06/talk-pulipulis-blog-feature-improvements.html' title='雜談：修正「布丁布丁吃什麼？」部分功能 / TALK: “Pulipuli’s Blog” Feature Improvements'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgg_K4cepE976tfFydstSJ2DMaEXhs8SAXGkJbJuXhTdoxkXWpvbDhbaaBcFSyhcfnvLgei1hThYHuEpXVTgltyCA6CJcV7OmYJ839nTEgLmzx_bS3sK-wavm5R72iK7m-9jPqoWNwVcCCxK-lekzgp1qUhhds6DvNmiBZsS5yJAXazvhgqRm7ToQ=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-3503716023366910683</id><published>2025-06-23T12:00:00.005+08:00</published><updated>2025-06-23T12:00:00.162+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Docker"/><category scheme="http://www.blogger.com/atom/ns#" term="Nextcloud"/><title type='text'>讓Docker架設的Nextcloud預設關閉或開啟應用程式 / Enabling or Disabling Apps by Default in a Dockerized Nextcloud Instance</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhzHtRoxMIkwEExwbU0bA3LsmN9UaipFc_BTWhLE4M_uVbA-dUycFzRsAXZCRN1yo1gjnNeduGLuBvCivQ2MWx3rBjg5sAi2pNG4mNPEt24M_Wg67Txw_wo9v0RpcCKhbsH8dS2-sE1whDxH50Oq45VdQX4a4L8CPdVCQEpAps15x0C0vlAIwVkMw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhzHtRoxMIkwEExwbU0bA3LsmN9UaipFc_BTWhLE4M_uVbA-dUycFzRsAXZCRN1yo1gjnNeduGLuBvCivQ2MWx3rBjg5sAi2pNG4mNPEt24M_Wg67Txw_wo9v0RpcCKhbsH8dS2-sE1whDxH50Oq45VdQX4a4L8CPdVCQEpAps15x0C0vlAIwVkMw&quot; title=&quot;2025-0121-040807.png&quot; alt=&quot;2025-0121-040807.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;既然談到&lt;a href=&quot;/2025/06/deploying-a-readytouse-nextcloud-instance-with-docker.html&quot; target=&quot;_blank&quot;&gt;用Docker架設Nextcloud&lt;/a&gt;，那我們就要活用Docker的架構，讓Nextcloud不僅僅是「開箱可用」，而且還是「自訂後」的可用。我們可以客製化的指令放在「/docker-entrypoint-hooks.d/post-installation」資料夾內，這樣就可以讓Nextcloud初次安裝完成後，自動進行我們要的設定。&lt;/p&gt;
&lt;p&gt;Since we&#39;re talking about &lt;a href=&quot;/2025/06/deploying-a-readytouse-nextcloud-instance-with-docker.html&quot; target=&quot;_blank&quot;&gt;setting up Nextcloud with Docker&lt;/a&gt;, let&#39;s leverage Docker&#39;s architecture to make Nextcloud not just &quot;usable out-of-the-box,&quot; but usable after customization. We can place custom commands in the /docker-entrypoint-hooks.d/post-installation directory, allowing Nextcloud to automatically perform our desired configurations after the initial installation completes.&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;Docker Nextcloud的自動配置 / Automated Configuration in&amp;nbsp;Docker Nextcloud&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhdGBqbO6nXpLneCTjg_lYqxpqAYsq6xu5g5O0L-pwY4MBsMCM2hJwTuHngHB6aqRyDKQuEiN6hGp0_Ni_tC_BZ5aBNxSi9GkJ_r82pMq1NhnEX2dS-qaVMvFRLtGXxU2upa_VDXWIzbwvQBXRfAy_WST3tGVxodpw3ndypdCrxKxG5V-5AoXVzdA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhdGBqbO6nXpLneCTjg_lYqxpqAYsq6xu5g5O0L-pwY4MBsMCM2hJwTuHngHB6aqRyDKQuEiN6hGp0_Ni_tC_BZ5aBNxSi9GkJ_r82pMq1NhnEX2dS-qaVMvFRLtGXxU2upa_VDXWIzbwvQBXRfAy_WST3tGVxodpw3ndypdCrxKxG5V-5AoXVzdA&quot; title=&quot;2025-0121-033548.png&quot; alt=&quot;2025-0121-033548.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://hub.docker.com/_/nextcloud&quot; target=&quot;_blank&quot;&gt;https://hub.docker.com/_/nextcloud&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在Nextcloud的Docker映像檔裡，有提到Nextcloud提供了五個自動配置的鉤子資料夾(hook folders)。只要我們將可以執行的腳本(.sh)放在資料夾內，Nextcloud就會在佈署過程中的特定階段嘗試去執行這些腳本。&lt;/p&gt;
&lt;p&gt;這些資料夾各別是：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;/docker-entrypoint-hooks.d/pre-installation：在 Nextcloud 安裝/初始化之前執行&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;/docker-entrypoint-hooks.d/post-installation：在 Nextcloud 安裝/初始化之後執行&lt;/b&gt;&lt;/li&gt;
  &lt;li&gt;/docker-entrypoint-hooks.d/pre-upgrade：在 Nextcloud 升級之前執行&lt;/li&gt;
  &lt;li&gt;/docker-entrypoint-hooks.d/post-upgrade：在 Nextcloud 升級之後執行&lt;/li&gt;
  &lt;li&gt;/docker-entrypoint-hooks.d/before-starting：在 Nextcloud 啟動之前執行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果我們要讓Nextcloud在安裝完後進行客製化，那麼將腳本擺在「&lt;b&gt;/docker-entrypoint-hooks.d/post-installation&lt;/b&gt;」裡，讓Nextcloud在初次安裝完成後自動執行，應該會是最合適的選擇。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg4s1-XA8yAGxcXcbmMnaF2nBpMqCxBoA0G9TiarFcrzpo43UythxjibSMLQjKWwrVWt3nlxpTBp9tvSchAHvJ3-g5HwnyK5s5h63SEWZxOVn1U45u2E4xGijdIbnQWaXi1P_VLSuoAWFY0XVB0cW_2CS-vwWj4fonNA9Qh9tUa_X_DZvRmPyt0Zg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg4s1-XA8yAGxcXcbmMnaF2nBpMqCxBoA0G9TiarFcrzpo43UythxjibSMLQjKWwrVWt3nlxpTBp9tvSchAHvJ3-g5HwnyK5s5h63SEWZxOVn1U45u2E4xGijdIbnQWaXi1P_VLSuoAWFY0XVB0cW_2CS-vwWj4fonNA9Qh9tUa_X_DZvRmPyt0Zg&quot; title=&quot;2025-0121-040316.png&quot; alt=&quot;2025-0121-040316.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我們可以在docker-compose.yml的volumes將腳本掛載上去，這樣Docker啟動Nextcloud的時候，就會嘗試去讀取腳本的內容。&lt;/p&gt;
&lt;h2&gt;自訂應用程式 / Custom Applications&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgW0fKPUYiBA4Hw2wiGWpLz_2jTt12NdGvY2MUVBpaiMOPnwwvjqfpBl5-nXeOYCdpdJ7xKOIVi8HlZBALALyZ7FFzmGzHewSln7_a4bor1R4ZEbT3AJEvw-o2yOjuDMtV5bjEZKoen-9axvxogqGzqR6R8UtuHfeYPpjmHFmRq9NOmzbb1JUdhKQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgW0fKPUYiBA4Hw2wiGWpLz_2jTt12NdGvY2MUVBpaiMOPnwwvjqfpBl5-nXeOYCdpdJ7xKOIVi8HlZBALALyZ7FFzmGzHewSln7_a4bor1R4ZEbT3AJEvw-o2yOjuDMtV5bjEZKoen-9axvxogqGzqR6R8UtuHfeYPpjmHFmRq9NOmzbb1JUdhKQ&quot; title=&quot;2025-0121-034806.png&quot; alt=&quot;2025-0121-034806.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.nextcloud.com/server/25/user_manual/en/files/version_control.html&quot; target=&quot;_blank&quot;&gt;https://docs.nextcloud.com/server/25/user_manual/en/files/version_control.html&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;那麼我們要讓Nextcloud使用什麼客製化腳本呢？舉例來說，Nextcloud雖然有許多強大的應用程式，但大多時候都只是拖慢速度的元件，不如關閉。舉例來說，如果沒有這方面的需求，我特別建議關閉「&lt;a href=&quot;https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/trashbin_configuration.html&quot; target=&quot;_blank&quot;&gt;files_trashbin&lt;/a&gt;」跟「&lt;a href=&quot;https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/file_versioning.html&quot; target=&quot;_blank&quot;&gt;files_versions&lt;/a&gt;」應用程式，不然這兩個應用程式會不斷記錄刪除和修改的檔案，佔用許多額外的檔案空間。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjrsKLuD80WYKd5yi_aBA3fss7Pcm4ZboZ9pIBmxnnmulzIeuTKYpiL9_uRvME0CfHUFyWoSef28p0SMX2WHpWD-9G4lzNuGauhmNHlaHfFDTHCayGC8OUg4PW311Zmq8kpf_MhlGNJvcI_UdzFcpUJ6WVei6dc9ZJSSBJpFfa9WV_wmYgxD7r06Q&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjrsKLuD80WYKd5yi_aBA3fss7Pcm4ZboZ9pIBmxnnmulzIeuTKYpiL9_uRvME0CfHUFyWoSef28p0SMX2WHpWD-9G4lzNuGauhmNHlaHfFDTHCayGC8OUg4PW311Zmq8kpf_MhlGNJvcI_UdzFcpUJ6WVei6dc9ZJSSBJpFfa9WV_wmYgxD7r06Q&quot; title=&quot;https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/external_storage_configuration_gui.html&quot; alt=&quot;https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/external_storage_configuration_gui.html&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/external_storage_configuration_gui.html&quot; target=&quot;_blank&quot;&gt;https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/external_storage_configuration_gui.html&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;另一方面，我個人還蠻常使用「&lt;a href=&quot;https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/external_storage_configuration_gui.html&quot; target=&quot;_blank&quot;&gt;files_external&lt;/a&gt;」應用程式，這可以讓我們掛載外部的雲端硬碟，讓Nextcloud作為橋接的中間站，非常好用。&lt;/p&gt;
&lt;p&gt;因此，我們可以在post-installation裡面新增腳本「app-initialize.sh」，內容如下：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;#!/bin/bash&lt;br&gt;&lt;br&gt;&lt;br&gt;/var/www/html/occ&amp;nbsp;app:enable&amp;nbsp;files_external&lt;br&gt;&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;files_trashbin&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;files_versions&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;activity&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;app_api&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;bruteforcesettings&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;systemtags&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;comments&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;contactsinteraction&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;dashboard&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;files_reminders&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;federation&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;files_downloadlimit&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;firstrunwizard&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;logreader&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;serverinfo&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;webhook_listeners&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;notifications&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;password_policy&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;photos&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;privacy&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;recommendations&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;related_resources&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;sharebymail&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;support&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;circles&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;updatenotification&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;survey_client&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;user_status&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;weather_status&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;files_sharing&lt;br&gt;/var/www/html/occ&amp;nbsp;app:disable&amp;nbsp;nextcloud_announcements&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg-cNu8DVEbzenUnAlcmq7W7O2BAes76In53fIQ09CEXKrEtSygm_Uxk-4SdjMQsyowc-RN4g0CEdTfG0vRaXMhNGPdB5HzG1MQSaxJBAm9esNgJ3HNJ8WLDiIq0JYK_U1rR2Xt0nljNgijW61vq6t7ud9ednZhFwupOl3BU6ENAe48SqwkmjSMDA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg-cNu8DVEbzenUnAlcmq7W7O2BAes76In53fIQ09CEXKrEtSygm_Uxk-4SdjMQsyowc-RN4g0CEdTfG0vRaXMhNGPdB5HzG1MQSaxJBAm9esNgJ3HNJ8WLDiIq0JYK_U1rR2Xt0nljNgijW61vq6t7ud9ednZhFwupOl3BU6ENAe48SqwkmjSMDA&quot; title=&quot;2025-0121-040401.png&quot; alt=&quot;2025-0121-040401.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如此一來，建立好的Nextcloud就會是相當單純的環境。不需要用到的應用程式都會被關閉了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;結語 / Conclusion&lt;/h2&gt;
&lt;p&gt;這篇展示了如何使用「post-installation」來開啟與關閉Nextcloud應用程式的做法。實際上，我還會在「before-starting」資料夾裡面添增腳本，讓每次啟動Nextcloud的時候都執行特定指令。透過這些「鉤子資料夾」(hook folders)的搭配，我們便能很大程度地調整Nextcloud的功能。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg4Ziz6FbSgTUYI1ulkVKTy_B_sa8_HY2Tw__wZlvVB1CO4p4M1yvQS2eExZ36Vx0WMLaxLEcAvTLJRTzl-oKIQjuyoP1IxRPYlafxOKx_x5EDHrsCeMtL8cn8BQZ4DEULnZHGKXoLCfU-cGEZE2oryF4JAPbIVPO_4y3Y34YUmqLv4Jv5aOkYloA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg4Ziz6FbSgTUYI1ulkVKTy_B_sa8_HY2Tw__wZlvVB1CO4p4M1yvQS2eExZ36Vx0WMLaxLEcAvTLJRTzl-oKIQjuyoP1IxRPYlafxOKx_x5EDHrsCeMtL8cn8BQZ4DEULnZHGKXoLCfU-cGEZE2oryF4JAPbIVPO_4y3Y34YUmqLv4Jv5aOkYloA&quot; title=&quot;https://docs.docker.com/docker-hub/repos/manage/builds/advanced/#custom-build-phase-hooks&quot; alt=&quot;https://docs.docker.com/docker-hub/repos/manage/builds/advanced/#custom-build-phase-hooks&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.docker.com/docker-hub/repos/manage/builds/advanced/#custom-build-phase-hooks&quot; target=&quot;_blank&quot;&gt;https://docs.docker.com/docker-hub/repos/manage/builds/advanced/#custom-build-phase-hooks&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;附帶一提，「鉤子資料夾」這並不是Nextcloud獨有設計，而是大部分Docker映像檔都會遵循的一種開發架構。如果你也想要客製化Docker映像檔所建立的容器，不妨研究看看這些「鉤子資料夾」的設定吧。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;那這篇關於客製化Docker架設的Nextcloud就介紹到這裡了。文章的最後要來問大家的是，你覺得雲端硬碟應該要有那些功能呢？&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;1. 垃圾桶：不小心刪除檔案，還要可以救得回來才行。&lt;/li&gt;
  &lt;li&gt;2. 版本控制：有時候不小心改錯內容，這時候就可以找回之前的版本。&lt;/li&gt;
  &lt;li&gt;3. 檔案分享：能夠有個網址讓其他人下載，這樣是最方便的了。&lt;/li&gt;
  &lt;li&gt;4. 其他：歡迎在下面留言，分享你的看法吧！&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/3503716023366910683/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/06/enabling-or-disabling-apps-by-default-in-a-dockerized-nextcloud-instance.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/3503716023366910683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/3503716023366910683'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/06/enabling-or-disabling-apps-by-default-in-a-dockerized-nextcloud-instance.html' title='讓Docker架設的Nextcloud預設關閉或開啟應用程式 / Enabling or Disabling Apps by Default in a Dockerized Nextcloud Instance'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhzHtRoxMIkwEExwbU0bA3LsmN9UaipFc_BTWhLE4M_uVbA-dUycFzRsAXZCRN1yo1gjnNeduGLuBvCivQ2MWx3rBjg5sAi2pNG4mNPEt24M_Wg67Txw_wo9v0RpcCKhbsH8dS2-sE1whDxH50Oq45VdQX4a4L8CPdVCQEpAps15x0C0vlAIwVkMw=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-1608175254215381050</id><published>2025-06-20T12:00:00.000+08:00</published><updated>2025-06-20T12:00:00.111+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Life"/><category scheme="http://www.blogger.com/atom/ns#" term="Talk"/><title type='text'>雜談：有電梯與沒有電梯的大樓 / Talk: Buildings With and Without Elevators</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj8UePK_pMxJLY4nudGSW-9-pHJTRJJgnNIFSt6pX7znKYxnJ_XGbLzytXHWjknT8gy4Q-EIDA--G__n44RsrP8r9RyVLyAQ33uSacqFmOX6VhnmXNwuUSmbI0Pw62UXFusWBI_hFSx27FdvflV8UBdqikTv5OTOPQX7UuKQNSqaeGXgJpUUMLUZg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj8UePK_pMxJLY4nudGSW-9-pHJTRJJgnNIFSt6pX7znKYxnJ_XGbLzytXHWjknT8gy4Q-EIDA--G__n44RsrP8r9RyVLyAQ33uSacqFmOX6VhnmXNwuUSmbI0Pw62UXFusWBI_hFSx27FdvflV8UBdqikTv5OTOPQX7UuKQNSqaeGXgJpUUMLUZg&quot; title=&quot;2025-0106-001906.png&quot; alt=&quot;2025-0106-001906.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;到底是走很近就能抵達，但沒有電梯的大樓好；還是必須走到山上，但是有電梯的大樓好呢？&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;很近的大樓 /&amp;nbsp;The Building, But Very Close&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgiWJL9AhvJc528EIziapOfngNjeoRG515frMK5zY9uY2qg5-oWX5T7oxVZx5z5UOzK06KIH8c4BDjo3FXZZpdPQPJ9H_go1jrk4GmmlvOgbZcGoVbixt0EGKCUA2SqZlZ5MZllrDrkKv06UzXns8yYqsxNXQ1QVkTEqCMHlSlqU-hNUUpx2WjZ_g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgiWJL9AhvJc528EIziapOfngNjeoRG515frMK5zY9uY2qg5-oWX5T7oxVZx5z5UOzK06KIH8c4BDjo3FXZZpdPQPJ9H_go1jrk4GmmlvOgbZcGoVbixt0EGKCUA2SqZlZ5MZllrDrkKv06UzXns8yYqsxNXQ1QVkTEqCMHlSlqU-hNUUpx2WjZ_g&quot; title=&quot;20220802_110134_.jpg&quot; alt=&quot;20220802_110134_.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我之前工作的兩個地方都在山上，但兩個工作場所截然不同。&lt;br&gt;&lt;/p&gt;
&lt;p&gt;我之前工作的地方有著微妙的好處和壞處。壞處是樓梯間貼著募款蓋電梯的海報，從我看到它出現在牆壁上到現在，電梯還是沒有蓋出來。但它的好處也十分明顯：近。如果能順利找到機車的車位，那大概走路3分鐘就能夠抵達大樓樓下。連帶的好處就是附近各種吃飯的地方都很方便，全部都是下個樓、走一下就可以輕鬆抵達的距離。不過……回來時還是要爬樓梯。&lt;/p&gt;
&lt;h2&gt;有電梯的大樓 /&amp;nbsp;Building, But With an Elevator&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhGpgKwAqMMOE6Nq7A5adB8D4VAMUtwr129606iMZ88JCt7ih1VihwFKWb2ceZWJU37WPZN0v8GZ8QpX6i1dxm5TkNeyo91BVO2TnOyZRJRnTf93vTggeflbVW5tIxxUZTqEq9hYz2Q_4rJTUm4si5NtLeordJPll9ruAkCAT0LR8MOQYXwiKErjw&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhGpgKwAqMMOE6Nq7A5adB8D4VAMUtwr129606iMZ88JCt7ih1VihwFKWb2ceZWJU37WPZN0v8GZ8QpX6i1dxm5TkNeyo91BVO2TnOyZRJRnTf93vTggeflbVW5tIxxUZTqEq9hYz2Q_4rJTUm4si5NtLeordJPll9ruAkCAT0LR8MOQYXwiKErjw&quot; title=&quot;20250103_130300_.jpg&quot; alt=&quot;20250103_130300_.jpg&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;而我更之前工作的另一個地方是真的「在山上」。這個山的程度是，大概有一半的學生不會認知到把位置其實還是在校園的範圍內，而且早期的Google Map還真的把它畫出到校園外的程度。即使騎車停在停車場，要抵達工作場所的時候還是需要走很遠的路，而大部分的人會選擇搭公車。至於抵達之後，工作場所為了無障礙設置了電梯，能夠一口氣坐到頂樓去上班。是說當電梯蓋好的時候，它還蠻常壞的。但在不知不覺間它好像終於修好了，之後就很少看到它當機的樣子，真是可喜可賀。&lt;/p&gt;
&lt;p&gt;嗯？你說開車的話，就不用走這麼遠了啊。嗯……首先，要有車……&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEja_FY05ACcLhknuj5vrH7dU05GvRXjZr6q1kGY0MIQLwtmiCciDhjVjhezHar2qByIcdfJfNW7GJk-sR1YVoOH_zi0JjxXMO9Wr12xI9pvGmBkEUTlNb6hLw56qIVJQ85rZgAuyD8hcNRoJ8VWoakrwxil0tUZjx5OPYoD3jRynGt9JSSvEjYaeQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEja_FY05ACcLhknuj5vrH7dU05GvRXjZr6q1kGY0MIQLwtmiCciDhjVjhezHar2qByIcdfJfNW7GJk-sR1YVoOH_zi0JjxXMO9Wr12xI9pvGmBkEUTlNb6hLw56qIVJQ85rZgAuyD8hcNRoJ8VWoakrwxil0tUZjx5OPYoD3jRynGt9JSSvEjYaeQ&quot; title=&quot;20250103_163705_.jpg&quot; alt=&quot;20250103_163705_.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;儘管如此，我其實還是蠻喜歡走上山的感覺。離開的時候在橋上看到了耶穌光，好美。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/1608175254215381050/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/03/talk-buildings-with-and-without-elevators.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/1608175254215381050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/1608175254215381050'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/03/talk-buildings-with-and-without-elevators.html' title='雜談：有電梯與沒有電梯的大樓 / Talk: Buildings With and Without Elevators'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEj8UePK_pMxJLY4nudGSW-9-pHJTRJJgnNIFSt6pX7znKYxnJ_XGbLzytXHWjknT8gy4Q-EIDA--G__n44RsrP8r9RyVLyAQ33uSacqFmOX6VhnmXNwuUSmbI0Pw62UXFusWBI_hFSx27FdvflV8UBdqikTv5OTOPQX7UuKQNSqaeGXgJpUUMLUZg=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-5010022000643282131</id><published>2025-06-16T12:00:00.007+08:00</published><updated>2025-06-16T12:00:00.106+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Docker"/><category scheme="http://www.blogger.com/atom/ns#" term="Nextcloud"/><title type='text'>用Docker建構開箱可用的Nextcloud  / Deploying a Ready-to-Use Nextcloud Instance with Docker</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgXqC_Q0mVvw2upt7xlvxcRzJO2h9mSYh6lQ32S6jXWELkVO5OcTDUiy65rp3yfulm2R7Uv9ktc2NJq1aJjq_22Msy_D6GmlfoRAUOeqVFjTpucoVyOdLvuxZhmqhSqBG7jMFB_g-3-qxqwZLAZB8CeM1cZl7VrLlxlfb4pFo4Qk4zGAJ5tDTOllg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgXqC_Q0mVvw2upt7xlvxcRzJO2h9mSYh6lQ32S6jXWELkVO5OcTDUiy65rp3yfulm2R7Uv9ktc2NJq1aJjq_22Msy_D6GmlfoRAUOeqVFjTpucoVyOdLvuxZhmqhSqBG7jMFB_g-3-qxqwZLAZB8CeM1cZl7VrLlxlfb4pFo4Qk4zGAJ5tDTOllg&quot; title=&quot;2025-0121-032627.png&quot; alt=&quot;2025-0121-032627.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nextcloud.com/&quot; target=&quot;_blank&quot;&gt;Nextcloud&lt;/a&gt;是一個相當受歡迎的自架雲端硬碟應用程式。過往我都是用LXC的容器形式架設，這次我們要用Docker技術架設Nextcloud。要架設一個開箱可以用的Nextcloud其實還是有點複雜，我把相關參數整理成docker-compose.yml，希望對有需要的人有所幫助。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nextcloud.com/&quot; target=&quot;_blank&quot;&gt;Nextcloud&lt;/a&gt; is a popular self-hosted cloud storage application. Previously, I used LXC containers for setup, but this time we&#39;ll use Docker. Setting up a ready-to-use Nextcloud instance can be somewhat complex. I&#39;ve organized the relevant parameters into a docker-compose.yml file, hoping it will be helpful for those in need.&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;Nextcloud&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj2Jmq9WAZsV76zmgxKzmaJlkko9UESsXms61acI_7741GLwn18P7p77QD3P2W9G-_PMB_b-0spD2ybCbIKQEjvz7-reu9ROWp31Xr13loYL1FYii42xW_7Auys4yDh1vk1JWeFJXrKMNoq5vauxOrtplp_jnRxKk9aXSPWucgUZpyk8VGQeMPVpQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj2Jmq9WAZsV76zmgxKzmaJlkko9UESsXms61acI_7741GLwn18P7p77QD3P2W9G-_PMB_b-0spD2ybCbIKQEjvz7-reu9ROWp31Xr13loYL1FYii42xW_7Auys4yDh1vk1JWeFJXrKMNoq5vauxOrtplp_jnRxKk9aXSPWucgUZpyk8VGQeMPVpQ&quot; title=&quot;2025-0121-022439.png&quot; alt=&quot;2025-0121-022439.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nextcloud.com/&quot; target=&quot;_blank&quot;&gt;https://nextcloud.com/&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Nextcloud 是一款開放原始碼的自架雲端儲存服務軟體，讓使用者可以在自己的伺服器上建立類似 Dropbox、Google Drive 或 iCloud 的功能。它提供檔案同步與分享、線上辦公室套件 (Office Suite)、聯絡人與行事曆管理、以及更多豐富的應用程式 (Apps)。透過 Nextcloud，您可以掌控自己的資料，不用擔心隱私外洩，同時享有高度客製化的彈性，打造專屬的雲端空間。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEho_EOeQg0lKM8MyECzu9OEFDKcSlXDrOGX7kl5VlHalQr5FVpqiBdzIZllgDiCRD2NkBcEvTIgV1NFYDU84WVACQ_FL_wVEimzMtBMj1ZZDIn_QN00l7HXUyK7m7rJJduAqtweu7Wuijp7nkH5DS4Q7_Rei0HqlnpaLCmzME578mKrSsYg98WsrA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEho_EOeQg0lKM8MyECzu9OEFDKcSlXDrOGX7kl5VlHalQr5FVpqiBdzIZllgDiCRD2NkBcEvTIgV1NFYDU84WVACQ_FL_wVEimzMtBMj1ZZDIn_QN00l7HXUyK7m7rJJduAqtweu7Wuijp7nkH5DS4Q7_Rei0HqlnpaLCmzME578mKrSsYg98WsrA&quot; title=&quot;2025-0121-022514.png&quot; alt=&quot;2025-0121-022514.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nextcloud 的介面設計簡潔直覺，容易上手。您可以透過網頁瀏覽器、桌面用戶端 (Desktop Client) 或行動應用程式 (Mobile App) 存取和管理您的檔案。它支援檔案版本控制，萬一誤刪或修改檔案，可以輕鬆還原到先前的版本。此外，Nextcloud 也提供強大的協作功能，讓您可以與團隊成員共享檔案、共同編輯文件，並透過內建的通訊工具進行討論，提升團隊合作效率。&lt;/p&gt;
&lt;h2&gt;Nextcloud的擴充功能 / Apps in Nextcloud&lt;/h2&gt;
&lt;p&gt;Nextcloud 除了基本功能外，還支援各式各樣的擴充應用程式，例如：即時通訊、視訊會議、心智圖工具等等。您可以根據自己的需求安裝不同的應用程式，打造更全面的個人或團隊工作平台。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh2o5mbbWoA0iMfAWm92trIwrdByR-czsgEkf9aB6AMB2hMuwC-ETMtlFaY5WGaIYhzHWyyJQNaAv-AzpNf8-xfvNrsQcIjYVcgZyWRWQPEiTNfSdcrlGgZKdBBio_ROc8gx4EJTjIq3MqH4e-amCkq5Q70KVvjhe9i-CV_gUIhkRbv4Bfn6_TNFg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh2o5mbbWoA0iMfAWm92trIwrdByR-czsgEkf9aB6AMB2hMuwC-ETMtlFaY5WGaIYhzHWyyJQNaAv-AzpNf8-xfvNrsQcIjYVcgZyWRWQPEiTNfSdcrlGgZKdBBio_ROc8gx4EJTjIq3MqH4e-amCkq5Q70KVvjhe9i-CV_gUIhkRbv4Bfn6_TNFg&quot; title=&quot;2025-0121-022759.png&quot; alt=&quot;2025-0121-022759.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;font color=&quot;#337ab7&quot;&gt;&lt;u&gt;https://www.youtube.com/watch?v=6_BPOZzvzZQ&amp;amp;t=138s&lt;/u&gt;&lt;/font&gt;&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;值得注意的是，最近Nextcloud也引入了本地端大型語言模型的應用，可以讓大型語言模型讀取存放在Nextcloud的檔案，並且據此進行文字生成、問答與輔助寫作等功能。可惜目前&lt;a href=&quot;https://docs.nextcloud.com/server/latest/admin_manual/ai/app_llm2.html&quot; target=&quot;_blank&quot;&gt;本地端的應用&lt;/a&gt;並沒有支持中文。&lt;/p&gt;
&lt;p&gt;儘管如此，Nextcloud能夠讓人自行架設雲端平臺，而且還有電腦、手機等APP可供同步使用，其實已經是非常強大且受歡迎的應用程式了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;用Docker架設Nextcloud /&amp;nbsp;Setting up Nextcloud with Docker&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjIRhcf-5fxknaU86_PBUb62EhKHTTeolp0sSB_HspqSuBiDw5qo4JuLp2S-fZfLAwsY3O7noTBtUxkrx_ra-yfi0gD22X59ztrLZHnyql_3LQeH_ODqIpPWj-JS5GfOtKD2loBX24FLeKmkbBnPmA6An8OysAAZLZXdJuyO7pB8sPzcymWg0yFUQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjIRhcf-5fxknaU86_PBUb62EhKHTTeolp0sSB_HspqSuBiDw5qo4JuLp2S-fZfLAwsY3O7noTBtUxkrx_ra-yfi0gD22X59ztrLZHnyql_3LQeH_ODqIpPWj-JS5GfOtKD2loBX24FLeKmkbBnPmA6An8OysAAZLZXdJuyO7pB8sPzcymWg0yFUQ&quot; title=&quot;https://hub.docker.com/_/nextcloud&quot; alt=&quot;https://hub.docker.com/_/nextcloud&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://hub.docker.com/_/nextcloud&quot; target=&quot;_blank&quot;&gt;https://hub.docker.com/_/nextcloud&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Nextcloud是以PHP建構的應用程式。以往我都是用&lt;a href=&quot;https://www.turnkeylinux.org/nextcloud&quot; target=&quot;_blank&quot;&gt;Turnkey Linux Nextcloud&lt;/a&gt;架設，但Turnkey Linux的應用是LXC容器，比較不容易佈署。於是我就打算使用Docker來架設Nextcloud。&lt;/p&gt;
&lt;p&gt;Nextcloud也有提供Docker映像檔，而且是Docker官方認證的應用程式。我們可以用最基本的指令來架設Nextcloud：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;docker&amp;nbsp;run&amp;nbsp;-d&amp;nbsp;-p&amp;nbsp;8080:80&amp;nbsp;nextcloud&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgu9zr2QeDKiQz0W8hdEHzm41MO4W5moqqME4TNAoMA4kBIfMWYelzFt6rizoiEMjQqpuutEUUX5aoMEGoiQqp2DX9z2xsvI-3DVaaEEMlx_0sWDbCOpQifjQ23UeNYuZETrSU_KnGtmJXGu9VjDhDRLpA6VgEQwZMfjRd_LuvDz7em_2HFW_6Evg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgu9zr2QeDKiQz0W8hdEHzm41MO4W5moqqME4TNAoMA4kBIfMWYelzFt6rizoiEMjQqpuutEUUX5aoMEGoiQqp2DX9z2xsvI-3DVaaEEMlx_0sWDbCOpQifjQ23UeNYuZETrSU_KnGtmJXGu9VjDhDRLpA6VgEQwZMfjRd_LuvDz7em_2HFW_6Evg&quot; title=&quot;2025-0121-024044.png&quot; alt=&quot;2025-0121-024044.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然後我們就可以在本機端開啟網頁「http://localhost:8080」....怎麽出現錯誤訊息了？這是因為一開始Nextcloud要花一點時間佈署系統。大概要三分鐘。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgZnJ_n4HWjI_-V_2ZmZH6ChOkjgmqDdJII_YsrDl602WpxqAtYb1fbz7f2Wv7ru8cyHz6PIE0v1a8wufYFTOmljUzEhgenC0PIzzLBg61R1D2En_b4Gj15OQGFLwkaJSQ6iKDeswcc__QRcYtmc3wajJlgHVqaGLXe9_UzLLnxLhWf3xgytuoRdQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgZnJ_n4HWjI_-V_2ZmZH6ChOkjgmqDdJII_YsrDl602WpxqAtYb1fbz7f2Wv7ru8cyHz6PIE0v1a8wufYFTOmljUzEhgenC0PIzzLBg61R1D2En_b4Gj15OQGFLwkaJSQ6iKDeswcc__QRcYtmc3wajJlgHVqaGLXe9_UzLLnxLhWf3xgytuoRdQ&quot; title=&quot;2025-0121-024126.png&quot; alt=&quot;2025-0121-024126.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;等一段時間再重新讀取網頁「http://localhost:8080」，此時就能看到Nextcloud的初始設定畫面。這樣就可以開始探索Nextcloud了。&lt;/p&gt;
&lt;p&gt;不過這個最簡單的設定，實際使用的時候效率不太好。Nextcloud比較推薦的形式是搭配資料庫一起使用，而我也希望能夠略過開啟建立帳號等確認環節，讓我一打開就能用Nextcloud。因此，我們需要用docker-compose.yml加入更多設定。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;用docker-compose.yml佈署Nextcloud /&amp;nbsp;Deploying Nextcloud with docker-compose.yml&lt;/h2&gt;
&lt;p&gt;你可以用以下的docker-compose.yml來建立Nextcloud：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;yaml&quot;&gt;version:&amp;nbsp;&quot;3.8&quot;&lt;br&gt;&lt;br&gt;services:&lt;br&gt;&amp;nbsp;&amp;nbsp;nextcloud:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;image:&amp;nbsp;nextcloud&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;container_name:&amp;nbsp;nextcloud&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;depends_on:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;nextclouddb&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;redis&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ports:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;8080:80&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;volumes:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;./data:/var/www/html/data&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;nextcloud:/var/www/html/&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;environment:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;MYSQL_DATABASE=nextcloud&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;MYSQL_USER=nextcloud&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;MYSQL_PASSWORD=dbpassword&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;MYSQL_HOST=nextclouddb&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;REDIS_HOST=redis&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;NEXTCLOUD_ADMIN_USER=&lt;font color=&quot;#ff0000&quot;&gt;admin&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;NEXTCLOUD_ADMIN_PASSWORD=&lt;font color=&quot;#ff0000&quot;&gt;password&lt;/font&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;nextclouddb:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;image:&amp;nbsp;mariadb:11.6-ubi&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;container_name:&amp;nbsp;nextcloud-db&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command:&amp;nbsp;--transaction-isolation=READ-COMMITTED&amp;nbsp;--binlog-format=ROW&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;volumes:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;db:/var/lib/mysql&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;environment:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;MYSQL_RANDOM_ROOT_PASSWORD=true&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;MYSQL_PASSWORD=dbpassword&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;MYSQL_DATABASE=nextcloud&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;MYSQL_USER=nextcloud&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;redis:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;image:&amp;nbsp;redis:7.2.7-alpine3.21&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;container_name:&amp;nbsp;redis&lt;br&gt;&lt;br&gt;volumes:&lt;br&gt;&amp;nbsp;&amp;nbsp;nextcloud:&lt;br&gt;&amp;nbsp;&amp;nbsp;db:&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;值得注意的是標示紅字的「admin」跟「password」是預設管理者的帳號跟密碼，您可以根據自己的需要進行修改。&lt;/p&gt;
&lt;p&gt;然後在擺放docker-compose.yml的資料夾下，執行「docker compose up」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgWIwf_0LH3g3I_bsOFM2J05DFDYgFmq71Cwt8ofqae13M0VlRzLx6v7qSfR1c-5vhaVGbNaqc5pd_dHnalieTz259DGnQ80ET2Q_NvHcDwSkfqF14uHZza1UnLYsJ1ejvg4L4M1GIjv-hB1B91LFzfoBEkygjxp4WHeD8KCC7JYQYEGlye6pUfIg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgWIwf_0LH3g3I_bsOFM2J05DFDYgFmq71Cwt8ofqae13M0VlRzLx6v7qSfR1c-5vhaVGbNaqc5pd_dHnalieTz259DGnQ80ET2Q_NvHcDwSkfqF14uHZza1UnLYsJ1ejvg4L4M1GIjv-hB1B91LFzfoBEkygjxp4WHeD8KCC7JYQYEGlye6pUfIg&quot; title=&quot;2025-0121-025530.png&quot; alt=&quot;2025-0121-025530.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;等待大概5分鐘左右，Nextcloud會佈署好資料庫跟預設要設定的檔案。最後看到apache2啟動的消息，就表示可以連線了。第二次啟動Nextcloud就不需要這麼久的時間，大概5秒鐘就可以使用了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiYon2CYlCGvaBgm8IJ0cGemg1DR17CVqXbaw3_n2jp7NjF0YnnHDq93uyspwXZW9BC2HPtM5C1Cdj7F-44YsTOs4APpwmrYq-FnoIaU6q3FVQbrSxHvS-pZS8uCyuS2HtEkM6azKtMECerRdCT__PYMrFItO387_mVorXjUAjzl9DDKTNFUV0cgA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiYon2CYlCGvaBgm8IJ0cGemg1DR17CVqXbaw3_n2jp7NjF0YnnHDq93uyspwXZW9BC2HPtM5C1Cdj7F-44YsTOs4APpwmrYq-FnoIaU6q3FVQbrSxHvS-pZS8uCyuS2HtEkM6azKtMECerRdCT__PYMrFItO387_mVorXjUAjzl9DDKTNFUV0cgA&quot; title=&quot;2025-0121-025926.png&quot; alt=&quot;2025-0121-025926.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;請輸入「http://loclahost:8080」開啟Nextcloud。帳號跟密碼請使用上面docker-compose.yml的設定。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi4TzcUNbnfoUZPgrZhnvJOqTUgZKRuVzERl7Yfom0_FJeH30B7lQ0d-zPRZxRtDVAhw_1l1QlnSN-D35-kzXncSyXGvrjnTVJu2tf9ftkCYb2F7aD-z5ZgIzQ5ARWR5aeHjkC_F3kP9Eq3wvUdbgnpv5vm0ou4WTyjfNUzSLF7MbD4CjVHFTISqg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi4TzcUNbnfoUZPgrZhnvJOqTUgZKRuVzERl7Yfom0_FJeH30B7lQ0d-zPRZxRtDVAhw_1l1QlnSN-D35-kzXncSyXGvrjnTVJu2tf9ftkCYb2F7aD-z5ZgIzQ5ARWR5aeHjkC_F3kP9Eq3wvUdbgnpv5vm0ou4WTyjfNUzSLF7MbD4CjVHFTISqg&quot; title=&quot;2025-0121-030029.png&quot; alt=&quot;2025-0121-030029.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgjLRwb1WtFn_cuvEzt0WsNKu4qtVSlQtrZKSLehXna2eXavkJcVVmpEtjuW8Sb4TjgS9Vv1dtxVv1RJU9YWBVe2OtLsu1Qhb8byq4RzqZvnez0ieQd_v4Isa86jQSefdtdRR6MwqQJs0RrhHx51kWJHu53hpx3Hd0RexoRDtqO6K6-QLJ-ldpruA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgjLRwb1WtFn_cuvEzt0WsNKu4qtVSlQtrZKSLehXna2eXavkJcVVmpEtjuW8Sb4TjgS9Vv1dtxVv1RJU9YWBVe2OtLsu1Qhb8byq4RzqZvnez0ieQd_v4Isa86jQSefdtdRR6MwqQJs0RrhHx51kWJHu53hpx3Hd0RexoRDtqO6K6-QLJ-ldpruA&quot; title=&quot;2025-0121-030045.png&quot; alt=&quot;2025-0121-030045.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接下來你就可以自由使用Nextcloud了。&lt;/p&gt;
&lt;h3&gt;本機檔案 / Local Volume&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgS4OJCZn3z0dQ4aS4M1Og4lo0YXNkywBOTnUhCWYbomjHwP1c29MjQE4aseaw1DcAPOrQDz-N-oHBUtFJ0m3ccE2wwtfh-I4SflFYlAIJ2GnN7Thp2HbE0pv1TFdq5jRdxw6lsr2tAmFKmswaaJI37npy027BzGFB8i13__sjIh4Vlf3_Qflc_xg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgS4OJCZn3z0dQ4aS4M1Og4lo0YXNkywBOTnUhCWYbomjHwP1c29MjQE4aseaw1DcAPOrQDz-N-oHBUtFJ0m3ccE2wwtfh-I4SflFYlAIJ2GnN7Thp2HbE0pv1TFdq5jRdxw6lsr2tAmFKmswaaJI37npy027BzGFB8i13__sjIh4Vlf3_Qflc_xg&quot; title=&quot;2025-0121-030142.png&quot; alt=&quot;2025-0121-030142.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我將Nextcloud擺放資料的資料夾掛載到跟docker-compose.yml同樣目錄底下的「data」資料夾。但它一開始創建的時候會被限制權限，請用「sudo chmod 777 -R data」來開啟它的權限。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhi1uSYaPwSlNpsmq9qunqCJkKuWHDKi5IKVDuavARnOl_gbcJWkjMqkxSTl9tAZR6xi9FXD_oxYONOcYsIjP3_cUXNKKpJgQKoBx8sf26LHVvVJ2B9n-v8zEENP_U81Vhsm9qLQGsqt7-wHxRsQYMJQJdMvkUgmzNgzWtTQg06vL16TFDhWfFrlQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhi1uSYaPwSlNpsmq9qunqCJkKuWHDKi5IKVDuavARnOl_gbcJWkjMqkxSTl9tAZR6xi9FXD_oxYONOcYsIjP3_cUXNKKpJgQKoBx8sf26LHVvVJ2B9n-v8zEENP_U81Vhsm9qLQGsqt7-wHxRsQYMJQJdMvkUgmzNgzWtTQg06vL16TFDhWfFrlQ&quot; title=&quot;2025-0121-030345.png&quot; alt=&quot;2025-0121-030345.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在「data/&lt;font color=&quot;#ff0000&quot;&gt;admin&lt;/font&gt;/files/」底下，便能看到admin帳號的檔案。&lt;/p&gt;
&lt;p&gt;但是要注意的是，我們在本機修改Nextcloud的檔案時，它不會直接反應到Nextcloud系統裡面。這必須要執行「&lt;a href=&quot;https://docs.nextcloud.com/server/28/admin_manual/configuration_server/occ_command.html&quot; target=&quot;_blank&quot;&gt;occ files:scan&lt;/a&gt;」，Nextcloud才會掃描看看檔案有沒有變更，然後才會儲存到Nextcloud系統內。&lt;/p&gt;
&lt;p&gt;因此，一般情況下都不建議不透過Nextcloud來修改檔案。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Nextcloud客戶端應用程式 / Nextcloud Client APP&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjF5zT0IaXK6dqBoXxtwkUbaEOZWIv2QCJUO0Uj_LPpIHqbwcKNEsE3eymsyWLbf6ruKC_askN272P3Z321TytMZDwX0tkuPVtorWHqKZYsOyfOerWhePfvnXD7oBEHSU7YE6RzPrlZlieWZh5a227zT8AQAcm5HN48DvSxek2MGD4hL-MIPXOB9Q&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjF5zT0IaXK6dqBoXxtwkUbaEOZWIv2QCJUO0Uj_LPpIHqbwcKNEsE3eymsyWLbf6ruKC_askN272P3Z321TytMZDwX0tkuPVtorWHqKZYsOyfOerWhePfvnXD7oBEHSU7YE6RzPrlZlieWZh5a227zT8AQAcm5HN48DvSxek2MGD4hL-MIPXOB9Q&quot; title=&quot;https://nextcloud.com/install&quot; alt=&quot;https://nextcloud.com/install&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nextcloud.com/install&quot; target=&quot;_blank&quot;&gt;https://nextcloud.com/install&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;要使用Nextcloud的話，比較正常的做法是用Nextcloud的客戶端來連線。Nextcloud為各個平臺都開發了對應的客戶端：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;桌面環境：&lt;a href=&quot;https://github.com/nextcloud-releases/desktop/releases/download/v3.15.3/Nextcloud-3.15.3-x64.msi&quot; target=&quot;_blank&quot;&gt;Windows 10以上 (64bit)&lt;/a&gt;、&lt;a href=&quot;https://github.com/nextcloud-releases/desktop/releases/download/v3.15.3/Nextcloud-3.15.3.pkg&quot; target=&quot;_blank&quot;&gt;macOS 12以上&lt;/a&gt;、&lt;a href=&quot;https://github.com/nextcloud-releases/desktop/releases/download/v3.15.3/Nextcloud-3.15.3-x86_64.AppImage&quot; target=&quot;_blank&quot;&gt;Linux Appimage&lt;/a&gt; (我現在就用這個)&lt;/li&gt;
  &lt;li&gt;行動裝置：&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.nextcloud.client&quot; target=&quot;_blank&quot;&gt;Android&lt;/a&gt;、&lt;a href=&quot;https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8&quot; target=&quot;_blank&quot;&gt;iOS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhbP4MpHBeqxhizaCwSrvAKThSq4Alm7BYZCldfhJAGn-_oY0N9MRFxGslnso3OpkTYEsPpXQhuHsFTbyvEal6yzw1MEtoQmX0vsKsZJQKespKRb1Uykcr2PVIKed64ce99v8r9pl7VTczCYbbeU4zPVY0mgrmiUJjsyArccYm4Ea3amUaC6fujHA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhbP4MpHBeqxhizaCwSrvAKThSq4Alm7BYZCldfhJAGn-_oY0N9MRFxGslnso3OpkTYEsPpXQhuHsFTbyvEal6yzw1MEtoQmX0vsKsZJQKespKRb1Uykcr2PVIKed64ce99v8r9pl7VTczCYbbeU4zPVY0mgrmiUJjsyArccYm4Ea3amUaC6fujHA&quot; title=&quot;2025-0121-031206.png&quot; alt=&quot;2025-0121-031206.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;當然，你也可以直接使用Nextcloud的網頁來上傳、下載與修改檔案。Nextcloud網頁有著各種強大的應用程式，甚至可以讓你在網頁上對PDF檔案寫註解、標亮文字，非常好用呢。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;結語 / Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiHZzz8w5qZZJ6zN8petSEVAp_m2QdXZ9_wFnZ6HIh3nqoXo2FT864BAFXjF5ztp2uCNEaqGkcBd4vwIuppFO7S-DQKe3fNwDLCvDg4qmIMk7vP5O8WvWVWRb-O5q9q6BZRP31EQGVaNTXuZhM5qsBDtwoaZFzas_0a3y53C-EgCfb7aCIw44G9GA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiHZzz8w5qZZJ6zN8petSEVAp_m2QdXZ9_wFnZ6HIh3nqoXo2FT864BAFXjF5ztp2uCNEaqGkcBd4vwIuppFO7S-DQKe3fNwDLCvDg4qmIMk7vP5O8WvWVWRb-O5q9q6BZRP31EQGVaNTXuZhM5qsBDtwoaZFzas_0a3y53C-EgCfb7aCIw44G9GA&quot; title=&quot;2025-0121-031307.png&quot; alt=&quot;2025-0121-031307.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我使用Nextcloud已經有好幾年的時間。之前使用Nextcloud的目的是同步Google Drive，克服rclone在網路不穩定時拖累系統的問題。但如果要跟Google Drive同步，那我們需要對系統有更多的調整，也需要定期執行檔案掃描，它才能正常運作。相關的細節我在「&lt;a href=&quot;/2023/03/blog-post_14.html&quot; target=&quot;_blank&quot;&gt;Nextcloud的安裝&lt;/a&gt;」跟「&lt;a href=&quot;/2023/03/blog-post_26.html&quot; target=&quot;_blank&quot;&gt;手動打造Google Drive同步工具：ownCloud與rclone的組合&lt;/a&gt;」都有記錄。&lt;/p&gt;
&lt;p&gt;不過這次我的目標就不是架設長期使用的伺服器，而是要架設一個容易佈署、能夠跟其他系統整合的檔案管理工具。有陣子我使用的是「&lt;a href=&quot;https://medium.com/dean-lin/file-browser-%E8%B6%85%E6%A3%92%E7%9A%84%E9%9B%B2%E7%AB%AF%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7-871d8605dc41&quot; target=&quot;_blank&quot;&gt;File Browser&lt;/a&gt;」，它架設很容易，但老實說它很難用，甚至要瀏覽照片都很不方便。結果，到頭來我還是回來研究Nextcloud了。&lt;/p&gt;
&lt;p&gt;就讓我們看看Nextcloud可以作什麼調整吧。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;那這篇關於用Docker自架Nextcloud的介紹就到此為止了。文章的最後要來問大家的是，你會想要自架雲端硬碟嗎？&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;1. 自己的資料自己管，好像不錯喔。&lt;/li&gt;
  &lt;li&gt;2. 太複雜了，我花錢買iCloud或Google One就好了吧。&lt;/li&gt;
  &lt;li&gt;3. 可以動手修改的雲端硬碟，聽起來很有發展潛力。&lt;/li&gt;
  &lt;li&gt;4. 有需要雲端硬碟嗎？我都把「小沈 1500」記在隨身碟裡面。&lt;/li&gt;
  &lt;li&gt;5. 其他：歡迎在下面留言，分享你的看法吧！&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/5010022000643282131/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/06/deploying-a-readytouse-nextcloud-instance-with-docker.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/5010022000643282131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/5010022000643282131'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/06/deploying-a-readytouse-nextcloud-instance-with-docker.html' title='用Docker建構開箱可用的Nextcloud  / Deploying a Ready-to-Use Nextcloud Instance with Docker'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgXqC_Q0mVvw2upt7xlvxcRzJO2h9mSYh6lQ32S6jXWELkVO5OcTDUiy65rp3yfulm2R7Uv9ktc2NJq1aJjq_22Msy_D6GmlfoRAUOeqVFjTpucoVyOdLvuxZhmqhSqBG7jMFB_g-3-qxqwZLAZB8CeM1cZl7VrLlxlfb4pFo4Qk4zGAJ5tDTOllg=s72-c" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-2783722696079182227</id><published>2025-06-13T12:00:00.006+08:00</published><updated>2025-06-13T12:00:00.323+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Appliances"/><category scheme="http://www.blogger.com/atom/ns#" term="Talk"/><title type='text'>雜談：燈泡不時熄滅，好像還是燈泡的問題 / TALK: The Lightbulb Keeps Going Out; It Seems to Still Be a Problem With the Bulb</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEibbZAqOd__dqfEs11meKfMcC4QBvsF6tgc1unOHCbgpi30dEplFgleBRtdA5f5fSIM4EWREfjKFgrw3oRbnAMpMmZ9poTTG4X_UY6kbO6140-XcOUDX4b8OweyVefgX9DHRTUTYco4W9N7hfC37RvlyFTkUA2D78ULRm9ToHVpQeVyO_NF-4BKtw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEibbZAqOd__dqfEs11meKfMcC4QBvsF6tgc1unOHCbgpi30dEplFgleBRtdA5f5fSIM4EWREfjKFgrw3oRbnAMpMmZ9poTTG4X_UY6kbO6140-XcOUDX4b8OweyVefgX9DHRTUTYco4W9N7hfC37RvlyFTkUA2D78ULRm9ToHVpQeVyO_NF-4BKtw&quot; title=&quot;2025-0214-204110.png&quot; alt=&quot;2025-0214-204110.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一直搞不懂為什麼燈泡會時常熄滅的我，在調整了很多次熄滅的燈泡後，我忽然意識到這可能還是燈泡的問題，但是卻不是燈泡本身能不能正常運作的問題。&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;現在使用的大燈泡 /&amp;nbsp;The Light Bulbs in Use&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEghlNlW5dTL8_nqyDfqPyTtsajlKkqHm5DVBzkAJxEP7vYGx6AO7pJLAD6Bd_30dzKhFRNoWK5Uyv9BrKC9cyBhxoizMGsOTardsx_yI6S0gLC3nNp0v9UQejq2WQgw0Zm1oT6BiyDxo5O7u43DFmYk0x-AbHl3R24dKBTTBSwkypOyLt_XY2ciGA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEghlNlW5dTL8_nqyDfqPyTtsajlKkqHm5DVBzkAJxEP7vYGx6AO7pJLAD6Bd_30dzKhFRNoWK5Uyv9BrKC9cyBhxoizMGsOTardsx_yI6S0gLC3nNp0v9UQejq2WQgw0Zm1oT6BiyDxo5O7u43DFmYk0x-AbHl3R24dKBTTBSwkypOyLt_XY2ciGA&quot; title=&quot;20250214_195247.jpg&quot; alt=&quot;20250214_195247.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;目前住處使用的燈泡是TVV LED 16W白光，是一個很大的燈泡。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgkacl3SPTKYUUIOpGbqD8rqjtB2fMzKn3vccYtsXlCoUPHARoAwuzTpEVt9vehX3aMX2AS3Ku5zdnaibxextoVKydYEGq-eAr3XwEXONsV2pite95T-J2UXHThUVJjJ96HUYwhn8Z6I_MouYTjnGBra0AYJbYaxYF2fqjmct2hYkYvvCyyG1nljw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgkacl3SPTKYUUIOpGbqD8rqjtB2fMzKn3vccYtsXlCoUPHARoAwuzTpEVt9vehX3aMX2AS3Ku5zdnaibxextoVKydYEGq-eAr3XwEXONsV2pite95T-J2UXHThUVJjJ96HUYwhn8Z6I_MouYTjnGBra0AYJbYaxYF2fqjmct2hYkYvvCyyG1nljw&quot; title=&quot;20250214_195505.jpg&quot; alt=&quot;20250214_195505.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;以燈座的大小來看，這個燈泡其實蠻適合的，而且這個燈泡的亮度也比較強。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi8PIGwwM2WB6lDf8bz2JC8ffEw3SV5ClcN7AqWAYtpNSwnKpyw2uSfreqKB1HUYp9VWhUej0xmwr2WvWkyvgv3xdvgrmhlnWHpRou2gl_3wZN4p8TuuiFobWEgPNKZVG_YQkpY2eRRwJI_CZsPBlIanWj29RYZhdUU2RT1PNOuN_TSxn_YVDBXIA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi8PIGwwM2WB6lDf8bz2JC8ffEw3SV5ClcN7AqWAYtpNSwnKpyw2uSfreqKB1HUYp9VWhUej0xmwr2WvWkyvgv3xdvgrmhlnWHpRou2gl_3wZN4p8TuuiFobWEgPNKZVG_YQkpY2eRRwJI_CZsPBlIanWj29RYZhdUU2RT1PNOuN_TSxn_YVDBXIA&quot; title=&quot;20250214_182113.jpg&quot; alt=&quot;20250214_182113.jpg&quot; class=&quot;original-size&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;儘管如此，燈泡還是不時會熄滅，需要手動扭緊或扭鬆，它才能再度點亮。&lt;/p&gt;
&lt;h2&gt;以前使用的小燈泡 /&amp;nbsp;Previously Used Light Bulbs&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEijm1kpCSaxw25aVsfq5ZdmXogNSlYX7iCa2oFVn2CJqbLK7BtXV_GQMkpSU2HPvJQgLTKRQx-PQc9PN8TJ4RulAhcBf6z-zZUiP1VqE9TWET0ExLLEHlrbnrTS4jkFPooRzIvJQnWSxlE433htW6oar9b6t8Dp16alezbq3ft0mmzOUuLRBGj_Hw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEijm1kpCSaxw25aVsfq5ZdmXogNSlYX7iCa2oFVn2CJqbLK7BtXV_GQMkpSU2HPvJQgLTKRQx-PQc9PN8TJ4RulAhcBf6z-zZUiP1VqE9TWET0ExLLEHlrbnrTS4jkFPooRzIvJQnWSxlE433htW6oar9b6t8Dp16alezbq3ft0mmzOUuLRBGj_Hw&quot; title=&quot;20250214_195202.jpg&quot; alt=&quot;20250214_195202.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;不過在這之前，我們的燈泡其實不是這麼大顆，而是像這種比較小顆的省電燈泡。&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh_t20nEW6c1DKLU8yy17SoD-SFbPOFOP_XstTiQHqXh3aOTKh0vaoUCg59a0SXRTsE5DFm3AIeurKgEvgNl4TVgQ_xHF8D-OdHVXHqMl3Sc2uoQIxazZ6abzjOXmQa42iJs1yZ_fUA4_QNxeDOYU-FTtTgmIzgVrnBSxu4VOTLGVDsivURpJwYDg&quot; style=&quot;font-weight: 400; background-color: rgb(255, 255, 255);&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh_t20nEW6c1DKLU8yy17SoD-SFbPOFOP_XstTiQHqXh3aOTKh0vaoUCg59a0SXRTsE5DFm3AIeurKgEvgNl4TVgQ_xHF8D-OdHVXHqMl3Sc2uoQIxazZ6abzjOXmQa42iJs1yZ_fUA4_QNxeDOYU-FTtTgmIzgVrnBSxu4VOTLGVDsivURpJwYDg&quot; title=&quot;20250214_182049.jpg&quot; alt=&quot;20250214_182049.jpg&quot; class=&quot;original-size&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;由於它相對較小，亮度自然也沒有現在換掉的那顆大型燈泡來得亮。放在碩大的燈座裡面，感覺也沒能善用空間。&lt;/p&gt;
&lt;h2&gt;&lt;span style=&quot;font-weight: 700;&quot;&gt;問題點：橫向的燈座 / The Problem: Horizontal Lamp Holders&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;由於最近大顆圓形燈泡在熄滅之後一直無法用調整燈座來讓它點亮，我將之前使用的小顆省電燈泡裝了上去來使用。&lt;/p&gt;
&lt;p&gt;在安裝的過程中，我忽然意識到，大顆燈泡無法點亮的原因，可能是因為燈泡太大顆了，導致橫向燈座無法正常穩定固定住燈泡而接觸不良。&lt;/p&gt;
&lt;p&gt;這樣一說，忽然可以理解為什麼之前使用的都是小燈泡。因為橫向的燈座可能只能支撐這種小型燈泡而已，太大的燈泡就抓不穩了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgpDmUZYgZHdS1WGZih97Z5w3NHPpq1gAlFL3gRSVp5_5JeWreZfa7LpeFElQP-PIzC_ePLxNR3QKMQYyWpK9ort2mY8-PGS2utam7vvLaM79dO0CFl-wFfEeWyvHTZriMEW-qj1kx265sLNzjmtULDXAsoAo__K-T-vemBLfOj4IVdCtCJSd3ptA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgpDmUZYgZHdS1WGZih97Z5w3NHPpq1gAlFL3gRSVp5_5JeWreZfa7LpeFElQP-PIzC_ePLxNR3QKMQYyWpK9ort2mY8-PGS2utam7vvLaM79dO0CFl-wFfEeWyvHTZriMEW-qj1kx265sLNzjmtULDXAsoAo__K-T-vemBLfOj4IVdCtCJSd3ptA&quot; title=&quot;20250214_182037.jpg&quot; alt=&quot;20250214_182037.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;當然，這也只是我的假設而已。&lt;/p&gt;
&lt;p&gt;由於燈座固定在天花板裝潢的後面，我實在是無法靠自己找到原因。現在先換上小型燈泡，雖然亮度稍微低了一點，但也總比三天兩頭就會熄滅的大顆燈泡來的好吧。&lt;/p&gt;
&lt;p&gt;先試試看再說。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/2783722696079182227/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/06/talk-the-lightbulb-keeps-going-out-it-seems-to-still-be-a-problem-with-the-bulb.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/2783722696079182227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/2783722696079182227'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/06/talk-the-lightbulb-keeps-going-out-it-seems-to-still-be-a-problem-with-the-bulb.html' title='雜談：燈泡不時熄滅，好像還是燈泡的問題 / TALK: The Lightbulb Keeps Going Out; It Seems to Still Be a Problem With the Bulb'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEibbZAqOd__dqfEs11meKfMcC4QBvsF6tgc1unOHCbgpi30dEplFgleBRtdA5f5fSIM4EWREfjKFgrw3oRbnAMpMmZ9poTTG4X_UY6kbO6140-XcOUDX4b8OweyVefgX9DHRTUTYco4W9N7hfC37RvlyFTkUA2D78ULRm9ToHVpQeVyO_NF-4BKtw=s72-c" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-619943180504341206</id><published>2025-06-09T12:00:00.008+08:00</published><updated>2025-06-09T12:00:00.219+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AppSheet"/><category scheme="http://www.blogger.com/atom/ns#" term="Genimi"/><category scheme="http://www.blogger.com/atom/ns#" term="Metadata"/><title type='text'>不知道怎麼下後設資料？用AI幫你添增索引關鍵字  / Don&#39;t Know How to Add Metadata? Use AI to Write Keywords</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiDiyPa1N2hbPCHgpuwuVp9XllK0UgfmPnxRrgXmHJevxgOPppjkvA1BXgOkIA63JY0q9RuZPEPQB2ijPPPpFTfewP46stS4SshLHv-uxK_W6uVwygON4xrSF6FEtWV3u2pTGDUIkcS9wK-_fQY1PrIiYGLVLEw_qFCoSzFz-JWN4TjInvatDV6hA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiDiyPa1N2hbPCHgpuwuVp9XllK0UgfmPnxRrgXmHJevxgOPppjkvA1BXgOkIA63JY0q9RuZPEPQB2ijPPPpFTfewP46stS4SshLHv-uxK_W6uVwygON4xrSF6FEtWV3u2pTGDUIkcS9wK-_fQY1PrIiYGLVLEw_qFCoSzFz-JWN4TjInvatDV6hA&quot; title=&quot;2025-0121-020842.png&quot; alt=&quot;2025-0121-020842.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我開發了一個家用的倉儲管理系統來記錄家裡物品的收納位置和存量。為了讓我更容易用搜尋找到物品，我使用&lt;a href=&quot;https://gemini.google.com/&quot; target=&quot;_blank&quot;&gt;Google Gemini&lt;/a&gt;來解析物品的照片，以此來添增後設資料(metadata)，提高它被檢索找到的機會。使用下來意外地好用，但也有些限制。這篇就記錄一下這種用AI識別照片添增物品後設資料的心得吧。&lt;/p&gt;
&lt;p&gt;I developed a home inventory management system to track the location and quantity of items in my house. To make searching for items easier, I use &lt;a href=&quot;https://gemini.google.com/&quot; target=&quot;_blank&quot;&gt;Google Gemini&lt;/a&gt; to analyze photos of the items, adding metadata to increase their searchability. It&#39;s surprisingly effective, but it also has some limitations. This post documents my experience using AI image recognition to enhance item metadata.&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;物品管理APP /&amp;nbsp;Inventory Management App&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhQHE69iIrzg6gHuHdduTsV3CxKzcd_f-0W4baYosO7Eh14Rxjqmh_0TdTYKtbpvGJH6bvMhfnwKh7cGVMfkIegsxiSJQfFRerYflYj0LzMD1PFBgE9rvDm1C_ybg89Bznc8wPQ-hktckOftFHfY6oeI1AYXGrJfWiORwwgKO98mZLPeT-QJ_Pssg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhQHE69iIrzg6gHuHdduTsV3CxKzcd_f-0W4baYosO7Eh14Rxjqmh_0TdTYKtbpvGJH6bvMhfnwKh7cGVMfkIegsxiSJQfFRerYflYj0LzMD1PFBgE9rvDm1C_ybg89Bznc8wPQ-hktckOftFHfY6oeI1AYXGrJfWiORwwgKO98mZLPeT-QJ_Pssg&quot; title=&quot;image3.png&quot; alt=&quot;image3.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這各物品管理的APP是我用AppSheet創建的應用程式，只供我們家私人共用，不開放其他人取用。它可以用網頁或&lt;a href=&quot;https://play.google.com/store/apps/details?id=x1Trackmaster.x1Trackmaster&quot; target=&quot;_blank&quot;&gt;AppSheet的APP&lt;/a&gt;開啟。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhCiuMDUzrvfBwa-fYVoWsgrz0JG-mnNhapuBPKQwoYgMk2fljRbEhEmDzOMwWACCq8Ip2zXNe6RSlmoHnv4BgynPl_swgRD3fLsuFQbsGYR3VCOz-TmR_JYaVQ1_drLHh4Isgjd3ulLzCihUfUE7nodVVDw3C4Fqe_n1saLus-kLjYXAbE753gAw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhCiuMDUzrvfBwa-fYVoWsgrz0JG-mnNhapuBPKQwoYgMk2fljRbEhEmDzOMwWACCq8Ip2zXNe6RSlmoHnv4BgynPl_swgRD3fLsuFQbsGYR3VCOz-TmR_JYaVQ1_drLHh4Isgjd3ulLzCihUfUE7nodVVDw3C4Fqe_n1saLus-kLjYXAbE753gAw&quot; title=&quot;image4.png&quot; alt=&quot;image4.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;AppSheet可以讓我們用關鍵字檢索物品的後設資料。例如我搜尋「剪刀」，可供檢索的後設資料裡面只要有包含「剪刀」兩個字的物品，通通都可以檢索出來。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiRgmelcC6y8xrLpLziXKO1Y6TOsmT1jAGp3-aMcR_wF1djfrhqmoQh3ArbZun5IJUYnNxLf9AvqEjt5wkO-VVZgV7uCBu80SA8Q-tMS2d3KPnudpPonDVvPMSFjQc5YUlBgzWPyTUzgwslmPTXuhL33MsjNL0Wjv6EnGdyLGVRBV4OCV5IBJBeAg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiRgmelcC6y8xrLpLziXKO1Y6TOsmT1jAGp3-aMcR_wF1djfrhqmoQh3ArbZun5IJUYnNxLf9AvqEjt5wkO-VVZgV7uCBu80SA8Q-tMS2d3KPnudpPonDVvPMSFjQc5YUlBgzWPyTUzgwslmPTXuhL33MsjNL0Wjv6EnGdyLGVRBV4OCV5IBJBeAg&quot; title=&quot;2025-0121-003203.png&quot; alt=&quot;2025-0121-003203.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然而大多時候，我們找物品用的名稱，通常都跟記錄在後設資料的名稱不一樣。像上圖的眼鏡，你會怎麼稱呼它呢？我是把它登記為「迷因墨鏡」啦。&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjZLK99ClEKLN2I_tAJuaAvAWrcG3SsV1iJY9ajeutyyYW24MXKNae23vhzAp9sh6xgGC3pOstAgZXXvd_giUtmR6ZG6HXv5UmyxReOnljGIewxq64B3aCOE7AmCPF5GNCzaoVBPMvyNNS9euseHfQ8wasHQ_odAk7umOcgoPSp4xJkwcxIxX5kuw&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjZLK99ClEKLN2I_tAJuaAvAWrcG3SsV1iJY9ajeutyyYW24MXKNae23vhzAp9sh6xgGC3pOstAgZXXvd_giUtmR6ZG6HXv5UmyxReOnljGIewxq64B3aCOE7AmCPF5GNCzaoVBPMvyNNS9euseHfQ8wasHQ_odAk7umOcgoPSp4xJkwcxIxX5kuw&quot; title=&quot;image2.png&quot; alt=&quot;image2.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;但對其他人來說可能不是如此。別人可能看眼鏡上的光影像是「像素」，所以用「像素」來檢索。這時候居然能夠找到這個眼鏡，為什麼呢？&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhyffyp7Q8YefdltBXQHfyPjR4NzeOzUZPR32nZvFeagAc7JZvQtK6prVelErKkZQum2uwJJwXmlBE2lw-Z3gVLBWat7SgtOquOGiMbalvzoP6qhVipG7m1XiuIX72QCtZC92ATiywolrpNF0mhAqXj00WR-1B-HIgEVn6je4O6OADgaKKAp_0ACw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhyffyp7Q8YefdltBXQHfyPjR4NzeOzUZPR32nZvFeagAc7JZvQtK6prVelErKkZQum2uwJJwXmlBE2lw-Z3gVLBWat7SgtOquOGiMbalvzoP6qhVipG7m1XiuIX72QCtZC92ATiywolrpNF0mhAqXj00WR-1B-HIgEVn6je4O6OADgaKKAp_0ACw&quot; title=&quot;image1.png&quot; alt=&quot;image1.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;因為背後AI幫它增加了另一個名稱「像素墨鏡」，因此這樣就能夠順利把它找出來了。太神奇了，AI到底是怎麽做的呢？&lt;br&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;系統架構與原理 /&amp;nbsp;System Architecture and Principles&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjqoGh7mkEjMQ6Jozj0xhw_Q8REDV7k53eYOaFsx-scO4zHThmuG_7nzTf9eXAlUDX5wFPRRP80oYHGcsC5REkoy3XKMuU_MgisEzW6e_nPOai_5xvRoU_V9PIlyFYV2WCTF0M2pGCURDWZVyOkwtpLj1-ejNLEihTI8LSUM6jYlNZ7exVdkybWbg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjqoGh7mkEjMQ6Jozj0xhw_Q8REDV7k53eYOaFsx-scO4zHThmuG_7nzTf9eXAlUDX5wFPRRP80oYHGcsC5REkoy3XKMuU_MgisEzW6e_nPOai_5xvRoU_V9PIlyFYV2WCTF0M2pGCURDWZVyOkwtpLj1-ejNLEihTI8LSUM6jYlNZ7exVdkybWbg&quot; title=&quot;20250101_BLOG_Gemini_.note-crop-cropped.png&quot; alt=&quot;20250101_BLOG_Gemini_.note-crop-cropped.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上圖是一般使用AppSheet的時候的架構圖。我們使用者用手機的APP、或是電腦的網頁來上傳物品的照片，並在表單填上簡單地敘述。接著AppSheet應用程式會跟Google Sheet連接，把相關資訊存入Google Sheet，檔案則是會擺在Google Sheet旁邊的Google Drive資料夾底下。&lt;/p&gt;
&lt;p&gt;但是在這個架構下，我們必須完整輸入描述物品的後設資料，不然搜尋的時候就找不出來。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhRK8fQqQ3D4NFmcxTBUZWduDiKjpRXk3zb1pFIhy3IQdqO9fWJQD3nvtm46TOuMSZ4HjKwKNrEcFEjWdnPR8KkvrmARPvwnS3edKqyjAvw9z7XBnxR0O9V8gI3OAUi1OJYk2MQ9PS0bD1cWYB52N41NDJzS3CD3gbKNB6V7KU61RHqml-XDT-k1w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhRK8fQqQ3D4NFmcxTBUZWduDiKjpRXk3zb1pFIhy3IQdqO9fWJQD3nvtm46TOuMSZ4HjKwKNrEcFEjWdnPR8KkvrmARPvwnS3edKqyjAvw9z7XBnxR0O9V8gI3OAUi1OJYk2MQ9PS0bD1cWYB52N41NDJzS3CD3gbKNB6V7KU61RHqml-XDT-k1w&quot; title=&quot;20250101_BLOG_Gemini_.notae-crop-cropped.png&quot; alt=&quot;20250101_BLOG_Gemini_.notae-crop-cropped.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接下來我們把AI的部分加上去。除了完整個系統架構會變成如下：&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;使用者輸入物品照片跟簡單描述。&lt;/li&gt;
  &lt;li&gt;AppSheet應用程式先把基本資訊保存到Google Sheet中。&lt;/li&gt;
  &lt;li&gt;AppSheet進入API排隊機制，決定呼叫Gemini的延後時間。&lt;/li&gt;
  &lt;li&gt;AppSheet將照片跟描述傳送給Gemini呼叫機制。&lt;/li&gt;
  &lt;li&gt;Gemini呼叫機制將資料重整與打包、設定必要的提示詞後，執行呼叫Gemini API。&lt;/li&gt;
  &lt;li&gt;Gemini呼叫機制從Gemini取得結果之後，再回傳給AppSheet。&lt;/li&gt;
  &lt;li&gt;AppSheet將Gemini產生的後設資料保存到Google Sheet。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgINzjv58YibK3Zqz7VSyis1k-aqZRiugknsnHSbhkND9v91jhg_kCEtgCZmKS8TsMtxKw0qqhTbsRiQC52cIoKO84o6nhJUQO0AWekROPOjt4qUJ7aH01csFpUtmjC70cJkeh4z33wca41uuVFYYf2lZhZ3N3UrEUS-Dd4aZI1JOveTlrQvg3HIg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgINzjv58YibK3Zqz7VSyis1k-aqZRiugknsnHSbhkND9v91jhg_kCEtgCZmKS8TsMtxKw0qqhTbsRiQC52cIoKO84o6nhJUQO0AWekROPOjt4qUJ7aH01csFpUtmjC70cJkeh4z33wca41uuVFYYf2lZhZ3N3UrEUS-Dd4aZI1JOveTlrQvg3HIg&quot; title=&quot;2025-0121-010651.png&quot; alt=&quot;2025-0121-010651.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;AppSheet的Bots功能能讓我們在資料有所更新的時候執行RESTful呼叫。呼叫時可以將AppSheet的資料，甚至是照片檔案，用POST的方式傳送到Apps Script。&lt;br&gt;&lt;/p&gt;
&lt;p&gt;然而，實際上我們不能直接用AppSheet呼叫Gemini的RESTful API。這是因為AppSheet會將符合需要呼叫的RESTful API的資料，&lt;span style=&quot;color: rgb(255, 0, 0); text-decoration-line: underline; font-weight: bold;&quot;&gt;全部同時發出請求。&lt;/span&gt;如果我更新10筆資料，那麼在跟App Sheet同步的時候，App Sheet會同時發出10筆請求。如果我們直接將這些請求送給Gemini，那一下子就會因為短期內過多請求而觸發Rate Limitation而被停用。&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg_SuLWCUmPh6KuZH9RrP_0ZamFv6Q3gib8ZbQfOtVGyU34hWxIIFxfqilIl5hLlXxGt5O2u3f4dSiyPQLtlBFRaLk0JoduKn65KYCt3WFd6mkmHLyYmAMvINsqIs1U-oDmdyZaJ3be_GkBDet5u2e5ES7ubCz7E3OI8IjKBOZkgWKLiaHD_vV6Hw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg_SuLWCUmPh6KuZH9RrP_0ZamFv6Q3gib8ZbQfOtVGyU34hWxIIFxfqilIl5hLlXxGt5O2u3f4dSiyPQLtlBFRaLk0JoduKn65KYCt3WFd6mkmHLyYmAMvINsqIs1U-oDmdyZaJ3be_GkBDet5u2e5ES7ubCz7E3OI8IjKBOZkgWKLiaHD_vV6Hw&quot; title=&quot;2025-0121-010846.png&quot; alt=&quot;2025-0121-010846.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;因此，我在AppSheet真正呼叫Gemini的開頭加上了一個API排隊機制跟延遲執行的功能。如果現在請求很多，那AppSheet會收到一個排隊號碼，並依照排隊號碼的數字延後執行的時間。App Sheet的延遲最多可以&lt;a href=&quot;https://support.google.com/appsheet/answer/11828262?hl=en&quot; target=&quot;_blank&quot;&gt;延後到30天&lt;/a&gt;，之後再執行後續的動作。在記錄資料的當下，我並沒有急著需要檢索的情況，所以可以讓App Sheet延後詢問Gemini的請求。&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjzwXxX0srZe5hjSx5WNcJb58gs_nEYI0pqVr2Gf6xQkw81wDT_fE7cNoti9nCyYonreilx5Jv90cGgBGMeqK9mLr_mFGRi2LfVSRjuRPnK9UIlTWJxrkFcXxmc3mdQ018IGNfHaev5w7PoX_2-nS7RCwvl7RRp2tluC56UjBTjKzV2T7ihMyRfZg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjzwXxX0srZe5hjSx5WNcJb58gs_nEYI0pqVr2Gf6xQkw81wDT_fE7cNoti9nCyYonreilx5Jv90cGgBGMeqK9mLr_mFGRi2LfVSRjuRPnK9UIlTWJxrkFcXxmc3mdQ018IGNfHaev5w7PoX_2-nS7RCwvl7RRp2tluC56UjBTjKzV2T7ihMyRfZg&quot; title=&quot;2025-0121-011303.png&quot; alt=&quot;2025-0121-011303.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;API排隊機制是用Google Sheet跟Apps Script撰寫而成，本身也可以用RESTful API的形式呼叫。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgd8WFogXMTfKICEbbUe7g_fDACOWIjDXXj3XCPfV9SgtYIO8zm9diAn1oE5EG_wD5Nj-lE4dmcZoNsI3lrKBCVE-4FUiozQkPdVFg_Z9M7jWrwDOArOo7d-S65OCMg0ZSEGFk3rV3twbKcUo491M8DyaxOdxjCfOEMXGR_FmiqUjQruucJhk-Q_Q&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgd8WFogXMTfKICEbbUe7g_fDACOWIjDXXj3XCPfV9SgtYIO8zm9diAn1oE5EG_wD5Nj-lE4dmcZoNsI3lrKBCVE-4FUiozQkPdVFg_Z9M7jWrwDOArOo7d-S65OCMg0ZSEGFk3rV3twbKcUo491M8DyaxOdxjCfOEMXGR_FmiqUjQruucJhk-Q_Q&quot; title=&quot;2025-0121-011447.png&quot; alt=&quot;2025-0121-011447.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;後面請Gemini分析圖片跟組成提示詞的部分，也是使用Apps Script撰寫。其中呼叫Gemini的方式可以用Apps Script內建的UrlFetchApp來進行：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;const&amp;nbsp;url&amp;nbsp;=&amp;nbsp;apiUrl&amp;nbsp;+&quot;?key=&quot;&amp;nbsp;+&amp;nbsp;key&lt;br&gt;let&amp;nbsp;result&amp;nbsp;=&amp;nbsp;&amp;nbsp;UrlFetchApp.fetch(url,options)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;options參數必須包含提示詞跟圖片的Base64資訊，構成如下：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;var&amp;nbsp;headers&amp;nbsp;=&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Content-Type&quot;:&amp;nbsp;&quot;application/json&quot;&lt;br&gt;};&lt;br&gt;&lt;br&gt;var&amp;nbsp;requestBody&amp;nbsp;=&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;contents&quot;:&amp;nbsp;[&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;parts&quot;:&amp;nbsp;[&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;text&quot;:&amp;nbsp;getSystemPrompt(title)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;inline_data&#39;:{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;mime_type&#39;:&amp;nbsp;&#39;image/jpeg&#39;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;data&#39;:&amp;nbsp;base64Image&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;]&lt;br&gt;};&lt;br&gt;var&amp;nbsp;options&amp;nbsp;=&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;method&quot;:&amp;nbsp;&quot;POST&quot;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;headers&quot;:&amp;nbsp;headers,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;payload&quot;:&amp;nbsp;JSON.stringify(requestBody)&lt;br&gt;};&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;是說上面程式碼的部分我是用inline_data來上傳圖片資訊，不過現在似乎還有&lt;a href=&quot;https://github.com/tanaikech/GeminiWithFiles&quot; target=&quot;_blank&quot; style=&quot;font-weight: 400; background-color: rgb(255, 255, 255);&quot;&gt;GeminiWithFiles&lt;/a&gt;的功能可以使用。未來有需要再來用吧。&lt;br&gt;&lt;/p&gt;
&lt;p&gt;在getSystemPrompt(title)裡，我除了輸入物品的基本敘述之外，也請Gemini以商店老闆的角度，描述商品品項以及分類。提示詞如下：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;`你網路購物平臺的商品管理者。你的工作是根據圖片來填寫三個欄位：&lt;br&gt;&lt;br&gt;1.&amp;nbsp;商品名稱：為這張圖片訂定一個商品名稱。${titleDescription}如果有實際上的商品，請用此商品作為名稱。&lt;br&gt;2.&amp;nbsp;品項：您描述它的品項。例如顏色、材質、大小等。如果有多種品項，請用「,&amp;nbsp;」隔開。&lt;br&gt;3.&amp;nbsp;分類：列出架位分類名稱。如果有上層與下層分類，中間請用「/」隔開。&lt;br&gt;&lt;br&gt;最後用JSON格式輸出。&lt;br&gt;&lt;br&gt;舉例：&lt;br&gt;\`\`\`\`&lt;br&gt;{&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&quot;商品名稱&quot;:&amp;nbsp;&quot;可微波矽膠摺疊保鮮盒&quot;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&quot;品項&quot;:&amp;nbsp;&quot;綠色,&amp;nbsp;中型&quot;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&quot;分類&quot;:&amp;nbsp;&quot;居家生活/餐廚用具&quot;&lt;br&gt;}&lt;br&gt;\`\`\`\`&lt;br&gt;&lt;br&gt;只要給我「商品名稱」、「品項」、「分類」訊息即可，不要列出其他事項。請用繁體中文或是英文描述。請使用臺灣人習慣的用詞。&lt;br&gt;&lt;br&gt;根據以下這張圖片。請列出「商品名稱」、「品項」、「分類」。`&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不過儘管要求Gemini產生JSON格式，但它有時候仍不會產生完整的JSON。Apps Script有部分程式碼是在修正JSON格式錯誤的情況。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;成果展示 /&amp;nbsp;Results Demonstration&lt;/h2&gt;
&lt;p&gt;接下來就讓我們來看看Gemini看待圖片會給出什麼建議吧。&lt;/p&gt;
&lt;h3&gt;能夠識別圖片的文字 /&amp;nbsp;Recognizing Text in Photographs&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh3bFzEXPSbVZ_J2FvZtDEd-252Nzv7cG5ij2bh_EmmSZ08k2pY9WCBmWxW5KidWNOuEjDsBA2f4udvGCd1EEL-XF38IghnTvo3zrgg4YLTFwsbj0qikQnTpUNFs4t7EuT3yb5OqtuCeR4a-10KawRnig2z_NOtmtPH53qMnTpk0exJduZh_VyQvg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh3bFzEXPSbVZ_J2FvZtDEd-252Nzv7cG5ij2bh_EmmSZ08k2pY9WCBmWxW5KidWNOuEjDsBA2f4udvGCd1EEL-XF38IghnTvo3zrgg4YLTFwsbj0qikQnTpUNFs4t7EuT3yb5OqtuCeR4a-10KawRnig2z_NOtmtPH53qMnTpk0exJduZh_VyQvg&quot; title=&quot;2025-0121-012504.png&quot; alt=&quot;2025-0121-012504.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我給Gemini的資訊是「口紅膠」，而Gemini產生的建議是：&lt;/p&gt;
&lt;blockquote&gt;商品名稱: Pentel 膠水&lt;br&gt;品項: 旋轉式, 固體膠&lt;br&gt;分類: 文具/膠類&lt;/blockquote&gt;
&lt;p&gt;口紅膠上的「Pentel」文字被正確識別出來了。Gemini好厲害。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjIlWNsECuSaml8x-LFt9qb9w7HHJkG-tXl8hhLzLetsTlHwgqu9INd0ejv3BK7BkSAYWt25y0SFs4MkY1D5aRpw7SiPw2zNe1EqTPkgHPGPf-Z91C00NUboPJ7726oekvjrvaBcSGJ09PZIsRNn5ZkZyU5IOl59iHLg3e5jCsziYqPwU3pbYe-Uw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjIlWNsECuSaml8x-LFt9qb9w7HHJkG-tXl8hhLzLetsTlHwgqu9INd0ejv3BK7BkSAYWt25y0SFs4MkY1D5aRpw7SiPw2zNe1EqTPkgHPGPf-Z91C00NUboPJ7726oekvjrvaBcSGJ09PZIsRNn5ZkZyU5IOl59iHLg3e5jCsziYqPwU3pbYe-Uw&quot; title=&quot;2025-0121-013050.png&quot; alt=&quot;2025-0121-013050.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我給Gemini的資訊是「網片連接器」，而Gemini產生的建議是：&lt;/p&gt;
&lt;blockquote&gt;商品名稱: 鐵網片專用連接器&lt;br&gt;品項: 白色, 8入&lt;br&gt;分類: 居家生活/收納用品&lt;/blockquote&gt;
&lt;p&gt;它有看出包裝上的「8個」資訊。雖然這對搜尋比較沒有幫助就是了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjBBREPL50fUKyDqRNjonxVay2JQHABIC_M-gPRpbIWrB6AMaaC1RHQpZrvd-ukWUk5FJTB29r30nqnD82QpR77W6MrX_4bXWkT_N2s9v0HraerdIl9QusaPumRKLO7wrI2BuUTLMptHOho1wUplZ3Kv0aFyhCqUq2a84pO9BfKZrZ2NZfVID271A&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjBBREPL50fUKyDqRNjonxVay2JQHABIC_M-gPRpbIWrB6AMaaC1RHQpZrvd-ukWUk5FJTB29r30nqnD82QpR77W6MrX_4bXWkT_N2s9v0HraerdIl9QusaPumRKLO7wrI2BuUTLMptHOho1wUplZ3Kv0aFyhCqUq2a84pO9BfKZrZ2NZfVID271A&quot; title=&quot;2025-0121-013336.png&quot; alt=&quot;2025-0121-013336.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我給Gemini的資訊是「電源延長線 旋轉開關 2P母*4 磁吸」，而Gemini產生的建議是：&lt;/p&gt;
&lt;blockquote&gt;商品名稱: eleoon 電源延長線&lt;br&gt;品項: 白色, 4孔&lt;br&gt;分類: 居家生活/3C家電/電源延長線&lt;/blockquote&gt;
&lt;p&gt;其實延長線上面的文字是「Elevon」，Gemini識別錯誤了，可惜。&lt;/p&gt;
&lt;h3&gt;靠照片跟物品描述產生的正確名稱 /&amp;nbsp;The Correct Name Generated Based on Photos and Item Descriptions&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhYmtaCS7AL0gKCRLYpWwy5bQa6lRu3ffrYJMb4SAPV8omIfRa6dZIelUdWeP6No5usDhTQ66bmwAgyVooTuFrg-3YQzBspkZamlRuGhuMTk9m_smpUey7hO7INC1rSx7DlVASows5sALkkhgzDC1DNMT8YlG9QGvC3RMVkyfrjkWt1TxLL91ibww&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhYmtaCS7AL0gKCRLYpWwy5bQa6lRu3ffrYJMb4SAPV8omIfRa6dZIelUdWeP6No5usDhTQ66bmwAgyVooTuFrg-3YQzBspkZamlRuGhuMTk9m_smpUey7hO7INC1rSx7DlVASows5sALkkhgzDC1DNMT8YlG9QGvC3RMVkyfrjkWt1TxLL91ibww&quot; title=&quot;2025-0121-013602.png&quot; alt=&quot;2025-0121-013602.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;你知道上面這個東西叫做什麼名字嗎？&lt;/p&gt;
&lt;p&gt;我給Gemini的資訊是「水管轉接頭 四分外 快速內」，而Gemini產生的建議是：&lt;br&gt;&lt;/p&gt;
&lt;blockquote&gt;商品名稱: 快接式水管接頭&lt;br&gt;品項: 白色&lt;br&gt;分類: 居家生活/五金材料/水管/水管接頭&lt;/blockquote&gt;
&lt;p&gt;沒有錯，正確名稱是「快接式水管接頭」。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgbVIVlWWsVAjf5kMMMniWP2zTgo4F0IvRa0nyBYh0QKX0QCWDdVJHqmgsM_r7Kd9LyzkB7FrvAX0TZV_8Q2KlBA1FWEPe3j1vcHaUn4GWTqisMgLS9v6IZwJj7HNpvoq9X6sy4aPw8sCA1v4tdGA4oecex5VJz_C2W_kfyggq7j04VL6TsK3oRug&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgbVIVlWWsVAjf5kMMMniWP2zTgo4F0IvRa0nyBYh0QKX0QCWDdVJHqmgsM_r7Kd9LyzkB7FrvAX0TZV_8Q2KlBA1FWEPe3j1vcHaUn4GWTqisMgLS9v6IZwJj7HNpvoq9X6sy4aPw8sCA1v4tdGA4oecex5VJz_C2W_kfyggq7j04VL6TsK3oRug&quot; title=&quot;2025-0121-013722.png&quot; alt=&quot;2025-0121-013722.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這包在塑膠袋裡面的一堆東西是什麼呢？&lt;/p&gt;
&lt;p&gt;我給Gemini的資訊是「浴簾 勾」，而Gemini產生的建議是：&lt;/p&gt;
&lt;blockquote&gt;商品名稱: 浴簾掛環&lt;br&gt;品項: 白色&lt;br&gt;分類: 居家生活/浴室用品&lt;/blockquote&gt;
&lt;p&gt;對，其實它不是「勾」，應該說「掛環」才對。Gemini老師我錯了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhfHgJoiiMeQks4IllLZhjJlFpVEt8TPsFAQDtvZ4Lcj0HDVULc2nJuK3NQj8Y6PxQ_d5_UaCicK7uzw5BYR4FdPv9FcPKayRvYMcfNgvxxkuhxRMhmBRVsML6JAswjI85yf4wYapwi0BmKSeWCLfEKDW6tl-BwlGwomC13go0N1Euo4DBFHnxKgQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhfHgJoiiMeQks4IllLZhjJlFpVEt8TPsFAQDtvZ4Lcj0HDVULc2nJuK3NQj8Y6PxQ_d5_UaCicK7uzw5BYR4FdPv9FcPKayRvYMcfNgvxxkuhxRMhmBRVsML6JAswjI85yf4wYapwi0BmKSeWCLfEKDW6tl-BwlGwomC13go0N1Euo4DBFHnxKgQ&quot; title=&quot;2025-0121-014015.png&quot; alt=&quot;2025-0121-014015.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這個...要怎麼稱呼它呢？&lt;/p&gt;
&lt;p&gt;我給Gemini的資訊是「掛籃 網格」，而Gemini產生的建議是：&lt;/p&gt;
&lt;blockquote&gt;商品名稱: 網狀晾衣袋&lt;br&gt;品項: 綠色&lt;br&gt;分類: 居家生活&lt;/blockquote&gt;
&lt;p&gt;哦哦對，網狀！而且Gemini也幫我把綠色標示上去了。&lt;/p&gt;
&lt;h3&gt;描述錯誤的例子 /&amp;nbsp;Examples of Misrepresentation&lt;/h3&gt;
&lt;p&gt;當然，Gemini看走眼的情況還是很常見。讓我們來看看那些東西會讓Gemini看錯。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg9-W8MAEaPmCm2oqGW70YMJenZn2ZIPLT4UO8XiQibQVPcbtLMAKs9p2UA4ewRw7FDyWuhqMAo1lflBJ3O8q7Om62_Y6upGxQfTRAJAX0JyGlNEMzgcE_Rdu12ghDvRJff6Yyw8ysthx2GE-IHDAwCgOwoa-F2tmhoPMXrbep4yVIE-W4Vf-9xhA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg9-W8MAEaPmCm2oqGW70YMJenZn2ZIPLT4UO8XiQibQVPcbtLMAKs9p2UA4ewRw7FDyWuhqMAo1lflBJ3O8q7Om62_Y6upGxQfTRAJAX0JyGlNEMzgcE_Rdu12ghDvRJff6Yyw8ysthx2GE-IHDAwCgOwoa-F2tmhoPMXrbep4yVIE-W4Vf-9xhA&quot; title=&quot;2025-0121-013920.png&quot; alt=&quot;2025-0121-013920.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我給Gemini的資訊是「旋轉衣架」，而Gemini產生的建議是：&lt;/p&gt;
&lt;blockquote&gt;商品名稱: 圍巾環形掛架&lt;br&gt;品項: 不鏽鋼&lt;br&gt;分類: 居家生活/收納整理&lt;/blockquote&gt;
&lt;p&gt;它其實是拿來掛被子或大件衣物的，不是拿來掛圍巾的喔。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi-jkW3nxef6hKxrTvcC5gTnyVtc5x_cckfEwlBt4gC1Zzxwx4qeSFoT4AG7lTy-itsK72T4AGp6ndswO9RhT491gJJiAPDf5o7LBqQ2EB93j9A0iycj7P3ETgTdxy1BqjaVjh6CVWAKH6sNZeh_xD2yn5-YMmqLNHZTXd9TJwdECNrQcV8Wky5fw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi-jkW3nxef6hKxrTvcC5gTnyVtc5x_cckfEwlBt4gC1Zzxwx4qeSFoT4AG7lTy-itsK72T4AGp6ndswO9RhT491gJJiAPDf5o7LBqQ2EB93j9A0iycj7P3ETgTdxy1BqjaVjh6CVWAKH6sNZeh_xD2yn5-YMmqLNHZTXd9TJwdECNrQcV8Wky5fw&quot; title=&quot;2025-0121-014233.png&quot; alt=&quot;2025-0121-014233.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我給Gemini的資訊是「SIGG瑞士西格隨身瓶 使用說明書」，而Gemini產生的建議是：&lt;/p&gt;
&lt;blockquote&gt;商品名稱: 瑞士國鐵局 使用說明書&lt;br&gt;品項: 紙質&lt;br&gt;分類: 交通工具/週邊&lt;/blockquote&gt;
&lt;p&gt;跟瑞士國鐵局好像差的有點多，真是令人哭笑不得。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEitnUTByGyRiiEebI-SdLx7916yk9NRxL4KFhaGRQLE0oOU7kkw7wZO-gDnVtwmfe7AWDiU4FzrZ6dsOhkiJG8_IN_q2SPmGeYKDhN_JzQUqWDzfgX7V0g0Fc8uzoTJ-e8MEaONhtp19HlmvCONqCzoVg5rqr3CFjYrZ4_CY27tfAxXffcB6jsSwA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEitnUTByGyRiiEebI-SdLx7916yk9NRxL4KFhaGRQLE0oOU7kkw7wZO-gDnVtwmfe7AWDiU4FzrZ6dsOhkiJG8_IN_q2SPmGeYKDhN_JzQUqWDzfgX7V0g0Fc8uzoTJ-e8MEaONhtp19HlmvCONqCzoVg5rqr3CFjYrZ4_CY27tfAxXffcB6jsSwA&quot; title=&quot;2025-0121-014451.png&quot; alt=&quot;2025-0121-014451.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我給Gemini的資訊是「洗鼻器 舊型」，而Gemini產生的建議是：&lt;/p&gt;
&lt;blockquote&gt;商品名稱: 塑膠水管接頭&lt;br&gt;品項: 綠色, 多種尺寸&lt;br&gt;分類: 居家生活/五金材料/水管管件&lt;/blockquote&gt;
&lt;p&gt;說是塑膠水管...好像也沒錯啦。但我都跟Gemini說這是洗鼻器了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhkVpPHxvheIw4ls0SWWew05G1-WkGede-FQmF-RguK0agZeCORpgzmbdgpdgLGaU3BztGVJ6PJzWld4UN6ZewTyGIeab1qHHeuHuOSARzHv9bJDtNNJy0o9gMdUJyN6GbnaqhscUOs0za0a1X9un188oPvZEgMSRJ_xBOKy1XEtK8VoPUNNLNi0w&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhkVpPHxvheIw4ls0SWWew05G1-WkGede-FQmF-RguK0agZeCORpgzmbdgpdgLGaU3BztGVJ6PJzWld4UN6ZewTyGIeab1qHHeuHuOSARzHv9bJDtNNJy0o9gMdUJyN6GbnaqhscUOs0za0a1X9un188oPvZEgMSRJ_xBOKy1XEtK8VoPUNNLNi0w&quot; title=&quot;2025-0121-014653.png&quot; alt=&quot;2025-0121-014653.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我給Gemini的資訊是「電源延長線 甜甜圈」，而Gemini產生的建議是：&lt;/p&gt;
&lt;blockquote&gt;商品名稱: 電話線捲線器&lt;br&gt;品項: 白色&lt;br&gt;分類: 3C家電/電話周邊&lt;/blockquote&gt;
&lt;p&gt;就說是電源延長線了呀。&lt;/p&gt;
&lt;h3&gt;個人資訊拒絕識別 /&amp;nbsp;Refusal to Identify Personal Information&lt;/h3&gt;
&lt;p&gt;最後我們要注意的是，Gemini會拒絕識別可能含有個人資訊的照片。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgsR-JIivDVaRs01N_80FP4416GuycexuEpQtUaXHT6g6qTFWjUpxQ0ehSv-Z0Pj9abdGSWTwTXC3k-pZoIHf2-yhAasDZOA3U8-3levfq8tnvTawIQsjbOEOPehSmCWMPE56yq5wJOpU1YB-M1OcwTaoDQZM-piuHk61G5rSJN-atWNL61nOQsMw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgsR-JIivDVaRs01N_80FP4416GuycexuEpQtUaXHT6g6qTFWjUpxQ0ehSv-Z0Pj9abdGSWTwTXC3k-pZoIHf2-yhAasDZOA3U8-3levfq8tnvTawIQsjbOEOPehSmCWMPE56yq5wJOpU1YB-M1OcwTaoDQZM-piuHk61G5rSJN-atWNL61nOQsMw&quot; title=&quot;unnamed.jpg&quot; alt=&quot;unnamed.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這個藥袋上包含了病狀跟醫師的名字，被Gemini拒絕識別。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgjMtJ_x_X4vjoGZ7OgGjwpiqEQ_1I2TLIjNb5zV-YTWY0sbLI7uHcsDxq8Pr-lIBQt64kEegLXsBgqo6klkN5rkczrwTr-7O9BzUzaNASCaKER6bb8IGfTLWfHiUgDh4YUqnYQb3Ajt8RtGbMGoKupzp0n_YmSeNVSCh-GTWKffuWMi-RysDtTuA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgjMtJ_x_X4vjoGZ7OgGjwpiqEQ_1I2TLIjNb5zV-YTWY0sbLI7uHcsDxq8Pr-lIBQt64kEegLXsBgqo6klkN5rkczrwTr-7O9BzUzaNASCaKER6bb8IGfTLWfHiUgDh4YUqnYQb3Ajt8RtGbMGoKupzp0n_YmSeNVSCh-GTWKffuWMi-RysDtTuA&quot; title=&quot;2025-0121-015128.png&quot; alt=&quot;2025-0121-015128.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這是一個普通的痠痛乳膏，但Gemini對於這種藥品類的照片，大多也都會拒絕識別。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiv4og2OTXQp_LAbMzdOngcTJcrCQg2peYdsoJB1GrW-kuE4pF3RkCndqQ2M_ZtZXeN5hc56xwa-V112_woMltwj7WTqCJSo5INw0veZJB2tM7fyPdOmsyVKXZUuh6GvFSs9dDACIH_9QqY5XYV0VT9DdGQGsPeeii0YmZpPiJy5jkgCqeuEtHABw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiv4og2OTXQp_LAbMzdOngcTJcrCQg2peYdsoJB1GrW-kuE4pF3RkCndqQ2M_ZtZXeN5hc56xwa-V112_woMltwj7WTqCJSo5INw0veZJB2tM7fyPdOmsyVKXZUuh6GvFSs9dDACIH_9QqY5XYV0VT9DdGQGsPeeii0YmZpPiJy5jkgCqeuEtHABw&quot; title=&quot;2025-0121-015044.png&quot; alt=&quot;2025-0121-015044.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這是一把熱溶膠槍，但是Gemini似乎覺得這是危險物品，因此也拒絕識別。&lt;/p&gt;
&lt;p&gt;Gemini拒絕識別的時候，API會傳回錯誤資訊，但它只會跟你說「SAFETY」的原因拒絕分析，而不會明確說明原因。我在上面的Gemini呼叫機制有部分的程式碼也在處理這種情況。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;結語 / Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiLKpNcGnWEL9zsOSv-LiOrILLQlr6mVO9TF6Y5ckS1hsMztDImw6swirPJA_5vcoiDKU0Gt99f14ur27zVb5M7Lh-LRKi06X4VC2PD8tm2wss2EyIUTvLTZhpq8oMl-vfuMrC0CgwVjF0dIbL_IrdgLpgmnL9AkL2OTMlGNSJSjH-GJzk2ey9Tyg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiLKpNcGnWEL9zsOSv-LiOrILLQlr6mVO9TF6Y5ckS1hsMztDImw6swirPJA_5vcoiDKU0Gt99f14ur27zVb5M7Lh-LRKi06X4VC2PD8tm2wss2EyIUTvLTZhpq8oMl-vfuMrC0CgwVjF0dIbL_IrdgLpgmnL9AkL2OTMlGNSJSjH-GJzk2ey9Tyg&quot; title=&quot;2025-0121-015432.png&quot; alt=&quot;2025-0121-015432.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這篇描述了我是如何使用Gemini來添增描述家裡物品的後設資料。Gemini為部分物品添增了有用的額外資訊，這能讓搜尋時更容易被找到。但也有物品Gemini會描述錯誤，而包含個人資訊的物品更是會被Gemini拒絕。&lt;/p&gt;
&lt;p&gt;儘管如此，有了Gemini添增的後設資料，它依然為我整理物品帶來極大的便利。舉例來說，我通常不會在手動輸入時描述物品的顏色。但我要求Gemini分析的品項裡，顏色是很常出現的分析結果。因此如果我不確定這東西要怎麼搜尋的話，搜尋顏色可能會是最容易找到的關鍵字。&lt;/p&gt;
&lt;p&gt;是說一開始我在Gemini的提示詞加上品項跟分類的分析，其實是想要用在AppSheet裡面的其他欄位。AppSheet可以讓物品添增標籤跟分類，讓我們能夠更仔細地組織物品的瀏覽結構。但後來我發現還是直接用搜尋就好了。家裡的物品以收納地點作為分類，這樣就很夠用了。加上其他的分類架構只會添增整理物品的困擾而已。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhKMxyjgLnjhcZj-q9aBfV_6K-YumKeywP_PlTaISGBVqsnXUUG3X2OLpMOQ5BklCxA-piWsqLGZYOEdAW_tEAA1W9eiIcyaXYV2oyMb-fg7cHcpwQ6oWlNmFJ50VxGXbZTg-6TKGmBYU7AJ75dw6EzuoDhW9vwlLAG-a-l5t-O0vKSh8ckQVFIkg&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhKMxyjgLnjhcZj-q9aBfV_6K-YumKeywP_PlTaISGBVqsnXUUG3X2OLpMOQ5BklCxA-piWsqLGZYOEdAW_tEAA1W9eiIcyaXYV2oyMb-fg7cHcpwQ6oWlNmFJ50VxGXbZTg-6TKGmBYU7AJ75dw6EzuoDhW9vwlLAG-a-l5t-O0vKSh8ckQVFIkg&quot; title=&quot;2025-0121-020235.png&quot; alt=&quot;2025-0121-020235.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;當然，你也可以用類似的提示詞，開啟Gemini直接去問他。不過像是這篇這樣把Gemini整合到日常工作的流程中，讓AI協助我們處理資訊更有效率，這才是我認為理想中的AI使用形式。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;這篇關於使用AI添增後設資料的做法就到這裡為止了。文章最後要來問大家的是，你覺得Gemini描述物品的成果如何呢？&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;1. 很不錯！我只要輸入一點文字，它自己就可以幫我補上很多資訊耶！&lt;/li&gt;
  &lt;li&gt;2. 還好吧。Gemini添增的大部分資訊都跟我描述的一樣，幫助在哪裡？&lt;/li&gt;
  &lt;li&gt;3. 不可採信。Gemini居然給我錯誤的描述，未來我不小心因此搞錯了怎麼辦？誰負責？&lt;/li&gt;
  &lt;li&gt;4. 還可以更好吧？提示詞好像還有很多改進的空間？&lt;/li&gt;
  &lt;li&gt;5. 其他：歡迎在下面留言，分享你的看法吧！&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/619943180504341206/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/06/dont-know-how-to-add-metadata-use-ai-to-write-keywords.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/619943180504341206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/619943180504341206'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/06/dont-know-how-to-add-metadata-use-ai-to-write-keywords.html' title='不知道怎麼下後設資料？用AI幫你添增索引關鍵字  / Don&#39;t Know How to Add Metadata? Use AI to Write Keywords'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiDiyPa1N2hbPCHgpuwuVp9XllK0UgfmPnxRrgXmHJevxgOPppjkvA1BXgOkIA63JY0q9RuZPEPQB2ijPPPpFTfewP46stS4SshLHv-uxK_W6uVwygON4xrSF6FEtWV3u2pTGDUIkcS9wK-_fQY1PrIiYGLVLEw_qFCoSzFz-JWN4TjInvatDV6hA=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16607461.post-6112850579110463249</id><published>2025-06-06T12:00:00.007+08:00</published><updated>2025-06-06T12:00:00.220+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenAI"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Talk"/><title type='text'>雜談：不是每個API都叫做OpenAI的API / TALK: Not Every API Is Called OpenAI’s API</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj15UEz9MGlgK3kh8lfnxxro3HQCrz3oxl35arwhRmAP0X2etp39pPDtBoSX-bmcNCZCcoDKbb8yzkejaL1N3tN-aU6GZwlnNHgom_c4iq253KGbDH5YAuG9104CfMAVPWMI0dFOWvNkcgcS1YSv4QTOta9lF_i9MJtflejDm9tVcnRYKW0vhyUTA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj15UEz9MGlgK3kh8lfnxxro3HQCrz3oxl35arwhRmAP0X2etp39pPDtBoSX-bmcNCZCcoDKbb8yzkejaL1N3tN-aU6GZwlnNHgom_c4iq253KGbDH5YAuG9104CfMAVPWMI0dFOWvNkcgcS1YSv4QTOta9lF_i9MJtflejDm9tVcnRYKW0vhyUTA&quot; title=&quot;2025-0212-151905.png&quot; alt=&quot;2025-0212-151905.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最近遇上太多「號稱背後是OpenAI」的大型語言模型API，但實際上並不是「OpenAI的API」的狀況。這種誤解造成實際開發時帶來很大的困擾，我們藉這個機會說明一下吧。&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;hr&gt;
&lt;h2&gt;OpenAI的API /&amp;nbsp;OpenAI’s API&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj5OScQCqos5MSW0zKm4w6AHYJJTl7wAoNcJ32w4xeRLT6YPjpMFDcAYUnf2yW0r-GaS41SuFPxaCgQAcYGI0IHuDhSDkMm7_yoCmSY-t9VcD6eGa7HbTGubSe5o7TDDkjmESH6s-F84SGumo5ZZ6_FwXDvB4ujQfNWVqywD9CnwNsqQhcC3L_s_g&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj5OScQCqos5MSW0zKm4w6AHYJJTl7wAoNcJ32w4xeRLT6YPjpMFDcAYUnf2yW0r-GaS41SuFPxaCgQAcYGI0IHuDhSDkMm7_yoCmSY-t9VcD6eGa7HbTGubSe5o7TDDkjmESH6s-F84SGumo5ZZ6_FwXDvB4ujQfNWVqywD9CnwNsqQhcC3L_s_g&quot; title=&quot;https://platform.openai.com/docs/api-reference/introduction&quot; alt=&quot;https://platform.openai.com/docs/api-reference/introduction&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://platform.openai.com/docs/api-reference/introduction&quot; target=&quot;_blank&quot;&gt;https://platform.openai.com/docs/api-reference/introduction&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;OpenAI API 是一組由 OpenAI 開發的應用程式介面 (API)，讓開發人員可以運用 OpenAI 的 AI 模型，像是 GPT、DALL-E、 Text Embedding等，建構自己的應用程式。它提供程式化的存取途徑，讓使用者可以透過程式碼與這些模型互動，進行像是自然語言處理、影像生成等任務。開發人員可以透過 API 傳送請求，並接收模型產生的結果，進而整合到自己的軟體或服務中。&lt;/p&gt;
&lt;p&gt;OpenAI API 支援多種程式語言，讓開發人員可以更彈性地整合到自己的開發環境中。一般常見的語法是使用Python的函式庫openai：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;import&amp;nbsp;openai&lt;br&gt;&lt;br&gt;#&amp;nbsp;設定&amp;nbsp;API&amp;nbsp;Key&lt;br&gt;openai.api_key&amp;nbsp;=&amp;nbsp;&quot;your_openai_api_key&quot;&lt;br&gt;&lt;br&gt;#&amp;nbsp;發送請求給&amp;nbsp;GPT-4o&lt;br&gt;response&amp;nbsp;=&amp;nbsp;openai.ChatCompletion.create(&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model=&quot;gpt-4o&quot;,&amp;nbsp;&amp;nbsp;#&amp;nbsp;指定使用&amp;nbsp;GPT-4o&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;messages=[&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&quot;role&quot;:&amp;nbsp;&quot;system&quot;,&amp;nbsp;&quot;content&quot;:&amp;nbsp;&quot;你是一位專業的&amp;nbsp;AI&amp;nbsp;助理。&quot;},&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&quot;role&quot;:&amp;nbsp;&quot;user&quot;,&amp;nbsp;&quot;content&quot;:&amp;nbsp;&quot;請問&amp;nbsp;OpenAI&amp;nbsp;GPT-4o&amp;nbsp;的特點是什麼？&quot;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;temperature=0.7&lt;br&gt;)&lt;br&gt;&lt;br&gt;#&amp;nbsp;顯示回應&lt;br&gt;print(response[&quot;choices&quot;][0][&quot;message&quot;][&quot;content&quot;])&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;除此之外，OpenAI API也支援使用curl直接呼叫的方式取用。以下是詢問4o-mini模型的範例：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;curl&amp;nbsp;https://api.openai.com/v1/chat/completions&amp;nbsp;\&lt;br&gt;&amp;nbsp;&amp;nbsp;-H&amp;nbsp;&quot;Content-Type:&amp;nbsp;application/json&quot;&amp;nbsp;\&lt;br&gt;&amp;nbsp;&amp;nbsp;-H&amp;nbsp;&quot;Authorization:&amp;nbsp;Bearer&amp;nbsp;$OPENAI_API_KEY&quot;&amp;nbsp;\&lt;br&gt;&amp;nbsp;&amp;nbsp;-d&amp;nbsp;&#39;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;model&quot;:&amp;nbsp;&quot;gpt-4o-mini&quot;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;messages&quot;:&amp;nbsp;[{&quot;role&quot;:&amp;nbsp;&quot;user&quot;,&amp;nbsp;&quot;content&quot;:&amp;nbsp;&quot;Say&amp;nbsp;this&amp;nbsp;is&amp;nbsp;a&amp;nbsp;test!&quot;}],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;temperature&quot;:&amp;nbsp;0.7&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&#39;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;值得注意的是，OpenAI API 與 ChatGPT 等服務有著完全不同的形態。前者API 是一個基礎工具集，其目的是讓開發者能將API結合到自己的專案中來使用OpenAI的模型；而後者 ChatGPT 則是一個功能完整的產品，以網頁或APP的形式呈現給終端使用者取用。&lt;/p&gt;
&lt;p&gt;另一個需要注意的是，你可以看到curl指令在用來傳送請求資料的-d裡面設定了model名稱、messages傳送訊息、temperature溫度，而messages又有role跟content等複雜的結構，這就是OpenAI API特有的請求方式，跟一般使用curl來說並不一樣。簡單來說，如果不是使用對應的網址、輸入參數、分析回傳資料的方式來呼叫，那就無法正確OpenAI API。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhMrnnElCrFe8v4Z-spw0OAoobi2ZN-I4yRKe8j6yQ0_-ljiHqR6Ms0Lg4ox0g0HLm7yQVtI9aN4FHuPY8-9Qt4AfBrOOfw3IBnYUePgH7GcmHifaDB4R3O3tigIWc945Q6ZXZ4lmZ3nNbF5Xf5hxldIDScsyID_FhBG8nr1hhSy3UK1cFCBRUGEw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhMrnnElCrFe8v4Z-spw0OAoobi2ZN-I4yRKe8j6yQ0_-ljiHqR6Ms0Lg4ox0g0HLm7yQVtI9aN4FHuPY8-9Qt4AfBrOOfw3IBnYUePgH7GcmHifaDB4R3O3tigIWc945Q6ZXZ4lmZ3nNbF5Xf5hxldIDScsyID_FhBG8nr1hhSy3UK1cFCBRUGEw&quot; title=&quot;2025-0212-135402.png&quot; alt=&quot;2025-0212-135402.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://platform.openai.com/docs/api-reference/embeddings/create&quot; target=&quot;_blank&quot;&gt;https://platform.openai.com/docs/api-reference/embeddings/create&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;除了使用OpenAI的大型語言模型之外，OpenAI API也可以拿來請求各種不同的服務。其中開發RAG最常用到的就是文本嵌入(text embedding)的相關模型。其他細節請查閱&lt;a href=&quot;https://platform.openai.com/docs/api-reference/embeddings/create&quot; target=&quot;_blank&quot;&gt;OpenAI的API Reference&lt;/a&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;OpenAI 相容 API / OpenAI Compatible API&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiHOw4wQEiJuemZd6aRCW3WKLTFaeisiNMEV2xmLHmsxFKHs_9ycBCwcgZ8SzJ1v2adZycrv6lhvNmYXU4jgy5iZ2Bh3GAJqyJp0gt1s0MxHu9Iue87SRwuIbenhJjw8i7nyTvRKE7s5t7fSnb4Ogp8A6Smjf0n5pcsLB10GijOcGake6hxr5RvLw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiHOw4wQEiJuemZd6aRCW3WKLTFaeisiNMEV2xmLHmsxFKHs_9ycBCwcgZ8SzJ1v2adZycrv6lhvNmYXU4jgy5iZ2Bh3GAJqyJp0gt1s0MxHu9Iue87SRwuIbenhJjw8i7nyTvRKE7s5t7fSnb4Ogp8A6Smjf0n5pcsLB10GijOcGake6hxr5RvLw&quot; title=&quot;2025-0212-135007.png&quot; alt=&quot;2025-0212-135007.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;由於OpenAI在大型語言模型領域一直是領頭羊的角色，其他公司或組織開發的 API就會設計成能與 OpenAI 的 API 格式相容，以便讓開發者可以輕鬆地將使用 OpenAI API 所撰寫的程式碼遷移到自家開發的API上。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi4R3b46-dkWg9CJZq9uD5N-vhbEZIIFI80OQZOR63Fr8laTPc4H_P3PsgLp20vUg8tzw0OcJ60wAqWe86uOKYdHoGt8SAz-ComecyldDT5CYIWZ4kdnA2y5-rXGqXdkFcvd3XpCvX2sUGgK7fz2cpVHFcXOO4vUtDq1U_f-iYXd1K6-ejm9p8Yrw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi4R3b46-dkWg9CJZq9uD5N-vhbEZIIFI80OQZOR63Fr8laTPc4H_P3PsgLp20vUg8tzw0OcJ60wAqWe86uOKYdHoGt8SAz-ComecyldDT5CYIWZ4kdnA2y5-rXGqXdkFcvd3XpCvX2sUGgK7fz2cpVHFcXOO4vUtDq1U_f-iYXd1K6-ejm9p8Yrw&quot; title=&quot;https://api-docs.deepseek.com/zh-cn/&quot; alt=&quot;https://api-docs.deepseek.com/zh-cn/&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://api-docs.deepseek.com/zh-cn/&quot; target=&quot;_blank&quot;&gt;https://api-docs.deepseek.com/zh-cn/&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;近期相當熱門的一個例子就是DeekSeek。DeepSeek 設計了與 OpenAI 相容的 API。這表示開發者可以使用 OpenAI SDK 或任何與 OpenAI API 相容的套裝軟體，透過簡單的設定修改，就能存取 DeepSeek API。這大幅降低了開發者使用 DeepSeek AI 模型的門檻，也是普及市佔率的常見做法。&lt;/p&gt;
&lt;p&gt;儘管有人會認為DeepSeek製作相容API的做法是抄襲OpenAI，但通常這種涉及「介面」、「規格」或「標準」類型的設計不會納入專利，因為這對市場競爭和推廣都有很大的幫助，而API背後的模型和實際上的服務才是各家展現專利技術的重點。舉個例子來說，多年前IEEE 1394 (FireWire)被蘋果壟斷，使用時就得收一大筆專類費用。另一邊USB本身不收專利費用，使得USB被廣泛採用。而如今已經沒有設備採用IEEE 1394，但USB Type-C成為了歐盟法規的統一充電標準。從歷史的發展可知，開放給眾人使用「介面」、「規格」和「標準」，不僅可以促進科技技術的普及，也能夠有效推廣自家的產品。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEju0atrODpYs658-57R8N4fIEI9xxBAEu27SRTZxQFs1e3k7GXwAFHpHYioIxHJA5cwZcp_SqGePkXX7HzQRrD-6r46GYB9JxACkUKSAd4WDHhC9Ec_H1HRRFZBkUFzINdTB4p50l3I1hryquQ5S_qlrGrCazq8xgN3JRo3k3DAPbWdqc6k0ErrxQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEju0atrODpYs658-57R8N4fIEI9xxBAEu27SRTZxQFs1e3k7GXwAFHpHYioIxHJA5cwZcp_SqGePkXX7HzQRrD-6r46GYB9JxACkUKSAd4WDHhC9Ec_H1HRRFZBkUFzINdTB4p50l3I1hryquQ5S_qlrGrCazq8xgN3JRo3k3DAPbWdqc6k0ErrxQ&quot; title=&quot;https://ollama.com/blog/openai-compatibility&quot; alt=&quot;https://ollama.com/blog/openai-compatibility&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ollama.com/blog/openai-compatibility&quot; target=&quot;_blank&quot;&gt;https://ollama.com/blog/openai-compatibility&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;話說回來，使用跟OpenAI相容API的產品可不只是DeekSeek，就連本機運作大型語言模型第一首選的Ollama本身也可以用相容與OpenAI API的方式呼叫。OpenAI的影響力可見一斑。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;為什麼要用OpenAI API？ /&amp;nbsp;Why Use OpenAI API?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh4J-WLNHGyUeox9fFxsS8tIh4tvbQO5ciRKI4zQ7ufLsou6UjTnFyM9mIVLNAMegZ55R4V4w_Auc2okX_WMyhmcurZN8mYdnTNLAhA2fgXB6zQfFpsvpQ7H1vR6OqRYlXIfcJfzRxeqeiFCHsLMdLgpQ8WggXJqXHNP59C3e_UJEpTmyDg2PF0-Q&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh4J-WLNHGyUeox9fFxsS8tIh4tvbQO5ciRKI4zQ7ufLsou6UjTnFyM9mIVLNAMegZ55R4V4w_Auc2okX_WMyhmcurZN8mYdnTNLAhA2fgXB6zQfFpsvpQ7H1vR6OqRYlXIfcJfzRxeqeiFCHsLMdLgpQ8WggXJqXHNP59C3e_UJEpTmyDg2PF0-Q&quot; title=&quot;1738994511183a.jpg&quot; alt=&quot;1738994511183a.jpg&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我在開發的過程中，有許多人不斷對此提出疑問：「OpenAI的API明明就可以用curl呼叫，那我這個也能用curl呼叫的API，不就也可以直接使用嗎？」&lt;/p&gt;
&lt;p&gt;嗯，顯然的，答案是不行。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgmxMaImEsNpy52XxcR88DDKNMvztZ1HkEfIuaS1dZ_ydjGCMoY8rh6vo9UVNcBR1Yu2LGQJUvdtxey17SWdDHKGBkzATdmNwTazS0NiJHmA4jQqyjUv88jPGC9_Zf390WGGaEdL5u3HTEqvk-KgXHaEa-n4Fiz1qm4FqsYXMinohnpYyuefVcamA&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgmxMaImEsNpy52XxcR88DDKNMvztZ1HkEfIuaS1dZ_ydjGCMoY8rh6vo9UVNcBR1Yu2LGQJUvdtxey17SWdDHKGBkzATdmNwTazS0NiJHmA4jQqyjUv88jPGC9_Zf390WGGaEdL5u3HTEqvk-KgXHaEa-n4Fiz1qm4FqsYXMinohnpYyuefVcamA&quot; title=&quot;2025-0212-145449.png&quot; alt=&quot;2025-0212-145449.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;現今大部分使用大型語言模型的系統都有相容OpenAI API，而OpenAI API需要用特定的參數跟網址(主要是路徑部分)來存取。如果你用不相容的方式呼叫它，自然就會發生錯誤。上圖就是Dify裡面在OpenAI模型設定用了不相容的API所出現的錯誤。其實也就是讀不到而已。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjEGMvpWuuN_R1OXzrz_RTo63MNNggPBPXHwaBPQ8oLapRcb3z-NrNcY_atWPQGSozix_7I2LIGsRikzR-ThNJ4vWOimOivGOWRQgfDqy2dfyqf6bOvyAEcHxFXpBJ9bTDda52GnDkEOeUV5PxEKVfqjT38KOYQG7LbPWj0jfkA4OqusQDEGBkOfQ&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjEGMvpWuuN_R1OXzrz_RTo63MNNggPBPXHwaBPQ8oLapRcb3z-NrNcY_atWPQGSozix_7I2LIGsRikzR-ThNJ4vWOimOivGOWRQgfDqy2dfyqf6bOvyAEcHxFXpBJ9bTDda52GnDkEOeUV5PxEKVfqjT38KOYQG7LbPWj0jfkA4OqusQDEGBkOfQ&quot; title=&quot;2025-0212-145805.png&quot; alt=&quot;2025-0212-145805.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/HKUDS/LightRAG&quot; target=&quot;_blank&quot;&gt;https://github.com/HKUDS/LightRAG&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;別說像Dify這種力求能夠相容與大部分模型的系統都沒有對客製化的API有直接支援了，像是&lt;a href=&quot;https://github.com/HKUDS/LightRAG&quot; target=&quot;_blank&quot;&gt;LightRAG&lt;/a&gt;這種研究型的系統，大多也都是設計只用OpenAI API而已。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhJ_Z66VFZHfzm_wZIHI0yEZmtU0768Cp-e7zrHblMNgKk2QkBcj40QKKqaPLAhjbotARANu5oOj3kExvB8jQKKo6jvSUU9-D_CUuzXeADrq52Co-WUBEXyJbisAhBRYdZ8foEeGC99HPurXIv60ENpEgbKz9B3Hhpj5K4MaiM6wiQ65-NkL3lrHw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhJ_Z66VFZHfzm_wZIHI0yEZmtU0768Cp-e7zrHblMNgKk2QkBcj40QKKqaPLAhjbotARANu5oOj3kExvB8jQKKo6jvSUU9-D_CUuzXeADrq52Co-WUBEXyJbisAhBRYdZ8foEeGC99HPurXIv60ENpEgbKz9B3Hhpj5K4MaiM6wiQ65-NkL3lrHw&quot; title=&quot;https://github.com/fatwang2/dify2openai/blob/main/app.js&quot; alt=&quot;https://github.com/fatwang2/dify2openai/blob/main/app.js&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/fatwang2/dify2openai/blob/main/app.js&quot; target=&quot;_blank&quot;&gt;https://github.com/fatwang2/dify2openai/blob/main/app.js&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;當然，我知道有人會說，這時候就是拿出設計模式中的「轉接器模式」(adapter pattern)，做一個相容於OpenAI API的轉換介面就好了吧？的確，fatwang2也在&lt;a href=&quot;https://github.com/fatwang2/dify2openai&quot; target=&quot;_blank&quot;&gt;dify2openai專案&lt;/a&gt;中實作了Dify轉換到OpenAI API的做法，實際上也可以使用。&lt;/p&gt;
&lt;p&gt;然而，到頭來還是在用OpenAI API，不是嗎？&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;結語 / In Closing&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjr6rTbBz4YYlgMI1OrxFjs2TEyVucwF3e0zuyppGNLIGxXOpUL6Dpqu3HREtsuDtnja4B3hEXfEkuaybCAtHhebxGgtwPCNcTYsxj7enNeXB-cX9L5bKyWiBIoPdIGSVVSE9xeplYGNBpiJdFKcnE-0jNoKnlUUeOj_NXT5esm67t5f1TNvVuVhw&quot;&gt;
    &lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjr6rTbBz4YYlgMI1OrxFjs2TEyVucwF3e0zuyppGNLIGxXOpUL6Dpqu3HREtsuDtnja4B3hEXfEkuaybCAtHhebxGgtwPCNcTYsxj7enNeXB-cX9L5bKyWiBIoPdIGSVVSE9xeplYGNBpiJdFKcnE-0jNoKnlUUeOj_NXT5esm67t5f1TNvVuVhw&quot; title=&quot;2025-0212-151530.png&quot; alt=&quot;2025-0212-151530.png&quot; class=&quot;original-size&quot;&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://udn.com/news/story/7240/8527483&quot; target=&quot;_blank&quot;&gt;https://udn.com/news/story/7240/8527483&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;OpenAI公司因為ChatGPT的盛行而聲名大噪，而取用GPT等模型的OpenAI API也成為軟體開發中常見的重要元件。現今有許多服務都是號稱「背後具有GPT模型等級」，但實際上是用各自開發的服務包裹起來，這並不代表他們的API就能跟OpenAI API畫上等號。&lt;/p&gt;
&lt;p&gt;對於開發者來說，OpenAI API的功能不僅僅只是使用大型語言模型來對話，甚至還需要用到檔案上傳的多模態分析、文本嵌入 (text-embedding)、微調(fine-tuning)等多種進階功能。因此，並不是任何一個支援curl的API，都可以當作是OpenAI API來使用。&lt;/p&gt;
&lt;p&gt;AI在行銷上的話術已經夠混亂了，作為開發者，還是有必要釐清技術上實作的細節啊。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.pulipuli.info/feeds/6112850579110463249/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.pulipuli.info/2025/06/talk-not-every-api-is-called-openais-api.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/6112850579110463249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16607461/posts/default/6112850579110463249'/><link rel='alternate' type='text/html' href='http://blog.pulipuli.info/2025/06/talk-not-every-api-is-called-openais-api.html' title='雜談：不是每個API都叫做OpenAI的API / TALK: Not Every API Is Called OpenAI’s API'/><author><name>布丁布丁吃布丁</name><uri>http://www.blogger.com/profile/18000418899714977849</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRiGjXxb_0kiyEqYA7ZEEW2cs23aUDhQXzDL3eNaMED2nWK4vBuqBKCb9Sgo6j2Aq_pkw3ZicMH7hhZih1WHog9QH_w6Ta3DxtQXA1BA2_0r6gzJ3_h2-vidsMPXDdYU/s1600/1422855-big2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEj15UEz9MGlgK3kh8lfnxxro3HQCrz3oxl35arwhRmAP0X2etp39pPDtBoSX-bmcNCZCcoDKbb8yzkejaL1N3tN-aU6GZwlnNHgom_c4iq253KGbDH5YAuG9104CfMAVPWMI0dFOWvNkcgcS1YSv4QTOta9lF_i9MJtflejDm9tVcnRYKW0vhyUTA=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry></feed>