Centos安装wimtools

最近在折腾ipxe安装系统,iso里面获取系统的版本选择手动有点麻烦, 找了下wimlib实现dism的一些功能,

 记录一下wimtools源码安装记录.

官方网站https://wimlib.net/

安装前提需要准备好编译环境以及ntfs-3g-devel(自己想办法)

yum install fuse-devel git -y
git clone git://wimlib.net/wimlib
cd wimlib
./bootstrap
./configure

 

安装好后在目录/usr/local/bin/下可以看到命令全部.

# ls /usr/local/bin/wim*
/usr/local/bin/wimappend   /usr/local/bin/wimextract     /usr/local/bin/wimoptimize
/usr/local/bin/wimapply    /usr/local/bin/wiminfo        /usr/local/bin/wimsplit
/usr/local/bin/wimcapture  /usr/local/bin/wimjoin        /usr/local/bin/wimunmount
/usr/local/bin/wimdelete   /usr/local/bin/wimlib-imagex  /usr/local/bin/wimupdate
/usr/local/bin/wimdir      /usr/local/bin/wimmount       /usr/local/bin/wimverify
/usr/local/bin/wimexport   /usr/local/bin/wimmountrw

阅读剩余部分...

推荐一个在线svg编辑器

地址https://boxy-svg.com/app

转:PROXMOX VE 加入/退出集群的方法

加入集群的方法

主节点在PVE的WEB端配置好后,启用两步认证。

来到从节点,进入SSH,输入pvecm add 主机名(如果你的主机证书是自己修改过的,需要输入对应证书的地址,而不是内网IP,否则会证书验证失败无法链接)

提示输入密码,然后会提示输入二次验证token,然后就会自动加入到集群了。

退出集群的方法

进入主节点,输入 pvecm delnode 需要删除的节点名,清除该节点。

停止集群 输入systemctl stop pve-cluster.service

修改/etc/corosync/corosync.conf 删除对应节点

启动集群 systemctl start pve-cluster.service

进入要退出集群的节点的SSH,输入以下指令

systemctl stop pve-cluster.service
systemctl stop corosync.service
pmxcfs -l
rm /etc/pve/corosync.conf
rm -rf /etc/corosync/*
killall pmxcfs
systemctl start pve-cluster.service

即可完成退出。如果是主节点需要退出,应先清除其他子节点再执行上述命令删除

 

转自:https://sakurabakiyoka.com/2020/12/19/proxmox-ve-cluster/

转:Windows系统初始化工具Cloudbase-init

原文地址:https://foxi.buduanwang.vip/windows/1789.html/

在Windows实现初始化工具叫做cloudbase-init。

 

Proxmox VE对于Windows类型的虚拟机,提供了一个叫作configdrive2的元数据服务,务必先看下面链接,了解Proxmox VE在Cloudinit方面的实现。

佛西博客 - Proxmox VE与Cloud-init (buduanwang.vip)

在Windows客户机中安装好Cloudinit-base软件包之后,下次开机会从配置的元数据列表中,搜寻现有的元数据,在Proxmox VE 元数据服务就是configdrive2,因此,Cloudbase-init会读取cloudinit信息,从而自定义虚拟机。

目前PVE支持的元数据类型有User,Network。所以目前能办到的就是修改ip或者dns,新建用户,修改密码等基本功能。

一 修改PVE代码

看过上面的链接,你应该注意到,对于任何类型的os,PVE都会将用户密码进行加密,再写入到cloudinit驱动器中。

然而Windows就只识别明文密码。所以不修改代码,在用户创建这块就会存在问题。

这里有一个热爱ProxmoxVE的团队做出了一个修改代码的补丁,本文就是根据此方案,给大家分享。

GECO-IT-PUBLIC/Geco-Cloudbase-Init - Geco-Cloudbase-Init - Version Control System

安装git

apt update && apt install git -y

克隆库

 cd /opt/ && git clone https://git.geco-it.net/GECO-IT-PUBLIC/Geco-Cloudbase-Init/

PVE6和PVE7代码不一样,因此有2个补丁,先确认自己是哪个版本,在终端执行pveversion

 

阅读剩余部分...

WHMCS Payment gateway module for Stripe Alipay

WHMCS Payment gateway module for Stripe Alipay

阅读剩余部分...

e2fsprogs包降级

近日用了第三方的源升级了e2fsprogs(1.45.6.wc1-0)但是在 virt-resize的时候supermin错误退出.

如果编译升级 libguestfs和supermin又一堆麻烦问题.

回滚rpm包的时候卡在了libcom_err因系统依赖无法卸载,

搜索和测试后得出的解决办法是先下载好旧版本的包用rpm强制安装, 然后卸载新的版本所有包,最后安装回去涉及的依赖包,

阅读剩余部分...

php扩展mailparse安装

git clone https://github.com/php/pecl-mail-mailparse.git mailparse
cd mailparse
phpize
./configure
sed -i 's/#if\s!HAVE_MBSTRING/#ifndef MBFL_MBFILTER_H/' ./mailparse.c
make
make install 
 echo "extension=mailparse.so" | sudo tee   $(php-config --ini-dir)/mailparse.ini

开源项目地址 https://github.com/php-mime-mail-parser/php-mime-mail-parser

老人与坏人

曾几何时出现了一种说法, “老人变坏了”和“坏人变老了”,
这事根本的原因还是因为做一个正常人和好人的成本太高了, 道德/财力/时间/精力/法律等等大山压在好人的身上.
结果就是年轻人变得冷漠, 老年人变得趋利.

whmcs程序压缩包下载地址

https://s3.amazonaws.com/releases.whmcs.com/v2/pkgs/whmcs-8.4.1-release.1.zip

observium和librenms常用配置

librenms.conf  nginx配置

server {
 listen      80;
 server_name librenms.XXX.com;
 root        /opt/librenms/html/;
 index       index.php;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {expires 30d;}
        location ~ .*\.(js|css)?$ { expires 12h;}

 location / { try_files $uri $uri/ /index.php?$query_string; }
 location /api/v0 { try_files $uri $uri/ /api_v0.php?$query_string; }
 location ~ \.php {
  include fastcgi.conf;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass unix:/dev/shm/librenms.sock;
  fastcgi_param SCRIPT_FILENAME $request_filename;
}
 location ~ /\.ht { deny all; }
}

 

observium.conf nginx配置

server {
    listen 80;
    root /opt/observium/html/;
    index index.php;
    server_name   observium.XXX.com;
    error_log /var/log/nginx/observium.error.log ;
    access_log /var/log/nginx/observium.log ;

 location / { try_files $uri $uri/ /index.php?$query_string; }
 location /api/v0 { try_files $uri $uri/ /api_v0.php?$query_string; }
 location ~ \.php {
  include fastcgi.conf;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass unix:/dev/shm/php-fpm.sock;
  fastcgi_param SCRIPT_FILENAME $request_filename;
 }
}

 

observium.sh  升级迭代版本

cd /opt
mv observium observium_old
wget  http://www.observium.org/observium-community-latest.tar.gz -O -|tar xz
mv /opt/observium_old/{rrd,logs,config.php} /opt/observium/
/opt/observium/discovery.php -u
/opt/observium/discovery.php -h all
rm -rf observium_old

Centos8切换到Stream版本

大致先更换vault源,然后执行切换升级。

# CentOS 8 
minorver=8.5.2111
sudo sed -e "s|^mirrorlist=|#mirrorlist=|g" \
         -e "s|^#baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=https://mirrors.aliyun.com/centos-vault/$minorver|g" \
         -i.bak \
         /etc/yum.repos.d/CentOS-*.repo

然后dnf更新系统。

dnf install centos-release-stream -y
dnf swap centos-linux-repos centos-stream-repos -y
dnf distro-sync -y

可能有一些第三方包不能升级, 也有可能遇上centos-release-stream安装失败的情况。

导出google的个人数据以及恢复邮件数据

https://takeout.google.com/

从takeout导出需要的数据, 在邮件目录里面找到mbox文件, 借助mb2md 把mbox转换成maildir.

mb2md -s /.mbox文目录/   -d   /home/user/存放邮件目录/
chown  -R mail.mail   /home/user/存放邮件目录/.kvm_mbox

.kvm_mbox目录下的cur目录内就是原来邮件内容.

另外Roundcube的webmail也能直接导入mbox的数据.

MacOS安装mtr pkg包

用brew安装的mtr安装或多或少的会有一些问题,直接下载pkg来安装来的方便一些。

http://rudix.org

https://github.com/rudix-mac/packages/

Linux的dns使用tcp协议解析

因为攻击原因UDP协议禁用了后影响到DNS解析了.

echo "options use-vc" >> /etc/resolv.conf

 

 

use-vc (since glibc 2.14)
                     Sets RES_USEVC in _res.options.  This option forces
                     the use of TCP for DNS resolutions.

https://man7.org/linux/man-pages/man5/resolv.conf.5.html

dnsdist.conf

# cat /etc/dnsdist/dnsdist.conf
newServer({address="8.8.8.8:53",useClientSubnet=true,maxCheckFailures=30,qps=10000})
newServer({address="1.1.1.1:53",useClientSubnet=true,maxCheckFailures=30,qps=10000})
setACL({'0.0.0.0/0', '::/0'})

addLocal('0.0.0.0:53')
setServerPolicy(firstAvailable)
setECSSourcePrefixV4(24)
setECSSourcePrefixV6(56)