macOS自定义后台运行程序
在 macOS 中运行命令行程序,如果你不想开一个终端窗口,并且希望实现开机自启动等等功能,可以使用 macOS 自带的服务管理。这里以 easytier 这个组网工具为例: 直接执行的命令是:/usr/local/bin/easytier-core -c /Users/iuxt/config/easytier.toml 创建 plist 配置文件vim /Library/LaunchDaemons/easytier.plist 123456789101112131415161718192021222324252627282930313233343536<?xml version="1.0" encoding="UTF-8"?><!-- Generated for serviceman. Edit as needed. Keep this line for 'serviceman list'. --><!DOCTYPE plist PUBLIC "-//Apple//DTD...
正在运行的Docker容器增加端口映射
为什么有这个需求假设有如下情况: 这个服务很重要,很多服务在连,停服不知道会有什么影响。 服务是运行在 docker 里的,但是 docker 启动命令找不到了。 想给 docker 容器临时增加一个端口映射。 方法一、使用工具反向代理这个方法性能不如上面的 iptables 规则,比如可以用 nginx 的 stream 四层代理,或者用 socat 一条命令搞定。 查看容器的 IP 地址1docker inspect postgres 在结果中找到 NetworkSettings -> Networks -> <你的网络名称> -> IPAddress 123456# 安装 socatsudo apt-get install socat # Ubuntu/Debian# 创建端口转发,172.18.0.2 是容器的IPsocat TCP-LISTEN:5432,fork TCP:172.18.0.2:5432 方法二、参照 Docker 原生的方式docker 的 -p 命令来进行端口映射,本质上也是维护了一套 iptables...
轻量级组网工具WireGuard
要先打开服务器的内核转发:net.ipv4.ip_forward = 1假设 WireGuard 自身的虚拟网段是 10.8.0.0/24, 给服务器分配的 IP 是:10.8.0.1,服务器的公网 IP 是:124.221.31.148 服务器基础配置1234567891011121314# Ubuntu安装 WireGuardsudo apt-get install -y wireguard# CentOS 安装 WireGuardsudo yum install -y wireguard-tools# 开启内核转发echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.confsysctl -p# 配置目录创建mkdir -p /etc/wireguardcd /etc/wireguardumask 077 生成公私钥对先生成一些公私钥对,服务器需要 1 个,每个客户端 1 个。 12345678910111213# 生成服务器公私钥wg genkey > server_privatekeywg...
在Kubernetes中部署一个单节点Elasticsearch
Elasticsearch 有自己的高可用集群机制,不建议再用 k8s 管理 适用于临时使用一下、或者测试使用 数据存储问题为了测试使用,我也没有用 pvc 来管理数据,而是选择了 hostpath,那么为了重启也可以正常访问数据,需要将 es 固定在一个节点上。 123456789101112131415161718192021222324252627282930313233343536373839404142434445apiVersion: apps/v1kind: Deploymentmetadata: name: elasticsearch labels: app: elasticsearchspec: replicas: 1 selector: matchLabels: app: elasticsearch template: metadata: labels: app: elasticsearch spec: nodeSelector: ...
使用openssl制作自签名双向认证(mTLS)证书
可以直接使用我制作好的工具,支持自签名 HTTPS 证书和双向认证证书,纯 shell 脚本,支持 Docker 使用,一键生成证书:https://github.com/iuxt/my_cert 双向认证用途是什么: 双向认证就是客户端需要携带证书来请求服务器,证书校验通过了才会正常返回。比如说我有个网站只有自己访问,就可以配置双向认证,自己电脑安装一下证书就可以访问,还可以通过吊销证书的方式来禁止对应的人访问网站。 CA 证书生成 CA 私钥1openssl genrsa -out ca.key 4096 生成一个 ca.key 文件 生成 CA 证书非交互式创建交互式创建1openssl req -utf8 -new -x509 -days 3650 -key ca.key -out ca.crt -subj '/C=CN/ST=Shanghai/L=Pudong/O=iuxt/OU=张理坤/CN=www.i.com/emailAddress=iuxt@qq.com'1openssl req -utf8 -new -x509 -days 3650...
minio自建对象存储
docker 部署 这里我指定了 network,我的 nginx 也是用的这个 network,可以直接用 名字 来访问 123456docker run --name minio -d \ --env-file=.env \ --network iuxt \ -v ./data:/data \ -v ./config:/root/.mc \ minio/minio:RELEASE.2025-04-22T22-12-26Z server --console-address ":9001" /data .env 配置 12345MINIO_ROOT_USER=usernameMINIO_ROOT_PASSWORD=passwordMINIO_SERVER_URL=https://minio.xxx.comMINIO_BROWSER_REDIRECT_URL=https://minio.xxx.com/ui/MC_CONFIG_DIR=/root/.mc nginx...
ingress-nginx 使用自定义的nginx配置
新版 ingress 增强了 “ 安全性 “, 它认为用户自己写的 nginx 配置文件不安全,所以又加了限制。我的 ingress 版本是: 1.12.2 比如有个需求,Spring Boot 写的程序有个 /actuator 路径,安全审查不通过,如果是个 nginx 可以通过: 123location /actuator { return 404;} 来直接让它返回 404 configmap1234567891011121314apiVersion: v1data: allow-snippet-annotations: "true" annotations-risk-level: Criticalkind: ConfigMapmetadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/instance: public-ingress-nginx app.kubernetes.io/name:...
P12格式证书与PEM格式转换
P12 证书是整合了公钥和私钥的,还可以给 P12 证书设置密码。 P12 转换为 PEM12345678# 提取证书openssl pkcs12 -in 1.p12 -clcerts -nokeys -out certificate.crt# 提取加密的私钥openssl pkcs12 -in 1.p12 -nocerts -out private_key.key# 提取未加密的私钥openssl pkcs12 -in 1.p12 -nocerts -nodes -out private_key.key 这种是加密的 PEM 私钥 123-----BEGIN ENCRYPTED PRIVATE KEY-----...-----END ENCRYPTED PRIVATE KEY----- 也可以将加密的 PEM 私钥转换成未加密的 PEM 私钥 1openssl rsa -in encrypt.key -out nopassword.key 未加密的 PEM 私钥长这样 123-----BEGIN PRIVATE KEY-----...-----END PRIVATE...
使用blackbox-exporter做域名监控
blackbox 创建模块对应的 blackbox exporter 的配置文件: 1234567891011121314151617181920212223242526272829303132modules: http_2xx: prober: http timeout: 5s http: valid_http_versions: ["HTTP/1.1", "HTTP/2"] valid_status_codes: [200] method: GET preferred_ip_protocol: "ip4" http_post_2xx: prober: http timeout: 5s http: valid_http_versions: ["HTTP/1.1", "HTTP/2"] method: POST preferred_ip_protocol:...
记一次MySQL字符集转换导致的故障
业务报错如下: 经过排查为 MySQL 字符集 utf8 ,当插入 emoji 表情包的时候,就会报错。 用 python 查看这是个什么: b'\xF0\x9F\x90\x92'.decode('utf-8') 尝试将表转换成 utf8mb4 字符集 1ALTER TABLE vehicle_user_role CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 结果导致 数据库 CPU 飙升 于是进行回滚操作: 1ALTER TABLE vehicle_user_role CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 结果报错: 1ERROR 1366 (HY000): Incorrect string value: '\xF0\x9F\x90\x92"}' for column 'EXT' at row...