<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>安全碎碎念</title><link>https://quickstart-pearl.vercel.app/</link><description>Recent content on 安全碎碎念</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://quickstart-pearl.vercel.app/index.xml" rel="self" type="application/rss+xml"/><item><title>Terraform 基本使用（Docker + Nginx 示例）</title><link>https://quickstart-pearl.vercel.app/posts/terrform%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://quickstart-pearl.vercel.app/posts/terrform%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8/</guid><description>&lt;p&gt;+++
date = &amp;lsquo;2026-01-13T00:41:40+08:00&amp;rsquo;
draft = false
title = &amp;lsquo;Terraform 基本使用（Docker + Nginx 示例）&amp;rsquo;
+++&lt;/p&gt;
&lt;p&gt;用一个本地 Docker + Nginx 的示例，速览 Terraform 从 0 到 1 的基本用法。&lt;/p&gt;
&lt;h2 id="1-准备"&gt;1. 准备&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;安装 Terraform 与 Docker（本例直接使用 Docker provider）&lt;/li&gt;
&lt;li&gt;建议新建目录 &lt;code&gt;terraform-docker-nginx/&lt;/code&gt;，所有配置放在里面&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-最小示例-maintf"&gt;2. 最小示例 main.tf&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-hcl" data-lang="hcl"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;terraform&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; required_version &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &amp;#34;&amp;gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;.&lt;span style="color:#ae81ff"&gt;6&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;required_providers&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; docker &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; source &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;kreuzwerker/docker&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; version &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;~&amp;gt; 3.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;provider&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;docker&amp;#34;&lt;/span&gt; {}&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 创建一个专用网络
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;resource&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;docker_network&amp;#34; &amp;#34;web&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;tf-web&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 拉取 Nginx 镜像
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;resource&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;docker_image&amp;#34; &amp;#34;nginx&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;nginx:1.27-alpine&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; keep_locally &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 运行 Nginx 容器
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;resource&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;docker_container&amp;#34; &amp;#34;nginx&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;tf-nginx&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; image &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;docker_image&lt;/span&gt;.&lt;span style="color:#66d9ef"&gt;nginx&lt;/span&gt;.&lt;span style="color:#66d9ef"&gt;image_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;ports&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; internal &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; external &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;networks_advanced&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;docker_network&lt;/span&gt;.&lt;span style="color:#66d9ef"&gt;web&lt;/span&gt;.&lt;span style="color:#66d9ef"&gt;name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3-工作流"&gt;3. 工作流&lt;/h2&gt;
&lt;p&gt;在配置目录执行：&lt;/p&gt;</description></item><item><title>用 n8n 打造微信公众号自动发布神器</title><link>https://quickstart-pearl.vercel.app/posts/%E7%94%A8n8n%E6%89%93%E9%80%A0%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7%E8%87%AA%E5%8A%A8%E5%8F%91%E5%B8%83%E7%A5%9E%E5%99%A8/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://quickstart-pearl.vercel.app/posts/%E7%94%A8n8n%E6%89%93%E9%80%A0%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7%E8%87%AA%E5%8A%A8%E5%8F%91%E5%B8%83%E7%A5%9E%E5%99%A8/</guid><description>&lt;p&gt;+++
date = &amp;lsquo;2026-01-14T13:34:03+08:00&amp;rsquo;
draft = true
title = &amp;lsquo;用n8n打造微信公众号自动发布神器&amp;rsquo;
+++&lt;/p&gt;
&lt;h3 id="介绍n8n"&gt;介绍n8n&lt;/h3&gt;
&lt;p&gt;理论上可以采集任何支持rss订阅的文章,ai会根据指定的提示词进行数据处理以及润色并生成公众号文章草稿以及发布.&lt;/p&gt;
&lt;h3 id="技术栈"&gt;技术栈&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;n8n&lt;/li&gt;
&lt;li&gt;rsshub&lt;/li&gt;
&lt;li&gt;gemini2.5 pro&lt;/li&gt;
&lt;li&gt;n8n WeChat Official Account&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="效果演示"&gt;效果演示&lt;/h3&gt;
&lt;p&gt;演示视频: /Users/luckyme/Documents/quickstart/assets/video/1月14日.mp4&lt;/p&gt;
&lt;h3 id="原理以及步骤"&gt;原理以及步骤&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;设置定时触发器&lt;/li&gt;
&lt;li&gt;设置采集数据源(任何支持rss订阅的数据源都可)&lt;/li&gt;
&lt;li&gt;采集数据处理&lt;/li&gt;
&lt;li&gt;ai对数据进行再处理生成需要的格式&lt;/li&gt;
&lt;li&gt;对输出的数据进行格式转换支持公众号格式&lt;/li&gt;
&lt;li&gt;保存为草稿并可自动发布&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="关注公众号私信回复用-n8n-打造微信公众号自动发布神器领取n8n工作流源文件"&gt;关注公众号,私信回复“用 n8n 打造微信公众号自动发布神器”领取n8n工作流源文件~&lt;/h3&gt;</description></item><item><title>配置hugo+vercel自动化环境</title><link>https://quickstart-pearl.vercel.app/posts/%E9%85%8D%E7%BD%AEhugo+vercel%E8%87%AA%E5%8A%A8%E5%8C%96%E7%8E%AF%E5%A2%83/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://quickstart-pearl.vercel.app/posts/%E9%85%8D%E7%BD%AEhugo+vercel%E8%87%AA%E5%8A%A8%E5%8C%96%E7%8E%AF%E5%A2%83/</guid><description>&lt;p&gt;+++
date = &amp;lsquo;2026-01-13T00:41:40+08:00&amp;rsquo;
draft = false
title = &amp;lsquo;配置hugo+vercel自动化环境&amp;rsquo;
+++&lt;/p&gt;
&lt;p&gt;想把 Hugo 博客托管到 Vercel，并在每次推送后自动构建发布？下面用本仓库的配置做个完整示例。&lt;/p&gt;
&lt;h2 id="前置条件"&gt;前置条件&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;已有 Vercel 账号，并能从 GitHub/GitLab/Bitbucket 导入仓库&lt;/li&gt;
&lt;li&gt;本地安装 Git、curl，推荐先安装 Hugo Extended 版（&lt;code&gt;brew install hugo&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;代码里有一个 Hugo 站点，本例主题是 &lt;code&gt;ananke&lt;/code&gt;，基础配置在 &lt;code&gt;hugo.toml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="本地准备"&gt;本地准备&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;初始化站点：&lt;code&gt;hugo new site quickstart &amp;amp;&amp;amp; cd quickstart&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;添加主题并配置：将 &lt;code&gt;theme = 'ananke'&lt;/code&gt; 写入 &lt;code&gt;hugo.toml&lt;/code&gt;，按需调整 &lt;code&gt;baseURL&lt;/code&gt;、&lt;code&gt;title&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;写一篇文章：&lt;code&gt;hugo new posts/my-first-post.md&lt;/code&gt;，填入正文&lt;/li&gt;
&lt;li&gt;本地验证：&lt;code&gt;hugo server -D&lt;/code&gt; 打开 &lt;a href="http://localhost:1313"&gt;http://localhost:1313&lt;/a&gt; 检查页面&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="自动化构建脚本"&gt;自动化构建脚本&lt;/h2&gt;
&lt;p&gt;仓库提供了 &lt;code&gt;build.sh&lt;/code&gt; 作为 Vercel 的构建入口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安装 Dart Sass、Go、Hugo、Node.js 固定版本，保证 Vercel 环境一致&lt;/li&gt;
&lt;li&gt;最终执行：&lt;code&gt;hugo --gc --minify --baseURL &amp;quot;https://${VERCEL_PROJECT_PRODUCTION_URL}&amp;quot;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;VERCEL_PROJECT_PRODUCTION_URL&lt;/code&gt; 由 Vercel 自动注入，可让生成站点指向生产域名&lt;/li&gt;
&lt;li&gt;如需调整版本，修改脚本开头的几个 &lt;code&gt;*_VERSION&lt;/code&gt; 变量即可&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本地想模拟 Vercel，可以先导出域名再运行脚本：&lt;/p&gt;</description></item></channel></rss>