Lexsion 发布的文章

Freenom域名注册的常见问题与自动续期

前言:

最近突然想再注册一个Freenom域名,发现遇到一些问题,此处记录,以免日后再注册时候不记得,再次踩坑。另外记一下 Freenom 的自动续期,看到本文的人也能知道还有这种好事儿!

常见问题:

Freenom不显示注册页面

Freenom 只有登录按钮,点进去的登录页面也没有注册按钮。这个情况是因为 Freenom 页面提供了Google和Facebook 登录的选项而没提供直接的邮箱注册页面,不幸的是它们在中国大陆被屏蔽了。这个问题只需要先检查域名就可以了,选好域名最后 Checkout 时是会给出邮箱注册账号的页面的。

注册域名提示无法使用

一般出现在第一次注册时,或者是浏览器IP变化时候,Check Availability 查找域名后点击 Get it now! 时提示域名无法使用(Not available)。这种情况一个可能是没有账号先检查域名的注册流程中,这种情况填写域名时需要将域名后缀一起填入。另一个有账号的情况可能是登录失效了,如果已经注册账号,刷新重新登录即可。没有账号就前面方法注册一个账号。

注册域名提示技术错误

注册域名时遇到提示技术(Tech)错误,此问题是因为你浏览器当前的IP和你账号资料里面填写的区域国家不一致,从而触发了 Freenom 的反欺诈。可考虑修改资料中的国家地区,或更换与注册地相同的IP代理访问。(不建议使用代理注册域名)

点击 完成订单 提示不能确定你是人或没有反应

使用中国大陆网络访问 Freenom 注册域名可能会在最后一部点击 Complete Order 时网页没有反应、或是提示不能确定你是人。这是因为 Freenom 使用了 Google 的 reCAPTCHA 人机验证,而Google因为某些原因被大陆屏蔽。所以,国内无法正常连接位于 www.google.com/recaptcha 的 reCAPTCHA 服务。可以使用浏览器插件 Gooreplacer 拦截重定向到 recaptcha.net/recaptcha 就可以正常使用该服务了。

以Chrome 为例,只需要在浏览器扩展程序中搜索安装 Gooreplacer ,打开其配置页面并新增一条规则,匹配模式为 www.google.com/recaptcha ,目标地址为 recaptcha.net/recaptcha ,匹配类型为 通配符 。最后确定规则启用就可以了。

经过以上设置后,回到 Freenom 的网站,Ctrl + F5 刷新网页,重新登录,应该就可以正常注册域名了。

自动续期:

Freenom 域名可以免费注册,但是最多只能注册一年。在到期前的两个星期内为免费续订期,如果错过了这几天,域名可能就需要付费注册抑或是与你无缘了。为了保证域名一直在自己手中,我在Microsoft 日历中添加了相关的提醒事项,并且使用大佬 @luolongfei项目 进行自动续期。

因为考虑腾讯云提供了免费的云函数服务,而自动续期检查使用的资源开销很小,完全不会超出腾讯云的免费额度,所以本人使用了腾讯云的云函数运行了自动续期脚本。只需要去腾讯云注册个账号,然后十分钟左右时间部署一个云函数项目就可以了。相关的使用与部署方法大佬在README中写的非常详细了,此处提供个小建议,不必设置每天检查,一个星期检查两次就可以了。其他具体部署本文不再赘述。

参考:

斐讯N1刷CoreELEC实录

前言:

斐讯的挖矿盒子N1质量不错,配置相对不低。可玩性很高,可以刷的系统很多,比如:Android电视盒子、Kodi电视盒子、CoreELEC电视盒子、EmuELEC游戏盒子;也可以刷成Armbian、CentOS7等Linux系统;还可以刷网心云分享宽带赚取收益。考虑缺一个专业的电视盒子看4K影片,于是笔者决定为其刷入CoreELEC系统做一个电视盒子。整个过程中还是踩了不少坑的。

机器配置:

机型: 斐讯(Phicomm)N1
CPU: 晶晨(Amlogic) S905D
GPU: Mali-450 MP
RAM: 2GB DDR3
ROM: 8GB eMMC
以太网: RTL8211F 1000Mbps

据说,它的 CPU 是 ARM Cortex-A53 四核 1.5G,带有的 ARM Mali™-450 GPU 支持 4K60fps硬件解码,能提供 HDMI 2.0 输出。

注意:目前N1 使用 CoreELEC 19.x 版播放HDR10片源会直接崩溃,然后数秒后复位重启。9.2.7 版本目前无此问题,考虑稳定建议使用9.2.7。刷入方式网上教程很多。

警告:刷写固件是一件危险的操作,它不同于常见的计算机安装系统。操作失误可能会导致无法挽回的损失,甚至因此报废您的硬件,请谨慎操作!

刷入 CoreELEC:

降级、刷入改版固件:

因为笔者器在以前已经刷过webpad大佬的官改2.2系统了,此处大致讲一下刷Android盒子的方法。首先,插鼠标快速点击四次固件版本以解锁ADB,注意不要再锁上。然后使用大佬提供的降级工具对机器进行降级。完成降级后使用双A口USB线连接靠近HDMI的USB口到电脑,使用晶晨线刷工具对其进行刷机。注意:只有官方和官改等盒子类固件的存储分区结构可以刷 CoreELEC。具体可参考:斐讯N1探索手记#1 – 降级并刷入armbian系统斐讯天天链N1 官改v2.2N1刷完ARMBIAN想恢复EMMC超级简单线刷法,还可救砖.

更换启动画面:

刷写固件后可能有人会对开机启动画面不满意。和安卓系统的手机类似,电视机顶盒也有两个启动画面。最开始通电时显示的叫做第一屏,系统启动中显示的动画叫第二屏。第一屏可以通过Amlogic Customizationtool 修改固件包的方式或通过文件刷入相关分区的方式修改。第二屏则是通过替换文件 /system/media/bootanimation.zip方法修改。

此处因后期刷入CoreELEC,第二屏使用CoreELEC的即可。所以此处仅修改第一屏。

方法一:使用DD刷入

logo.PARTITION文件存储在方便的位置,然后插上键盘,打开终端,执行以下命令。

su
cd /XX/XX/  # cd 到 logo.PARTITION文件的目录
dd if=logo.PARTITION of=/dev/block/logo
reboot

这样就可以看到第一屏启动画面变更了。笔者用的此方法,比较简单。

方法二:ADB方式:

Android系统下打开ADB网络调试,然后PCB端使用ADB工具连接,执行以下命令重启至fastboot。

adb connect 盒子IP  #即类似:adb connect 192.168.1.1:5555
adb shell reboot fastboot

然后使用双公头USB线连接电视盒子与计算机,执行以下命令检查设备连接,不行的话可能要检查下驱动。

fastboot device #查看是否连接到设备

设备如果存在,则继续,请注意,logo.PARTITION文件应该提前放置于fastboot相同目录。

fastboot flash logo logo.PARTITION

fastboot reboot

方法三:使用Amlogic Customizationtool

此工具可以更换固件的第一屏,重新打包后再刷入即可更换第一屏,但是需要刷机,不太推荐。具体不在本文讨论范围内!

写 CoreELEC 启动盘:

Core ELEC 是一个以启动 Kodi 为主设计的一套方案,它基于一个精简的 Linux 系统。网上能找到大佬编译好的固件,将其下载下来,使用镜像写入工具写入U盘即可。项目在此:RuralHunter/CoreELEC ,文件在Releases中,这次我使用的19.2版本。

设置从U盘启动:

将制作好的启动盘插入靠近HDMI的接口,执行以下命令将重启并从U盘启动,可以在终端模拟器中,也可以远程ADB调试中。

reboot update

注:此命令正常执行后会重启从U盘启动。如若重启后进入 Recovery,则可能是U盘故障、写盘软件异常、Bootloader 异常等。建议使用带有验证功能的软件(如Etcher)写盘,不建议使用 win32_disk_imager 。故障依旧建议更换U盘。

基本设置:

重启后启动U盘中的CoreELEC系统,第一次启动会出现设置向导。第一页的语言设置中没有中文选项保持默认的英语,然后点击 Next ;第二页这里设置主机名称,我没有修改直接点击 Next ;第三页等待网络信息加载完成,网线会自动获取,WIFI需要自行在此页连接一下,然后点击 Next 。第四页是分享和访问控制,需要把SSH打开,这样才能远程连接shell 。点击 Next 会提示配置完成,再次点击 Next 即可进入系统界面。

进入系统后首先修改中文界面。首先需要在 Interface > Skin 下将 Fonts 修改为 Arial based ,否则修改中文语言后会无法正常显示中文字体。接下来需要在 Interface > Regional 下将 Languages 修改为 Chinese(Simple) ,系统会开始在线安装语言包,等待其完成安装后界面就会变成中文。然后回到此界面,将下面的时区国家修改为China,这样时间就正常显示了。

如果分辨率不合适需要修改,可以去 系统 > 显示 下按实际需求修改分辨率和刷新率。

将固件刷入EMMC:

注意:将固件刷入 EMMC 会清空其中原有的系统和用户空间数据,有重要资料请注意提前备份!

警告:以下操作将清空 EMMC 中原有的系统和用户空间数据!

此方法来自恩山大佬整理,原帖在此。下载大佬准备好的脚本文件包,将其解压。使用WinSCP或其他SCP工具通过root用户连接N1,密码前面如果没有修改默认应该是 coreelec ,将解压后的文件上传到 root 用户目录。

使用SSH通过 root 用户连接到N1,连接后默认应该位于 root 用户目录,使用 ls 命令检查文件存在,然后执行命令 bash installtoemmc 开始安装。如下所示回显信息可供参考,完成后会自动关机,SSH连接会提示中断。此时拔电拔下U盘,重新上电即可从EMMC引导CoreELEC启动。

CoreELEC (RuralHunter): 19.2 (Amlogic-ng.arm)
CoreELEC:~ # ls
backup         log.sh         music          screenshots    tvshows
installtoemmc  lost+found     pictures       scripts        videos
CoreELEC:~ # bash installtoemmc
rootfs: /dev/system, storage: /dev/data, root_part: 11
This script will erase BOOT, SYSTEM, DATA and DTB on your device
and install LE that you booted from SD card/USB drive.

It will create a backup of device tree and recovery partition on your boot media.

The script does not have any safeguards!

Formatting SYSTEM partition.../dev/system contains a ext4 file system
        last mounted on /system on Xxx Xxx xx xx:56:18 2021
done.
Copying SYSTEM files...done.
Formatting DATA partition...done.
Stopping Kodi...done.
Copying user data...
All done!
WARNING: If your internal memory layout is different from standard Amlogic, you have to perform this operation again!
Your system will reboot from internal memory.

配置 CoreELEC

获取、检查 IPTV 源

IPTV 源的获取可以去网上搜索一番,恩山能找到专门的板块,也可以去某些论坛或Q群找,一般保存为m3u 或 m3u8格式。使用 IPTV Checker 软件可以快速检查保存为 m3u 格式的 IPTV 源是否有效。经过检查后点击Online筛选出有效的,然后保存到新的文件即可完成检查。

打开某位无名大佬的EPG频道列表服务,将上面保存的 m3u 文件上传到该网站,可以快速为频道列表添加台标。这样导入Core ELEC后就可以看到台标了。最后把文件放到CoreELEC能访问的位置,等待使用。比如,可以通过 U 盘或 SCP 传到N1的存储空间中,也可以放到 NAS 上,然后在 CoreELEC 的文件管理中通过 SMB 协议添加到挂载中。

安装、配置 IPTV 插件

在 CoreELEC 的主界面上点击齿轮状的 设置 图标,选择 插件 。点击 从库安装 > 所有库 > PVR客户端 > PVR IPTV Simple Client ,点击安装。等待其联网安装完毕,点击 设置 ,在常规中设置 IPTV 源列表的位置(上文准备的),在 电子节目单 中配置 EPG 频道列表源,列表源上文中的网站提供了,可以按需求添加。完成配置后点击右侧 确定 即可完成插件配置。

此时回到主界面,将左侧光标移动到电视处,就可以看到添加的节目了。日后就可以在此看电视了。

安装字幕插件和影视信息刮削器

回到插件的所有库中,选择 字幕 ,选择 OpenSubtitles.org 并安装。去电脑上使用浏览器打开 OpenSubtitles 的官网,注册一个账号。然后将账号密码填入插件的设置中保存。然后去 设置 > 播放器 > 语言 处,将 首选字幕语言 改为 用户界面语言 。然后向下滚动找到下载字幕语言,将其原始的 English 取消掉(光标选中按确认),向上滚动选中 Chinese 和 Chinese(Simple),点击右侧 确定 保存设置。最后将默认剧集服务和默认电影服务都选为 OpenSubtitles 完成字幕插件的设置。

同样是在插件的所有库中,选择信息提供者 > 电影信息 ,安装 The Movie Database(默认应该已经安装,注意不要使用Python版本,笔者测试发现其不稳定)。然后进入其设置,将 首选语言 修改为 zh-CN ,点击右侧 确定 保存。然后在信息提供者 > 剧集信息中,同样也是这个插件(默认应该已经安装),设置成zh-CN。

确保N1已经联网且打开SSH,在设置里面看一下IP,在电脑上使用SSH连接。使用 vi /storage/.config/hosts.conf 命令打开host文件,添加如下内容:

13.224.161.117 api.themoviedb.org
13.33.144.120 api.themoviedb.org
13.33.144.2 api.themoviedb.org
65.8.80.24 api.themoviedb.org
13.33.144.88 api.themoviedb.org
13.33.144.74 api.themoviedb.org
13.226.254.58 image.tmdb.org
13.227.73.57 image.tmdb.org

保存退出即完成添加HOST内容。然后就可以去文件管理里面添加视频目录,设置视频类型,分别使用电影和电视剧的刮削器获取信息了。观看过程中,在播放器中可以搜索下载字幕。

安装天气插件

依然是在插件的所有库中,选择天气目录,安装 Gismeteo 插件。然后点击设置,在 Location setup 中设置位置,一般是地名的拼音。如果搜不到,可以手动去网站搜索所在地,搜到当地天气后记住浏览器地址中的数字部分,将其输入到天气插件设置的 Expert 选项中的 Location * ID 中,点击右侧保存按钮进行保存。最后回到上一层菜单,点击 启用 即可完成天气插件的配置。

其他:

重启蓝牙遥控器连接失效?

看大佬们分析说原因貌似是文件系统权限问题。笔者没有蓝牙遥控器,以下提供帖子参考:

参考:

简述如何白嫖一个IPFS图床

前言:

网上某位大佬写了一个IPFS图床,原理什么的我也不懂,反正就是有个静态空间把页面放上就可以了。因为原始项目里面接口貌似失效了,这里随手记一下怎么白嫖的。以备日后查询。

项目名称叫:img2ipfs

搭建:

首先从GitHub上把项目下载到本地,用本地的编辑器按需求改一下界面等。这方面需要有一定的HTML基础,或者用Adobe Dw?。

改之前需要理解一个概念,这个图床核心需要两个接口:一个是IPFS API,上传文件用的,上传后会返回cid;另一个是网关,预先录入的网关接口用于和 cid 拼接以输出链接。

网关可以直接使用公用的,比如 Cloudflare 的 cf-ipfs.com也可用自己的域名CNAME跳转或套 Cloudflare解析 为了防止某个公用服务后期失效,网关最好用自己的域名跳转。Cloudflare 不允许跨用户使用CNMAE,就算是把自己域名 CNAME 到 cf-ipfs.com 也不行。目前看,可以CNAME到 infura-ipfs.io 。这些东西需要在域名控制面板上操作。

下面这些大佬收集的网关可以试试看:

cf-ipfs.com  #不行
183.252.17.149:82
ipfs.genenetwork.org
ipfs.fleek.co
ipfs.azurewebsites.net
ipfs.kaleido.art
ipfs.globalupload.io
ipfs.slang.cx
ipfs.adatools.io
gateway.originprotocol.com
ipfs.best-practice.se
ipfs.drink.cafe
ipfs.denarius.io     
crustwebsites.net
bin.d0x.to
ravencoinipfs-gateway.com
ipfs.smartholdem.io
infura-ipfs.io

HTML 文件中网关相关内容在第33行附近,按照需要添加或删除网关。默认网关的设置在static/file.js的第146行附近,默认应该是用的fleek。

API 麻烦一点,公开能用的少见。自己搭就不是白嫖了,所以目前看可以用这个:

ipfsapi.glitch.me

static/file.js文件的第70行,API改一下保存。

找一个免费的 IPFS 文件托管服务商,注册个账号。比如我这里用的 fleek.co

自己用的情况,建个目录把改好的文件传上去,它会给出目录的 IPFS 地址,然后直接打开就可以看到图床成了。把地址收藏一下就可以用了。

考虑共享方便的话需要个好记得地址,可以做一下 CNAME 或链接跳转。也可以按服务商官方得方法搭建,需要先在GitHub上建一个仓库,公有私有都可以,把文件push上去。然后在fleek那里连接一下仓库,因为只是单纯保存页面,不涉及编译啥的,按照默认给出得设置(Other)部署就即可,最后可以按提示在域名服务商处设置CNAME即可。

参考:

PostgreSQL数据库安装踩坑记——升级安装 wiki.js 2.0

前言:

之前搭了个Wiki,用的wiki.js 1.0,如今发现wiki.js 2.0不知更新了几个版本了,这次就把它更新一下。了解了一下,Wiki JS1.X使用的数据库是MongoDB,而2.0则支持多种数据库,包括PostgreSQL、MySQL、MariaDB等多种数据库,但想获得最佳支持,需要使用PostgreSQL,而且如果想实现中文搜索,网上只找到了使用PostgreSQL装zhparser扩展的资料。毫无疑问,笔者只能选择这个之前从未用过的PostgreSQL。整个过程也是参考知乎大佬的帖子完成,因为笔者技术太菜,踩了很多坑。

装完后回过头来发现,如果安装时看到合适的文档,很多坑都是可以避免的。本文不是教程仅用于排错时参考,切勿跟随本文进行任何安装!

此处以安装后的视角总结PostgreSQL安装如何避免踩坑。新安装时参考官方的安装指导(安装指导居然在Download里面,我开始没看见踩了坑),通过yum安装一定要跟随版本号,否则下载下来的是默认的旧版本,发现不对删除再安装新的就会踩各种坑。如果之前出现了这种情况,参考本文编译zhparser部分,将旧版的包完全删除后再通过官方的方式安装新的包,不要装完新的再删旧的,否则还会有很多小问题。

以下为踩坑记录:

删除旧的wikijs 1.0

Linux下杀死进程后进程自动重启怎么处理

使用kill -15 或 kill -9 可以杀掉进程。但有时会发现杀掉的进程会再次启动,我们可以使用以下命令找到进程的父系进程( PPid ),将其杀掉。杀掉前最好看一下是啥,有的可不能随便杀呀。

cat /proc/<PID>/status

使用 ps -ef | grep 进程关键字 语法查询进程。关键字可以是进程名字,也可以是PID。

以上使用ps -aux也可。

PM2管理器

此处通过查询,发现父系进程是PM2管理器,难怪进程杀掉又起来,居然这玩意有PM2管理器。

使用 pm2 list 可显示所有node项目,此处可以看到每一个应用的id。使用 pm2 stop <编号> 可以停止对应应用。

使用 pm2 monit <编号> 可查看此应用详细信息,比如找出应用目录在什么地方。

安装数据库

connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

首先,用某面板程序里自带的脚本装了一下,装完按照大佬们写的Docker下的配置贴尝试继续,发现执行命令 psql 直接报错,好家伙,第一步就进坑了。

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

最后在StackExchange上找到了某个帖子,全是洋文,看了开头几回帖子说装了没版本号的就这样,建议卸除,手动重装带版本号的。

于是骂着面板边去网上找了篇帖子在CentOS下快速安装和配置PostgreSql,按照帖子里面说的装完了,这里我装的是PostgreSQL 13。或可参考:PostgreSQL官方文档

配置数据库并安装插件

Peer authentication failed for user "XXX"

服务起来后创建了wikiJS的数据库,为其配置了对应的用户和密码,也提升了权限。登录又遇到了错误,提示 Peer authentication failed for user "XXX",网上找了一下,说是因为计算机名和数据库名不一致,这种情况要把默认的 Peer authentication 改成 md5 authentication

配置文件 pg_hba.conf 用以下命令打开,不同版本路径会有不同,看一下估计就明白了:

vim /var/lib/pgsql/13/data/pg_hba.conf

找到下面的一行:

local  all       postgres                peer

改成:

local  all       postgres                md5

ESC 、: 、wq、Enter,保存文件退出。

然后执行 systemctl restart postgresql-13 重启服务,这样就解决了。

ERROR: could not open extension control file "/usr/pgsql-xx...nsion/pg_trgm.control": No such file or directory

紧接着,我就在以下命令处再次进坑了:

CREATE EXTENSION pg_trgm;

出现以下错误提示:

ERROR:  could not open extension control file "/usr/pgsql-13/share/extension/pg_trgm.control": No such file or directory

网上搜了一下,Linux 上PostgreSQL 12 pg_trgm扩展安装 一文给出了方法。我把12换成13就可以啦。

root@VPS # yum install postgresql13-contrib.x86_64
···
database=# CREATE EXTENSIONpg_trgm;
CREATE EXTENSION

然后使用以下命令检查是已经安装的插件:

database=# SELECT * FROM PG_EXTENSION;
  oid  | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
-------+---------+----------+--------------+----------------+------------+-----------+--------------
 14160 | plpgsql |       10 |           11 | f              | 1.0        |           |
 16386 | pg_trgm |    16384 |         2200 | t              | 1.5        |           |
(2 rows)

可以看到已经成了。

编译zhparser

接下来毫无疑问, CREATE EXTENSION zhparser; 出现了错误,这是因为没有安装该插件导致的。按照知乎大佬评论区给出的项目链接找到了编译安装指引。整个过程输出信息几乎完全看不懂,但是最后编译安装的回显信息感觉不太对。装完果然补星。

ERROR:  could not open extension control file "/usr/pgsql-13/share/extension/zhparser.control": No such file or directory

网上看了某个网友的踩坑过程,感觉自己又行了。于是跟着大佬思路一通操作,终于将编译出来的文件安装到 /usr/pgsql-13/share/extension 目录了。

再次执行 CREATE EXTENSION zhparser;,我们得到了以下错误。

ERROR:  incompatible library "/usr/pgsql-13/lib/zhparser.so": version mismatch
DETAIL:  Server is version 13, library is version 9.2.

这次的错误信息我能看懂了,明显是表示系统里有不同版本的PostgreSQL,我运行的服务端是13,这定是之前不知什么时候装了个9.2,然后编译出来的也是9.2,不匹配呀。

想来环境中没有其他项目使用PostgreSQL,那么接下来删除这个没用的玩意儿!先使用 rpm -qa | sort 命令查看装了哪些软件包。此处找到了如下9.2软件包:

postgresql-9.2.24-7.el7_9.x86_64
postgresql-contrib-9.2.24-7.el7_9.x86_64
postgresql-devel-9.2.24-7.el7_9.x86_64
postgresql-libs-9.2.24-7.el7_9.x86_64

挨个将其卸除:

yum remove postgresql-9.2.24-7.el7_9.x86_64

以上命令执行时会自动卸除相关依赖:postgresql-contrib、postgresql-devel

yum remove postgresql-libs-9.2.24-7.el7_9.x86_64

顺便扫了一眼13版的包,发现少装了个 postgresql13-devel.x86_64 ,赶紧 yum install postgresql13-devel.x86_64给装上了。

此时,再次执行 make && make install 发现还是补星。提示:

make: pg_config: Command not found
make: *** No targets.  Stop.

问题回归了,提示找不到文件,看GitHub文档意思说可以这么写为指定的版本编译扩展:

PG_CONFIG=/usr/pgsql-13/bin/pg_config make && make install

还是报同样错误。随手搜一下,Stackoverflow大佬说环境变量问题,大佬写的环境变量前面有 export

于是,我在 zhparser 目录下,执行以下代码:

export PG_CONFIG=/usr/pgsql-13/bin/pg_config
make &&make install

这次没错误了,相信插件应该生成了。

bash: XXXX: command not found

还是老命令 psql 连数据库,发现命令无效了。

# psql
-bash: psql: command not found

早知如此,就不卸载旧的了。肯定是把变量空间配置之类的搞丢了。参考:Postgresql -bash: psql: command not found来处理。首先我们需要知道失效的命令对应的文件在哪,此处大量折腾我已经知道在哪了,如果不知道,可以使用 find 命令查找。执行命令 vim ~/.bash_profile ,添加以下行后保存退出,这样,当前的root账户下次登录时就可以了。

export PATH=/usr/pgsql-13/bin:$PATH

重新登录或su切换到postgres账号连接数据库继续配置zhparser插件:

CREATE EXTENSION zhparser;
CREATE EXTENSION

至此,zhparser插件安装成功。

接着继续配置:

CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION pg_catalog.chinese_zh (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION chinese_zh ADD MAPPING FOR n,v,a,i,e,l WITH simple;

-- [二、PostgerSQL全文检索系统之中文支持_jjj的博客-CSDN博客](
-- https://blog.csdn.net/weixin_40746796/article/details/89209316
-- )
-- 忽略标点影响
ALTER ROLE wikijs SET zhparser.punctuation_ignore = ON;
-- 短词复合
ALTER ROLE wikijs SET zhparser.multi_short = ON;

-- 看看 chinese_zh 在不在
\dF
-- 测试一下
select ts_debug('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代');

接下来退出连接,重新连入 postgres 数据库,关闭 wikijs superuser权限:

\q
psql -U postgres -d postgres
ALTER USER wikijs WITH NOSUPERUSER;
\q

至此,数据库装完了。

安装配置wikijs 2.x

wiki.js 配置管理页信息后登录提示用户名或密码错误

剩下的安装就比较简单了,参考官方文档,新建一个用户,下载、解压Wikijs文件到合适的地方,将 config.sample.yml重命名为 config.yml .使用文本编辑器打开文件,在指定位置填写数据库配置信息、访问端口等。然后node server 运行,浏览器打开,配置管理员信息。注意管理员的邮箱不能有大写字母,否则待会儿登录时会提示用户名或密码错误。

测试可行后 Ctrl +c 停止,参考官方文档 写systemctl,然后添加自启动并运行服务即完成搭建。

域名访问

wikijs本身不支持域名访问,想要通过域名访问,需要套一个反向代理。笔者用的nginx,因为之前装1.0时已经做过了,我这次不需要再做了。

参考:

向Outlook用户发送邮件收到错误码550_5_7_1处理思路

我向Outlook用户发送邮件,遭到退信,错误码550 5.7.1。收到的详细错误信息如下:

Diagnostic-Code: smtp; 550 5.7.1 Unfortunately, messages from [77.88.28.105] weren't sent. Please contact your Internet service provider since part of their network is on our block list (S3150). You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors.
[VE1EUR01FT034.eop-EUR01.prod.protection.outlook.com]


阅读微软疑难解答链接

  • 微软会随退信附上错误信息,其中包含了一些信息。通过阅读微软给出的链接中描述的内容,了解其对电子邮件的策略,排查自己的发件服务是否违反了某些策略。

  • 如果自己的服务有违反策略,需要先优化服务,避免后期再次违反。

尝试使用除名门户

检查是否被SPAMHAUS封禁

  • 通过访问SPAMHAUS-IP AND DOMAIN REPUTATION CHECKER检查自己的域名和发件服务器的IP地址是否被封禁。网友说如果有被封禁,可以按照网站的提示尝试解封?

  • 域名是自己发送邮件时使用的域名,即发件邮箱地址 @ 后面的内容。

  • 如果发件服务器是托管给服务商的,发件服务器的IP地址也会由服务商提供。该地址可以在退信的错误信息中看到。

  • 如果发现是服务商IP问题,且该IP是共享。可考虑联系服务商处理。

  • 如果发现是自己域名问题,需自查域名被封禁的原因。

检查SPF记录

SPF(Sender Policy Framework)记录是为了防范垃圾邮件而提出来的一种DNS记录类型,它是一种TXT类型的记录,它用于登记某个域名拥有的用来外发邮件的所有IP地址。

按照SPF的格式在DNS记录中增加一条TXT类型的记录,将提高该域名的信誉度,同时可以防止垃圾邮件伪造该域的发件人发送垃圾邮件。正确配置SPF记录可降低来自您域中某个地址的电子邮件最终进入收件人垃圾邮件文件夹的风险。

如何检查SPF记录

可以通过Open-SPF提供的工具对SPF进行检查,以下是自行检查方式。

使用 nslookup 命令可以查看。方法如下:

C:\Users\XXX>nslookup
> server 223.5.5.5
> set type=txt
# 列如QQ邮箱是XXXXXXXX@qq.com
> qq.com

得到如下回显信息:

服务器:  [223.5.5.5]
Address:  223.5.5.5

非权威应答:
qq.com  text =

        "v=spf1 include:spf.mail.qq.com -all"

如果我们继续深究,就会得到更加复杂的结果,如果查询到底,我们便会查到很多用于发件服务的IP。

> spf.mail.qq.com
服务器:  [223.5.5.5]
Address:  223.5.5.5

非权威应答:
spf.mail.qq.com text =

        "v=spf1 include:spf-a.mail.qq.com include:spf-b.mail.qq.com include:spf-c.mail.qq.com include:spf-d.mail.qq.com include:spf-e.mail.qq.com include:spf-f.mail.qq.com include:spf-g.mail.qq.com -all"

判断SPF是否异常

  • 通过上面的查询,我们可以得到很多IP地址,如果我们的服务器IP在这些IP中,说明SPF设置没有问题。

  • 上面查询得到的IP可能会存在类似于 ip4:77.88.0.0/18 的地址范围。通过计算可得子网掩码为 255.255.192.0 ,IP范围为 77.88.0.1 ~ 77.88.63.254

添加SPF条目

如果发件IP信息不在SPF策略中,那便需要进行添加。这个操作需要在域名服务商面板中进行,方法是在DNS中为域名添加一条TXT记录。

比如,我的邮件服务是邮件服务商提供。服务商Yandex也提供了相关的范本。为域名添加一条内容为 v=spf1 redirect=_spf.yandex.net 的TXT记录即可。

如果还需要从非服务商提供的服务器发送邮件,则使用以下格式添加其他服务器:

v=spf1 ip4:IP-1 ip4:IP-2 ip4:IP-3 include:_spf.yandex.net ~all

其中的IP-1、IP-2、和IP-3替换成服务器的IP地址,没有的话就删掉。

只使用自己的服务器发送邮件的情况,那就只写自己的IP就可以了。

v=spf1 ip4:IP-1 ip4:IP-2 ip4:IP-3 ~all

修改后等待DNS信息生效,然后再次检查问题是否解决。注意,DNS的修改可能需要几分钟到几十个小时的时间才会生效。

联系微软支持

如果以上的排查仍然不能解决,则需要考虑联系微软的支持。请微软的技术支持人员核查故障原因。在这之前可能需要阅读策略、做法和指南

使用此操作将向微软发起支持工单,会有微软技术人员处理并回复。因为是人工处理,处理结果的邮件也不能回复,如果一次没有解决,可能需要多次发起工单。

参考

在树莓派上使用JD-Base 自动薅取京东羊毛

前言:

狗东的活动太丰富了,参与需要耗费大量时间。之前看到大佬们使用脚本代替人力来做这件事,甚至GitHub上还有开源项目。于是我决定跟随大佬脚步,给自己也整一个,部署在树莓派上。经过了解,脚本可以使用docker部署,也可以自己搭建环境。但貌似GitHub上的项目仓库都被封的差不多了,这里考虑用docker。

操作:

安装docker:

使用docker部署项目,自然要先安装docker,听说这个东西很简单,我在官网找到了安装说明,说的是Docker Engine有三种安装方法,分别是从存储仓库安装、从DEB包安装和使用shell脚本安装。而树莓派只支持从脚本安装,貌似没得选呀,我此处也不研究到底有没有的选,就按官方文档来吧。注意,docker的安装一般是需要root权限的。

首先,我们需要卸载旧的版本,执行以下命令,如果回显 none of these packages are installed 说明就可以了。

sudo apt-get remove docker docker-engine docker.io containerd runc

执行以下命令获取安装脚本并运行它,然后等待其自动完成Docker Engine的安装。完成安装后Debian类系统下程序就运行了。

 curl -fsSL https://get.docker.com -o get-docker.sh
 sudo sh get-docker.sh

Tips:

  • 如果以后需要卸载docker,使用以下命令卸载Docker Engine、CLI、和Containerd packages:

    sudo apt-get purge docker-ce docker-ce-cli containerd.io
  • 使用以下命令删除相关的镜像、配置信息、文件等:

     sudo rm -rf /var/lib/docker
     sudo rm -rf /var/lib/containerd

安装Docker Compose:

作者提供了一个 compose.yml 文件,它是 Docker Compose 工具的配置文件。通过此工具可以快速部署、分享docker项目。所以此处我们还需要安装它。如果使用的是Windows或Mac下的桌面版本,那应该已经带有Docker Compose,而Linux需要单独安装。此处我使用的树莓派,不支持直接二进制安装,所以通过pip安装。

运行此命令以安装依赖:

sudo apt install python3-dev python3-pip libffi-dev gcc libc-dev cargo make

通过pip安装 Docker Compose,此时前面的 python3 -m 表示将调用Python3处理,详见参考。

sudo python3 -m pip install docker-compose

Tips:

  • 如果您需要卸载Docker Compose,可运行以下命令使用pip安装的本工具卸载:

    sudo python3 -m pip uninstall docker-compose

部署JD-Base:

首先创建一个空目录,文件名自定,比如我是用的jdauto。然后我们把作者提供的 docker-compose.yaml 放入到之前目录,然后运行以下命令开始构建:

sudo docker-conpose up

部署完成后会看到相关登录信息,比如端口号默认是 5678 ,用户名是 admin ,密码是 adminadmin

确认无误按 Ctrl + X 停止。下次如果想要后台启动,可以使用 -d 选项,这样服务就会以分离模式(detached)运行。

修改配置信息:

JD-Base的服务运行起来后,我们便可以通过IP:5678访问配置页面了,输入用户名和密码登录。

向下滚动,如下所示,找到通知Token处,选择一种通知方式进行设置。

################################## 定义通知TOKEN(选填) ##################################
## 想通过什么渠道收取通知,就填入对应渠道的值
## 1. ServerChan,教程:http://sc.ftqq.com/3.version
export PUSH_KEY=""

## 2. BARK,教程(看BARK_PUSH和BARK_SOUND的说明):https://github.com/RikudouPatrickstar/jd_scripts/blob/master/githubAction.md
—————————略—————————————

回到上面最开始处,设置Cookie,可以看到扫码获取已经无效了,浏览器获取有效期很短。所以使用仓库自带脚本wskey.js来自动更新cookie。

在容器的config目录下的wskey.json文件中填写wskey,wskey需要自行抓包。抓包方式本文不展开,下面会附链接。

以上信息填好后我们需要回到网页的配置设定中,将第一个cookie中随意填入几个字母,否则脚本会因没有cookie不执行。

然后点击手动执行选项卡,在脚本名称处输入 wskey ,然后点击提交,等待其完成执行,然后就可以在配置设定中看到正确的Cookie了。

去Linux shell中使用 sudo docker-compose restart 命令重启docker。如果处于前台运行,使用 Ctrl + C 停止,然后使用 sudo docker-compose up -d 在后台启动。

在后台以分离模式运行时,使用 sudo docker-compose stop 可以停止服务。

此时,我们便完成了整个部署,里面某些任务可能当天不会执行,可以去手动执行里面按需手动运行一下。

参考: