npm install 报错:fatal: unable to connect to github.com:

现象

1
2
3
4
5
6
7
8
9
10
npm ERR! Error while executing:
npm ERR! C:\Program Files\Git\cmd\git.EXE ls-remote -h -t git://github.com/adobe-webplatform/eve.git
npm ERR!
npm ERR! fatal: unable to connect to github.com:
npm ERR! github.com[0: 20.27.124.113]: errno=No such file or directory
npm ERR!
npm ERR!
npm ERR! exited with error code: 128

npm ERR! A complete log of this run can be found in:

原因

之前的Git配置的不是http连接

解决方法

1
git config --global url."https://github.com/".insteadOf git://github.com/

docker-php-ext-configure gd 报错

现象

1
2
3
4
5
6
7
8
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/:
1.388 Configuring for:
1.388 PHP Api Version: 20190902
1.388 Zend Module Api No: 20190902
1.388 Zend Extension Api No: 320190902
1.860 configure: error: unrecognized options: --with-freetype-dir, --with-jpeg-dir
------
failed to solve: process "/bin/sh -c docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/" did not complete successfully: exit code: 1

原因

PHP7.4之后参数(–with-freetype-dir,–with-jpeg-dir)写法有变化需要修改

解决方法,改成

1
docker-php-ext-configure gd --with-freetype --with-jpeg

通过Apache对外公开Streamlit服务

除了对web服务转发外,还要转发web socket端口,否则会报错

1
2
WebSocket connection to 'wss://test.example.com/_stcore/stream' failed: 
connectToWebSocket @ main.7e6f4f72.js:2

简单配置如下

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
<VirtualHost *:443>
ServerName test.example.com

SSLEngine On
SSLCertificateFile /ssl/fullchain.pem
SSLCertificateChainFile /ssl/fullchain.pem
SSLCertificateKeyFile /ssl/privkey.pem

ProxyPreserveHost On
ProxyRequests On
ProxyVia On

<Location />
ProxyPass http://127.0.0.1:8501/
ProxyPassReverse http://127.0.0.1:8501/
</Location>

<Location /_stcore/stream>
ProxyPass ws://127.0.0.1:8501/_stcore/stream
ProxyPassReverse ws://127.0.0.1:8501/_stcore/stream
</Location>

SSLProxyEngine On
SetOutputFilter DEFLATE
</VirtualHost>

启动anythingLLM容器报错:permission denied, open '/app/server/.env | 2025

安装官方文档启动anythingLLM容器时,报错

命令

1
2
3
4
5
6
7
8
9
10
11
docker pull mintplexlabs/anythingllm
export STORAGE_LOCATION=./anythingllm && \
mkdir -p $STORAGE_LOCATION && \
chmod 777 -R $STORAGE_LOCATION && \
touch "$STORAGE_LOCATION/.env" && \
docker run -d -p 3001:3001 \
--cap-add SYS_ADMIN \
-v ${STORAGE_LOCATION}:/app/server/storage \
-v ${STORAGE_LOCATION}/.env:/app/server/.env \
-e STORAGE_DIR="/app/server/storage" \
mintplexlabs/anythingllm

错误内容1

1
2
3
4
5
Datasource "db": SQLite database "anythingllm.db" at "file:../storage/anythingllm.db"

Error: Schema engine error:
SQLite database error
unable to open database file: ../storage/anythingllm.db

错误内容2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[backend] info: [EncryptionManager] Self-assigning key & salt for encrypting arbitrary data.
node:internal/fs/utils:356
throw err;
^

Error: EACCES: permission denied, open '/app/server/.env'
at Object.openSync (node:fs:596:3)
at Object.writeFileSync (node:fs:2322:35)
at dumpENV (/app/server/utils/helpers/updateENV.js:988:6)
at #loadOrCreateKeySalt (/app/server/utils/EncryptionManager/index.js:42:50)
at new EncryptionManager (/app/server/utils/EncryptionManager/index.js:13:30)
at Object.<anonymous> (/app/server/utils/middleware/validatedRequest.js:5:23)
at Module._compile (node:internal/modules/cjs/loader:1364:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1422:10)
at Module.load (node:internal/modules/cjs/loader:1203:32)
at Module._load (node:internal/modules/cjs/loader:1019:12) {
errno: -13,
syscall: 'open',
code: 'EACCES',
path: '/app/server/.env'
}

Node.js v18.20.5

由权限问题导致,给anythingllm目录修改权限即可解决

1
chmod 777  -R anythingllm/

Ubuntu 安装nvidia驱动 | 2025

如果执行nvidia-smi报错,可以按照下面的方法重新安装驱动和CUDA
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

1
2
3
4
5
6
7
8
9
10
11
12
# 清除现有的nvidia和CUDA的残留
sudo apt --purge remove nvidia-*
sudo apt --purge remove cuda-*

# 安装CUDA,[官方工具生成命令](https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_local)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-8

# 如果使用docker则安装如下工具包
sudo apt install nvidia-container-toolkit

几个常见代理服务器的对比:Squid、mitmproxy 和 tinyproxy

几个常见代理服务器的对比:Squidmitmproxytinyproxy

1. 概述对比

特性 Squid mitmproxy tinyproxy
主要功能 高性能 HTTP/HTTPS 代理缓存 HTTP(S) 代理,流量拦截和分析 轻量级 HTTP(S) 代理
工作方式 正向代理、反向代理、透明代理 中间人代理(拦截、修改流量) 正向代理
协议支持 HTTP、HTTPS、FTP HTTP、HTTPS、WebSockets HTTP、HTTPS
是否支持拦截 否(默认不拦截,仅缓存和转发) 是,可拦截并修改流量 否,仅做透明代理
典型使用场景 缓存加速、内容过滤、访问控制 网络调试、安全测试、流量分析 轻量代理、匿名访问
性能 高(支持大规模流量) 中(适合调试和测试环境) 高(适合小型代理服务器)
可扩展性 高(支持 ACL、负载均衡等) 高,支持 Python 扩展 低,功能简单
平台支持 Linux、Windows、macOS Linux、Windows、macOS Linux、Windows、macOS

2. 详细功能对比

(1) Squid - 高性能缓存代理服务器

用途

  • 主要用于加速网络访问,提供缓存、访问控制、负载均衡等功能。
  • 适用于企业和ISP,减少带宽使用和优化性能。

特点

  • 支持正向代理、反向代理、透明代理模式
  • 强大的内容缓存功能(减少带宽占用,加速访问)
  • 支持访问控制列表(ACL)
  • 支持 SSL/HTTPS 代理(需额外配置)
  • 负载均衡和身份认证(LDAP、Kerberos 等)

优缺点

优势 劣势
强大的缓存功能,节省带宽 配置较为复杂
适合大规模流量处理 默认不支持 HTTPS 解密
灵活的访问控制策略 需要额外插件才能实现监控

(2) mitmproxy - 流量拦截和调试工具

用途

  • 主要用于拦截和修改 HTTP(S) 流量,适合开发人员和安全研究人员。

特点

  • 提供流量拦截和修改能力
  • 具备命令行、web UI 及 Python API
  • 可拦截 HTTPS 流量(需安装自签名证书)
  • 适用于安全测试、调试 Web 应用、逆向分析

优缺点

优势 劣势
详细的流量分析和修改功能 性能较低,无法大规模使用
交互式 Web UI,使用便捷 需要安装证书才能拦截 HTTPS 流量
可编写自定义 Python 脚本 生产环境性能有限

(3) tinyproxy - 轻量级 HTTP 代理

用途

  • 主要用于轻量级 HTTP/HTTPS 正向代理,适合小规模代理需求。

特点

  • 体积小、资源占用少,适用于嵌入式系统或轻量服务器
  • 仅支持 HTTP/HTTPS 请求代理
  • 具备基本的访问控制列表(ACL)
  • 支持匿名代理,隐藏真实 IP
  • 允许配置上游代理,支持负载均衡

优缺点

优势 劣势
轻量级,资源占用低 仅支持 HTTP(S),无 FTP 支持
配置简单,易于部署 无缓存功能,无法提升网络性能
适合嵌入式系统和小型设备 无法拦截和修改流量

3. 适用场景对比

需求 / 工具 Squid mitmproxy tinyproxy
缓存加速 ✅(非常适合) ❌(不适合) ❌(不适合)
流量调试分析 ❌(不适合) ✅(非常适合) ❌(不适合)
匿名代理 ✅(支持部分匿名功能) ❌(不推荐) ✅(适合)
内容过滤 ✅(ACL 规则实现) ✅(流量拦截修改) ❌(不适合)
大流量处理 ✅(高效处理大规模请求) ❌(适合小规模流量调试) ✅(适合小型代理服务器)
企业安全测试 ❌(不适合) ✅(适合) ❌(不适合)

4. 选择建议

  • 选择 Squid:

    • 适合提高网络性能、节省带宽、提供访问控制。
    • 企业级环境,缓存网页内容,提供复杂的访问控制策略。
    • 需要长期运行的高效 HTTP 代理服务器。
  • 选择 mitmproxy:

    • 适合调试、拦截、修改 HTTP/HTTPS 流量。
    • 适合开发人员和安全测试人员进行 API 调试、渗透测试。
    • 适合临时使用,不适合大规模生产环境。
  • 选择 tinyproxy:

    • 轻量级的代理解决方案,资源占用低,适合嵌入式设备。
    • 适合小规模使用,如绕过简单的网络访问限制。
    • 适合基础的 HTTP 代理需求。

5. 安装及基本配置(Ubuntu)

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
# Squid
apt install Squid
squid -v
cp /etc/squid/squid.conf /etc/squid/squid.conf.original
# 配置匿名代理(隐藏用户信息)
via off
forwarded_for off
request_header_access From deny all
request_header_access Referer deny all
request_header_access User-Agent deny all
request_header_access X-Forwarded-For deny all

systemctl enable squid
systemctl start squid
systemctl status squid


# mitmproxy
apt install mitmproxy
mitmweb --listen-port 8000 --listen-host 192.168.1.10 --web-port 8001 --web-host 192.168.1.10
# 先设置--listen-port避开已用端口,否则报错:OSError: [Errno 98] Address already in use

# tinyproxy
apt install tinyproxy
cp /etc/tinyproxy/tinyproxy.conf /etc/tinyproxy/tinyproxy.conf.original
vi /etc/tinyproxy/tinyproxy.conf
# 默认只允许本机,找到Allow开头的行,加上许可的IP
# 如果需要加认证,找到BasicAuth开头的行,去掉注释设置用户名和密码即可
systemctl enable tinyproxy
systemctl start tinyproxy
systemctl status tinyproxy
tail -f /var/log/tinyproxy/tinyproxy.log

Ubuntu系统下编译Chromium

操作系统:Ubuntu 22.04
硬件要求:磁盘空间(约 100 GB),内存(16 GB 或更高),CPU(越快越好)

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
sudo apt update

# 安装基本依赖
sudo apt install git python3 python3-pip curl build-essential

# 安装必要工具
sudo apt install g++-multilib clang cmake ninja-build libglib2.0-dev

# 获取depot_tools,添加PATH环境变量。depot_tools 是管理 Chromium 构建环境的重要工具
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
vi /etc/profile
export PATH="$PATH:$(pwd)/depot_tools"
source /etc/profile

# 获取Chromium 源代码(解压缩后80G左右,耗时较长)
mkdir chromium && cd chromium
fetch --nohooks chromium
gclient sync

# 用Chromium自带脚本安装必要的依赖。
cd src
./build/install-build-deps.sh

# 配置编译环境,使用gn生成编译模板。
gn gen out/Default

# 配置编译参数,下面是一个样例。
vi out/Default/args.gn
# 内容如下
is_debug = false
is_component_build = true
enable_nacl = false
v8_enable_pointer_compression = false
blink_symbol_level = 0
v8_symbol_level = 0
symbol_level = 0

# 参数解释如下
# is_debug: 是否启用调试信息,设置false可以加快编译速度
# is_component_build = true:将 Chrome 的许多部分链接到单独的共享库中,以避免最后的长链接步骤。
# enable_nacl = false:禁用 Native Client功能,加快构建速度。
# v8_enable_pointer_compression = false:禁用v8引擎的指针压缩,使Chrome的JS堆限制可以超过4GB。配置Chrome启动参数:--js-flags=--max-old-space-size=10240,解决out of memory的错误。
# blink_symbol_level = 0:删除 WebCore 符号,加快构建速度。
# v8_symbol_level = 0:删除 V8 符号,不调试 V8的情况下,设置为 0 ,加快构建速度。
# symbol_level = 0:无需符号,加快构建速度。
# target_os = "win":未尝试,应该可以编译出Windows系统用的应用程序。

# 开始编译
autoninja -C out/Default chrome

# 检查编译结果,执行chrome验证
cd out/Default/
./chrome

注意点

  1. 一定要保证【gclient sync】正确执行结束,否则可能会缺少必要的代码和设置。
    例如:FileNotFoundError: [Errno 2] No such file or directory: LASTCHANGE.committime
  2. Linux下需要执行【./build/install-build-deps.sh】安装依赖,ChataGPT的回答里面没有这个步骤,会导致错误。
    例如:FileNotFoundError: [Errno 2] No such file or directory: ‘gperf’

参考文档

Chromium编译参数参考文档:gn-build-configuration
Windows下的编译方法:Checking out and Building Chromium for Windows
Chrome历史版本下载
ChromeJS堆限制v79以后有变化的相关博客

AWS Route53设置根域名CNAME时报错:InvalidChangeBatch 400: RRSet of type CNAME with DNS name

AWS Route53设置根域名CNAME值时时报错:
出现错误
错误请求。
(InvalidChangeBatch 400: RRSet of type CNAME with DNS name another-se.com. is not permitted at apex in zone another-se.com.)

原因分析

Zone Apex(区域顶点) 指的是 DNS 区域的根,即该区域的顶级域名(如 example.com),它不包含任何子域名部分。
Zone Apex 不能使用 CNAME 记录,因为 CNAME 会将整个域名指向另一个域名。

解决方法

AWS Route 53可以使用别名 ALIAS 把解析转向到内部的负载均衡或者其他资源上。

Linux下mount Samba 外部存储时报错:mount: cannot mount read-only.

执行如下命令在Linux下挂载Samba协议存储时出错:mount: cannot mount read-only.
mount -t cifs -o rw,guest //192.168.0.101/files /mnt/server-files/

这个错误太有迷惑性了,调查后发现是缺少Samba相关包导致的。

解决方法:安装cifs-utils包

1
2
sudo yum install cifs-utils
sudo apt install cifs-utils

还有两个类似的错误消息,也可以通过上面的方法解决。
命令错误: mount error(13): Permission denied
dmesg错误消息: VFS: cifs_mount failed w/return code = -13