<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Docker on jkgtw&#39;s blog </title>
    <link>https://www.jkg.tw/tags/docker/</link>
    <description>Recent content in Docker on jkgtw&#39;s blog </description>
    <image>
      <title>jkgtw&#39;s blog </title>
      <url>https://www.jkg.tw/apple-touch-icon.png</url>
      <link>https://www.jkg.tw/apple-touch-icon.png</link>
    </image>
    <generator>Hugo -- 0.154.5</generator>
    <language>en</language>
    <lastBuildDate>Tue, 13 Jan 2026 20:10:00 +0800</lastBuildDate>
    <atom:link href="https://www.jkg.tw/tags/docker/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>PTT 每日簽到 - n8n docker 版</title>
      <link>https://www.jkg.tw/p3913/</link>
      <pubDate>Tue, 13 Jan 2026 20:10:00 +0800</pubDate>
      <guid>https://www.jkg.tw/p3913/</guid>
      <description>&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;忘記在哪邊看到有人問，有沒有 PTT 每日簽到（登入）的 n8n 版？&lt;/p&gt;
&lt;p&gt;於是就花了一點時間，讓 AI 寫了一段可以在 n8n JavaScript code node 跑起來的程式碼&lt;/p&gt;
&lt;p&gt;但因為需要引入額外的庫，所以需要在 docker compose 還有設定上做一些小變動 😆&lt;/p&gt;
&lt;p&gt;首先根據&lt;a href=&#34;https://www.jkg.tw/p3912&#34;&gt;上一篇&lt;/a&gt;的 n8n v2 docker compose 為基礎，改為以下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;n8n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;n8nio/n8n&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;n8n&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;always&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;5678:5678&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Web UI 端口&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;n8n-data:/home/node/.n8n&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;depends_on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;n8n-redis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;condition&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;service_healthy&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# --- 基本設定 &amp;amp; 時區 ---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;GENERIC_TIMEZONE=Asia/Taipei&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;TZ=Asia/Taipei&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# --- 資料庫維護 (SQLite) ---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;DB_SQLITE_VACUUM_ON_STARTUP=true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 啟動時清理資料庫，用於防止 SQLite 資料庫過大導致效能下降&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;DB_SQLITE_POOL_SIZE=1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 啟用 SQLite WAL 模式效能較高較可靠&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;EXECUTIONS_DATA_PRUNE=true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;EXECUTIONS_DATA_MAX_AGE=168   &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 保留 168 小時內的執行紀錄，視需求可上下調整&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 最多保留 5000 筆紀錄，視需求可上下調整&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# --- 網路與安全 (反向代理設定) ---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 開啟後，必須透過 HTTPS 存取，否則無法登入，內網 HTTP 使用就設定為 false&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;N8N_SECURE_COOKIE=true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;WEBHOOK_URL=https://n8n.example.com/&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 根據自己網域修改，內網無網域這行可以換成內網 IP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;N8N_PROXY_HOPS=1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 告訴 n8n 前面有一層 Proxy (如 Nginx/Caddy)，如內網使用這行可以刪除&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;N8N_TRUSTED_PROXIES=0.0.0.0/0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 信任所有來源的 Proxy 標頭，如內網使用這行可以刪除&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# --- 權限與安全性 ---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;N8N_GIT_NODE_DISABLE_BARE_REPOS=true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;N8N_BLOCK_ENV_ACCESS_IN_NODE=false&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# false 代表允許 Node 節點讀取環境變數&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# --- Task Runners 設定 ---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 這是主節點設定，負責派發任務給 task-runners&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;N8N_RUNNERS_ENABLED=true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;N8N_RUNNERS_MODE=external&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 使用外部 Runner 模式&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;N8N_RUNNERS_BROKER_LISTEN_ADDRESS=0.0.0.0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 監聽來自 Docker 內網的連線&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;N8N_RUNNERS_AUTH_TOKEN=Your1-awEsome-P0ssWorD&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 請務必更改為強密碼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;N8N_NATIVE_PYTHON_RUNNER=true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 啟用 Python 支援&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;task-runners&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;n8nio/runners&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 如有指定版號，runners 版本需與 n8n 本體對齊&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;n8n-runners&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;always&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;depends_on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;n8n&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# --- Task Runners 設定 (Worker 端) ---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 設定主節點的連線位置 (Docker 內部通訊)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;N8N_RUNNERS_TASK_BROKER_URI=http://n8n:5679&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;N8N_RUNNERS_AUTH_TOKEN=Your1-awEsome-P0ssWorD&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 需與上方 n8n 主節點內的一致&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT=0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 設定為 0 可避免冷啟動延遲&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 以下為新增的部分，將 runner-javascript 安裝的 modules 儲存下來，避免每次 pull 都要重新安裝&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./n8n-task-runners.json:/etc/n8n-task-runners.json:ro&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;runners-js-node-modules:/opt/runners/task-runner-javascript/node_modules&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 啟動後檢查本文章 PTT AutoCheckin JS 所需的庫在不在，不在的話就安裝&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;entrypoint&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/bin/sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- -&lt;span class=&#34;l&#34;&gt;lc&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;sd&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sd&#34;&gt;        cd /opt/runners/task-runner-javascript
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sd&#34;&gt;        if [ ! -d node_modules/ssh2 ] || [ ! -d node_modules/iconv-lite ]; then
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sd&#34;&gt;          pnpm add ssh2 iconv-lite
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sd&#34;&gt;        fi
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sd&#34;&gt;        exec /usr/local/bin/task-runner-launcher javascript&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;redis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;redis:alpine&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;n8n-redis&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;always&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;healthcheck&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;test&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;CMD&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;redis-cli&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ping&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;interval&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;5s&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;timeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;3s&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;retries&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;n8n-redis-data:/data&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;n8n-data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;n8n-redis-data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;runners-js-node-modules&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;主要是在 task-runners 做了一些之後 JS 執行環境的準備&lt;/p&gt;</description>
    </item>
    <item>
      <title>n8n 2.0 Self-host 實戰：Docker &#43; Task Runners &#43; Caddy 的完整設定筆記</title>
      <link>https://www.jkg.tw/p3912/</link>
      <pubDate>Tue, 23 Dec 2025 14:05:00 +0800</pubDate>
      <guid>https://www.jkg.tw/p3912/</guid>
      <description>&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;最近 &lt;a href=&#34;https://n8n.io&#34;&gt;n8n&lt;/a&gt; 正式推出 &lt;strong&gt;v2.0 大版本更新&lt;/strong&gt; 🚀，這次更新在&lt;strong&gt;安全性、穩定性與整體效能&lt;/strong&gt;上都有明顯提升&lt;/p&gt;
&lt;p&gt;同時前端 Web UI 的 Canvas 介面也有一定幅度的視覺與互動變化&lt;/p&gt;
&lt;p&gt;如果你想了解完整的官方更新細節，建議直接閱讀 n8n 官方 Blog 👉 &lt;a href=&#34;https://blog.n8n.io/introducing-n8n-2-0/&#34;&gt;Introducing n8n 2.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;h2 id=&#34;n8n-selfhost&#34;&gt;n8n Self‑host&lt;/h2&gt;
&lt;p&gt;n8n 2.0 釋出時，官方依然維持 &lt;strong&gt;Self‑host&lt;/strong&gt; 的彈性，這點對技術使用者來說非常重要 👍&lt;/p&gt;
&lt;p&gt;官方也同步持續更新 Docker Image，讓升級流程相對平滑&lt;/p&gt;
&lt;p&gt;這篇文章會分享我在升級到 &lt;strong&gt;n8n 2.0&lt;/strong&gt; 之後，實際使用的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docker Compose 架構&lt;/li&gt;
&lt;li&gt;Task Runners 新架構設定&lt;/li&gt;
&lt;li&gt;Redis 搭配使用方式&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://caddyserver.com&#34;&gt;Caddy Server&lt;/a&gt; 反向代理與 HTTPS 設定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;整體目標是：&lt;strong&gt;穩定、好維護、安全、設定不複雜&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;h2 id=&#34;docker-compose-架構說明&#34;&gt;Docker Compose 架構說明&lt;/h2&gt;
&lt;p&gt;本次的 Docker Compose 主要包含三個核心服務：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;n8n（主節點）&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;負責 Web UI、Webhook 接收、Workflow 管理&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;task‑runners（Worker 節點）&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;專門負責執行實際的 workflow 任務&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redis&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;作為狀態儲存與跨 workflow / node 的輕量資料存取&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這樣的拆分方式，是 n8n 近期引入的&lt;strong&gt;新一代執行架構&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>PTT Monitor 新文章通知 - n8n 模版</title>
      <link>https://www.jkg.tw/p3909/</link>
      <pubDate>Sat, 23 Aug 2025 19:50:00 +0800</pubDate>
      <guid>https://www.jkg.tw/p3909/</guid>
      <description>&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;之前有位 PTT 網友開發的 &lt;a href=&#34;https://www.ptt.cc/bbs/EZsoft/M.1497363598.A.74E.html&#34;&gt;PTT Alertor 服務&lt;/a&gt;蠻好用的，但是前幾年機器人突然掛了，原作者可能比較忙沒繼續維護就不能用了&lt;/p&gt;
&lt;p&gt;所幸原作者有將整個服務&lt;a href=&#34;https://github.com/Ptt-Alertor/ptt-alertor&#34;&gt;開源&lt;/a&gt;，所以又有熱心的網友搭了&lt;a href=&#34;https://www.ptt.cc/bbs/EZsoft/M.1708247900.A.27C.html&#34;&gt;另外的 PTT 新文章通知服務&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;同樣也是無償的服務所以也留了個但書，也就是不能保證服務能持續多久&lt;/p&gt;
&lt;p&gt;我&lt;a href=&#34;https://www.jkg.tw/p3902/&#34;&gt;之前&lt;/a&gt;也有用 n8n 的 RSS Trigger 來訂閱新文章通知，但透過 RSS 的訂閱只能監測到標題與作者 ID&lt;/p&gt;
&lt;p&gt;還缺少跟 PTT Alertor 一樣可以追蹤推文數的功能 🫣&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;/p&gt;
&lt;p&gt;於是也就萌生自己用 n8n 也搭一個有類似功能的 PTT 新文章通知服務給自己用，另外在&lt;a href=&#34;https://www.jkg.tw/p1397&#34;&gt;台灣蘋果同好群&lt;/a&gt;與&lt;a href=&#34;https://www.jkg.tw/p1553&#34;&gt;日本旅遊群&lt;/a&gt;都有導入&lt;/p&gt;
&lt;p&gt;目前已經正常穩定服役一段時間，也有不少群友在詢問，所以就整理一下，讓大家都能用 n8n 輕鬆搭一套自己的 PTT Monitor 服務 😁&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;PTT Monitor 有利用到 redis 來紀錄已發送過通知的網址，所以如果你是參考我之前一篇關於 n8n 來搭建的話&lt;/p&gt;
&lt;p&gt;我們要改一下之前 docker compose 檔案，加個幾行把 redis 服務跟著 n8n 一起啟動&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;n8n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;n8nio/n8n&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;n8n&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;unless-stopped&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;EXECUTIONS_DATA_PRUNE=true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;EXECUTIONS_DATA_MAX_AGE=168&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;GENERIC_TIMEZONE=Asia/Taipei&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;TZ=Asia/Taipei&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;5678&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5678&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;n8n-data:/home/node/.n8n&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;depends_on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;redis&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;			
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;redis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;redis:alpine&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;redis&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;unless-stopped&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;redis-data:/data&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;n8n-data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;redis-data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;​&lt;/p&gt;</description>
    </item>
    <item>
      <title>各家 AI 模型一次玩 - 1min AI 終身訂閱</title>
      <link>https://www.jkg.tw/p3906/</link>
      <pubDate>Wed, 02 Jul 2025 16:20:00 +0800</pubDate>
      <guid>https://www.jkg.tw/p3906/</guid>
      <description>&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;最近幾年真的是各種 AI 大亂鬥，各家的 AI 模型如沐春雨不斷推出，而且競爭也是相當激烈 🦾&lt;/p&gt;
&lt;p&gt;針對不同任務各家也有不同特化模型跟專長，所以如果你要每家都去訂閱的話，每月的帳單也是會有一筆不小的數字&lt;/p&gt;
&lt;p&gt;今天要推薦的是一家集合各家 AI 模型都能使用的平台「&lt;a href=&#34;https://1min.ai?referrer_id=71d31dd3-bf2b-41d9-88f7-7d92655c5caf&#34;&gt;1min AI&lt;/a&gt;」，就算沒有付費但只要註冊並且每天登入就能獲得一些使用點數&lt;/p&gt;
&lt;p&gt;1min AI 每種模型所需的點數都不相同，有的便宜有的新出的大模型可能會比較貴&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.jkg.tw/media/2025/QG81R93A-tb2YzVi4-Y95AY8EU.png&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
👆 內建的模型很多，$$ 數量代表所需的點數多寡
&lt;/div&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;有興趣的人可以透過下面我的 1min AI 推薦連結去註冊，你跟我都能獲得一些免費點數 ☺️&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://1min.ai?referrer_id=71d31dd3-bf2b-41d9-88f7-7d92655c5caf&#34;&gt;https://1min.ai?referrer_id=71d31dd3-bf2b-41d9-88f7-7d92655c5caf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;不過其實這種類似的平台也是蠻多的，為什麼特別挑 1min AI 呢？&lt;/p&gt;
&lt;p&gt;主要是目前他們在 &lt;a href=&#34;https://www.stacksocial.com/sales/1minai-pro-plan-lifetime-subscription?rid=33857&#34;&gt;StackSocial&lt;/a&gt; 有在賣終身方案，以 Pro 方案來舉例，購買終身方案後，系統每個月都會給你 100 萬點給你使用&lt;/p&gt;
&lt;p&gt;更棒的是就算你當月沒用完，這些點數並不會清零，點數會一直累積存在你的帳戶裡面！🥰&lt;/p&gt;
&lt;p&gt;如果你使用量比較大，也可以選擇 Business 或者最高的 Advanced Business 方案，主要差別就是每個月給你的點數不同&lt;/p&gt;
&lt;p&gt;像是 Advanced Business 每月會給你 400 萬點數，也是每月不會清零的，如果你是重度 AI 使用者，可以直接考慮最高階的方案&lt;/p&gt;
&lt;p&gt;另外在 &lt;a href=&#34;https://www.stacksocial.com/sales/1minai-pro-plan-lifetime-subscription?rid=33857&#34;&gt;StackSocial&lt;/a&gt; 購買時候，可以在網路上找找看優惠碼，有時候會有 10% ~ 30% 左右的優惠碼&lt;/p&gt;
&lt;p&gt;如果你沒在 &lt;a href=&#34;https://www.stacksocial.com/sales/1minai-pro-plan-lifetime-subscription?rid=33857&#34;&gt;StackSocial&lt;/a&gt; 買過東西，可以透過我的邀請連結購買，你跟我都能拿到免費點數，可以給下次購物使用 😄&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;1min AI 跟其他綜合 AI 平台一樣，在網站上面有列出一些常用的功能，幫助使用者快速上手找到自己想要的功能&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.jkg.tw/media/2025/lOmAAi0M-LYNTubGK-wwnfueLh.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;在 Multi AI Chat 這邊可以同時選擇多個模型，同一個問題一次同時問多個模型&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.jkg.tw/media/2025/y36aIAmE-XpHqCEbB-lLo0hqvR.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;想要 AI 畫圖這邊也有圖像生成器可以使用，內建多個常用的大模型，並且設定參數即可生成出你要的圖片&lt;/p&gt;</description>
    </item>
    <item>
      <title>自架 n8n 自動化服務 - 訂閱 PTT 討論版關鍵字</title>
      <link>https://www.jkg.tw/p3902/</link>
      <pubDate>Mon, 13 Jan 2025 21:10:00 +0800</pubDate>
      <guid>https://www.jkg.tw/p3902/</guid>
      <description>&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;幾年前&lt;a href=&#34;https://www.jkg.tw/p3609/&#34;&gt;有介紹&lt;/a&gt;過一款類似 &lt;a href=&#34;https://ifttt.com&#34;&gt;IFTTT&lt;/a&gt; 的自動化服務 &lt;a href=&#34;https://n8n.io&#34;&gt;n8n&lt;/a&gt;，經過這幾年的進化成長，n8n 內建的 node 越來越多且也越來越好用了！🌟&lt;/p&gt;
&lt;p&gt;而 n8n 最近幾年也開始大力宣傳他們的&lt;a href=&#34;https://n8n.io/pricing/&#34;&gt;雲端架設服務&lt;/a&gt;，最基本同時可啟用 5 個 workflows 的方案每月要 20 美金&lt;/p&gt;
&lt;p&gt;所幸的是他們提供的自架版本還是存在著，自己搭一套 Docker 版的 n8n 只需要短短幾分鐘就能搞定，硬體門檻也不高&lt;/p&gt;
&lt;p&gt;我自己有跑在一台樹莓派 4（4GB RAM）的設備上也是很順的跑起來，所以免費甲骨文或者 GCP 最低配置的虛擬機更不用說也都沒問題&lt;/p&gt;
&lt;p&gt;下面就來快速在樹莓派裡面安裝一套 n8n，同樣適用於 Ubuntu / Debian 系統&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;h2 id=&#34;安裝-docker-環境&#34;&gt;安裝 Docker 環境&lt;/h2&gt;
&lt;p&gt;最簡單就是直接用官方的安裝腳本直接安裝，要注意的是執行腳本需要 sudo 或者 root 權限&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ curl -fsSL https://get.docker.com -o get-docker.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo sh ./get-docker.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;等待腳本跑完安裝完畢，接著設定一下權限&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo usermod -aG docker &lt;span class=&#34;nv&#34;&gt;$USER&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接著重新登入一次 ssh 即可完成 Docker 執行環境的安裝，然後我們最後安裝 Docker compose&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt-get install docker-compose-plugin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以上就完成 Docker 執行的基本環境&lt;/p&gt;</description>
    </item>
    <item>
      <title>輕鬆架一套類 IFTTT 的自動化工作流「n8n」</title>
      <link>https://www.jkg.tw/p3609/</link>
      <pubDate>Thu, 16 Sep 2021 16:35:00 +0800</pubDate>
      <guid>https://www.jkg.tw/p3609/</guid>
      <description>&lt;p&gt;​&lt;/p&gt;
&lt;div class=&#34;admonition note&#34;&gt;
&lt;div class=&#34;title&#34;&gt;2025/01/10 更新&lt;/div&gt;
&lt;div class=&#34;content&#34;&gt;此文有另外較新的更新內容，可以前往 &amp;gt; &lt;a href=&#34;https://www.jkg.tw/p3902/&#34;&gt;瀏覽&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;應該不少人都有玩過 &lt;a href=&#34;https://ifttt.com/&#34;&gt;IFTTT&lt;/a&gt; 的服務，可以建立起非常強大且方便的自動化工作流&lt;/p&gt;
&lt;p&gt;它的主要原理跟工作流程是「如果 OOO 變成 YYY 以後，就進行 XXX 的動作」&lt;/p&gt;
&lt;p&gt;舉例來說可以是「如果明天天氣預報會下雨，就發簡訊或者郵件通知我」、「如果收到某人訊息，就加到重要代辦事項」等等&lt;/p&gt;
&lt;p&gt;IFTTT 目前可以免費試用，最多開三個 Applets，且每個 Applets 檢查更新頻率在一小時&lt;/p&gt;
&lt;p&gt;如果你想要解除限制的話，就需要訂閱他們的 IFTTT Pro 服務，可以享有無限 Applets 且每五分鐘就能更新一次的服務&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;不過今天要介紹的是另外一款有類似功能的工具 &lt;a href=&#34;https://n8n.io&#34;&gt;n8n&lt;/a&gt;，支援的服務也相當多&lt;/p&gt;
&lt;p&gt;而且是免費開源，也能自己架設在自己伺服器上，甚至可以跑自己寫的腳本，所以可自定義性更強，相當的不錯&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;n8n 介紹影片：&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube-nocookie.com/embed/rn3-d4IiW44?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;前段時間我自己也架了一套出來玩玩，觀察幾天運作相當穩定，所以寫一篇記錄一下&lt;/p&gt;
&lt;p&gt;不過因為 n8n 自定義功能強大，玩法相當多，無法靠三言兩語講完，所以這篇只會有 RSS to Telegram 的例子&lt;/p&gt;
&lt;p&gt;其他部分留待自己開發出更適合你自身的玩法 😚&lt;/p&gt;
&lt;p&gt;大概流程分為以下兩部分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 Docker 快速建立一套開箱即用 n8n&lt;/li&gt;
&lt;li&gt;監測某 RSS Feed 出現關鍵字時，用 Telegram 私訊通知你，或者發送到某 Telegram 群組 or 頻道裡面&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;​&lt;/p&gt;</description>
    </item>
    <item>
      <title>用 Docker 搭一個無人值守全自動領 Epic 免費遊戲的小幫手</title>
      <link>https://www.jkg.tw/p3608/</link>
      <pubDate>Sun, 05 Sep 2021 09:40:00 +0800</pubDate>
      <guid>https://www.jkg.tw/p3608/</guid>
      <description>&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;Epic Games 這家公司很神奇，從以前就一直頗受&lt;a href=&#34;https://www.ptt.cc/bbs/C_Chat/M.1589428332.A.B85.html&#34;&gt;個資爭議&lt;/a&gt;，直到最近還跟 Apple 大打官司還意外牽扯出不少業界祕辛&lt;/p&gt;
&lt;p&gt;其中一個就是 Epic Games 每個禮拜送遊戲能帶來多少&lt;a href=&#34;https://chinese.engadget.com/epic-apple-app-store-trial-073040969.html&#34;&gt;好處與成本&lt;/a&gt;？&lt;/p&gt;
&lt;p&gt;官司是非對錯就留待法官去判，我只知道既然他免費送，就應該想辦法領好領滿才是 😚&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;h3 id=&#34;epicgames-claimer&#34;&gt;&lt;a href=&#34;https://hub.docker.com/r/luminoleon/epicgames-claimer&#34;&gt;epicgames-claimer&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;「&lt;a href=&#34;https://www.appinn.com/epicgames-claimer-docker/&#34;&gt;小眾軟件&lt;/a&gt;」有介紹這個比較簡單容易的 Docker 能跑起來，只要一行指令並寫上你的 Epic 帳號跟密碼即可馬上領遊戲&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d --restart&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;unless-stopped -e &lt;span class=&#34;nv&#34;&gt;AUTO_UPDATE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt; -e TZ Asia/Taipei luminoleon/epicgames-claimer -u abc987@gmail.com -p somepasswords
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;溫馨提示：以上需要替換掉帳號跟密碼的部份，直接拷貝粘貼是不行的&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;不過這個容器簡單是簡單，如果你有些進階需求就暫時還沒辦法處理&lt;/p&gt;
&lt;p&gt;像是目前還不支援雙步驗證的登入、系統觸發 hCaptcha 時也無解&lt;/p&gt;
&lt;p&gt;不過如果你沒這類需求煩惱，可以直接用上面的指令直接就跑起來，群暉 NAS 的話「&lt;a href=&#34;https://www.appinn.com/epicgames-claimer-docker/&#34;&gt;小眾軟件&lt;/a&gt;」也有介紹到如何設定&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;h3 id=&#34;epicgames-freegames-node&#34;&gt;&lt;a href=&#34;https://github.com/claabs/epicgames-freegames-node&#34;&gt;epicgames-freegames-node&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;而本篇這邊介紹的是另外一個作者開發相同功能的 Docker 容器，可選的選項比較多&lt;/p&gt;
&lt;p&gt;支援雙步驗證跟遇到 hCaptcha 時的解決方案，遇到登入疑難雜症時甚至可以直接匯入瀏覽器上的 cookie 等等&lt;/p&gt;
&lt;p&gt;項目的網址： &lt;a href=&#34;https://hub.docker.com/r/charlocharlie/epicgames-freegames&#34;&gt;https://hub.docker.com/r/charlocharlie/epicgames-freegames&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;如果你跟我一樣有遇到登入困難，可以依照下面步驟快速部署這個容器&lt;/p&gt;
&lt;p&gt;首先要先建一個設定檔「config.json」，下面是範例（直接拷貝是沒用的）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;searchStrategy&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;promotion&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;runOnStartup&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;cronSchedule&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;35 6 * * *&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;logLevel&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;info&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;hcaptchaAccessibilityUrl&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://accounts.hcaptcha.com/verify_email/96e9d77b-21eb-463d-9a21-75237fb27b6c&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;webPortalConfig&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;#34;baseUrl&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://epic.exmaple.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;accounts&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;nt&#34;&gt;&amp;#34;email&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;example@gmail.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;nt&#34;&gt;&amp;#34;password&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;abc1234&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;nt&#34;&gt;&amp;#34;totp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;EMNCF83ULU3K3PXPJBSWY3DPEHPK3PXPJWY3DPEHPK3YI69R39NE&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;notifiers&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;telegram&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;nt&#34;&gt;&amp;#34;token&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;644739147:AAGMPo-Jz3mKRnHRTnrPEDi7jUF1vqNOD5k&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;nt&#34;&gt;&amp;#34;chatId&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-987654321&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;第 6 行的 hCaptcha 輔助可以直接戳&lt;a href=&#34;https://dashboard.hcaptcha.com/signup?type=accessibility&#34;&gt;這邊&lt;/a&gt;留下 email，收到驗證 email 後，拷貝 email 裡面按鈕的連結，貼上即可&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 Docker 快速搭建 Telegram 專用代理 MTProxy-Go</title>
      <link>https://www.jkg.tw/p3526/</link>
      <pubDate>Thu, 15 Apr 2021 09:50:00 +0800</pubDate>
      <guid>https://www.jkg.tw/p3526/</guid>
      <description>&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;之前&lt;a href=&#34;https://www.jkg.tw/p2633/&#34;&gt;有一篇&lt;/a&gt;使用一鍵快速腳本搭建 Telegram 專用代理 &lt;a href=&#34;https://github.com/9seconds/mtg&#34;&gt;MTProxy-Go&lt;/a&gt;，不過好像原作者被抓去喝茶還是什麼鬼的 🥸&lt;/p&gt;
&lt;p&gt;反正那個腳本已經年久失修，不太能正常使用了&lt;/p&gt;
&lt;p&gt;有些上游來源路徑已經改過，所以在 build 過程會失敗，於是另外找了 Docker 版本&lt;/p&gt;
&lt;p&gt;Docker 版本跟之前腳本相比起來搭建出錯機率小很多，因為整個都幫你包好了，日後更新起來也很容易&lt;/p&gt;
&lt;p&gt;另外可能還會有人問 Telegram 不就直接可以正常使用嗎？為什麼還要翻牆代理？&lt;/p&gt;
&lt;p&gt;在台灣確實可以正常使用，但是台灣手機號碼註冊分配到 Telegram 的新加坡機房速度時好時壞，有時候圖片或者影片會跑好久&lt;/p&gt;
&lt;p&gt;為了要有更好的使用體驗，如果能自己搭一個海外 VPS 會改善非常多，像是 GCP 的台灣或者 AWS 的日本都能有不錯的連線穩定度&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;h3 id=&#34;安裝-docker-community-穩定版&#34;&gt;安裝 Docker Community 穩定版&lt;/h3&gt;
&lt;p&gt;雖然這安裝 Docker 的部分已經講過很多次，不過還是再寫一遍&lt;/p&gt;
&lt;p&gt;如果你已經有 Docker 執行環境就可以跳過&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;一樣先 SSH 連到伺服器上，安裝 Docker 跟需要的軟體，以下適用於 Debian 與 Ubuntu&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 先完整更新一下系統&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt full-upgrade -y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安裝一下等下會需要用到的軟體&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt install curl -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;更新好以後，使用 Docker 官方的&lt;a href=&#34;https://github.com/docker/docker-install&#34;&gt;一鍵安裝腳本&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ curl -fsSL https://get.docker.com/ &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接著稍等片刻，他會自動安裝到最新穩定版的 Docker&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 Docker 快速將 Ivacy VPN 轉換成 SOCKS 代理</title>
      <link>https://www.jkg.tw/p3402/</link>
      <pubDate>Thu, 03 Dec 2020 10:46:00 +0800</pubDate>
      <guid>https://www.jkg.tw/p3402/</guid>
      <description>&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.jkg.tw/p3401/&#34;&gt;上一篇&lt;/a&gt;介紹到快速使用 Docker 連線 OpenVPN 搭建本地 SOCKS 代理&lt;/p&gt;
&lt;p&gt;文中是使用 KeepSolid VPN Unlimited 來範例，不過貌似有許多人說他買的是 &lt;a href=&#34;https://www.jkg.tw/p3388/&#34;&gt;Ivacy VPN&lt;/a&gt; 不能用。。 🤷‍♂️&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;Ivacy VPN 提供的 OpenVPN 其實也是可以使用同一個 &lt;a href=&#34;https://github.com/binhex/arch-privoxyvpn&#34;&gt;Docker Image&lt;/a&gt; 的&lt;/p&gt;
&lt;p&gt;不過需要跟 Ivacy 技術支援先拿到你的 Ivacy ID，因為他們家 OpenVPN 登入帳號是用 Ivacy ID&lt;/p&gt;
&lt;p&gt;這個 ID 並不是你在 Ivacy 官網註冊的 eMail，所以如果你直接使用 OpenVPN 方式與自己 eMail 信箱來登入的話&lt;/p&gt;
&lt;p&gt;永遠都會出現 AUTH FAILED 的錯誤&lt;/p&gt;
&lt;p&gt;比較麻煩的是目前這個 Ivacy ID 並不能自己透過官網查詢，所以只能透過官網的 Live Chat 來取得&lt;/p&gt;
&lt;p&gt;先打開 Ivacy 官網支援網頁： &lt;a href=&#34;https://support.ivacy.com&#34;&gt;https://support.ivacy.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.jkg.tw/media/2020/12/HjXcBQlc00m94QSKGd26.png#center&#34;&gt;&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;Tickets 跟 Live Chat 兩個選一個就可以了，建議直接用 Live Chat 比較快&lt;/p&gt;
&lt;p&gt;附上簡易範本，快速讓技術支援搞懂你遇到的問題&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;I try to use OpenVPN protocol connect to Ivacy&amp;#39;s server, but always showing up &amp;#34;AUTH FAILED&amp;#34;?
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;My Ivacy Account：xxxxx@abc.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Please help, Thanks!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;​&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 Docker 快速將 OpenVPN 轉換成本地 SOCKS 代理</title>
      <link>https://www.jkg.tw/p3401/</link>
      <pubDate>Tue, 01 Dec 2020 12:05:00 +0800</pubDate>
      <guid>https://www.jkg.tw/p3401/</guid>
      <description>&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;最近一、兩年各類 VPN 廣告鋪天蓋地，而且還有&lt;a href=&#34;https://www.jkg.tw/p3388/&#34;&gt;終身訂閱的 VPN&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;VPN 偶而拿來跨區看其他國家影片或者拿來臨時加速上網還是挺不錯的&lt;/p&gt;
&lt;p&gt;不過使用他們官方提供的 App 來連線使用的話，通常都是全域網路都會被帶入到 VPN 隧道裡面&lt;/p&gt;
&lt;p&gt;雖然簡單無腦，但是不適合需要進階一點的使用方式&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;所幸他們這些 VPN 服務商有些都有提供 OpenVPN、IKEv2 or WireGuard 等其他連線方法&lt;/p&gt;
&lt;p&gt;這篇主要是讓你透過 Docker 快速將 OpenVPN 轉換成本地內網可用的 SOCKS 代理&lt;/p&gt;
&lt;p&gt;轉換成 SOCKS 代理後，你就可以使用 Proxy.pac、瀏覽器的外掛 &lt;a href=&#34;https://github.com/FelisCatus/SwitchyOmega&#34;&gt;SwitchyOmega&lt;/a&gt; 或者 Surge。。等等&lt;/p&gt;
&lt;p&gt;來達到進階自由的代理模式，例如你可以設定遇到 Netflix 域名時，就透過日本代理去連線&lt;/p&gt;
&lt;p&gt;遇到 Disney+ 時候，就透過美國代理去連線，遇到沒有設定的域名，就還是維持你原本的網路去上網&lt;/p&gt;
&lt;p&gt;全自動無需每次都要手動開關 VPN，非常的方便&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;h3 id=&#34;下載-openvpnovpn-設定檔&#34;&gt;下載 OpenVPN.ovpn 設定檔&lt;/h3&gt;
&lt;p&gt;以下使用 KeepSolid VPN Unlimited 來搭配使用（各家公司 OpenVPN 提供的連線方式有可能不同）&lt;/p&gt;
&lt;p&gt;首先先到 VPN Unlimited 官網的管理後台登入&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://my.keepsolid.com/products/vpn/&#34;&gt;https://my.keepsolid.com/products/vpn/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;這邊可以手動下載到他們家有提供的各種協議 VPN，你選好需要的國家跟協議以後&lt;/p&gt;
&lt;p&gt;就可以直接下載設定檔使用&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.jkg.tw/media/2020/12/i2YArvpq45YonAphFk10.png#center&#34;&gt;&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;可以多選幾個常用國家一起下載回來，每個國家都會是獨立的 ovpn 檔案&lt;/p&gt;
&lt;p&gt;下載的檔案請妥善保存，稍等要把這檔案掛入 Docker 裡面&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;h3 id=&#34;利用-docker-快速部屬&#34;&gt;利用 Docker 快速部屬&lt;/h3&gt;
&lt;p&gt;在 Docker Hub 上面找到有人實作的現成 image&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
