Akawa

ETY001的博客

前置信息

之前两个局域网是靠 zerotier 连接的,但是 zerotier 在国内的网络环境实在是太糟糕了,即使我用了黑科技在国内服务器上搭建两 planet ,依旧是不稳定。

于是放弃 zerotier ,转而使用 wireguard 组建我的工作 VPN。

网络信息如下:

  • 局域网A: 192.168.196.0/22, 做节点的机器A的 IP: 192.168.199.81
  • 局域网B: 192.168.31.0/24, 做节点的机器B的 IP: 192.168.31.5
  • 服务器: x.x.x.x

公私钥信息如下:

  • 机器A: PubKeyA/PrivKeyA
  • 机器B: PubKeyB/PrivKeyB
  • 服务器: PubKeyServ/PrivKeyServ

公私钥生成命令:

1
wg genkey | tee privatekey | wg pubkey > publickey

步骤

阅读全文 »

Here is the demo code which displays how to create a new account with Steem JS SDK in two different ways ( by taking fee or by taking interests of claimed account).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
const steem = require('steem')

const creator = 'test1';
const activeWif = '';
const newUsername = 'test2';
const newPasswd = 'P5KZS6bp8sVxxxxxxxxxD48jwBKxshpNZxsYnJ';
const fee = '3.000 STEEM'

const newKeys = steem.auth.getPrivateKeys(newUsername, newPasswd, ['owner', 'active', 'posting', 'memo']);
console.log(newKeys);

const weightThreshold = 1;
const accountAuths = [];
const owner = {
weight_threshold: weightThreshold,
account_auths: accountAuths,
key_auths: [[newKeys.ownerPubkey, 1]],
};
const active = {
weight_threshold: weightThreshold,
account_auths: accountAuths,
key_auths: [[newKeys.activePubkey, 1]],
};
const posting = {
weight_threshold: weightThreshold,
account_auths: accountAuths,
key_auths: [[newKeys.postingPubkey, 1]],
};
const memoKey = newKeys.memoPubkey;

// create a new user by creator with 3.000 STEEM fee
steem.broadcast.accountCreate(activeWif, fee, creator, newUsername, owner, active, posting, memoKey, '{}', function(err, result) {
console.log(err, result);
});

// create a new user by creator with claimed account interests
const op = [
"create_claimed_account",
{
"creator": creator,
"new_account_name": newUsername,
"owner": owner,
"active": active,
"posting": posting,
"memo_key": memoKey,
"json_metadata": "{}"
}
];
const tx = {
operations: [op],
};
steem.broadcast.send(tx, [activeWif], function(err, result) {
console.log(err, result);
});

前情提要

前段时间刷机,因为官方文档的问题,我把路由刷成砖了。

然后尝试了 ttl 救砖,一开始能进 uboot ,后来因为刷错了,导致 uboot 也挂了。

image.png

最后买了热风枪和编程器,拆焊后,用编程器刷固件。

image.png

固件倒是刷成功了,但是焊回去后,路由无法开机,看上去焊接的没有问题,估计是热风枪把路由器主板搞的太热,把某个元器件搞坏了吧,毕竟是我第一次用热风枪。

image.png

于是从闲鱼二手买了一个同款路由器,重新刷机。之所以买同款,是因为这台路由器整体的硬件配置和价格真的是超高性价比啊。

这次吸取了之前刷机时对于官方文档中不确定的命令参数不懂硬上的教训,所以记录一下整个刷机过程。

阅读全文 »

我的服务器宿主机安装的是 PVE,上面跑着一台 Archlinux 的虚拟机作为工作机(显卡、键盘、鼠标、USB声卡直通),一台 Windows 的虚拟机作为辅助(在 Archlinux 下使用 KRDC 连接后一直开着一个窗口,用来运行没法在 Linux 下原生运行的程序,比如微信)。

最近看到 Atlas OS 不错,于是想要用 Atlas OS 重做 Windows 虚拟机。

但是问题是 Atlas OS 不支持 RDP,于是我只能选择 VNC 方式连接(tightvnc)。

但是众所周知,VNC 不支持声音传输。

搜索了一晚上,终于找到了一个牛逼的库,可以在 Windows 下实现虚拟声卡,然后通过 multicast 或者 unicast 的方式,把声音转到同局域网下的其他设备播放。

地址:https://github.com/duncanthrax/scream

我们的目的就是在 Windows 虚拟机安装虚拟声卡,在 Archlinux 下安装 Receiver。

Archlinux 下安装 Receiver 非常简单,直接用 Aur 库安装即可,

1
yay -S scream-git

安装后,启动

阅读全文 »

最近服务器加装了带供电的 PCIe 转 USB 的板卡,然后发现接在上面的 USB 声卡,挂载到 Linux 的虚拟机里有噪音,但是挂载到 Windows 的虚拟机里没有噪音。

搜索了很多内容,最终找到了解决方案,修改了一下采样率,让人难受了两个月的问题终于解决。

1
2
3
4
5
6
7
$ vim  ~/.config/pulse/daemon.conf
添加下面的配置
default-sample-rate = 48000
保存退出,重启 pulseaudio

$ pulseaudio -k
$ pulseaudio --start

最近调整了 Steem 区块数据的备份服务,使用了新的服务商 Hetzner。

由于 Hetzner 提供了多种上传下载数据的方式,我测试了 rsync,samba,webdav,目前决定使用 webdav,通过牛逼的 rclone 工具。

这篇文章记录下相关的配置。

首先需要安装 rclone,安装方法在官网有 https://rclone.org/install/

配置 rclone 也很简单,安装后执行 rclone config,按照提示,创建新的连接,输入连接名(比如 hetzner),选择连接方式为 WebDAV,输入 URL、用户名、密码完成配置。

使用 rclone ls [连接名]:[目录名] 命令,检查一下是否配置成功。

1
2
3
4
5
[root@steem ~]# rclone ls hetzner:steem
192373084633 block_log_20221005.tar.gz
341570969022 steem_api_20221005.tar.lz4
249576123913 steem_witness_20220805.tar.lz4
251694849097 steem_witness_20221003.tar.lz4

执行成功。

现在把本地备份服务器和远端的 https://files.steem.fans 服务器上都配置好 rclone。

本地备份服务器的备份脚本,涉及上传删除的指令都换成 rclone copyrclone delete

阅读全文 »

Today I found the date command has different performance when I develop a bash shell.

In Ubuntu OS:

1
2
-> % date -d '2022-06-16T23:21:03' +%s
1655421663

The same command in Alpine OS. This will give an error message:

1
2
/ # date -d '2022-06-16T23:21:03' +%s
date: invalid date '2022-06-16T23:21:03'

We have to remove the letter T from the time string.

1
2
/ # date -d '2022-06-16 23:21:03' +%s
1655421663

由于最近一台VPS要到期不打算续费了,上面有一个SMTP发邮件的服务,因此需要转移。

当时配置的时候,是直接在宿主机搞的,转移起来有些麻烦。

为了以后转移方便,这次打算使用 docker 部署。

在网上找了半天,有很多类似的快速搭建的 Docker 镜像。

我找到的是这个 https://github.com/cainwise/docker-postfix

但是这个库里记录的 Docker 镜像已经不存在或者被作者设置为私有了。

而 Dockerfile 编译也因为软件包过时的原因,无法编译了。

于是花了三天三夜的时间重写了 Dockerfile。

新的代码库:https://github.com/ety001/docker-postfix

现在可以基于我新做的 Docker 镜像来快速部署 SMTP 服务了。

阅读全文 »

之前使用 Chromebook 内置的 Linux 容器,一直都是用系统自带的 apt 包管理程序,但是很多常用的社交软件都不在 apt 包管理中,比如 slack, telegram, discord 等等。

每次都要挨个网站去下载 deb 安装包,然后手动一个个安装,非常费劲。

这次借着五一假期对我的 Pixelbook 进行下优化整理,用 flatpak 来作为主要的包管理工具。

之所以选择 flatpak 主要是这个货官方页面显示支持 ChromeOS,那么意味着大概率是有针对 ChromeOS 进行过优化的。

image

安装 flatpak 非常简单,按照官方的教程,逐步操作即可完成,https://flatpak.org/setup/Chrome%20OS

针对国内用户,唯一需要了解的就是如何给使用 flatpak 安装的应用,增加代理配置。

网上给出的方案,我没有尝试成功,不过这里还是要记录下。

思路就是进入 flatpak 安装的应用的沙盒环境,然后使用 gsettings 来设置 dconf 数据库。

有些应用是直接从 dconf 获取相关配置的,具体命令如下:

阅读全文 »

最近在研究 github actions。 这个是 github 提供的 CI/CD 服务,并且对于开源库来说,几乎就是免费使用。

得利于 github actions 支持很多的环境,所以可以做很多的事情。

最近研究的方向就是 github actions 的计划任务功能。

而计划任务执行完需要通知我一下。

当前我自己用的比较多的是 telegram,所以优先找了一下如何发消息到 telegram 的方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
name: 'GitHub Actions Test for Telegram Notification'

on:
schedule:
- cron: '30 0 * * *'

jobs:
bot:
runs-on: ubuntu-latest
steps:
- name: 'Send telegram message'
uses: appleboy/telegram-action@master
with:
to: ${{ secrets.TELEGRAM_TO }}
token: ${{ secrets.TELEGRAM_TOKEN }}
message: |
this is the test message

只要再在 github 这个库的设置里面,增加 secrets 设置(TELEGRAM_TO 和 TELEGRAM_TOKEN)即可。

0%