============
== 白菜 ==
============
一个勤奋的代码搬运工!

K3s 快速入门指南:构建多云环境下的K3S集群

技术分享 k3s Kubernetes kubectl

K3s 是轻量级的 Kubernetes。server最低只需要512M内存即可运行。

不同账号甚至不同云服务商, 内网是不通的。所以要想办法实现跨公网的容器网络通信,保障任意一台节点上的pod能访问任意节点上的pod和service,和正常的kubernetes集群体验一致。

参考入门指南和多云解决方案,重新整理

目标:实现混合云(腾讯云服务器+甲骨文服务器+微软Azure服务器)境下的K3S集群

Server安装

# 局域网方案
curl -sfL https://get.k3s.io | sh -
# 多云安装方案
curl -sfL https://get.k3s.io | sh -s - --node-external-ip=Server公网地址 --flannel-backend=wireguard-native 

中国用户,可以使用以下方法加速安装:

# 局域网方案
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
# 多云安装方案
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn  sh -s - --node-external-ip=Server公网地址 --flannel-backend=wireguard-native --flannel-external-ip

运行此安装后:

K3s 服务将被配置为在节点重启后或进程崩溃或被杀死时自动重启。
将安装其他实用程序,包括 ```kubectl```、```crictl```、```ctr```、```k3s-killall.sh``` 和 ```k3s-uninstall.sh```。
kubeconfig 文件将写入到 ```/etc/rancher/k3s/k3s.yaml```,由 K3s 安装的 kubectl 将自动使用该文件。

安装其他 Agent 节点

安装其他 Agent 节点并将它们添加到集群,请使用 K3S_URL 和 K3S_TOKEN 环境变量运行安装脚本

Read more...

Telegram 界面自定义翻译

telegram 汉化 语言包

语言包的获取方法

进入官网翻译界面 https://translations.telegram.org

点击 “Start Translating”

选择 对应语言 比如 简体中文 进入网址

https://translations.telegram.org/zh-hans/

底部有 “Sharing Link” 在 telegram 中打开这个网址 就可以换界面语言了。

自定义界面语言的话,选择上面的 客户端类型,根据提示 编辑对应翻译内容 即可。

Telegram 中文语言包

https://t.me/setlanguage/zh-hans-beta

搭建反向代理服务:Telegram Bot Api 反向代理搭建

技术分享 nginx proxy telegram

上面一篇通过nginx和cloudflare workers 搭建的反向代理。

这一篇通过更简单的代码重下搭建个。

通过 Cloudflare Workers 搭建反向代理服务

创建 Cloudflare workers 的步骤都是一样的,代码不一样。

创建一个Worker

在首页选择Workers,若从未创建过则初始化,选择免费套餐,然后创建一个Worker。

编辑Worker内容

进入worker,点击快速编辑,将代码改为下方内容,其中hostname改为你自己的,然后点击保存部署,并可改名为例如cdn的worker。

// 这就是需要代理的网址
const hostname = "https://example.domain"
// const hostname = "http://192.168.0.1"
// const hostname = "https://your.domain"
// const hostname = "https://your.domain/api/path"

function handleRequest(request) {
    let url = new URL(request.url);
    return fetch(new Request(hostname + url.pathname,request))
}

addEventListener("fetch", event => {
  event.respondWith(handleRequest(event.request))
})

为域名添加DNS

添加路由,配置

指向步骤1创建的 Worker,到此等待DNS生效即可。

通过 Vercel 搭建反向代理服务

在github中新建个项目 创建一个文件,命名为 vercel.json 文件内容:

{
  "routes": [
    { "src": "/.*", "dest": "https://example.domain"}
  ]
}

进入 vercel 后台 部署这个项目 配置好自定义域名,即可使用。

Read more...

Telegram Bot Api 反向代理搭建

技术分享 nginx proxy telegram

由于一些原因,配置epusdt需要使用tg反向代理地址才能使用!

#telegram代理url(大陆地区服务器可使用一台国外服务器做反代tg的url),如果运行的本来就是境外服务器,则无需填写
tg_proxy=

两种实现方案,根据个人喜好选择使用或发挥

Nginx反代Telegram Api

安装nginx

sudo apt update && sudo apt install -y nginx

创建配置文件

nano tgapi.conf

输入一下内容并保存

server {
    listen 80;
    server_name tgapi.domain;
    location / {
       return 444;
    }
    location ~* ^/bot {
        resolver 8.8.8.8;
        proxy_buffering off;
        proxy_pass      https://api.telegram.org$request_uri;
    }
}

加载配置

sudo systemctl reload nginx
#或
sudo nginx -s reload

测试访问

输入以下命令行,BOT_TOKEN换成自己机器人token。

curl https://tgapi.domain/bot<BOT_TOKEN>/getMe

看的机器人信息,就说明可以使用了。

配置 epusdt telegram代理url

epusdt 配置(.env)参考

#telegram代理url(大陆地区服务器可使用一台国外服务器做反代tg的url),如果运行的本来就是境外服务器,则无需填写
tg_proxy=https://tgapi.domain

docker 配置 nginx 参考 docker-compose.yam 内容

version: "3"
services:
  nginx:
    container_name: "nginx"
    restart: always
    ports:
      - "80:80"
    image: nginx:bookworm
    volumes:
      - ./conf.d:/etc/nginx/conf.d
      - ./log:/var/log/nginx
    extra_hosts:
      - "host.docker.internal:host-gateway"

使用 Cloudflare Worker 代理 Telegram Bot Api

使用前提

Read more...

甲骨文Vps iptables 开放端口设置

linux vps oracle iptables

在甲骨文的网页后台先开放端口

iptables 开放所有端口

sudo iptables -P INPUT ACCEPT

sudo iptables -P FORWARD ACCEPT

sudo iptables -P OUTPUT ACCEPT

sudo iptables -F

Oracle自带的镜像默认设置了Iptable规则,关闭它

sudo apt-get purge netfilter-persistent && sudo reboot

测试端口是否已经开放

附注:

强制删除规则

sudo rm -rf /etc/iptables && sudo reboot

删除oracle-cloud-agent,防止甲骨文监控

snap remove oracle-cloud-agent

检查防火墙服务状态

sudo systemctl status iptables.service
sudo systemctl status netfilter-persistent.service

远程检测端口开放状态

nmap ip或域名

附注2(开放指定端口):

iptables 开放指定端口

    iptables -I INPUT -p tcp --dport 80 -j ACCEPT

中间的 80 为所需要开放的端口,tcp 为传输协议

Read more...

Docker 搭建MTProto协议上网

Docker mtproto

系统环境: Debian系(其他系只需要更换apt为对应系统的软件包管理工具名称即可)

安装Docker

安装Docker相关工具

sudo apt update && sudo apt -y upgrade && sudo apt install -y docker docker.io docker-compose

启动docker

sudo systemctl enable docker && sudo systemctl start docker

验证是否安装成功

sudo docker run hello-world

mtg v2版本 docker运行

生成密钥

sudo docker pull baicailin/mtg
sudo docker run --rm baicailin/mtg generate-secret --hex trade.aliexpress.com
#会看到一串ee开头的密钥,形如:
eexxx44f3762c8a97d14f89df8c0174726164652e616c69657870726573732e636f6d

写入简单配置

echo "secret = \"把上面一步生成的密钥填进来\"" >config.toml
echo "bind-to = \"0.0.0.0:443\"" >>config.toml

运行docker镜像命令

sudo docker run -d -v $PWD/config.toml:/config.toml -p 443:443 --name baicai_mtg --restart=unless-stopped baicailin/mtg

docker-compose 启动(可代替上面这个命令启动方式)

一键启动 docker-compose.yaml 文件参考

Read more...

docker golang:alpine CGO 制作镜像的正确姿势

Docker Golang

当程序需要引入C/C++库(比如支持Sqlite数据库)的时候,编译环境需要打开CGO,否则打包完成后的程序就不能顺利运行(数据库初始化失败)。

这时就需要安装 build-base 配置编译环境。

参考 Dockerfile 如下:

FROM golang:alpine as builder
ENV CGO_ENABLED=1
WORKDIR /app
COPY . .
RUN apk add --no-cache --update git build-base
RUN go mod tidy \
	&& go build -o api_client_linux ./cmd/api_client/


FROM alpine:latest as runner
ENV TZ=Asia/Shanghai
RUN apk --no-cache add ca-certificates tzdata libc6-compat libgcc libstdc++
WORKDIR /app

COPY --from=builder /app/api_client_linux .
VOLUME /app/conf
EXPOSE 8080

ENTRYPOINT ["./api_client_linux" ,"-c","/app/conf/config.yaml"]

运行镜像我们也使用 Alpine ,由于 Alpine 极为精简,并没有常用的时区、证书等,会导致不可预料的错误。所以我们需要安装这些东西:

包名用途
ca-certificates:CA证书,使用TLS
tzdata:时区配置
libc6-compat:C 标准库
libgcc:GCC 相关库,CGO编译程序依赖
libstdc++:C++ 标准库

网站迁移完成

网站维护记录

实施:

hugo + github action + git pages + cloudflare

目前通过本地 vscode 写完日志后,直接推送到 github 私有仓库,通过 github action 生成静态内容自动推送到 github pages 仓库,完成部署。

静态内容存放: github pages

域名解析使用: cloudflare

附注:

github pages 自定义域名 解析设置(支持A记录)

https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site

SSH使用ProxyCommand通过代理服务器远程连接其他服务器

ProxyCommand ssh linux

OpenSSH的客户端有一个 ProxyCommand 的选项,用于 SSH 客户端与服务器之间的隧道通信(tunneling)。所谓的隧道技术,也称代理技术,是网络通信技术的一个普遍概念,就是把一条信道建立于另外一条信道之上。

SSH 会话基于一个 TCP 连接,如果我们把连接的两个端口各自的出口(也即入口)进行截获,就可以用其它的信道来传输。而且 SSH 仍然认为它用的是和另一端连接一条 TCP 连接。

ProxyCommand 指定一个命令(称为 Proxy),SSH 客户端将通过标准输入输出和这个命令启动后的进程进行正常的 SSH 通信,而 Proxy 连接着 SSH 服务器(一般是一个 Server Proxy,再由该 Server Proxy 连接服务器)。

环境说明

    远程服务器的IP地址为 0.0.0.1,代号为X;
    另一个远程服务器的IP为 0.0.0.2,代号为Y;
    目前本机的IP地址为 0.0.0.3,代号为A,本地可以利用SSH客户端通过密钥或密码连接X和Y;

这里全部使用密钥的方式进行访问,本机 A 与 Y 之间无法进行访问

本地的 ~/.ssh/config 的配置文件信息如下,通过X连接到Y;

Host X
        HostName 0.0.0.1
        User root
        Port 22
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_1
Host Y
        HostName 0.0.0.2
        User root
        Port 22
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_2
Host test
    HostName 0.0.0.2
    User root
    Port 22
    IdentityFile ~/.ssh/id_rsa_2
    ProxyCommand ssh X -W %h:%p

测试本机通过 X 连接到 Y 服务器

Read more...

检查网络延时测试 URL 汇总,可用于软件测试延时

技术分享
服务提供者链接大陆体验境外体验http/httpsIP Version备注
Googlehttp://www.gstatic.com/generate_204510204/2044+6Google网络联通性测试地址
Googlehttp://www.google-analytics.com/generate_204610204/2044+6Google网络联通性测试地址
Googlehttp://www.google.com/generate_204010204/2044+6Google网络联通性测试地址
Googlehttp://connectivitycheck.gstatic.com/generate_204410204/2044+6Google网络联通性测试地址
Applehttp://captive.apple.com310200/2004+6苹果设备用于检测 Wi-Fi 是否需要认证登陆的链接
Applehttp://www.apple.com/library/test/success.html710200/2004+6苹果设备用于检测 Wi-Fi 是否需要认证登陆的链接
MicroSofthttp://www.msftconnecttest.com/connecttest.txt510200/error4微软的网络联通性测试地址
Cloudflarehttp://cp.cloudflare.com/generate_204410204/2044+6Cloudflare的联通性测试地址
Firefoxhttp://detectportal.firefox.com/success.txt510200/2004+6火狐的网络联通性测试地址
V2exhttp://www.v2ex.com/generate_204010204/3014+6v2ex 的联通性测试地址
小米http://connect.rom.miui.com/generate_204104204/2044小米的联通性测试地址
华为http://connectivitycheck.platform.hicloud.com/generate_204105204/2044华为的联通性测试地址
Vivohttp://wifi.vivo.com.cn/generate_204105204/2044vivo 的联通性测试地址

以上大陆指中国大陆,境外指非中国大陆。

Read more...
Previous Page 3 of 8 Next Page