机械境

这里只是我的后花园,随性而写

前提

需要一个域名,并且域名托管在 Cloudflare 上。

部署

  1. 克隆 https://github.com/gythialy/cloudflare-docker-proxy 到本地

  2. 替换 example.com 为自己的域名

    1
    2
    3
    4
    5
    sed -i 's/example.com/${your_domain}/g' src/index.js
    sed -i 's/example.com/${your_domain}/g' wrangler.toml
    # for macOS
    # sed -i '' 's/example.com/${your_domain}/g' src/index.js
    # sed -i '' 's/example.com/${your_domain}/g' wrangler.toml
  3. yarn 安装依赖

  4. npx wrangler deploy 部署

使用

  • 拉取 busybox:stable
    1
    2
    # docker pull busybox:stable
    docker pull docker.example.com/library/busybox:stable
  • 设置 docker registry 镜像
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-EOF
    {
    "registry-mirrors": [
    "https://docker.example.com",
    ]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    # 拉取镜像
    docker pull busybox:stable

    注:docker.example.com 都需要替换为自己的域名。

---EOF---

前言

OxygenOS 中没国产市场的 app,现在好多 app 并没有在 Google Play 发布。因此可以从 ColorOS 镜像中提取出来,方便安装。

准备

  • 根据 在 macOS 平台把一加 12 ColorOS 转换为国际版 中的方法,把 从 ColorOS 的 payload.bin 中提取 my_开头的 img 文件。
  • 安装 OrbStack,然后创建一个 Ubuntu 虚拟机
    1
    2
    orb create ubuntu my-ubuntu # 创建虚拟机
    orb -m my-ubuntu-u root # SSH 到虚拟机

提取

1
2
3
4
mkdir -p /mnt/my_heytap # 创建挂载点
mount -o loop -t erofs app/my_heytap.img /mnt/my_heytap #挂载 `img` 文件
find /mnt/my_heytap/ -name "*.apk" # 查找 apk 文件
cp /mnt/my_heytap/priv-app/KeKeMarket.apk $HOME/apk/ # 复制到本地

总结

通过挂载 img 文件系统到 Linux 系统,然后从中提取 apk 文件。这里是以 my_heytap 为例,其他分区也可以用同样的方法。

---EOF---

前言

一加 11 之前的版本是可以在氢氧 OS 之间互相刷的,后来合并到 ColorOS 后,莫名增加了很多门槛。在大多数教程中都是基于 Windows 平台。其实要线刷系统思路很简单,就是从 payload.bin 中解压出 img 文件,然后通过 fastboot 刷进去即可。

准备工作

  • 安装 adb
    1
    brew install android-platform-tools
  • 下载固件:从 XDA这篇文章中找到官方下载链,接,国内也有人做了分流。理论上来说都是安全的,如果有人修改了文件,签名验证应该过不了。
    • CPH2583 = US = 美版
    • CPH2573 = IN = 印度版
    • CPH2581 = EU&PU = 欧版

提取 img

这里以 CPH2581 为例,解压 zip 文件到文件夹 oneplus12 中。目录结构如下,FTH 为手动创建,用于存放提取出来的 img 文件,flash-all.sh 为刷机脚本。以下所有操作都是在 oneplus12 文件夹中。

1
2
3
4
5
6
➜ ll
.rwxr-xr-x@ 1.2k gythialy 22 May 11:16  flash-all.sh
drwxr-xr-x - gythialy 22 May 11:42  FTH
drwxr-xr-x@ - gythialy 22 May 10:04  META-INF
.rw-r--r--@ 6.6G gythialy 1 Jan 2009  payload.bin
.rw-r--r--@ 357 gythialy 1 Jan 2009  payload_properties.txt

提取工具为 payload-dumper-go,官方构建的二进制文件在 macOS ARM 平台会报错,所以下面基于 docker 镜像操作。镜像 latest tag 基于 d0b0efee72be 构建。

1
docker run -it --rm -v $PWD:/app/ -v $PWD/FTH:/FTH ghcr.io/gythialy/payload-dumper-go:latest -o /FTH /app/payload.bin
Read more »

Cloudflare Tunnel 是一种安全、可靠的内网穿透解决方案,允许您将内部网络中的应用程序和服务暴露到公共互联网。以下是使用 Cloudflare Tunnel 进行内网穿透的步骤:

1. 准备工作

  • Cloudflare 账号:需要一个 Cloudflare 账号,最好是绑定信用卡然后开通免费版本的服务。
  • Cloudflare Tunnel 应用程序:下载并安装 Cloudflare Tunnel 应用程序。您可以从 tunnel 获取最新版本。
  • 内网服务:确保您的内网服务正在运行,并且您知道服务的端口号。
  • 域名:您需要一个域名来访问您的内网服务。您可以使用您自己的域名,也可以使用 Cloudflare 提供的免费子域名。

2. 配置 Cloudflare Tunnel

  • 创建 Tunnel: 在 Cloudflare Tunnel 应用程序中,创建一个新的 Tunnel。
  • 配置 Tunnel: 在 Tunnel 配置中,您需要指定以下信息:
    • Tunnel 名称:为您的 Tunnel 命名。
    • 域名:指定您要使用的域名。
    • 服务端口:指定您内网服务的端口号。
    • 命令:指定启动您的内网服务的命令。
  • 生成证书: Cloudflare Tunnel 将自动生成一个证书,用于安全连接您的内网服务。

3. 示例:

假设您的内网服务是一个运行在端口 2001 上的 Web 服务器,您的域名是 example.com。以下是使用 Cloudflare Tunnel 进行内网穿透的步骤:

  1. 创建 Tunnel: 在 Cloudflare Tunnel 应用程序中,创建一个名为 HomeLab-tunnel 的 Tunnel,并获取 tunnel 的 token。

  2. 配置 Hostname: 在 Tunnel 配置中,指定以下信息:

    • 域名: whoaim.example.com
    • 服务: http://whoami:2001
  3. 部署 Tunnel: 在您的内网服务器上安装并启动 Cloudflare Tunnel 应用程序。

  4. 验证连接:使用 https://whoaim.example.com 访问您的 Web 服务器,确保连接正常。

    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
    version: '3.9'

    services:
    whoami:
    image: traefik/whoami
    command:
    # It tells whoami to start listening on 2001 instead of 80
    - --port=2001
    - --name=iamfoo
    networks:
    - nginx-proxy

    tunnel:
    container_name: cloudflared-tunnel
    image: cloudflare/cloudflared:2024.5.0
    user: root
    restart: unless-stopped
    read_only: true
    volumes:
    - ./cloudflared:/root/.cloudflared/
    command: tunnel --no-autoupdate run --token ${TUNNEL_TOKEN}
    networks:
    - nginx-proxy

    networks:
    nginx-proxy:
    external: true

注: 这里是用的是在线配置的方式,也可以通过离线配置的方式,配置文件放到 cloudflared 目录即可。

4. 总结:

Cloudflare Tunnel 提供了一种安全、可靠的内网穿透解决方案,可以帮助您轻松地将内部网络中的应用程序和服务暴露到公共互联网。通过遵循上述步骤,您可以轻松地配置 Cloudflare Tunnel,并享受其带来的便利和安全性。

---EOF---

之前在 通过 GitHub Actions 自动部署 Hexo,通过创建两个不同的分支,raw 分支存储原始的 Hexo 项目,master 分支存储 hexo generate 编译出来的静态页面,通过 hexo deploy 来部署。由于使用了 hexo deploy 需要设置部署用的 SSH 密钥。

下面的办法更简单,不需要做额外的设置,Hexo 项目在 main 分支,不需要再添加其他分支。

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
name: Hexo deploy

on:
push:
branches:
- raw
- main

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Use Node.js (.tool-versions)
uses: actions/setup-node@v4
with:
node-version-file: ".tool-versions"
- uses: pnpm/action-setup@v3
name: Install pnpm
with:
version: 8
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v4
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install Dependencies
run: pnpm install
- name: Build
run: pnpm run build
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./public
deploy:
needs: build
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

---EOF---

在折腾过 antigenantidotesheldon 等 Zsh 的包管理器之后,我发现我主要使用的还是 oh-my-zsh。那就回归本源,再加上现在 oh-my-zsh 也可以自定义 Plugin。

1
2
3
4
5
6
7
8
9
# install oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# install oh-my-zsh custom plugins
git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
git clone --depth=1 https://github.com/zsh-users/zsh-completions $ZSH_CUSTOM/plugins/zsh-completions
git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
# install spaceship
git clone --depth=1 https://github.com/spaceship-prompt/spaceship-prompt.git $ZSH_CUSTOM/themes/spaceship-prompt
ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"

.zshrc 中 通过 plugins 配置需要启用的插件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
export ZSH="$HOME/.oh-my-zsh"
DISABLE_MAGIC_FUNCTIONS=true
ZSH_THEME="spaceship"
plugins=(
command-not-found
common-aliases
docker
git
bun
npm
yarn
kubectl
asdf
thefuck
zsh-autosuggestions
zsh-syntax-highlighting
zsh-completions
)
source $ZSH/oh-my-zsh.sh

---EOF---

介绍

asdf 是一个版本管理器,用于在不同的项目中管理和切换软件版本。它支持多种编程语言、工具和框架,包括但不限于:

  • Python
  • Ruby
  • Node.js
  • Java
  • Rust
  • Docker

asdf 的主要优点包括:

  • 版本管理: 允许您轻松安装、切换和卸载不同版本的软件。
  • 项目隔离: 每个项目都可以使用自己的软件版本集,而不会影响其他项目。
  • 跨平台支持: 可在 macOS、Linux 和 Windows 上使用。
  • 易于使用: 具有简洁直观的命令行界面。
Read more »

介绍

Alacritty 简介

Alacritty 是一款开源、跨平台的终端仿真器,以其高性能、低延迟和可定制性而闻名。它使用 Rust 编程语言编写,并利用 GPU 渲染来实现流畅的滚动和快速的文本渲染。

优点

  • 高性能: GPU 渲染引擎使其成为市场上最快的终端仿真器之一,即使在处理大量文本或图形时也能提供流畅的体验。
  • 低延迟: 响应延迟极低。
  • 跨平台: 可在 Windows、macOS、Linux 和 FreeBSD 上运行。
  • 开源: 是开源的,这意味着用户可以自由查看、修改和分发其源代码。

缺点

  • 有限的扩展性: 与其他终端仿真器相比,不支持插件或扩展。
  • 缺少某些功能: 缺少某些高级功能,例如选项卡、分割窗格。

Zellij 介绍

Zellij 是一款开源、跨平台的终端复用器,它允许用户在单个窗口中管理多个终端会话。它使用 Rust 编程语言编写,并具有现代、可定制的界面。

特点

  • 终端复用: 核心功能是终端复用,它允许用户在单个窗口中打开和管理多个终端会话。
  • 可定制性: 提供了广泛的配置选项,允许用户根据自己的喜好定制布局、键盘快捷键和配色方案。
  • 插件支持: 支持插件,允许用户扩展其功能,例如添加对外部工具或服务的集成。
  • 跨平台: 可在 Windows、macOS、Linux 和 FreeBSD 上运行。
  • 开源: 是开源的,这意味着用户可以自由查看、修改和分发其源代码。

介绍部分为 Gemini 生成,手动做了部分调整。

Read more »
0%