自行搭建 IM Wechat 聊天平台 mattermost 入门配置安装教程

实在无法忍受国内 IM 软件的臃肿,简简单单的聊天搞一堆东西。安装包堪比一个系统。

今天说的这款 IM 支持全平台。WEB 安卓 苹果 PC 都有客户端。名字叫 ”mattermost“。
其实我也试用过其他 IM 。感觉这个比较符合自己的使用习惯。废话不多说,步骤如下:

1,准备一台 Ubuntu 20.04 的实体机或者虚拟机。如果外网使用,最好有公网IP。内网使用不用在乎这些。如果怕被取证,可以使用全盘加密,虚拟机也可以全盘加密。

2,命令行步骤如下:
curl -sL -o- https://deb.packages.mattermost.com/pubkey.gpg | gpg –dearmor | sudo apt-key add
sudo apt-get update
sudo apt install mattermost -y
sudo install -C -m 600 -o mattermost -g mattermost /opt/mattermost/config/config.defaults.json /opt/mattermost/config/config.json
sudo vi /opt/mattermost/config/config.json
# 这里修改配置文件,但现在还无需配置,因为你还没装数据库,我们用推荐的 postgresql 数据库
sudo apt install postgresql postgresql-contrib
sudo su – postgres -c “createuser jacker
sudo su – postgres -c “createdb mattermostdb
sudo -u postgres psql
ALTER USER jack90 WITH PASSWORD ‘edcJacker90‘;
grant all privileges on database mattermostdb to jacker;
\q
# 配置好数据库就可以启动数据库了
sudo systemctl start postgresql
# 接下来再修改 mattermost 的配置文件,主要修改这几处。
定位文件 /opt/mattermost/config/config.json 确认文件内容 DriverName 这一行是 “postgres”
DataSource 这一行是,根据上面数据应该是如下:
“postgres://jacker:edcJacker90@localhost/mattermostdb?sslmode=disable&connect_timeout=10″
“SiteURL” 这一行是
“http://90.life:8065” #如果你没做 nginx 等代理转发,或者其他映射就需要这么设置。如果做了,请转换相应端口。如果加了证书就改为 https。域名请自行替换。这个设置跟你等会在 APP 上写的服务器 url 应该是一致的才对。否则会有错误。
至此所有配置完成。可以使用了。当然配置文件还有许多项目可自行研究。
sudo systemctl start mattermost 启动

这个默认配置只适合小环境使用,如果流量很多,官方推荐使用 nginx 作为前置代理处理流量。此平台一个服务器免费是 200 个名额。其实我就当个跨平台剪切板使用。

更多细节大家可以参考下面连接:
https://docs.mattermost.com/install/install-ubuntu.html


利用 PowerShell 脚本批量卸载软件

搜来搜去都找不到现成的,只好用自己蹩脚的编程基础写一个。记录下

# 获取所有已安装软件的信息,并过滤包含"chrone"关键字的软件
$products = Get-WmiObject Win32_Product | Where-Object {$_.Name -like "*chrome*" -or $_.Caption -like "*chrome*"}

# 如果找到匹配的软件,则直接进行卸载
if ($products) {
    Write-Host "正在卸载包含'chrome'关键字的软件..."

    foreach ($product in $products) {
        $msiexecCommand = "{0}" -f $product.IdentifyingNumber
        Write-Output $msiexecCommand
        try {
            & msiexec.exe /x "`"$msiexecCommand`"" /qn
            Write-Host "已成功卸载:$($product.Name)"
        } catch {
            Write-Host "卸载 $($product.Name) 失败:$($_.Exception.Message)"
        }
    }
} else {
    Write-Host "未找到包含'chrome'关键字的软件。"
}

其实我也写了其他写法,比如通过注册表获取程序列表。

# 获取所有安装的程序
$programs = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*', Directory, DisplayName, Publisher -ErrorAction SilentlyContinue

# 筛选出包含 "Check Point" 的程序
$unPrograms = $programs | Where-Object { $_.DisplayName -like "*RealVNC*" -or $_.Publisher -like "*RealVNC*" }

# 输出结果
if ($unPrograms) {
    Write-Host "找到以下包含 'RealVNC' 的软件:"
    $unPrograms | Format-Table DisplayName, Publisher -AutoSize
    

} else {
    Write-Host "未找到包含 'RealVNC' 的软件。"
}

但是注册表很多软件不会写入进去,导致根本没有相关信息。反倒是 Get-WmiObject Win32_Product 这个方法能获取对象。比较通用。程序员的世界,程序果真写的五花八门。