运维小弟 - admin
type: channel
link: https://blog.srebro.cn/author/1/
description: admin
items: Linux日志管理工具Logrotate：自动化轮转与最佳实践
items: vmware Esxi6.7 root密码重置
items: docker-compose 快速部署nacos2.2.0-standalone单节点
items: 迁移极狐GitLab 群组
items: Nginx运维维护规范及全配置详解
items: Dufs 文件服务器部署：集成 dufs-material-assets 美化主题
items: 基于OpenEuler的iSulad容器引擎部署实践手册
items: 记一次紧急出差
items: PostGIS + pgRouting 打造强大的地理空间分析
items: MAZANOKE：离线运行的全能图片处理神器，隐私安全有保障

Linux日志管理工具Logrotate：自动化轮转与最佳实践
type: item
date: 2025-12-08T06:07:46+00:00
description: 一、介绍logrotate是一个linux系统日志的管理工具。可以对单个日志文件或者某个目录下的文件按时间/大小进行切割，压缩操作；指定日志保存数量；还可以在切割之后运行自定义命令。logrotate是基于crontab运行的，所以这个时间点是由crontab控制的，具体可以查询crontab的配置文件/etc/anacrontab。系统会按照计划的频率运行logrotate，通常是每天。在大多数的Linux发行版本上，计划每天运行的脚本位于 /etc/cron.daily/logrotate1.1 配置文件解释系统默认安装logrotate工具，它默认的配置文件在：主配置文件: /etc/logrotate.conf 目录：/etc/logrotate.d/ logrotate 历史记录： /var/lib/logrotate/logrotate.statuslogrotate.conf 是 logrotate 的主配置文件，logrotate.d 是一个目录，该目录里的所有文件都会被主动的读入/etc/logrotate.conf中执行,另外，如果 /etc/logrotate.d/ 里面的文件中没有设定一些细节，则会以/etc/logrotate.conf这个文件的设定来作为默认值。logrotate 定义日志信息配置选项：compress --> 压缩日志文件的所有非当前版本 daily,weekly,monthly --> 按指定计划轮换日志文件 delaycompress --> 压缩所有版本，除了当前和下一个最近的 endscript --> 标记 prerotate 或 postrotate 脚本的结束 errors "emailid" --> 给指定邮箱发送错误通知 missingok --> 如果日志文件丢失，不要显示错误 notifempty --> 如果日志文件为空，则不轮换日志文件 olddir "dir" --> 指定日志文件的旧版本放在 “dir” 中 postrotate --> 引入一个在日志被轮换后执行的脚本 prerotate --> 引入一个在日志被轮换前执行的脚本 rotate 'n' --> 在轮换方案中包含日志的 n 个版本 sharedscripts --> 对于整个日志组只运行一次脚本 size='logsize' --> 在日志大小大于 logsize（例如 100K，4M）时轮换logrotate 命令格式：logrotate [OPTION...] <configfile> -d, --debug ：debug模式，测试配置文件是否有错误。 -f, --force ：强制转储文件。 -m, --mail=command ：压缩日志后，发送日志到指定邮箱。 -s, --state=statefile ：使用指定的状态文件。 -v, --verbose ：显示转储过程。在我们系统上，位于/var/log 下面的一些系统日志，boot.log rpmpkgs.log 等等 都使用了logrotate工具配置文件如下图所示二、测试logrotate工具测试目的： 让我们为我们自己的示例日志文件 /root/sample.log 配置 logrotate，实现自动切割日志第一步，先准备好文件内容[root@localhost ~]# cat > /root/sample_output.log << EOF this is a test log hello srebro.cn EOF [root@localhost ~]# cat /root/sample_output.log this is a test log hello srebro.cn第二步，在 /etc/logrotate.d/目录中 添加一个配置文件# vim /etc/logrotate.d/srebro-test # Logrotate file for test /root/sample_output.log { missingok daily copytruncate rotate 30 notifempty dateext }通常，你需要等待一天才能等到 logrotate 由 /etc/cron.daily 执行。除此之外，你可以手动执行logrotate命令第三步，手动执行logrotate 命令 /usr/sbin/logrotate -vf /etc/logrotate.d/srebro-test [root@localhost ~]# ls -l sample_output.log* -rw-r--r-- 1 root root 0 8月 6 14:21 sample_output.log -rw-…

vmware Esxi6.7 root密码重置
type: item
date: 2025-12-05T02:30:33+00:00
description: vmware Esxi6.7 root密码重置准备一个 centos7 的 iso 镜像或者其他的比如 ubuntu，openeuler 都是可以的制作 U盘启动盘，推荐软碟通一、服务器重启，从 U 盘启动进入bios配置界面，Boot菜单中选择从 U盘启动进入 centos 的 Troubleshooting 模式下选择从 Resue a Centos system进入Rescue模式后，一段时间后就会停在linux模式下此时已经进入到了CentOS的救援模式，将要开始对VMware esxi进行密码找回了，请按照以下命令执#记得修改文件之前备份一下原文件 mkdir -p /mnt/sdax mount /dev/sda5 /mnt/sdax cp /mnt/sdax/state.tgz /tmp cd /tmp tar xf state.tgz #这个解压会解出一个local.tgz文件 tar xf local.tgz #这个解压会解出一个在/tmp/etc文件夹 vi etc/shadowroot:后面跟的一堆编码就是密码，这里把清空就可以，记住一定不多删除了"："号，删完之后按esc键，输入wq保存退出。修改完后是这样的修改完shadow文件后，重新打包cp覆盖回去。cd /tmp rm /tmp/state.tgz /tmp/local.tgz tar czf local.tgz etc/ tar czf state.tgz local.tgz cp state.tgz /mnt/sdax/二、重启服务器这时正常进入Esxi系统 ，按F2，提示输入密码时直接回车。此时密码为空，重新设置新密码即可。

docker-compose 快速部署nacos2.2.0-standalone单节点
type: item
date: 2025-12-04T15:14:59+00:00
description: 一、nacos 介绍官网： https://nacos.io/一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台二、如何使用docker-compose 快速部署nacos2.2.0⚠️ ： nacos-standalone 部署方式 依赖于 数据库，请先配置好数据库实例，此版本采用mysql8 数据库数据库安装文档省略；docker-compose 安装文档省略nacos 版本为2.2.0 https://nacos.io/download/release-history/2.1 创建nacos 工作目录mkdir -p /home/application/Middleware/nacos/2.2 初始化数据库初始化的sql 会跟随着软件包的版本走，https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.zip 里面。包含初始化的sql2.2.1 登录数据库，创建数据库，创建nacos 数据库用户#创建数据库 CREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; #创建nacos用户/密码；需要指定mysql_native_password密码插件 create user nacos@'%' IDENTIFIED WITH 'mysql_native_password' BY 'xxxx'; grant all on nacos.* to nacos@'%';2.2.2 执行初始化mysql-schema.sql/* * Copyright 1999-2018 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ use nacos; /******************************************/ /* 表名称 = config_info */ /******************************************/ CREATE TABLE `config_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(128) DEFAULT NULL, `content` longtext NOT NULL COMMENT 'content', `md5` varchar(32) DEFAULT NULL COMMENT 'md5', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', `app_name` varchar(128) DEFAULT NULL, `tenant_id` varch…

迁移极狐GitLab 群组
type: item
date: 2025-11-11T07:52:00+00:00
description: 迁移GitLab群组一、适用对象:迁移极狐GitLab 群组包括以下类型：从私有化部署版极狐GitLab 迁移到 JihuLab.com。从 JihuLab.com 迁移到私有化部署版极狐GitLab。从一个私有化部署版极狐GitLab 实例迁移到另一个。同一极狐GitLab 实例中的群组之间的迁移。源实例必须运行 14.0 或更高版本。二、迁移方式通过直接传输（推荐👍）通过上传导出文件。在私有化部署版上，迁移群组资源功能默认不可用，要在界面上显示此功能，请让管理员在应用设置中启用它通过直接传输迁移群组，将群组从一个地方复制到另一个地方。可以：一次复制多个群组。将顶级群组复制到：另一个顶级群组。任何现有顶级群组的子组。另一个实例，包括 JihuLab.com三、启用迁移群组资源功能旧的GitLab 和 新的GitLab 都需要设置要访问可见性和访问控制选项：以具有管理员访问级别的用户身份登录极狐GitLab。在左侧边栏中，选择 搜索或转到。选择 管理中心。选择 设置 > 通用。展开 导入和导出设置 部分导入源： GitLab export【勾选】，导出项目【勾选】， 允许通过直接传输迁移群组和项目【勾选】其他设置，导入导出的大小限制， 0表示不限制大小保存更改即可四、创建个人访问令牌使用管理员账户，创建令牌：在右上角，选择您的头像。选择 编辑个人资料。在左侧边栏中，选择 访问令牌。输入令牌的名称和到期日期。令牌在该日期的午夜 UTC 到期。如果您不输入到期日期，到期日期将自动设置为比当前日期晚 365 天。默认情况下，此日期最多可以比当前日期晚 365 天。设置选择范围。选择 创建个人访问令牌。并复制留存将个人访问令牌保存在安全的地方。离开页面后，您将无法再访问令牌五、群组导入创建要导入的群组并连接源实例：您可以选择创建：一个新群组。在左侧边栏中，选择 搜索或转到 > 查看我的所有群组 > 新建群组，然后选择 导入群组。一个新的子组。在现有群组的页面上，您可以：选择 新建子组。在左侧边栏中，选择 ，然后选择 新建子组。然后在左侧边栏中，选择 导入现有群组 链接。输入运行 14.0 或更高版本的极狐GitLab 实例的 URL。输入源实例的【个人访问令牌】选择 连接实例。六、参考https://docs.gitlab.cn/jh/user/group/import/index.html[迁移极狐GitLab 群组]

Nginx运维维护规范及全配置详解
type: item
date: 2025-10-30T09:11:00+00:00
description: Nginx运维维护规范及全配置详解一、版本约束软件的不同版本，在使用起来都有可能带来不可预知的影响，因此需要统一整理，固定下来，不允许轻易变更。在Nginx开源版官网，点击右侧download可以看到各个版本的Nginx，其中Mainline是抢先的主干版本（版本号是奇数），Stable是稳定版（版本号是偶数）系统环境，软件版本OpenEuler22.03 LTS SP4nginx: 1.28.0运行用户： nginx二、软件安装路径部署路径/home/application/nginx前端工程路径/home/application/nginx/html日志路径/home/application/nginx/logs配置文件路径/home/application/nginx/conf/nginx.conf 【主配置文件】/home/application/nginx/conf.d/*ssl证书路径/home/application/nginx/cert三、安装3.1 下载$ wget http://nginx.org/download/nginx-1.28.0.tar.gz3.2 安装依赖安装依赖包，NGINX是C语言写的，pcre-devel支持正则表达式，openssl 开启加密$ yum -y install gcc pcre-devel openssl-devel tar make zlib zlib-devel3.3 创建nginx用户$ useradd -s /sbin/nologin nginx -M3.4 指定安装目录 为/home/application/nginx启用 HTTP/2 模块；启用 SSL 模块；启用 Stub Status 模块；启用4 层TCP/UDP 代理模块；启用 Gzip 静态模块$ mkdir /home/application/nginx $ tar -xf nginx-1.28.0.tar.gz $ cd nginx-1.28.0 ./configure --prefix=/home/application/nginx --user=nginx --group=nginx --with-http_v2_module --with-http_ssl_module --with-http_stub_status_module --with-stream --with-http_gzip_static_module --pid-path=/home/application/nginx/nginx.pid3.5 编译安装$ make && make install3.6 使用 systemd 服务管理 nginx3.6.1 前提需要定义 nginx.pid 的文件路径 ， 修改/home/application/nginx/conf/nginx.conf 配置文件 中 pid /run/nginx.pid; 注意最后有个;标点符号3.6.2 编写 nginx.service 文件$ cat > /lib/systemd/system/nginx.service << 'EOF' [Unit] Description=The NGINX HTTP and reverse proxy server [Service] Type=forking PIDFile=/run/nginx.pid ExecStart=/home/application/nginx/sbin/nginx ExecReload=/home/application/nginx/sbin/nginx -s reload ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target EOF3.6.3 启动 nginx 并配置开机自启动$ systemctl daemon-reload $ systemctl enable nginx $ systemctl start nginx四、平滑升级步骤4.1 下载$ wget https://nginx.org/download/nginx-1.29.3.tar.gz4.2 解压$ tar xf nginx-1.29.3.tar.gz4.3 查看原先使用的模块$ nginx -V nginx version: nginx/1.28.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled…

Dufs 文件服务器部署：集成 dufs-material-assets 美化主题
type: item
date: 2025-10-29T07:30:00+00:00
description: 一、项目介绍Dufs 是一款独特的实用文件服务器，支持静态服务、上传、搜索、访问控制、webdav...项目地址： https://github.com/sigoden/dufs最近看到 github 上有一个dufs的主题，dufs-material-assets。项目地址： https://github.com/TransparentLC/dufs-material-assetsdufs-material-assets 实现的功能：标有✨的是dufs原版前端界面未支持，额外添加的功能。二、dufs 主题实现方式简单概述： 从项目的 GitHub Actions 或 nightly.link 下载前端资源后，假定保存在 dufs-material-assets 目录，在启动 dufs 时添加参数 --assets dufs-material-assets。dufs 配置文件配置指南： 请见https://github.com/sigoden/dufs2.1 创建 dufs 工作目录$ mkdir -p /home/application/dufs/ $ mkdir -p /home/application/dufs/bin $ mkdir -p /home/application/dufs/dufs-material-assets $ mkdir -p /home/application/dufs/log $ mkdir -p /home/application/dufs/config $ mkdir -p /home/application/dufs/files2.2 下载 dufs 二进制文件及主题#下载 dufs 二进制文件，这里提供的dufs是dufs-material-assets主题所兼容的 dufs 版本，目前是v0.45.0 $ wget https://github.com/TransparentLC/dufs-material-assets/releases/download/v0.45.0/dufs-mod-v0.45.0-x86_64-unknown-linux-musl.zip #解压dufs二进制文件,并赋予可执行权限 $ unzip dufs-mod-v0.45.0-x86_64-unknown-linux-musl.zip -d /home/application/dufs/bin $ chmod +x /home/application/dufs/bin #下载dufs-material-assets主题 $ wget https://nightly.link/TransparentLC/dufs-material-assets/workflows/ci/master/stats.zip #解压dufs-material-assets主题 $ unzip dufs-material-assets.zip -d /home/application/dufs/dufs-material-assets2.3 配置dufs配置文件/home/application/dufs/files 为 dufs 文件发布的路径； -p 监听在 50000 端口 ； hidden忽略这些文件名称 .git,.DS_Store,tmp ；assets 表示使用dufs-material-assets 主题 。auth 使用用户名密码认证，加目录权限控制，不写用户名就代表为匿名用户。cat > /home/application/dufs/config/config.yaml << 'EOF' serve-path: '/home/application/dufs/files' bind: 0.0.0.0 port: 50000 hidden: - tmp - '*.log' - '.git' - '.DS_Store' - '*.lock' auth: - '@/upload:rw,/readme.md' - 'admin:srebro@/:rw' allow-all: false allow-upload: true allow-delete: true allow-search: true allow-symlink: true allow-archive: true enable-cors: true render-index: true render-try-index: true render-spa: true assets: /home/application/dufs/dufs-material-assets log-format: '$remote_addr "$request" $status …

基于OpenEuler的iSulad容器引擎部署实践手册
type: item
date: 2025-10-23T10:37:00+00:00
description: 一、环境信息名称版本OpEneuler22.03 LTS SP4iSulad2.1.5OCI1.0.1CNI1.5.0二、iSulad介绍2.1 iSulad 是什么？iSulad 是一个由华为开源并贡献给开放原子开源基金的轻量级、符合行业标准的容器运行时引擎。它的名字源自英文 “Lightweight” 和 “Daemon” 的组合，意为“轻量的守护进程”，这直接点明了其核心设计目标：高性能、低损耗、高安全性。iSulad 是云原生计算基金会（CNCF）的开放容器倡议（OCI）标准的实现，能够运行标准的容器镜像。2.2 诞生背景与设计目标在容器技术发展的早期，Docker 是事实上的标准。但随着 Kubernetes 和云原生生态的成熟，社区发现 Docker 的“一体化”架构（集成了运行时、镜像构建、网络、存储等）显得臃肿，并且存在以下问题：单一故障点：Docker Daemon 守护进程如果崩溃，会影响所有容器。安全性：庞大的守护进程拥有过高权限，攻击面较大。灵活性不足：难以替换其中的某个组件（如网络、运行时）。为了解决这些问题，社区开始推崇“关注点分离”的架构。Kubernetes 推出了 CRI 标准，将容器运行时与 kubelet 解耦。iSulad 正是在这种背景下诞生的，它被设计为：专一的运行时：只专注于管理容器的生命周期（创建、运行、停止、删除）。兼容开放标准：原生支持 OCI（镜像与运行时标准）和 CRI（Kubernetes 容器运行时接口）。面向云原生：为 Kubernetes 和大规模数据中心环境量身定制。2.3 核心架构与特点2.3.1 轻量级与高性能iSulad 本身用 C 语言实现，资源占用（CPU、内存）极低，启动速度非常快。相比于用 Go 语言实现的 Docker Daemon 或 containerd，它的内存开销可以小一个数量级，这对于资源敏感的边缘计算、物联网或高密度部署场景至关重要。2.3.2 模块化设计这是 iSulad 最核心的设计理念。它将功能解耦为多个独立的模块：容器运行时核心：iSulad 守护进程本身。网络：通过 CNI 接口与外部网络插件（如 Calico、Flannel）集成。存储：通过 CSI 接口与外部存储插件集成。镜像管理：最初支持 LCR（另一个轻量级组件），但现在更主流的用法是将 iSulad 作为 containerd 或 Docker 的一个 shim 运行时。在这种情况下，镜像管理、存储等高级功能由 containerd/Docker 负责，iSulad 只专注于运行容器，从而变得更轻量。2.3.3 高安全性iSulad 在设计之初就深度集成了多种安全特性，这也是它的一大亮点：内核安全能力：原生支持 SELinux、AppArmor、Seccomp 等。硬件虚拟化支持：可以与 Kata Containers 等安全容器运行时无缝集成，让每个容器运行在一个独立的轻量级虚拟机中，提供更强的硬件级隔离。权限管理：支持基于能力的细粒度权限控制。2.3.4 丰富的接口支持iSulad 提供了多种方式供用户交互：命令行工具：isula命令，用法与 docker命令非常相似，例如 isula run, isula ps，降低了用户的学习成本。RESTful API：提供了 REST API，便于与其他系统集成。CRI 接口：这是最重要的接口。Kubernetes 的 kubelet 可以通过 CRI 接口直接与 iSulad 通信，使其可以完全替代 Docker 或 containerd，成为 Kubernetes 的容器运行时。2.3.5 iSulad 与 Docker 的对比特性iSuladDocker架构理念模块化、专一、符合开放标准一体化、大而全核心职责纯粹的容器生命周期管理容器生命周期、镜像构建、网络、存储等资源占用极低，轻量级相对较高安全性深度集成多种安全机制，支持安全容器支持标准安全机制，但守护进程攻击面较大网络/存储通过 CNI/CSI 插件化实现，灵活内置一套，也可通过插件扩展与 Kubernetes 集成原生通过 CRI 接口，路径短，高效早期通过 dockershim（已废弃），现在主要通过 CRI 到 containerd适用场景云原生、边缘计算、IoT、高密度部署、对安全和性能要求高的场景个人开发、测试、CI/CD，以及需要一体化解决方案的场景三、iSulad部署3.1 前置环境[可选]#挂载iSula默认存储路径[可选] iSula的默认工作路径在/var/lib/isula ，最好不修改默认存储路径，可以做软链接 #建立工作目录 $ mkdir /home/application/ #格式化磁盘 $ mkfs.ext4 /dev/sdb…

记一次紧急出差
type: item
date: 2025-09-19T11:03:00+00:00
description: 周六早晨周六早上接到 项目组 电话，xx项目需要现场支撑，客户那边的系统存在问题，无法使用，需要尽快响应处理。🐂：好好好 ，出差呗！ 自驾出差 🤪，全程300+km，计划两天搞定。现场打工到达客户现场，排查发现数据库异常，io 很低，导致平台卡顿，再加上之前调优的配置没有持久化，断电后都丢失了。。正好，客户现在申请了窗口期，作业都停车检修了；我们在商讨了计划后，觉得迁移业务到新的集群上比较稳妥。 备份，迁移，验证化工园区的夜晚那晚，升级迁移数据到凌晨 2 点🕛归程📝 | 打工已经那么苦，不喝奶茶心里堵 为啥南京没有古茗 😡洗个车的功夫，会议轰炸中.....小塔还是那么的帅

PostGIS + pgRouting 打造强大的地理空间分析
type: item
date: 2025-09-19T10:22:00+00:00
description: PostGIS + pgRouting：打造强大的地理空间分析背景在现代地理信息系统 (GIS) 和基于位置的服务中，PostGIS 和 pgRouting 是两个不可或缺的开源工具。PostGIS 为 PostgreSQL 数据库提供了强大的空间数据处理能力，而 pgRouting 则在此基础上增加了高级的路径规划和网络分析功能。通过 Docker 将它们容器化，可以极大地简化部署和管理过程。本文将介绍 PostGIS 和 pgRouting 的基本概念、用途，并提供一个 Dockerfile 示例来构建一个包含这两个扩展的 PostgreSQL 镜像。一、PostGIS 是什么，pgRouting 又是什么？PostGISPostGIS 是 PostgreSQL 对象关系数据库的一个扩展，它允许 PostgreSQL 数据库管理和查询地理对象。简而言之，PostGIS 为 PostgreSQL 增加了对空间数据类型（如点、线、面、栅格等）的支持，以及一系列用于空间分析和处理的空间函数。这使得 PostgreSQL 成为了一个功能完备的空间数据库，能够存储、索引和查询大规模的地理空间数据。主要特性包括：支持多种矢量和栅格数据类型。符合 Open Geospatial Consortium (OGC) 的 SQL 实现标准。提供丰富的空间操作和分析函数（例如，距离计算、缓冲区分析、几何对象关系判断等）。强大的空间索引能力，优化查询性能。pgRoutingpgRouting 是 PostGIS/PostgreSQL 的另一个扩展，它专注于网络分析和路径规划。基于 PostGIS 存储的地理网络数据（如道路网、河流网络等），pgRouting 可以执行复杂的路由算法，例如：Dijkstra 算法： 查找单源最短路径。A* 算法： 一种启发式搜索算法，用于更高效地查找最短路径。K-Shortest Path (KSP)： 查找 K 条最短路径。Traveling Salesperson Problem (TSP)： 旅行商问题求解。Driving Distance： 计算可达区域。pgRouting 使得开发者可以在数据库层面直接进行路径计算和网络分析，而无需将数据导出到外部工具。二、它们的用途PostGIS 的用途PostGIS 的应用场景非常广泛，主要包括：空间数据存储与管理： 作为企业级地理数据库，集中存储和管理各类地理空间数据。Web 地图服务： 为在线地图应用（如 Leaflet, OpenLayers, Mapbox GL JS）提供后端数据支持。地理信息系统 (GIS) 分析： 进行复杂的空间分析，如环境影响评估、城市扩张研究、资源分布分析等。位置服务 (LBS)： 开发基于用户位置的应用，如“附近的餐馆”、“导航服务”等。城市规划与基础设施管理： 辅助规划道路、管线、公共设施等。自然资源管理： 监测森林、水资源、土地利用变化等。pgRouting 的用途pgRouting 主要用于解决与网络和路径相关的问题：导航系统： 为汽车、行人和自行车提供最优路径规划。物流与配送： 优化车辆的配送路线，提高效率，降低成本。交通网络分析： 分析交通流量、瓶颈路段、可达性等。应急响应： 规划消防车、救护车等紧急车辆的最佳出动路径。公共交通规划： 分析公交线路覆盖范围和效率。旅游路线推荐： 根据用户偏好和景点网络生成推荐游览路线。三、如何封装 Dockerfile编写Dockerfile 文件以下是一个用于构建包含 PostGIS 和 pgRouting 的 PostgreSQL 镜像的 Dockerfile。这个 Dockerfile 基于 postgres:15.14-alpine3.22 镜像，并安装了 PostGIS 3.5.3 和 pgRouting 3.7.1CNB代码仓库： https://cnb.cool/srebro/docker-images/-/tree/main/Middleware/postgres名称内容postgres+postgis版本：15.14-3.5.3pgrouting版本：3.7.1镜像地址：docker.cnb.cool/srebro/docker-images/postgis:15.14-3.5.3Trivy漏洞情况:无，2025/09/19postgis官方Dockerfile地址：https://github.com/postgis/docker-postgis/blob/master/15-3.5/alpine/Dockerfile关于pgrouting集成在postgis 中https://github.com/postgis/docker-postgis/issues/399# …

MAZANOKE：离线运行的全能图片处理神器，隐私安全有保障
type: item
date: 2025-09-05T07:23:45+00:00
description: MAZANOKE 介绍MAZANOKE 是一个简单的图像优化器，它可以在您的浏览器中运行，离线工作，并在不离开您的设备的情况下保持您的图像。🚢 项目地址Github：https://github.com/civilblur/mazanoke🚀MAZANOKE 特征🖼️ 在浏览器中优化图像调整图像质量设置目标文件大小设置最大宽度/高度从剪贴板粘贴图像在 JPG、PNG、WebP 之间转换从 HEIC、AVIF、GIF、SVG 转换🔒 注重隐私离线工作设备内处理图像删除 EXIF 数据（位置、日期等）无追踪可安装的网络应用程序🛠️ 部署 MAZANOKE👻 先决条件/要求最低 512MB RAM（推荐 1GB+）具备 docker，docker-compose 环境🐳 方法一：使用 Docker 命令部署docker run -itd --name mazanoke -p 3474:80 docker.cnb.cool/srebro/pidin/mazanoke:latest🐳 方法二：使用 Docker Compose 部署 (推荐)services: mazanoke: container_name: mazanoke #image: ghcr.io/civilblur/mazanoke:latest image: docker.cnb.cool/srebro/pidin/mazanoke:latest ##使用 CNB 镜像加速 ports: - "3474:80"部署完成后，通过浏览器访问 http://< 你的服务器 IP 或域名 >:3474 即可使用 MAZANOKE。上传一个图片，转换成 WEBP图片完美瘦身🧭 使用 Nginx 反向代理#mazanoke server { listen 443 ssl; server_name mazanoke.srebro.cn; ##替换成自己的域名 error_page 404 /404/404.html; charset utf-8; ssl_certificate /home/application/nginx/cert/srebro.cn.pem; ssl_certificate_key /home/application/nginx/cert/srebro.cn.key; ssl_session_cache shared:SSL:1m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header x-wiz-real-ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://localhost:3474; } }🎁 获取 MAZANOKECNB 仓库地址：MAZANOKE