Marco Nie https://blog.niekun.net/ zh-CN you are the company you keep... Thu, 24 Apr 2025 09:04:00 +0800 Thu, 24 Apr 2025 09:04:00 +0800 建立本地 Web 服务器 https://blog.niekun.net/archives/3024.html https://blog.niekun.net/archives/3024.html Thu, 24 Apr 2025 09:04:00 +0800 admin 建立一个本地 Web 服务器来快速查看本地网站(HTML, CSS, JavaScript 文件)有几种非常快速的方法,通常只需要一行命令。这里介绍几种最常用的:

1. 使用 Python 内置的 HTTP 服务器 (通常最快,无需额外安装)

如果你的电脑上安装了 Python 3 (现在大多数操作系统都自带或容易安装),这是最快的方法之一,因为它不需要安装任何额外的库。

  • 步骤:

    1. 打开你的终端或命令提示符 (Terminal / Command Prompt / PowerShell)。
    2. 使用 cd 命令导航到你的网站文件所在的根目录(也就是包含 index.html 文件的那个文件夹)。
    3. 运行以下命令:

      python -m http.server
      • 如果你使用的是较旧的 Python 2 版本 (尽量避免使用),命令是:

        python -m SimpleHTTPServer
    4. 终端会显示类似 Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ... 的信息。
    5. 打开你的网页浏览器,访问 http://localhost:8000 或者 http://127.0.0.1:8000
    6. 如果你的根目录下没有 index.html,它会列出目录中的文件。
    7. 要停止服务器,回到终端按 Ctrl + C
  • 优点: 极快启动,通常无需安装额外软件。
  • 指定端口: 如果 8000 端口被占用,你可以指定其他端口:

    python -m http.server 8080

2. 使用 Node.js 的 http-serverlive-server (功能更强,需要 Node.js)

如果你安装了 Node.js 和 npm (Node Package Manager),可以使用一些非常方便的包。

  • a) http-server (基础服务器)

    1. 首次安装 (全局安装,只需一次):

      npm install -g http-server
    2. 启动服务器:

      • 在终端中,cd 到你的网站根目录。
      • 运行:

        http-server
    3. 终端会显示可用的访问地址,通常是 http://127.0.0.1:8080
    4. 在浏览器中打开该地址。
    5. Ctrl + C 停止。
  • b) live-server (带自动刷新功能)
    live-server 会在你修改并保存文件后自动刷新浏览器,非常适合开发调试。

    1. 首次安装 (全局安装,只需一次):

      npm install -g live-server
    2. 启动服务器:

      • 在终端中,cd 到你的网站根目录。
      • 运行:

        live-server
    3. 它通常会自动在你的默认浏览器中打开网站 (http://127.0.0.1:8080 或类似地址)。当你修改并保存 HTML/CSS/JS 文件时,浏览器会自动刷新。
    4. Ctrl + C 停止。
  • 优点: 功能更强(特别是 live-server 的自动刷新),Node.js 在 Web 开发中很常用。
  • 缺点: 需要先安装 Node.js 和对应的 npm 包。

3. 使用 VS Code 扩展 "Live Server" (集成在编辑器中,非常方便)

如果你使用 Visual Studio Code 编辑器,这是最方便的方法之一。

  • 步骤:

    1. 打开 VS Code。
    2. 转到扩展视图 (Extensions view, 图标通常在左侧边栏)。
    3. 搜索 "Live Server" (作者通常是 Ritwick Dey)。
    4. 点击 "Install" 安装。
    5. 安装完成后,打开你的网站项目文件夹。
    6. 在你的 index.html 文件上右键单击,选择 "Open with Live Server"。
    7. 或者,点击 VS Code 底部状态栏右下角的 "Go Live" 按钮。
    8. 服务器会启动,并在浏览器中自动打开页面,同样支持自动刷新。
    9. 要停止,可以再次点击状态栏的端口号按钮 (显示为 "Port: 5500" 或类似)。
  • 优点: 无需命令行操作,与编辑器紧密集成,带自动刷新。
  • 缺点: 需要使用 VS Code 编辑器。

4. 使用 PHP 内置服务器 (如果已安装 PHP)

如果你的系统碰巧安装了 PHP (通常用于后端开发,但也可用于快速启动静态服务器)。

  • 步骤:

    1. 打开终端或命令提示符。
    2. cd 到你的网站根目录。
    3. 运行:

      php -S localhost:8000
      • 你可以将 8000 替换为其他端口号。
    4. 在浏览器中访问 http://localhost:8000
    5. Ctrl + C 停止。
  • 优点: 如果已安装 PHP,则命令简单。
  • 缺点: 不如 Python 那么普遍预装,也不如 Node.js 工具或 VS Code 扩展功能丰富(如自动刷新)。

哪个最快?

  • 如果你有 Python: python -m http.server 通常是最快的,因为它很可能已经安装好了。
  • 如果你用 VS Code: 安装并使用 "Live Server" 扩展几乎是最方便、启动最快的方式(点击按钮即可)。
  • 如果你常用 Node.js: live-serverhttp-server 也非常快,并且 live-server 提供了非常有用的自动刷新功能。

选择哪种取决于你电脑上已有的环境和你个人的偏好。对于纯粹的“快速启动一个能看本地网页的服务器”,Python 的内置服务器通常拔得头筹。

]]>
0 https://blog.niekun.net/archives/3024.html#comments https://blog.niekun.net/feed/archives/3024.html
cloc 统计项目代码量 https://blog.niekun.net/archives/cloc.html https://blog.niekun.net/archives/cloc.html Wed, 26 Mar 2025 14:03:15 +0800 admin 最近需要对一个项目中的代码量进行统计,发现 cloc 可以完美的达到需求,简单命令行即可完成精确的统计。

GitHub 主页:https://github.com/AlDanial/cloc

常用语法

统计文件夹中的代码构成:

cloc /path/to/folder

统计当前文件夹:

cloc .

排除文件夹中某些文件夹:

cloc --exclude-dir=.github,myenv,build,dist .

效果如下:

cloc --exclude-dir=.git,.idea,.vscode,.github,myenv,build,dist .
      33 text files.
      26 unique files.
      23 files ignored.

github.com/AlDanial/cloc v 2.04  T=0.16 s (162.0 files/s, 67602.7 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Python                          22           1609           1947           6254
Markdown                         2            114              0            484
JSON                             1              0              0            403
Text                             1              0              0             37
-------------------------------------------------------------------------------
SUM:                            26           1723           1947           7178
-------------------------------------------------------------------------------

以上就是 cloc 的简单用法。

]]>
0 https://blog.niekun.net/archives/cloc.html#comments https://blog.niekun.net/feed/archives/cloc.html
honkit 使用教程及部署github page https://blog.niekun.net/archives/3021.html https://blog.niekun.net/archives/3021.html Fri, 17 Jan 2025 17:14:00 +0800 admin 1. 什么是 Honkit?

Honkit 是一个现代化的静态书籍生成工具,它是基于旧版 GitBook 开发的,支持 Markdown 文件的编写和多种输出格式,如 HTML 和 PDF。

2. 初始化 Honkit 项目

2.1 创建 Honkit 项目

  1. 创建项目目录

    mkdir my-honkit-project
    cd my-honkit-project
  2. 初始化 Honkit 项目

    npx honkit init

    这会生成以下两个文件:

    • README.md:书籍的主页面。
    • SUMMARY.md:目录结构的定义。
  3. 安装 Honkit

    npm install honkit --save-dev

3. 本地构建书籍

3.1 运行开发服务器

在项目目录中运行以下命令启动本地预览:

npx honkit serve

默认情况下,书籍会在 http://localhost:4000 上运行。

3.2 生成静态文件

当书籍准备好后,运行以下命令生成静态 HTML 文件:

npx honkit build

生成的文件会存储在 _book 目录中。


4. 生成 PDF 文件

Honkit 支持将书籍生成 PDF 文件,但需要预先安装 Calibre 电子书管理软件。

4.1 安装 Calibre

  1. 下载 Calibre

  2. 确保 Calibre 路径正确

    • 检查环境变量

      • 通常,Calibre 安装会自动将路径添加到系统的环境变量 PATH 中。
      • 如果未自动添加,手动将 Calibre 的安装目录路径添加到 PATH 环境变量中。
    • 例如,Windows 系统下,路径可能为:

      C:\Program Files\Calibre2
    • Linux 和 macOS 用户可通过以下命令验证:

      which ebook-convert

      如果返回路径为空,说明需要手动添加。

  3. 重新打开终端
    添加路径后,确保关闭并重新打开终端。

4.2 生成 PDF

运行以下命令生成 PDF 文件:

npx honkit pdf . output.pdf
  • . 表示当前目录。
  • output.pdf 是生成的 PDF 文件名。

5. 部署到 GitHub Pages

5.1 创建 GitHub 仓库

  1. 前往 GitHub 创建一个新仓库(例如 my-honkit-book)。
  2. 将本地项目与远程仓库关联:

    git init
    git remote add origin https://github.com/<username>/my-honkit-book.git
    git add .
    git commit -m "Initial commit"
    git branch -M main
    git push -u origin main

5.2 配置 GitHub Actions 自动部署

  1. 创建 GitHub Actions 配置文件
    在项目的根目录下创建 .github/workflows/deploy.yml 文件,内容如下:

    name: Deploy Honkit to GitHub Pages
    
    on:
      push:
        branches:
          - main
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
        - name: Checkout Code
          uses: actions/checkout@v3
    
        - name: Setup Node.js
          uses: actions/setup-node@v3
          with:
            node-version: '18'
    
        - name: Install Dependencies
          run: npm install
    
        - name: Build Honkit
          run: npx honkit build
    
        - name: Deploy to GitHub Pages
          uses: peaceiris/actions-gh-pages@v3
          with:
            github_token: ${{ secrets.GITHUB_TOKEN }}
            publish_dir: ./_book
  2. 提交配置文件
    提交并推送配置文件到 GitHub:

    git add .github/workflows/deploy.yml
    git commit -m "Add GitHub Actions for deployment"
    git push origin main
  3. 启用 GitHub Pages

    • 进入仓库的 Settings > Pages
    • Source 下选择 gh-pages 分支,点击保存。

6. 绑定自定义域名

6.1 配置 GitHub Pages

  1. 进入仓库的 Settings > Pages
  2. Custom domain 中输入您的自定义域名(例如 www.example.com)。
  3. 点击 Save。GitHub 会自动生成一个 CNAME 文件。

6.2 配置 DNS 记录

登录您的域名注册商控制台,添加以下 DNS 记录:

  • 绑定子域名(例如 www.example.com):
    添加 CNAME 记录

    www  CNAME  <username>.github.io
注意:将 <username> 替换为您的 GitHub 用户名。

6.3 启用 HTTPS

  1. 返回 GitHub 仓库的 Settings > Pages
  2. 勾选 Enforce HTTPS,以启用 HTTPS 访问。

自定义域名每次推送后消失的解决方法

当每次推送代码后,自定义域名设置消失,通常是由于 CNAME 文件被覆盖或删除。GitHub Pages 需要根目录的 CNAME 文件来保存自定义域名信息。如果该文件丢失或被覆盖,GitHub 就无法识别您的自定义域名。


解决方法

手动将 CNAME 文件添加到源码目录

  1. 创建 CNAME 文件
    在项目根目录(如 main 分支)下创建一个 CNAME 文件,并在文件中输入您的自定义域名,例如:

    www.example.com
  2. 提交更改
    提交并推送 CNAME 文件到远程仓库:

    git add CNAME
    git commit -m "Add CNAME file"
    git push origin main
  3. 验证
    每次部署后,CNAME 文件会自动被包含在 gh-pages 分支中,不会被覆盖。

验证步骤

  1. 检查 CNAME 文件

    • 进入 GitHub 仓库的 gh-pages 分支,确认根目录下有 CNAME 文件。
    • 文件内容应为您的自定义域名,例如:

      www.example.com
  2. 检查 GitHub Pages 设置

    • 转到 Settings > Pages
    • 确认自定义域名已正确显示,并启用 HTTPS
  3. 测试访问
    使用您的自定义域名访问页面,确认是否能够正确加载。

7. 常见问题及解决方法

问题 1:npx honkit pdf 报错 Command failed: ebook-convert not found

原因
Calibre 未正确安装,或 ebook-convert 工具未添加到系统的 PATH 环境变量中。

解决方法

  1. 确保 Calibre 已安装,并重新确认安装路径:

    • Windows 默认路径:C:\Program Files\Calibre2
    • macOS/Linux 使用 which ebook-convert 检查路径。
  2. 手动将 Calibre 的安装路径添加到系统环境变量中:

    • Windows

      • 打开“环境变量”设置,找到 PATH
      • 添加 C:\Program Files\Calibre2
    • Linux/macOS

      • 编辑 ~/.bashrc~/.zshrc 文件,添加以下内容:

        export PATH="/path/to/calibre:$PATH"

        替换 /path/to/calibre 为 Calibre 的实际路径。

      • 保存后运行 source ~/.bashrcsource ~/.zshrc 使更改生效。
  3. 重新运行 npx honkit pdf

问题 2:GitHub Actions 部署失败,提示 Permission denied

原因
GitHub Actions 无法向 gh-pages 分支推送更改,通常是因为缺少权限。

解决方法

  1. 确保 GitHub 仓库的 Settings > Actions > General 中已启用 Read and write permissions

    • 打开 Workflow permissions,选择 Read and write permissions
    • 勾选 Allow GitHub Actions to create and approve pull requests
  2. 确认 GitHub Actions 配置文件中使用的是 github_token

    with:
      github_token: ${{ secrets.GITHUB_TOKEN }}

问题 3:GitHub Pages 部署成功,但自定义域名未生效

原因
DNS 记录配置错误或未生效。

解决方法

  1. 登录域名管理平台,检查 DNS 配置:

    • 确认 A 记录或 CNAME 记录配置正确。
    • 等待 DNS 记录生效(可能需要 5-48 小时)。
  2. 检查仓库根目录下是否有 CNAME 文件,内容是否正确(应与自定义域名一致)。
  3. 验证 DNS 配置是否正确:

  4. 启用 HTTPS:

    • 进入 Settings > Pages,勾选 Enforce HTTPS

问题 4:生成的书籍内容显示错乱或样式缺失

原因

  • Markdown 文件中格式不正确。
  • SUMMARY.md 的目录结构未正确链接。

解决方法

  1. 确认 Markdown 文件的格式是否符合规范。
  2. 检查 SUMMARY.md 中的链接是否与文件路径一致:

    * [章节标题](path/to/file.md)
  3. 清理并重新构建书籍:

    npx honkit build

问题 5:自定义 PDF 样式未生效

原因
未指定自定义样式文件或样式文件路径错误。

解决方法

  1. 创建一个 CSS 样式文件(如 custom.css),自定义 PDF 的排版样式。
  2. 使用以下命令生成 PDF 并指定样式文件:

    npx honkit pdf --css custom.css . output.pdf

    8. 支持与反馈

如果您遇到未列出的问题或有其他疑问,请参考以下支持途径:

完成这些步骤后,您可以成功使用 Honkit 创建、部署和管理文档,解决常见问题,并生成符合您需求的 HTML 和 PDF 文档!

]]>
0 https://blog.niekun.net/archives/3021.html#comments https://blog.niekun.net/feed/archives/3021.html
docker compose 配置自动更新 https://blog.niekun.net/archives/docker-compose.html https://blog.niekun.net/archives/docker-compose.html Sun, 18 Aug 2024 21:42:00 +0800 admin docker compose 配置文件可以很方便的配置和运行 docker 容器,手动更新容器的方法是在 yml 目录下运行以下命令:

docker compose pull && docker compose up -d

可以通过在 compose 文件中设置 watchtower 来定期自动拉取最新镜像并启动容器,同时可以配置删除旧镜像和容器。

在 docker-compose.yml 文件中增加以下内容:

version: '3'
services:

  ...

  watchtower:
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 3600 --cleanup --remove-volumes
    environment:
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_REMOVE_VOLUMES=true

以下是主要的配置说明:

  • --interval 参数设置为 3600。这意味着 Watchtower 将每 3600 秒(即每小时)检查一次更新。
  • --cleanupWATCHTOWER_CLEANUP=true 确保在更新后清理旧的镜像。
  • --remove-volumesWATCHTOWER_REMOVE_VOLUMES=true 确保删除与旧容器关联的匿名卷。

使用这个配置,Watchtower 将:

  • 每小时检查一次你的容器是否有更新
  • 如果发现更新,它会停止旧容器,启动新容器
  • 删除旧的容器和相关的匿名卷
  • 删除旧的镜像

这个配置应该能满足大多数用例的需求,既能保持你的容器相对最新,又不会过于频繁地进行检查和更新操作。

需要注意的是:

  • Watchtower 只会删除它更新的容器的旧版本。它不会删除系统中的其他未使用的容器或镜像。
  • 它只删除匿名卷,不会删除命名卷。
  • 如果你想删除所有未使用的镜像(不仅仅是 Watchtower 更新的),你可能需要定期运行 docker image prune 命令。
]]>
0 https://blog.niekun.net/archives/docker-compose.html#comments https://blog.niekun.net/feed/archives/docker-compose.html
通过浏览器访问服务器指定文件内容 https://blog.niekun.net/archives/3014.html https://blog.niekun.net/archives/3014.html Wed, 14 Aug 2024 15:58:01 +0800 admin 通过 nginx 可以反代服务器指定文件,然后就可以在网页中查看文件内容。

核心就是通过 alias 关联文件路径。

配置文件如下:

location /test.log {
    alias /home/script/igd/app.log;

    default_type text/plain;
    add_header Content-Type "text/plain; charset=utf-8";
    charset utf-8;

    # 确保不会缓存内容
    add_header Cache-Control "no-cache, no-store, must-revalidate";
    add_header Pragma "no-cache";
    add_header Expires "0";
}

location 路径替换为需要的路径。alias 设置文件实际路径。

]]>
0 https://blog.niekun.net/archives/3014.html#comments https://blog.niekun.net/feed/archives/3014.html
将路径加入系统 path https://blog.niekun.net/archives/path.html https://blog.niekun.net/archives/path.html Sat, 10 Aug 2024 11:06:00 +0800 admin 将路径加入系统 path 可以方便的在终端调用目录中的可执行文件或脚本。windows 和 macOS 设置方法不同,下面分别介绍。

windows

参考之前的文章:https://blog.niekun.net/archives/413.html

macos

确定您的 shell 类型。打开终端,运行以下命令:

echo $SHELL

这通常会返回 /bin/zsh/bin/bash

根据您的 shell 类型,编辑相应的配置文件:

对于 Zsh(最新的 macOS 默认使用):编辑 ~/.zshrc
对于 Bash:编辑 ~/.bash_profile~/.bashrc

使用文本编辑器打开相应的文件。例如,对于 zsh:

vim ~/.zshrc

在文件末尾添加以下行(替换为您的实际脚本目录路径):

export PATH="/path/script:$PATH"

保存并关闭文件。使更改生效,可以重新加载配置文件或重启终端。要重新加载,运行:

source ~/.zshrc  # 如果使用 Zsh
source ~/.bash_profile  # 如果使用 Bash

验证 PATH 更新:

echo $PATH

您应该能看到您的脚本目录已被添加。现在,您应该能够直接运行脚本,而不需要指定完整路径:

test.sh

注意事项:

  • 确保您的脚本有正确的执行权限(chmod +x script_name.sh)。
  • 如果脚本名称与系统命令冲突,考虑重命名脚本或使用唯一前缀
]]>
0 https://blog.niekun.net/archives/path.html#comments https://blog.niekun.net/feed/archives/path.html
macOS 下使用 automator 给视频文件添加快捷压缩动作 https://blog.niekun.net/archives/macOS-automator.html https://blog.niekun.net/archives/macOS-automator.html Thu, 01 Aug 2024 14:42:36 +0800 admin 最近学习到了一条可以大幅度压缩视频体积且观感上视频质量没有很大损失的 ffmpeg 命令:

ffmpeg -i input.mov -c:v libx264 -crf 30 -r 24 -movflags faststart -c:a aac -b:a 128k -preset superfast out.mp4

但是每次在命令行执行这么复杂的命令还是很不方便的,可以使用 macOS 自带的 automator 自动化工具制作一个简单的右键菜单动作,方便的对视频文件快速压缩。

打开 automator 新建一个 quick action,添加一个 run sheel script:
image.png

脚本内容如下:

for f in "$@"
do
    /opt/homebrew/bin/ffmpeg -i "$f" -c:v libx264 -crf 30 -r 24 -movflags faststart -c:a aac -b:a 128k -preset superfast "${f%.*}_compressed.mp4"
done

# 播放声音
afplay /System/Library/Sounds/Blow.aiff

# 显示对话框
osascript -e 'tell app "System Events" to display dialog "视频压缩已完成" with title "通知" buttons {"OK"} default button "OK"'

保存后,在视频文件右键菜单的 action 栏就可以看到我们添加的动作了:
image.png

点击执行动作,完成后会有提示信息。

]]>
0 https://blog.niekun.net/archives/macOS-automator.html#comments https://blog.niekun.net/feed/archives/macOS-automator.html
使用虚拟环境 env 开发 python https://blog.niekun.net/archives/env-python.html https://blog.niekun.net/archives/env-python.html Mon, 01 Jul 2024 10:17:13 +0800 admin 使用虚拟环境进行Python开发有助于隔离项目的依赖,避免不同项目之间的库版本冲突。以下是如何创建和使用虚拟环境的详细步骤。

Python 3.3 及以上版本自带 venv 模块,可以直接使用。

使用 venv 创建虚拟环境

创建虚拟环境

在你的项目目录下,运行以下命令来创建一个虚拟环境,这将在项目目录下创建一个名为 myenv 的文件夹,其中包含虚拟环境的所有文件:

python -m venv myenv

激活虚拟环境

Windows:

myenv\Scripts\activate

macOS 和 Linux:

source myenv/bin/activate

安装依赖

在虚拟环境中,你可以使用 pip 来安装项目所需的库:

pip install requests

安装的库将只会影响当前虚拟环境,而不会影响系统的 Python 环境或其他项目。

冻结依赖

为了确保你的项目依赖可以在其他环境中重现,你可以使用以下命令将当前环境的依赖写入 requirements.txt 文件:

pip freeze > requirements.txt

requirements.txt 文件将包含所有当前环境中的安装包及其版本信息。

使用 requirements.txt 安装依赖

在新的环境中,你可以使用 requirements.txt 文件来安装所需的所有依赖:

pip install -r requirements.txt

退出虚拟环境

当你完成工作时,可以通过以下命令退出虚拟环境:

deactivate

使用虚拟环境进行Python开发可以有效地隔离项目依赖,避免版本冲突。通过创建和激活虚拟环境、安装依赖、冻结依赖并在新环境中重新安装依赖,可以确保你的项目在不同环境中具有一致的运行表现。

]]>
0 https://blog.niekun.net/archives/env-python.html#comments https://blog.niekun.net/feed/archives/env-python.html
服务器装 warp 解锁 chatgpt https://blog.niekun.net/archives/Linux-warp.html https://blog.niekun.net/archives/Linux-warp.html Thu, 27 Jun 2024 15:12:00 +0800 admin 最近在使用 chatgpt 中发现 ios 端无法登录 app,网页端正常使用。提示信息为:

Something went wrong. You may be connected to a disallowed ISP If youare using VPN, try disabling it. Otherwise try a different Wi-Fi network or data connection。

经过查询发现是我的 vps 服务商只提供网页端 chatgpt 解锁,不支持 app 端。由于 chatgpt 服务也是通过 cloudflare 的 cdn 服务,所以通过将流量转发到 warp 来访问就可以解决问题。

首先需要在服务端安装官方的 warp 命令行工具:warp-cli。

官方教程:https://developers.cloudflare.com/warp-client/get-started/linux/

官方手动添加包仓库教程:https://pkg.cloudflareclient.com/#ubuntu

安装

在命令行输入以下指令来安装第三方仓库并安装包:

# Add cloudflare gpg key
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg

# Add this repo to your apt repositories
echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list

# Install
sudo apt-get update && sudo apt-get install cloudflare-warp

配置

安装好后需要注册一个新账户:

warp-cli registration new

查看当前账户信息:

warp-cli registration show

更换新的 license:

warp-cli registration license xxxxx-xxxxxx-xxxxxx

然后需要设置代理模式,可选有:warp, doh, warp+doh, dot, warp+dot, proxy, tunnel_only。

我只想要它提供一个 socks5 代理端口即可,所以设置为 proxy 模式,它会在本地 40000 端口监听:

warp-cli mode proxy

启动 warp:

warp-cli connect

此时 warp 会在本地 40000 端口建立一个 sock5 代理,只需要将需要转发的流量转发到此端口即可走 warp。并且 warp 会自动配置为 Always On 模式,开机自动运行代理。

查看 warp 当前配置:

# warp-cli settings
Merged configuration:
(derived)       Always On: true
(default)       Switch Locked: false
(user set)      Mode: WarpProxy on port 40000
(Not set)       WARP tunnel protocol: Wireguard
(default)       Disabled for Wifi: false
(default)       Disabled for Ethernet: false
(Not set)       Resolve via: cloudflare-dns.com @ [162.159.36.1, 2606:4700:4700::1111]
(Not set)       qlog logging: Disabled
(default)       Onboarding: true
(API defaults)  Exclude mode, with hosts/ips:
  10.0.0.0/8
  100.64.0.0/10
  169.254.0.0/16
  172.16.0.0/12
  192.0.0.0/24
  192.168.0.0/16
  224.0.0.0/24
  240.0.0.0/4
  239.255.255.250/32
  255.255.255.255/32
  fe80::/10
  fd00::/8
  ff01::/16
  ff02::/16
  ff03::/16
  ff04::/16
  ff05::/16
  fc00::/7

(default)       Fallback domains:
  intranet
  internal
  private
  localdomain
  domain
  lan
  home
  host
  corp
  local
  localhost
  home.arpa
  invalid
  test
(Not set)       Daemon Teams Auth: false
(default)       Disable Auto Fallback: false
(Not set)       Allow Updates: true

查看代理是否生效:

export ALL_PROXY=socks5://127.0.0.1:40000
curl ifconfig.me

代理工具转发流量

服务端的配置文件需要添加和修改的地方如下:

{
    "outbounds": [
        ...
        {
            "protocol": "socks",
            "settings": {
                "address": "127.0.0.1",
                "port": 40000
            },
            "tag":"socks_out"
        }
    ],
    "router": {
        "domainStrategy": "AsIs",
        "rule": [
            ...
            {
                "tag": "socks_out",
                "geoDomain": [
                    {
                        "code": "openai",
                        "filePath": "geosite.dat"
                    }
                ],
                "domainMatcher": "mph"
            }
        ]
    },
    "inbounds": [
        {
            "protocol": "vmess",
            ...
            "sniffing": {
                "enabled": true,
                "destOverride": [
                    "http",
                    "tls"
                ]
            },
            ...

注意需要安装扩展版的 geosite.dat 才有 openai 的条目:https://github.com/Loyalsoldier/v2ray-rules-dat

通过访问以下网址测试是否已经解锁 ios app 端:https://ios.chat.openai.com/public-api/mobile/server_status/v1

以上就是解决 chatgpt 无法访问的方法。

]]>
1 https://blog.niekun.net/archives/Linux-warp.html#comments https://blog.niekun.net/feed/archives/Linux-warp.html
蜗杆基础知识 https://blog.niekun.net/archives/2999.html https://blog.niekun.net/archives/2999.html Mon, 24 Jun 2024 09:51:49 +0800 admin http://www.qsjsj.com/zhinan/ptyzwgcdfljjgff.html
https://domm.muzing.top/chapter_11#pu-tong-yuan-zhu-wo-gan-chuan-dong-de-ji-ben-can-shu-ji-qi-xuan-ze
https://m.cadhome.net/news/proejc/716.html
http://www.qsjsj.com/zhinan/AJMDWGJYHYZWGCSJSGS.html
http://www.lyfy.net/wheel/ptcwstyle.htm

]]>
0 https://blog.niekun.net/archives/2999.html#comments https://blog.niekun.net/feed/archives/2999.html