服务器部署Hugo

Github 安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # 删除旧版 Hugo which hugo &>/dev/null && sudo rm -f $(which hugo) # 下载并安装最新版本的 Hugo curl -s https://api.github.com/repos/gohugoio/hugo/releases/latest \ | grep "browser_download_url" \ | grep -E "hugo_extended_.*Linux-64bit\.tar\.gz" \ | grep -vE "\.with" \ | cut -d '"' -f 4 | head -n 1 \ | xargs wget -O hugo.tar.gz && \ tar -xzf hugo.tar.gz && \ sudo mv hugo /usr/local/bin/ && \ rm -f hugo.tar.gz LICENSE* README.md # 固定版本 wget https://github.com/gohugoio/hugo/releases/download/v0.147.2/hugo_extended_0.147.2_Linux-64bit.tar.gz -O hugo.tar.gz && \ tar -xzf hugo.tar.gz && \ sudo mv hugo /usr/local/bin/ && \ rm -rf hugo.tar.gz LICENSE* README.md 安装主题 1 2 3 4 5 6 7 8 9 10 # 创建一个名为 blog 的新 Hugo 站点 hugo new site /opt/blog --format yaml # 进入站点目录 cd /opt/blog # 初始化 git 仓库(推荐,方便管理主题子模块) apt install git git init # 添加主题为子模块 git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod git submodule update --remote --merge 默认配置示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 baseURL: "https:example.com" # 网站的基础 URL,部署到子路径需调整此项 title: Beiyuan # 网站标题 theme: PaperMod # 使用的主题名称(已安装的主题文件夹名) languageCode: zh # 网站默认语言(中文) defaultContentLanguage: zh # 默认内容语言 hasCJKLanguage: true # 是否启用对中日韩语言优化(统计字数、阅读时间等更准确) pagination: pagerSize: 10 # 每页最多显示 10 篇文章 enableRobotsTXT: true # 启用 robots.txt 文件(搜索引擎爬虫指引) buildDrafts: false # 不构建草稿文章 buildFuture: false # 不构建发布日期在未来的文章 buildExpired: false # 不构建已过期的文章 minify: disableXML: true # 不压缩生成的 XML 文件 #minifyOutput: true # 压缩 HTML 输出 params: env: production # 环境变量,生产环境时可启用 GA、SEO 等 title: Beiyuan # 站点标题(与上面重复,但为主题使用) description: "Share" # 网站描述 keywords: [资源分享] # 关键词,SEO 使用 author: Beiyuan # 作者名称 DateFormat: "January 2, 2006" # 日期格式(文章时间显示格式) defaultTheme: auto # 默认主题:auto(跟随系统)、dark、light disableThemeToggle: false # 是否禁用切换明暗模式按钮 ShowReadingTime: true # 显示文章阅读时间 ShowPostNavLinks: true # 显示上一篇/下一篇导航链接 ShowBreadCrumbs: true # 显示面包屑导航 ShowCodeCopyButtons: false # 是否显示“复制代码”按钮 ShowWordCount: true # 显示文章字数 ShowRssButtonInSectionTermList: true # 在分类、标签页面显示 RSS 按钮 UseHugoToc: true # 使用 Hugo 内置目录而非主题自带目录 disableSpecial1stPost: false # 是否禁用首页首篇特殊展示样式 disableScrollToTop: false # 是否禁用回到顶部按钮 comments: false # 全局禁用评论 hidemeta: false # 是否隐藏 meta 信息(作者、时间等) hideSummary: false # 是否隐藏摘要 showtoc: false # 是否默认显示目录 tocopen: false # 是否默认展开目录 assets: # disableHLJS: true # 是否禁用 highlight.js(如果用的是 Chroma 可禁用) # disableFingerprinting: true # 是否禁用静态资源指纹(可选) favicon: "/favicon.ico" # 网站图标路径(放置在 static/ 下) favicon16x16: "/favicon-16x16.png" favicon32x32: "/favicon-32x32.png" apple_touch_icon: "/apple-touch-icon.png" safari_pinned_tab: "/favicon.ico" label: text: "Beiyuan" # 左上角 Logo 文字 icon: /apple-touch-icon.png # Logo 图标路径 iconHeight: 35 # Logo 高度 # 首页介绍卡片 homeInfoParams: Title: "Beiyuan Shares" # 首页介绍标题 Content: A place where I share the things I want to share # 首页介绍内容 cover: hidden: true # 是否在结构化数据中隐藏封面 hiddenInList: true # 是否在列表页隐藏封面图 hiddenInSingle: true # 是否在单页隐藏封面图 # 搜索相关配置(使用 Fuse.js 本地搜索) # Fuse.js 配置说明:https://fusejs.io/api/options.html fuseOpts: isCaseSensitive: false shouldSort: true location: 0 distance: 1000 threshold: 0.4 minMatchCharLength: 0 limit: 10 keys: ["title", "permalink", "summary", "content"] menu: main: - identifier: archives # 归档页面菜单项 name: 归档 url: /archives/ weight: 10 - identifier: tags # 标签页面菜单项 name: 标签 url: /tags/ weight: 20 - identifier: search # 搜索页面菜单项 name: 搜索 url: /search/ weight: 30 # 使用 Hugo 的语法高亮器(Chroma) # 更多配色方案见:https://xyproto.github.io/splash/docs/all.html pygmentsUseClasses: true # 使用 CSS 类进行高亮(建议开启,便于主题样式控制) markup: highlight: noClasses: false # 使用 CSS 类而非内联样式(false 推荐) # anchorLineNos: true # 是否为每一行添加锚点(方便链接到指定代码行) # codeFences: true # 启用 ``` 代码块支持(建议开启) # guessSyntax: true # 启用语言猜测(不指定语言时尝试自动识别) # lineNos: true # 显示代码行号 # style: monokai # 设置代码高亮风格,如:monokai、dracula、github、solarized 等 默认文章头示例 1 2 3 4 5 6 7 8 9 10 11 12 13 --- auther: Beiyuan author: Beiyuan categories: - 自建折腾 date: '2025-05-06T14:26:29' draft: false lastmod: '2025-05-06T14:26:29' tags: - Tools title: 服务器部署Hugo --- 创建文章并启动 1 2 3 4 #创建新文章 hugo new posts/my-new-post.md #启动,创建完成后就和hugo脱离了,hugo只需要写文章build就行了 hugo --environment production --minify --cleanDestinationDir Nginx反代 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #安装所需程序 sudo apt install certbot python3-certbot-nginx python3-certbot-dns-cloudflare nginx #手动编辑 sudo nano /etc/nginx/sites-available/hugo #启用配置 sudo ln -s /etc/nginx/sites-available/hugo /etc/nginx/sites-enabled/ #从Cloudflare获取区域DNS API sudo nano /etc/letsencrypt/cloudflare.ini dns_cloudflare_api_token = 你的API #赋予权限 sudo chmod 600 /etc/letsencrypt/cloudflare.ini #使用CF-DNS申请证书,你不想关小黄云用这个,全程y就行 sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini -d example.com #替换为你的域名 #直接申请证书,上面的申请完后可以用这个命令自动配置HTTPS,选1 sudo certbot --nginx -d example.com #替换为你的域名 #这里是把hugo生成的public软链接到nginx目录 sudo ln -s /opt/blog/public /var/www/html/hugo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 server { listen 80; listen [::]:80; server_name example.com; # 替换为您的域名或 IP 地址 root /var/www/html/hugo; # Hugo 网站的 public 目录路径 (确保这个路径存在并指向 Hugo 的输出目录) index index.html; # Hugo 路由兼容(archives、tags 等路径支持) location / { try_files $uri $uri/ /index.html; } # 启用 gzip 压缩 gzip on; gzip_vary on; gzip_min_length 1024; gzip_proxied any; gzip_comp_level 6; gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml; # 缓存静态资源 location ~* \.(?:css|js|jpg|jpeg|gif|png|ico|svg|woff2?|ttf|eot|otf|json|webp)$ { expires 30d; access_log off; add_header Cache-Control "public"; } # 强化安全头部 add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; add_header X-XSS-Protection "1; mode=block" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always; add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always; # 拒绝访问隐藏文件(如 .git) location ~ /\. { deny all; } } 启用归档和搜索 1 2 3 cd /opt/blog/content nano archives.md nano search.md 1 2 3 4 5 6 7 8 9 10 11 12 13 --- auther: Beiyuan author: Beiyuan categories: - 自建折腾 date: '2025-05-06T14:26:29' draft: false lastmod: '2025-05-06T14:26:29' tags: - Tools title: 服务器部署Hugo --- 1 2 3 4 5 6 7 8 9 10 11 12 13 --- auther: Beiyuan author: Beiyuan categories: - 自建折腾 date: '2025-05-06T14:26:29' draft: false lastmod: '2025-05-06T14:26:29' tags: - Tools title: 服务器部署Hugo --- 标签分类和文章页面修改中文 要将标签和分类等页面改为中文需要在对应文件夹下添加 _index.md 文件。 ...

创建: 2025年09月03日 | 更新: 2025年12月04日 | 字数: 2261字 | 阅读时长: 5分钟 | Beiyuan

个人大模型API管理工具UNI-API部署

Github 面板 配置生成 1 2 3 mkdir -p /opt/uniapi && cd /opt/uniapi nano api.yaml nano docker-compose.yaml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 services: #主程序 uniapi: image: yym68686/uni-api:latest restart: unless-stopped ports: - "8001:8000" volumes: - ./api.yaml:/home/api.yaml - ./data:/home/data #面板服务 uniapi-frontend: image: ghcr.io/melosbot/uni-api-status:latest restart: unless-stopped ports: - "3000:3000" environment: - NODE_ENV=production - PORT=3000 # 以下为容器内的路径,与 volumes 挂载点对应 - API_YAML_PATH=/app/config/api.yaml - STATS_DB_PATH=/app/data/stats.db volumes: # 将宿主机的 api.yaml 挂载到容器内,需要【读写】权限 - ./api.yaml:/app/config/api.yaml # 将宿主机包含 stats.db 的目录挂载到容器内,建议只读【:ro】 - ./data:/app/data:ro 1 docker compose up -d 最小可启动配置模板 1 2 3 4 5 6 7 8 providers: - provider: provider_name # 服务提供商名称, 如 openai、anthropic、gemini、openrouter,随便取名字,必填 base_url: https://api.your.com/v1/chat/completions # 后端服务的API地址,必填 api: sk-YgS6GTi0b4bEabc4C # 提供商的API Key,必填,自动使用 base_url 和 api 通过 /v1/models 端点获取可用的所有模型。 # 这里可以配置多个提供商,每个提供商可以配置多个 API Key,每个提供商可以配置多个模型。 api_keys: - api: sk-Pkj60Yf8JFWxfgRmXQFWyGtWUddGZnmi3KlvowmRWpWpQxx # API Key,用户请求 uni-api 需要 API key,必填 # 该 API Key 可以使用所有模型,即可以使用 providers 下面设置的所有渠道里面的所有模型,不需要一个个添加可用渠道。

创建: 2025年09月03日 | 更新: 2025年12月04日 | 字数: 409字 | 阅读时长: 1分钟 | Beiyuan

利用CF搭建DDNS

把域名接入cloudflare 打开cloudflare,登陆账号添加网站按照提示操作 获取Global API Key 访问 https://dash.cloudflare.com/profile在页面下方找到 Global API Key,点击右侧的 View 查看 Key,并保存下来 ,在页面下方找到 Global API Key,点击右侧的 View 查看 Key,并保存下来 ...

创建: 2025年09月03日 | 更新: 2025年12月04日 | 字数: 432字 | 阅读时长: 1分钟 | Beiyuan

手搓Nginx反代开启HTTPS

Nginx Documents 安装Nginx 1. 安装依赖项 1 2 3 4 5 #我只用Debian和Ubuntu,需要centos的自行去nginx官网查找 #Debian sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring -y #Ubuntu sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring -y 2 . 导入 Nginx 官方签名密钥 1 2 curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null 3 . 验证密钥 1 gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg 应看到如下输出中的指纹: ...

创建: 2025年09月03日 | 更新: 2025年12月04日 | 字数: 686字 | 阅读时长: 2分钟 | Beiyuan

乌鸦:黑羽之下的文明镜像—祥瑞与不祥的千年辩证

在人类文明的星空中,乌鸦始终是一面被多重光谱折射的镜子。它曾是东方神话中托举太阳的“日御神鸟”,是儒家伦理里“反哺孝亲”的道德图腾,却在西方哥特文学中化为不祥的预言者。这种截然对立的文化解读背后,隐藏着“乌鸦”二字深刻的历史密码与文明辩证。 ...

创建: 2025年09月03日 | 更新: 2025年12月04日 | 字数: 1393字 | 阅读时长: 3分钟 | Beiyuan

自言自语的歌曲分享-Never Be The Same(艾怡良)

很激昂的一首歌,好听 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 曾经熟悉的面孔 却如此陌生 不看不听 不想也不问 就算用尽一切去守护 却依然向下沉沦 你的心 曾经用得比谁都还真 你的爱 曾经给得比谁都还深 当我们选择埋葬青春 就当作它不曾发生 每天睁开双眼 究竟那个我是谁 究竟那个我是谁 Never Be The Same 逃离被你围绕的世界 逃离所有温柔的错觉 剩下的旅程 独自一人 也许风景会变得更美 去追寻各自想要的明天 我的改变会让你看见 放手我们才了解 Cause we're never gonna be the same Same Same 而是非对错的定义 谁 说的准 你的吻 有多真 谁能够保证 两个人双手越紧握 越陌生 两颗真心越靠近 越冰冷 够了吧 别争论 谁是谁的永恒 我只想逃离回忆的并吞 我只要自己的灵魂 每天睁开双眼 未来的我会是谁 我到底是谁 未来的我会是谁 Never Be The Same 逃离被你围绕的世界 逃离所有温柔的错觉 剩下的旅程 独自一人 也许风景会变得更美 去追寻各自想要的明天 我的改变会让你看见 放手我们才了解 Cause we're never gonna be the same 不再眷恋 不再妥协 不再继续 自艾自怜 Oh 自艾自怜 不再流泪 不再退却 放掉回忆 才能向前 Oh 大步向前 逃离被你围绕的世界 逃离所有温柔的错觉 剩下的旅程 独自一人 也许风景会变得更美 去追寻各自想要的明天 我的改变会让你看见 放手我们才了解 Cause we're never gonna be the same Yeah Cause we're never gonna be the same Yeah Cause we're never gonna be the same 去追寻各自想要的明天 我的改变会让你看见 放手我们才了解 Cause we're never gonna be the same Oh Cause we're never gonna be the same Oh Never gonna be the same

创建: 2025年09月03日 | 更新: 2025年12月04日 | 字数: 610字 | 阅读时长: 2分钟 | Beiyuan

Docker部署Openwebui加Ollama

Github Github 1 2 mkdir /opt/openwebui && cd /opt/openwebui nano docker-compose.yaml 单独安装 1 2 3 4 5 6 7 8 services: openwebui: image: ghcr.io/open-webui/open-webui:main ports: - "8080:8080" volumes: - ./data/open-webui:/app/backend/data restart: unless-stopped 搭配Ollama 这里同时安装了Ollama和Openwebui这样Openwebui能自动识别出来Ollama,直接使用即可 ...

创建: 2025年09月02日 | 更新: 2025年12月04日 | 字数: 157字 | 阅读时长: 1分钟 | Beiyuan

PaperMod启用评论

1. 创建仓库 该仓库是公开的,否则访客将无法查看 Discussion 2 启用讨论 (1)单击设置 (2)向下滚动到 Features 部分 –> 勾选讨论 –> 点击 Set up Discussions (3)滚动到下方,点击 Start discussions ...

创建: 2025年05月15日 | 更新: 2025年12月04日 | 字数: 1104字 | 阅读时长: 3分钟 | Beiyuan