OlderFox - 粉毛变态老狐狸
type: channel
link: https://www.olderfox.com/author/1/
description: 粉毛变态老狐狸
items: 使用cloud-init镜像在Proxmox中方便地创建虚拟机
items: 长安启源A06四万公里驾驶体验结论
items: ProxmoxVE显卡直通配置
items: 使用IPSec对公网开放局域网服务
items: 网站IPV6
items: Linux下搭建PXE/EFI启动服务器
items: MsSQL 2000数据库置疑问题修复
items: 简单自建互联网DNS缓存服务器
items: Ubuntu 20.04安装NetBox实战
items: 使用Ackee完成简单的网站访问统计

使用cloud-init镜像在Proxmox中方便地创建虚拟机
type: item
date: 2026-07-02T16:53:43+00:00
description: 1.前言众~所周知，在PVE中创建虚拟机可谓是一个繁琐又无聊的工作，你要安装操作系统，你要设置用户名和密码，即使你创建了一个模板，在每次新创建虚拟机时又要进入系统设置不同的hostname和IP地址等一大~堆信息，我们可以用cloud-init工具包来免去这一繁琐项目。2.操作环境虚拟化平台：Proxmox VE 9.2.2模板系统：Ubuntu 24.04 cloud-init minimal3.正式操作首先，为了方便表示，我就不用命令行创建了，第一步需要创建一个UEFI启动的无硬盘和CD驱动器的虚拟机，然后为其添加cloud-init驱动器，总线保持IDE即可，存储位置按照你要使用的存储位置而定，创建完后的效果如下图所示。注：UEFI启动非必须，需要跟随下载的不同镜像使用不同的启动方式，但无硬盘和CD驱动器是必须的。在创建完成后，上传下载到的模板镜像，通常为*.img格式，将其通过PVE网页上传到宿主机存储,我这里上传到了ISO镜像目录。然后，我们需要通过命令行将导入的镜像转化成虚拟磁盘，挂载到目标虚拟机，转到宿主机shell，执行如下命令# qm importdisk <虚拟机ID> <镜像完整path> <目标存储> ,在我的环境中命令如下，请对应替换为你的目录和位置 qm importdisk 40000 /var/lib/pve/local-btrfs/template/iso/ubuntu-24.04-server-cloudimg-amd64.img data-storage等待导入完毕后，转到虚拟机的硬件页，会出现一个新的未使用的磁盘，选中后点击编辑，弹出属性编辑页，点击新增即可。然后再调整下引导顺序，使新增的磁盘可以被引导，同时稍微对磁盘进行一些扩容，就可以直接开机！

长安启源A06四万公里驾驶体验结论
type: item
date: 2026-07-01T19:17:28+00:00
description: 1、前言各位好，之前买了辆长安启源A06激光Ultra版，落地15万左右，其实一直很想写一篇关于这个车的一些详细评测也好，深度体验也好，各种各样的乱七八糟的内容，这辆车目前已经开了四万多公里了，半年时间，可以说有很多能聊的部分，作为开了近八年车的老司机，也是长安的忠诚粉丝，接下来给大家逐一说一下它的优点和缺点。我会从驾驶体验、维护保养、售后维修、长时用车等方面详细说明，包括各种遇到的问题，以及对这辆车的不满。2、驾驶体验简要说明下这辆车的驾驶体验，从起步、行驶、包括智能辅助驾驶和语音交互方面说明。2.1、起步首先，这辆车有常见的三种驾驶模式，舒适、标准、以及运动，在这三种模式下，非常正常地动力会阶段性的提升，表现在地板油的启动速度上，但有一点让我非常不满的是，在舒适模式下，它的加速表现非常不平稳，在体感上来说的加速并不像一辆电车，而是感觉像运行在2000转左右起步的油车，体感有不同的加速阶段，而不是线性提升。 而如果要解决这个加速过于急的问题，我必须非常轻地踩加速踏板，轻点到它刚好能解除自动驻车的状态并再略微加速，才能获得一个相对比较“温柔”的起步体验。如果说这个问题可能是由于个人驾驶习惯导致，但同样的问题在朋友的理想I6、小米YU7、领克、丰田不知道什么纯电车型上并未出现，同样的驾驶习惯，其他品牌就是可以带来相对不错的舒适性，不会出现加速一点头，减速一点头的效果。我个人认为可能是这辆车的调教问题，踏板响应曲线之类的杂七杂八的，但作为车主来说，这个起步体验实在是难以让人相信这是一辆十几万的电车，我一直觉得这个起步体验和我之前的长安19款CS75差不多，都是起步一点头。2.2、行驶起步说完了，接下来说说正常行驶，先说行车噪音，这是在正常驾驶过程中影响体验最大的部分。2.2.1、噪音控制这辆车标配的有四门的双层夹胶玻璃，还是无框车门，正常行驶下，不开空调时静谧性可圈可点，胎噪以及风噪控制得可以说很不错，能够在高速驾驶中依旧保持车内正常轻声交谈。但！我就有个疑问了，空调风噪为什么那么大！ 在正常低速区间行驶（30-60Kmh)左右，空调风力从一档开始就清晰可闻，日常夏日驾驶保持凉爽的情况下风力必须要在三档及以上，在这个风速下，车内的空调噪音甚至可以堪比在高速路120Km/h的车外风噪。而如果开到满速八档风力，那基本可以告别车内轻声交谈了，必须要正常音量说话，而即使是日常驾驶，在夏日驾驶体验可以说非常没有体验感了。可怜的车身团队，被空调拖死了体验，拼命优化却被内鬼背刺，拖出去打一顿算了。2.2.2、辅助驾驶这又是另一项让我感觉十分好笑的地方，长安启源销售在销售话术上面模棱两可，以我所在的区域，有一家长安4S店，这家店同时经营长安、长安启源、长安深蓝三个系列的车型，我刚开始看的时候觉得深蓝L06很不错，有城区领航，但启源销售跟我讲说之后A06同样会OTA更新城区领航，后来购车后话术又变为记忆领航给我整不会了，左右脑互博了属于。本身我对128T算力做的智驾就持保留态度，并不看好一家央企能在这个算力下做出多大的成就，事实也的确如此，这辆车的智驾就是个残次品!因为启源A06迟迟未推送城区领航更新，就单说当前版本下支持的高速路以及城市高架快速路来说，现版本的智驾我认为它仍是一个残次品甚至废物，它无法给你足够的信心让你能放心使用，很多人工可以轻易处理的问题它都会胡乱操作一番后交给人工处理，自己开摆。以高速路施工路段为例，各位都知道施工路段有三角锥，反光锥等警戒标识，通常会逐渐将施工车道车辆引导到相邻其他车道，但受限于这辆车的识别距离（大约50-80m)，在接近施工路段，也就是三角锥刚开始的地方，车辆会像刚发现前方障碍一样紧急躲避，而不是提前柔和变道，表现出的具体行为就是：车辆接近施工路段→继续接近→SR发现雪糕筒→立即向右或向左变道。表现得就非常像紧急躲避，而如果恰好此时相邻车道有车，车辆会在尝试急加速抢占车道失败后紧急减速并提醒人工接管，这一点非常让我恼火。另一个场景就是高速巡航，这辆车的智驾非常热衷于躲避大车，但它在躲避完成后并不会转入原车道，而是会一直向最左侧车道避让，直到到达最左侧车道，即使你尝试保持中间车道100Km/h巡航，它仍旧会在遇见下一辆卡车或半挂车后向左变道超车并保持该车道行驶，就像一个脑瘫儿童不知道能向右变道一样。非要在100Km/h下的省电巡航中占用最左侧超车道，为此我没少被候车司机鸣笛闪灯催促。说完高快领航，再说说城市基础辅助驾驶，在当前方向及对向均有马路地标的情况下，它分不出地标的指向，但凡它看到了地标，就统统认为地标指向为当前车道行驶方向，无法分辨出是否是对向车道。而说到车道保持，在地标线清晰的情况下，它可以正常保持车道中心行驶，并加减速跟车，但非常容易受到隔壁车道的非机动车及行人影响，特别是行人，即使远隔一个车道，…

ProxmoxVE显卡直通配置
type: item
date: 2026-06-30T16:57:00+00:00
description: 1、前言啊~ 久违的写备忘时刻。我什么时候才能不忘掉之前做的操作啊摔！！！最近搞了一台联想的HR650X服务器，想着作为新的计算中心跑点项目，80个框框不用浪费，话说他是真费电啊，随便带点负载就200瓦。神特么的内存什么时候价格能降下去！！现在16G 200+是什么玩意儿，这玩意儿之前就几十块来着！2、环境准备Proxmox版本：9.2.2直通显卡：GTX1050ti客户机版本：Windows 113、初始配置首先，为了能够直通设备给客户机，我们需要禁止宿主机访问该设备，以保证该设备能够完全被客户机独占，同时要在宿主系统中启用IOMMU直通，也就是所谓的硬件直通，这是一切的基础。3.1、修改IOMMU代理方式在PVE中，检查是否有IOMMU启用的方式很简单。dmesg | grep -i iommu #输出如下 root@server:~# dmesg | grep -i iommu [ 0.335107] DMAR-IR: IOAPIC id 12 under DRHD base 0xc5ffc000 IOMMU 6 #注意：下面这一行代表iommu工作在代理模式，同样可以进行直通，但性能略有影响。 [ 1.738440] iommu: Default domain type: Translated [ 1.738440] iommu: DMA domain TLB invalidation policy: lazy mode #注意：通常需要iommu=pt内核参数来使用pass-through域类型，稍后会进行修改可以看到IOMMU现在为开着的状态，但工作模式不对，为了使虚拟机不再使用我们要直通的设备，需要更改下模式。编辑/etc/default/grub文件，添加内核启动参数root@server:~# nano /etc/default/grub # If you change this file or any /etc/default/grub.d/*.cfg file, # run 'update-grub' afterwards to update /boot/grub/grub.cfg. # For full documentation of the options in these files, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR=`( . /etc/os-release && echo ${NAME} )` GRUB_CMDLINE_LINUX_DEFAULT="quiet" GRUB_CMDLINE_LINUX=""找到GRUB_CMDLINE_LINUX_DEFAULT这一行，根据CPU类型改为以下内容#INTEL CPU GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt" #AMD CPU GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"然后更新grub并重启系统。update-grub reboot等待系统重启之后，再次查看下IOMMU的工作状态root@server:~# dmesg | grep -i -e DMAR -e IOMMU -e AMD-Vi ..... [ 1.899627] pci 0000:d7:16.0: Adding to iommu group 157 [ 1.899831] pci 0000:d7:16.4: Adding to iommu group 157 [ 1.900039] pci 0000:d7:17.0: Adding to iommu group 158 [ 2.015975] DMAR: Intel(R) Virtualization Technology for Directed I/O #代表已经启用IOMMU 3.2、禁止宿主机占用指定设备首先，编辑Linux模块文件，以解除宿主机对显卡的占用。root@server:~# nano /etc/modules # /etc/modules is obsolete and has been replaced by /etc/modules-load.d/. # Please see modules-load.d(5) and modprobe.d(5) for details. # # Updating this file still works, but it is undocumented and unsupporte…

使用IPSec对公网开放局域网服务
type: item
date: 2026-04-04T18:32:28+00:00
description: 1、前言最近服务器托管费要交了，实在是交不起了，所以考虑把服务器撤回来，放到家里的机柜中。但是一般家庭网络是没有公网IP地址的，也同样不开放80、443等敏感端口，所以起了用公有云服务器内网转发的想法。考虑使用IPSec VPN建立一个隧道，让路由器连接到云服务器并开放本地局域网，这样就不必一条一条添加端口映射。写一下具体实施过程和踩到的坑留在这里。2、环境介绍操作系统：Ubuntu 22.04家庭侧路由: RuiJie EG105G-P-E对端云提供商: Aliyun3、家庭侧准备思路是使用IPSec VPN连接到公有云，然后公有云转发所有端口的流量到家庭侧并通过VPN隧道直接透传到目标局域网主机，以下是具体实现3.1、配置路由器首先需要检查下这个路由器所支持的协议，我这款路由器属于比较入门的AC一体机，也支持基础的IPSecVPN客户/服务端，首先配置一个链接，开放10.1.3.0/24网段给公有云。 对应路由器侧配置4、配置公有云在客户端配置完成后，需要根据客户端的IKE策略和协商策略配置服务器端，服务器端操作系统是Ubuntu 22.04，首先安装所需要的套件，这里使用 StrongSwan 来完成服务器建立, 首先安装对应套件sudo apt update && sudo apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins -y由于这个路由器比较低级，不支持使用证书进行身份验证，所以我们不使用证书，转而使用预共享密钥(PSK)来进行身份认证，在StrongSwan安装完成后，编辑对应的配置 /etc/ipsec.confsudo nano /etc/ipsec.conf 配置文件内容config setup uniqueids=no # 允许多个客户端使用相同 ID 同时连接 conn %default # 指定默认配置参数,会被所有后续配置继承 ikelifetime=86400s keylife=3600s rekeymargin=3m keyingtries=1 keyexchange=ikev2 # 根据路由器配置，使用IKEv2协议。 authby=psk # 根据路由器配置，使用预共享密钥(psk) dpddelay=30s # 心跳30秒 dpdtimeout=150s dpdaction=restart conn tlsyserver # 服务器端配置,对应路由器配置项目 left=%defaultroute # 服务器本地网络,使用本地网卡IP地址 leftid=@vpnserver # 服务器本地身份标识 leftsubnet=0.0.0.0/0 # 服务器本地声明子网 right=%any # 对端IP地址(使用%any以允许任意IP地址链接) rightid=@tlsyserver # 对端身份标识 rightsubnet=10.1.3.0/24,10.1.2.0/24 # 对端远程子网 ike=3des-sha1-modp1024 #第一阶段IKE算法 esp=aes128-sha1 #第二阶段ESP算法 pfs=no #不启用完美前向加密 auto=add #启动时加载配置，等待客户端链接然后，写入客户端使用的预共享密钥到/etc/ipsec.secretnano /etc/ipsec.secret @clientid : PSK "pskpasswordhere"配置完成后，重启IPsec服务端ipsec restart等待客户端链接，然后使用ipsec status查看隧道建立状态，如果长时间仍未有任何客户端链接，可以使用journalctl -u strongswan-starter -f来跟踪查看链接日志，或在配置文件中启用charondebug="all"来显示更详细的日志。链接建立后的大概输出如下:root@vpn-hub:~# ipsec status Security Associations (2 up, 0 connecting): tlsyserver[7]: ESTABLISHED 7 hours ago, 172.18.0.24[vpnserver]...61.xx.xx.xx[tlsyserver] tlsyserver{61}: INSTALLED, TUNNEL, reqid 2, ESP in UDP SPIs: c827603a_i c28697cd_o tlsyserver{61}: 10.1.1.0/24 172.18.0.0/18 === 10.1.2.0/24 10.1.3.0/24 lj[4]: ESTABLISHED 7…

网站IPV6
type: item
date: 2024-11-03T13:04:17+00:00
description: 哦吼吼~ 这个网站已经正式支持IPV6了！（嘛没什么可以写的就这样吧）

Linux下搭建PXE/EFI启动服务器
type: item
date: 2024-05-29T20:50:00+00:00
description: 前言在之前的工作中，我尝试使用了Pxe网启方式进入PE，然后完成全自动化的操作系统的安装及访问共享等操作，现在把实现思路记下来，以备不时之需。环境介绍服务器操作系统: Ubuntu 22.04 LTSC所需软件包: isc-kea-dhcp4-server ntp tftpd-hpa nginx samba iPXE另外需要两个虚拟机，启动方式分别为 pcbios 和 uefi，用以模拟和测试绝大部分电脑的启动方式 查看软件详细说明isc-kea-dhcp4-server 用于dhcp下发ip地址，告知客户端从哪一台服务器上启动，并通过客户端的RFC标识符(RFC4578)决定给客户端下发什么文件，进行什么样的操作。ntp 用于同步各客户端的时间,在下发ip地址时会告知局域网内存在NTP服务器，同步所有客户端时间至与服务器相同，方便各客户端进行时间调整。tftpd-hpa 用于客户端通过tftp协议下载启动文件，但因tftp速度较慢(即使在局域网环境下)，不适合下发大型镜像，在本案例中仅用于下发iPXE启动固件及选项菜单，不再持有其他镜像文件nginx 用于客户端通过http下载一些资源，在本案例中主要为图片及其他菜单等，同样可用来下发一些中小型镜像及展示服务器主页，不再过多介绍。samba 用于在不同客户端内共享资料，也用于中心化分发软件包和更新项目，用于客户端更新自身资料等。iPXE 主要用于支持一些老电脑原生不支持的高级功能，iPXE会在启动的第一时间被加载，然后读取服务器上的菜单或高级选项等，做进一步的分流/调整，也可以导入部分文件到系统内部等。1.在此之前本文章假定你清楚UEFI以及BIOS的区别，以及网络启动的基本概念，如果你不清楚，请先阅读这一部分，以完全了解两者有何不同，方便更清楚地了解我们在做什么。1.1 UEFI引导和BIOS引导我想你可能知道BIOS是什么，不就是基本输入输出操作系统嘛(Basic Input Output System)，但我们这里讲到的 BIOS 不同于你所理解的，这里的BIOS是指硬件系统的引导方式或类型，它使用经典的BIOS底层执行引导，通常伴随黑色背景的引导屏幕，以及不断闪烁的字符，操作系统以这种方式引导时速度较慢，且它不支持一些较为现代化的硬盘分区格式。那么，UEFI是什么？你可能会问， UEFI是一个相对现代化的系统引导解决方案，在一些较新或最新的主板中，你进入“BIOS”，会看到一个相对华丽的图形UI而不是文字界面，那也是UEFI的一部分，UEFI允许使用新的功能和特性，它更安全也更现代化。通常，在主板的启动设置页面内，BIOS引导方式会作为兼容性选项提供，名称条目一般均包含CSM(Compatibility Support Module 兼容性支持模块)，启用它才可以让主板使用BIOS引导方式，我们不推荐使用这种引导方式，在本文章中同样作为“兼容性选项”进行配置，用于兼容较老的硬件。2.准备软件包本来我是想从操作系统安装开始写，不过相信大家都会，就跳过这一步，首先准备工具链，进行所需软件包的安装2.1.iPXE默认情况下，由于客户端平台的不统一性，不同的主板对于网络启动的支持不尽相同，所以我们需要给各个需要启动的客户端设置一个“起跑线”，以让接下来的步骤能够成功完成，要做到这点，我们就要用到一个对各个平台兼容最强也是网络启动元老级别的固件程序，iPXE，它可以兼容几乎所有市面上的主板，完美实现我们所需要的一个标准起跑线。标准情况下，官方提供了一个官方发布版的iPXE固件程序，可用于UEFI和BIOS引导，名称分别为:ipxe.efi和 undionly.kpxe，但如果你在本实例中使用了官方发布的版本，你可能会陷入无尽的启动死循环中，例如下图以及这个文档所示为了解除这个死循环，我们可以通过两种不同的方式。自行编译iPXE固件通过DHCP服务器识别判断在我的测试中，通过DHCP服务器识别判断会偶尔出现不准确或者配置文件压根就没用的情况，所以我选择自行编译一份新的iPXE固件，使其无论是什么情况下均跳转到指定的入口，而不是自动从服务器上拉取，避免出现死循环。编译iPXE固件编译这个固件的方式相对来说很简单，根据官方文档所示，我们只需要做到以下几点克隆官方仓库修改编译选项执行编译很简单，接下来一步步进行，首先执行以下命令，克隆官方仓库。#如果你没有安装git客户端 sudo apt install git g++ gcc nano #克隆官方仓库 git clone https://github.com/ipxe/ipxe.git然后，创建一份自定义的配置文件，用于编译出我们自己的一个版本。#进入工作区 cd ipxe/src #编辑自定义配置文件 nano demo.ipxe…

MsSQL 2000数据库置疑问题修复
type: item
date: 2024-03-09T19:37:00+00:00
description: 问题介绍某个客户要求我上门维修Mssql 数据库置疑，原因是意外的断电导致软件无法正常使用，遂上门查看，发现数据库是上古时代的宝贝，2000版本的MSSQL。这个版本没有过多的文档，有的只是含糊其辞的一段命令，大多数文章的介绍都是在教如何通过 alter database dbName set之类的命令来进入紧急和单用户模式，然后使用dbcc checkdb ('dbName',repair_allow_data_loss) 这样的命令去修复。实际测试按照网站介绍，执行dbcc checkdb之后，数据库仍然是不可用状态，这段内容明天再写我困了修复方法分析我遇到的情况，可能是意外断电导致事务日志没有正确保存，那么只要关闭所有链接，重生成一个事务日志文件就好了，命令如下，注意：在执行命令过程中不要使用Mssql的企业管理器工具。建议执行前重启数据库所在服务器，且在执行前一定事先备份。update sysdatabases set status = -32768 where name = 'dbName' --将数据库置为紧急模式 go alter database dbName set SINGLE_USER --将数据库置为单用户模式 go alter database dbName set online --把数据库拉上线 go dbcc rebuild_log ('dbName','C:\Path\to\logfile.LDF') --重新在指定位置创建事务日志文件，以恢复数据库的可用性 go update sysdatabases set status = 0 where name = 'dbName' --恢复数据库状态 go alter database dbName set MULTI_USER --恢复为多用户模式 go之后便可以正常使用数据库，顺便吐槽那个六条命令开价三百块的所谓数据库维修奸商！

简单自建互联网DNS缓存服务器
type: item
date: 2023-12-26T17:57:00+00:00
description: 前言因为项目原因，想自建一个内网DNS服务器/公网DNS服务器用于自己用以及项目上能够节省宝贵的外网带宽（哪怕只有一点点）,所以想着自己建立一个DNS服务器来保证稳定性以及实现自定义域名的指向(方便使用域名来指向内网服务器)环境OS：Ubuntu 20.04ENV: Dokcer 24.0.7APP: DNS Server开始部署下载指定的Docker镜像,并根据官方docker file进行配置docker pull technitium/dns-server我不需要用到一些高级特性，例如DNS over http 等，所以仅开放两个端口,使用本地目录而不是docker 卷来进行文件存储。注意:端口53要同时开放 TCP 及 UDP 访问。5380 用于网页面板53 用于DNS服务运行docker镜像，开启服务:sudo docker run -d \ -e DNS_SERVER_DOMAIN=dns.olderfox.com \ -p 5380:5380 \ -p 53:53 \ -p 53:53/udp \ -v /mnt/data/dockers/dnsServer:/etc/dns \ --name DnsServer \ --restart always \ technitium/dns-server视情况不同，你可能会在较新的Ubuntu实例中遇到以下问题：$ sudo docker run -d -e DNS_SERVER_DOMAIN=dns.olderfox.com -p 5380:5380 -p 53:53 -p 53:53/udp -v /mnt/data/dockers/dnsServer:/etc/dns --name DnsServer --restart always technitium/dns-server #fc43291bedcf7e7547bff62338256e4203acb265feb41dacbdd116bb11ecd624 #docker: Error response from daemon: driver failed programming external connectivity on endpoint DnsServer (e7694233517f9e164df3924c5e1096826120d4828507e93ac0c38fbd12080e8b): Error starting userland proxy: listen tcp4 0.0.0.0:53: bind: address already in use.Ubuntu 会告诉你端口已经被占用，但作为公共DNS我们又不能重新指定端口，如果你需要解决此问题，请展开以下部分，如果并没有遇到，请跟随往下 可选步骤:关闭Ubuntu systemd 自带的DNS服务首先停用systemd-resolved, 并取消开机自动启动,接下来修改NetworkManager配置，让它能自动获取dns#禁用开机启动 sudo systemctl disable systemd-resolved.service #关闭服务 sudo systemctl stop systemd-resolved #删除`/etc/resolve.conf对应的软连接` sudo rm -rf /etc/resolv.conf #重新创建新的软连接 sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf之后，修改 /etc/resolv.conf将dns暂改为公共dns服务器以恢复域名解析就可以了。sudo nano /etc/resolv.conf启动docker镜像，此时端口5380所对应的网页面板已经可以访问，若有需要，可以创建对应的反向代理注意:反向代理前建议指定docker容器监听IP为127.0.0.1来避免不可预知的反代绕过初次登录需要创建Administrator的密码。更改完毕后便可以查看一些图表数据，以及创建各种域名解析。记得设置上游DNS服务器，以及允许访问到上游DNS至此：安装完成，更多配置项及详细文档，请参考:官方文档

Ubuntu 20.04安装NetBox实战
type: item
date: 2023-12-09T18:08:00+00:00
description: 前言之前接了个单子做一个机房项目，遂大概了解了一下市面上的机房、设备管理程序，思来想去最终选择了NetMap这玩意儿，好用，且功能不算冗杂和沉重，而由于自定义化的安装较为复杂，在此记录以备后查。安装环境介绍使用Ubuntu 22.04 Server(Minimal) 进行安装使用Python 3.9使用PostgreSQL 14.10使用Redis 5不使用Docker以方便后续的代码修改。安装和配置 PostgreSQL 数据库安装为了可扩展性和数据的可迁移性，在这里使用apt安装postgreSQL后重新定义数据存储目录，首先通过apt安装sudo apt update sudo apt install postgresql -y在继续之前，检查自动安装的版本，NetBox需要PostgreSQL 12 或更新:psql -V # psql (PostgreSQL) 14.10 (Ubuntu 14.10-0ubuntu0.22.04.1) 可选步骤:迁移数据库存储目录首先关闭数据库服务sudo systemctl stop postgresql在当前版本，数据库配置文件存放在/etc/postgresql/14/main/postgresql.confsudo apt install nano -y sudo nano /etc/postgresql/14/main/postgresql.conf修改以下键值:data_directory = '/mnt/data/database/postgresql/main' #更改到你要存储的目标位置根据第三方文档的说法，pgsql默认情况下的性能不算特别好,netbox页面展开会卡顿，需要根据自己的设备的配置和情况对配置文件做出最优修改，修改方式参考这里之后将更改配置文件前的数据库迁移回来重要: 不迁移回来会导致pgsql无法启动,但service仍旧正常重启,原因目前未深究sudo cp -r /var/lib/postgresql/14/ /mnt/data/database/postgresql/重新启动pgsqlsudo systemctl restart postgresql sudo pg_isready #/var/run/postgresql:5432 - accepting connections创建数据库创建netbox所需要的数据库，并设置密码和权限sudo -u postgres psql在输入这个命令之后，键入以下命令行执行数据库创建和权限管理，注意每行有一个;符号结尾。CREATE DATABASE netbox; CREATE USER netbox WITH PASSWORD '你要设置的密码'; ALTER DATABASE netbox OWNER TO netbox; #下面两行命令是 PostgreSQL 15 或更新的版本需要输入的 \connect netbox; GRANT CREATE ON SCHEMA public TO netbox;在输入完成后，按 \q 并回车退出数据库命令终端，并使用以下命令测试账户可用性psql --username netbox --password --host localhost netbox #Password: #psql (14.10 (Ubuntu 14.10-0ubuntu0.22.04.1)) #SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) #Type "help" for help. netbox=> \conninfo #You are connected to database "netbox" as user "netbox" on host "localhost" (address "127.0.0.1") at port "5432". #SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) netbox=> \qRedis安装Redis是一个高性能的K-V数据库，通常用于高速缓存，在Ubuntu上的安装也非常简单sudo apt install -y redis-server测试查看Redis版本redis-server -v #Redis server v=6.0.16 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=a3fdef444…

使用Ackee完成简单的网站访问统计
type: item
date: 2023-12-09T12:42:00+00:00
description: 前言之前一直想怎么统计一下我的这赛博废墟的访问量，找了一段时间后发现一个比较简单的项目：Ackee它可以比较方便地跟踪一些网站的相关数据，例如设备类型，Refer等，对于我这种简单的需求来说完全足够。安装它遇到了一点点麻烦，在此做个笔记吧安装Ackee提供了很多种安装方式，包括Docker、Docker-compose、Vercel等，也可以直接运行它更为简单，本文使用直接安装，不使用Docker，因为官方提供的Docker镜像需要内联MongoDB，我的数据库里面已经有很多数据，所以不方便操作。故单独运行注意：如果您决定使用Docker安装MongoDB和Ackee，请将MongoDB监听的IP指定为 127.0.0.1，否则会有被攻击者扫描到并删除数据的风险1.克隆项目执行以下命令克隆项目到你想要的目录中git clone https://github.com/electerious/Ackee2.安装Node环境 (可选)由于读者操作系统各不相同，直接扔一个NVM(NodeJS version manager)的连接在这里使用方式： 执行以下两条命令中的任意一条wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash然后安装NodeJS 20.10.0 LTS版本和NPMnvm install 20.10 nvm install-latest-npm然后安装yarn pm2 并检查安装版本npm install -g yarn npm install -g pm2 yarn --version #1.22.21 pm2 --version #5.3.0注意:某些操作系统下执行pm2/yarn命令会出现command not found错误,是因为环境问题,不再赘述，参考官方文档正式安装Ackee进入到你的Ackee的安装目录，新建一个.env文件并写入以下内容ACKEE_MONGODB=mongodb://localhost:27017/ackee #MongoDB的连接地址 ACKEE_USERNAME=THEUSERNAME #登录Ackee的用户名 ACKEE_PASSWORD=THEPASSWORD #登录Ackee的密码 ACKEE_PORT=3002 #Ackee所监听的端口然后执行 yarn run start 检查是否成功运行，正常输出应该是：[Ackee] › … awaiting Connecting to mongodb://localhost:27017/ackee [Ackee] › ✔ success Connected to mongodb://localhost:27017/ackee [Ackee] › ▶ start Starting the server [Ackee] › … watching Listening on http://localhost:3002证明配置无误，关闭后使用命令pm2 start --name Ackee src/index.js 启动附注: 可以使用pm2 startup 将其设为自动启动项，避免每次手动重启配置反向代理在官方实例中，提到了CROS，也就是跨域的问题，假设Ackee通过反向代理服务在A中，那么如果有一个网站服务的域名是B,此时B网站的访客就无法被Ackee统计到。因为涉及到跨域访问，这在绝大部分浏览器中都是被认为不安全的，除非网站运营方手动开放跨域访问。跨域访问资料参考：https://www.jianshu.com/p/89a377c52b48配置跨域访问网站A:https://trace.olderfox.com网站B:https://www.olderfox.com 在这个实例中，我的网站A作为数据统计网站B作为被统计的网站，目前所做操作均在A网站所对应的Nginx配置文件中.首先，浏览器在检测跨域可用性的方式是发送一个preflight请求，检测对方网站是否允许跨域访问，需要包含一个httpHeader,且返回的状态码需要为204Access-Control-Allow-Origin "$http_origin" always;直接扔一份反向代理配置文件在这：#PROXY-START/ location / { proxy_pass http://127.0.0.1:3002; proxy_set_header Host $host; proxy_set_header X…