阅读视图

自建内网穿透 FRP 服务

自建 FRP 服务前提

有公网 IP 的 VPS 一枚
VPS 防火墙开 TCP 端口

搭建 FRP 服务端

下载和运行服务端

Github 下载对应系统和 CPU 架构的服务端:https://github.com/fatedier/frp/releases/tag/v0.65.0
比如我的 VPS 是 Ubuntu server amd64,就下载 frp_0.65.0_linux_amd64.tar.gz 目前最新版本是 0.65
压缩包里是自带服务端和客户端的,里面的 frpsfrps.toml 是服务端需要的文件。frps 是执行文件,frps.toml 是配置文件,自定义配置文件后上传这两个文件到 VPS 服务器,使用下面的命令启动 FRP 服务

sudo ./frps -c ./frps.toml

服务端配置文件参考

# frps.toml
# ip默认
bindAddr = "0.0.0.0"
bindPort = 7000
# kcp 绑定的是 UDP 端口,可以和 bindPort 一样
kcpBindPort = 7000

# 默认为 127.0.0.1,如果需要公网访问,需要修改为 0.0.0.0。
webServer.addr = "0.0.0.0"
webServer.port = 7500
# dashboard 用户名密码,可选,默认为空
webServer.user = "admin"
webServer.password = "admin"

log.to = "./frps.log"
log.level = "info"
log.maxDays = 3

auth.method = "token"
auth.token = "token"

allowPorts = [
    { start = 6000, end = 7000 },
]

服务端自启动设置

新建 frps.service

sudo vi /etc/systemd/system/frps.service

配置文件内容

#frps.service
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 修改服务执行文件地址和配置文件
ExecStart = /path to frps -c /path to frps.toml
ExecStop = /bin/kill $MAINPID
Restart = always
RestartSec = 5
[Install]
WantedBy = multi-user.target

刷新服务

sudo systemctl daemon-reload

启用服务

sudo systemctl start frps

查看服务

sudo systemctl status frps

查看服务web端: http://服务器 IP :7500

客户端安装

客户端下载

假设本地是 Windows 系统,则需要下载这个压缩包 frp_0.65.0_windows_amd64.zip 取里面的 frpcfrpc.toml 文件,根据服务端的信息修改本地配置文件 frpc.toml,然后通过终端使用以下命令连接 FRP 服务端:

sudo ./frpc -c ./frpc.toml

没有其他意外,则外网可以访问本地的 Windows 机器了。

客户端配置文件参考

#frpc.toml
serverAddr = "服务端IP地址"
serverPort = 7000
loginFailExit = true

#对应服务端密码
auth.method = "token"
auth.token = "token"

[[proxies]]
name = "Hugo"
type = "tcp"
localIP = "127.0.0.1"
localPort = 1313
remotePort = 6100

[[proxies]]
name = "app2"
type = "tcp"
localIP = "127.0.0.1"
localPort = 81
remotePort = 6081

项目地址:https://github.com/fatedier/frp
项目文档:https://github.com/fatedier/frp/blob/dev/README_zh.md https://gofrp.org

  •  

Hugo 当前页导航菜单 class 加 active

Hugo 主题给当前页面时给对应导航菜单添加 class acitve:

文件结构

content
|-page
|-|-about.md
|-|-blogroll.md

页面 md 文件头

---
title: about
type: page
---

hugo.toml 菜单设置

[menu]
  [[menu.main]]
  identifier="about"
  name="关于"
  url="/about/"
  weight="6"

菜单模板 partials/navigation.html

<nav class="site-nav" aria-label="Main Navigation">
    <ul>
        {{ $currentPage := . }}
        {{ range .Site.Menus.main }}
        <li class="nav-item">
            <a 
            href="{{ .URL }}"
            {{ if or ($currentPage.IsMenuCurrent "main" .) (eq $currentPage.Layout .Identifier) }} class="active"{{ end }}>
                {{ .Name }}
            </a>
        </li>
        {{ end }}
    </ul>
</nav>
  •  

Nginx 下 2 级目录安装 typecho 页面 500 错误问题

在 nginx 下,二级目录安装了个 typecho 居然被卡的死死,一直 500 错误。

折腾环境

ubuntu 20.04.1(估计是这个 Linux 5.9 ,玩客云刷的)
nginx 1.18
mysql 8.0.25
php 7.4
typecho 开发版 1.2 (18.10.23)
typecho 安装在 2 级目录下,访问地址是 ip/typecho

头疼的问题

安装完默认带 index.php 的地址都 500 错误,除了首页其他都打不开。
登陆页面 /admin 可以访问,输入用户名密码跳转后 500 错误,打不开后台。

解决办法

因为我typecho 安装在 2 级目录,用 ip 访问,对 nginx 又不理解,网上找的办法都没用,其实都是差一点点。

打开 /etc/nginx/sites-enabled/ 目录下的 default 文件,修改两个地方。

  1. 在 server 内添加以下代码,主要就是那个 /typecho/ 网上各种教程都是针对域名下安装的,我这个安装在 2 级目录的都用不上。
if (!-e $request_filename) {
    rewrite ^(.*)$ /typecho/index.php$1 last;
}
  1. 修改 server 内的 location ~ \.php$location ~ .*\.php(\/.*)*$,这个是 typecho 官方提供的方法。
  2. systemctl restart nginx

typecho 还是有待进步啊,就这一点,安装完就能把许多人拒绝在门外,同样的环境,wordpress 安装完就可以撒野了。

不过 apache2 安装 typecho 倒是没这麻烦事。

  •  

赵雷《三十岁的女人》

《三十岁的女人》,赵雷,C调和弦指法,变调夹3品,沈亮编配。

和弦走向:

C    Em    F    G  |  C    Em  Am    F  G    C
Am   Em    Am   Em |  Dm  G    C G/B  Am7    Dm  G    F

赵雷 三十岁的女人-1
赵雷 三十岁的女人-2
赵雷 三十岁的女人-3

  •  

Ubuntu 关闭 Pro 更新提示

系统版本 Ubuntu 24.04

每次 apt update 都会带出一大堆提示升级但需要 ubuntu pro 才能升级的提示,比如:

Get more security updates through Ubuntu Pro with 'esm-apps' enabled:
  vlc-plugin-qt libvlc5 libzvbi-common vlc-data libvlccore9 vlc vlc-bin
  vlc-l10n libcjson1 libavdevice60 ffmpeg libpostproc57 vlc-plugin-samba
  libavcodec60 libzvbi0t64 vlc-plugin-notify libavutil58 libswscale7
  vlc-plugin-access-extra vlc-plugin-skins2 vlc-plugin-video-splitter
  libswresample4 vlc-plugin-video-output libavformat60 v2ray libvlc-bin
  vlc-plugin-base vlc-plugin-visualization libavfilter9
Learn more about Ubuntu Pro at https://ubuntu.com/pro

看着乱不说,心理还不爽,vlc 插件居然要 pro 才能升级?关了关了。

终端下打开文件夹:

cd /var/lib/ubuntu-advantage/apt-esm/etc/apt/sources.list.d
ls

编辑文件夹下的 ubuntu-esm-apps.sources 文件。

sudo vi ubuntu-esm-apps.sources

将文件里面所有行都用 # 注释掉,最后结果:

# Written by ubuntu-pro-client
# Types: deb
# URIs: https://esm.ubuntu.com/apps/ubuntu
# Suites: noble-apps-security noble-apps-updates
# Components: main
# Signed-By: /usr/share/keyrings/ubuntu-pro-esm-apps.gpg

再次执行 apt update apt upgrade 就不会出现 Ubuntu pro 才能更新的提示了。

  •  

Windows 11 升级 24H2 提示 ahsProtector 尚未准备好

问题

Windows 11 升级 24H2 提示下面的错误:

ahsProtector
你的电脑上有服务尚未准备好用于此版本的Windows。有新版本可用。

如图:

win11-24H2-ahsProtector

解决办法

  1. 打开 C:\Windows\System32\drivers\ 文件夹
  2. 找到文件 ahs_protect.sys
  3. 将上面的文件名改为 ahs_protect.sys.bak

回到上面的提示框,点刷新即可继续升级。

升级完成后,会自动出现 ahs_protect.sys 文件,你可以把重命名的 .bak 文件删除了。

  •  

Ubuntu 服务器给网站启用 Brotli 压缩

服务器环境
Ubuntu Server 24.04 LTS
Nginx 1.24

命令行安装

Ubuntu 24.04 版本可以直接通过 apt install 给服务器安装 google 的 Brotli 压缩功能,22.04 版本的不行。

sudo apt install brotli libnginx-mod-http-brotli-filter

brotli 是 google 的压缩工具,类似 zip 用于压缩文件,libnginx-mod-http-brotli-filter是 google 为 nginx 提供的压缩模块,前者可以不用安装。

配置 Brotli

Ubuntu 24.04 配置简单, 修改 nginx 配置文件 /etc/nginx/nginx.conf

http {
    # Brotli压缩配置
    brotli on;
    brotli_comp_level 6;  # 压缩级别:1-11(默认6)
    brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    brotli_buffers 16 8k;  # 压缩缓冲区大小
    brotli_window 512k;  # 滑动窗口大小
    brotli_min_length 20;  # 最小压缩长度(字节)
}

重启 nginx

sudo nginx -t
sudo systemctl restart nginx

验证 Brotli 是否生效

curl -H "Accept-Encoding: br" -I https://www.oxcat.com

若返回内容中包含 Content-Encoding: br,则表示 Brotli 已成功启用。
或打开网站,审查元素,响应标头内容查看是否包含 Content-Encoding: br 验证。

Nginx 支持 gzipbrotli 同时启用。

  •  

Ubuntu 安装最新版 nginx

Ubuntu 通过 apt install nginx 默认安装的 nginx 版本还停留在 1.18.0 版本,目前最新版本是 1.28.0,版本差异较大,通过下面方法可安装最新版本的 nginx。

清理现有 nginx

sudo apt purge nginx* libnginx-mod* nginx-common
sudo apt autoremove

有相关 nginx 配置需要保存的,先提前做好备份。

添加官方 APT 源

sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo gpg --dearmor -o /usr/share/keyrings/nginx-archive-keyring.gpg

创建源文件

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list

安装最新版本 nginx

sudo apt update
sudo apt install nginx
nginx -v  #查看版本
  •