Total Pageviews

Thursday, 1 July 2021

在 CentOS 7 上,安裝 Cachet

 如果是 CentOS 7 的話就乖乖用 remi 的 PHP 7.2 的庫就好了:

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y

然後開始安裝官網上提到的和沒提到的各種依賴:

yum install php-fpm php-mysqlnd php-json php-gd php-zip php-cli php-sqlite3 php-curl php-xml php-redis php-mbstring php-acpu -y

CentOS 7 上的 PHP 默認是 Apache 用戶,需要設置一下,然後 PHP 默認監聽的 `127.0.0.1:9000`,所以爲了省事 Nginx 可以這麼寫:

location / {
add_header Strict-Transport-Security max-age=15768000;
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_keep_conn on;
add_header Strict-Transport-Security max-age=15768000;
}

最後把 Cachet 代碼拉下來,如果用了 PHP 7.2 的話就別用 tagged 的版本了,直接用默認分支(2020-06-24 時拉下來就是 2.4)就好了,不然各種問題。

git clone https://github.com/cachethq/Cachet.git
cd Cachet
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
/usr/local/bin/composer install --no-dev -o
php artisan key:generate
php artisan cachet:install

Reference

  • https://github.com/guzzle/guzzle/pull/2038
  • https://github.com/invoiceninja/invoiceninja/issues/1767
  • https://github.com/CachetHQ/Cachet/issues/2077
  • https://github.com/CachetHQ/Cachet/issues/2417
  • https://stackoverflow.com/questions/48001569/phpmyadmin-count-parameter-must-be-an-array-or-an-object-that-implements-co
  • https://github.com/CachetHQ/Cachet/issues/2904
  • https://www.howtoforge.com/how-to-install-cachet-status-page-system-on-centos-7/
  • https://github.com/CachetHQ/Cachet/issues/3492
  • https://github.com/guzzle/guzzle/pull/2038

golang 实现的youBBS: goyoubbs

官方论坛&示例: https://www.youbbs.org

go get github.com/ego008/goyoubbs

轻论坛功能

  • 用户:用户名密码登录、微博、QQ 登录
  • 用户上传文件存储:本地、七牛、又拍云
  • 根据标题自动提取tag 或管理员手工设置tag
  • 根据tag 获取相关文章
  • 站内搜索标题、内容
  • 内容里链接点击计数
  • 自动安装HTTPS并自动更新

快速使用

即使你没有接触过golang, 按照下面步骤也能快速部署

以linux 64位系统为例,依次输入下面几行命令即可:

下载主程序包、静态文件包 (最新版下载https://github.com/ego008/goyoubbs/releases 选择适合你系统的包)

wget https://github.com/ego008/goyoubbs/releases/download/current/goyoubbs-linux-amd64.zip
wget https://github.com/ego008/goyoubbs/releases/download/current/site.zip
unzip goyoubbs-linux-amd64.zip
unzip site.zip
./goyoubbs

如果出现类似下面的提示,说明已正常启动:

2017/12/06 16:24:42 MainDomain: http://127.0.0.1:8082
2017/12/06 16:24:42 youdb Connect to mydata.db
2017/12/06 16:24:42 Web server Listen to http://127.0.0.1:8082

在浏览器打开上面提示里Web server Listen to 的网址 http://127.0.0.1:8082 就可以看到网站首页

开启HTTPS

为什么要用HTTPS?网站更安全、搜索引擎更喜欢、没有宽带运营商劫持放广告。。。

go youBBS 已经为开启HTTPS 做了最简化处理,提供两种方式开启

自动配置(推荐)

  • 把你的域名 yourdomain.com 指向你的服务器
  • 修改配置文件 config/config.yaml 下面三项即可:
Main:
    HttpPort: 80
    HttpsOn: true
    Domain: "yourdomain.com"

下面两个留空:

    TLSCrtFile: ""
    TLSKeyFile: ""

保存配置文件,运行主程序 ./goyoubbs

打开浏览器,输入网址 https://yourdomain.com

用其它工具

用其它工具生成 crtkey 文件,在配置里填写这两个文件的路径,如:

Main:
    HttpPort: 80
    HttpsOn: true
    Domain: "youbbs.org"
    ...
    TLSCrtFile: "/root/ssl/chained.pem"
    TLSKeyFile: "/root/ssl/domain.key"

具体过程请移步 https://www.youbbs.org/t/2169

问题、建议、贡献

官方网站 https://www.youbbs.org


from https://github.com/ego008/goyoubbs

-----


自由人的精神角落,一个无需手机号和邮箱即可发言的论坛。

2049bbs,一个无需手机号和邮箱即可注册发言的论坛。Fork 自 goyoubbs

本地开发

安装 go,然后 clone 本仓库。

cd $GOPATH

go get -u -v github.com/terminus2049/2049bbs
  1. 然后 cd 到相应目录,一般是 go/src/github.com/terminus2049/2049bbs
go run main.go

然后在浏览器打开 127.0.0.1:8082 即可,或者直接编译,运行 sudo ./2049bbs

  1. 利用 Docker 进行开发
  • 首先安装 Docker 及 docker-compose
  • 将本项目 clone 到本地,任何目录均可
  • 进入项目目录,在安装好 docker 及 docker-compose 后,运行脚本 make dev 即自动拉去构建好的镜像
  • 运行成功后 docker ps 即可发现名为 bbs 的容器正在运行中
machine: 2049BBS % docker ps
CONTAINER ID        IMAGE                                                                       COMMAND                  CREATED             STATUS              PORTS                    NAMES
d798030a6f0f        docker.pkg.github.com/speechfree/go-base/go-base:base                       "tail -f /dev/null"      About an hour ago   Up About an hour    0.0.0.0:8000->8082/tcp   bbs
  • 然后,docker exec -it bbs bash 进入到容器中,通过 dep ensure 拉去项目依赖到本地目录 vendor 中
  • 完成后运行 go run main.go 若出现如下输出即表明项目运行成功
2019/12/20 13:23:07 MainDomain: http://127.0.0.1:8082
2019/12/20 13:23:07 youdb Connect to mydata.db
2019/12/20 13:23:07 Web server Listen port 8082
  • 在宿主机打开任意浏览器输入 http://localhost:8000 即可看到构建成功的应用。
  • 另,在开发过程中,为了方便修改代码后重载应用,可以通过 realize start 启动应用,则修改任何 Golang 代码,其均会自动构建加载。

数据库

如果没有 kv 数据库开发经验,最好在程序跑起来后,用 boltdbweb 打开数据库文件 mydata.db,了解一下内部存储结构。

部署

编译二进制文件 go build非 Linux 平台为交叉编译 GOOS=linux GOARCH=amd64 go build,由于使用了 gojieba 分词引擎,不能跨平台编译,请使用在线api功能、移除相关组件后再尝试跨平台编译。

将编译好的二进制文件与 config、static 和 view 三个文件夹的文件放在同一个文件夹内,运行 ./2049bbs

服务器配置:在生产环境中,建议打开 https,把 config.yaml 中 HttpsOn: false 改为 true。也可以自行申请 cloudflare 证书,相应配置可以参考 config-2049.yaml.

备份

需要备份 mydata.db 和 /static/avatar 文件。


from https://github.com/Terminus2049/2049BBS


freewechat.com ,被删的微信公众号文章的备份

 https://freewechat.com

分析人士说,中国开始建造一百多个洲际弹道导弹的发射井(共匪是准备跟美国开打核战争,这帮狗屎)

《华盛顿邮报》星期三(6月30日)报道说,中国已开始在西北部的甘肃玉门附近的沙漠地区建造独立专家所说的100多个洲际弹道导弹的发射井,这种大规模的建造可能标志着北京正在大幅扩展其核能力。

《华盛顿邮报》报道说,位于加州蒙特雷的詹姆斯·马丁不扩散研究中心的研究人员获得的商业卫星图像显示,在中国甘肃省覆盖数百平方英里的干旱地带,数十个地方正在开工。这119个几乎一模一样的建筑工地,其特征与人们看到的中国现有核弹头弹道导弹发射设施相似。

这一百多个新的导弹发射井建成的话将代表着中国在核武库上的历史性转变。据信,中国拥有的核武器数量相对美俄两国要少得多,据信在二百余枚至三百余枚之间。报道指出,新导弹的实际数量尚不清楚,但可能会少得多。中国过去曾部署过诱饵发射井。

《华盛顿邮报》援引詹姆斯·马丁不扩散研究中心东亚不扩散项目主任杰弗里·刘易斯(Jeffrey Lewis)的话说,这种大规模的建造表明,这是中国为了加强其核威慑的可信度而做出的重大努力。该中心属于明德大学国际研究学院(Middlebury Institute)的一部分。刘易斯与他的同事德克尔·伊普勒斯(Decker Eveleth)在对这些商业卫星图像进行了数周的研究之后发现了这些建筑工地。他形容该项目的规模“令人难以置信”。

报道中的发射井建设项目可能为中国提供另一种隐藏其最强大武器的手段。

《华盛顿邮报》说,刘易斯认为,这些发射井可能是为东风-41的洲际弹道导弹设计的,这种导弹可以携带多枚弹头,能够打到9300英里远的目标,有可能使美国大陆处于其射程之内。刘易斯说,场地上的主要挖掘工作今年年初就开始了,虽然准备工作可能进行了几个月的时间。

《华盛顿邮报》说,该报向中国外交部和中国驻华盛顿大使馆发出了寻求置评的电子邮件和传真,但未收到回复。白宫和国防部官员也没有对有关报道中的发射井建设项目的询问做出回复。

五角大楼去年9月有关中国军力的评估报告认为,在接下来的十年中,随着中国核力量的扩张和现代化,中国的核弹头库存预计将至少增加一倍。

五角大楼的那份报告说,中国的核弹头数量当时据估计略超过200枚,包括那些可以装在能够打到美国的弹道导弹上的核弹头。民间组织美国科学家联盟(FAS)的目前的估计是,中国总共拥有320枚核弹头。

美国核武库据估计有3800枚核弹头处在现役状态,远超出中国的核武库。美国拥有“三位一体”的核打击能力,有可以实施核打击的潜艇和飞机,还有陆基洲际弹道导弹。

中国缺乏从空中投射核武器的能力,但是五角大楼在去年的那份报告说,中国人民解放军2019年末公开披露轰-6N是中国第一种具备空中加油能力的核战型轰炸机。

根据五角大楼的那份报告,过去15年来,中国海军建造了12艘核潜艇,其中六艘为中国提供了“可信的海基核威慑”。到2020年中,中国有可能建造一艘新的攻击型导弹核潜艇,如果装备对地巡航导弹,有可能为中国军方提供秘密的对地攻击能力选项。

本月早些时候,美国国会众议院的军事、外交和情报三个委员会的共和党领导人致函拜登总统,敦促他制定一个“全面的跨部门战略”,以阻止中国的核扩军。他们警告说,如果在此事上不采取行动,可能会导致中国到2030年实现与美国“一定程度的核均势”。这些共和党议员呼吁拜登政府让中国加入有意义的双边或美俄中三边军控谈判。

特朗普政府曾敦促中国加入美国和俄罗斯的核军控谈判,但是中国政府拒绝参加。拜登总统上任后,美国和俄罗斯同意把两国间的《新削减战略武器条约》延长五年。


from https://www.voachinese.com/a/Washington-Post-Chinese-missile-silos-icbm-20210630/5948766.html

習近平亮相著裝罕見;胡春華「拒鼓掌」七一兩元老缺席;閆麗夢驚爆 丈夫來美讓她消失!台幣2千就讓小粉紅叛國;

 

在Edge Router X上搭建 GOST 隧道

 前段时间有个需求,需要在一个有公网 IP 的环境下放一个 GOST 隧道入口(或者称为「中转」),对于这种需求一般来说想到的方式是在内网下开一个 GOST 隧道,然后通过路由器做一个端口映射给内网下的那台机器,但是由于功耗考虑对方不希望这么做,加之买的树莓派 4 还没到(为啥不早点买…),于是开始调研一下如何合理利用一下唯一的那个路由器来完成这个需求。

UBNT ERX

网上有很多类似的说明,这里也就不额外展开了,官方的介绍是:

The EdgeRouter™X delivers cost-effective routing performance in an ultra‑compact form factor.

对于我们而言,我们一般关注以下特性:

OS

UBNT ERX 默认使用的 EdgeOS 是一个魔改版的 Debian,如果你使用了 v2.0.x 的固件,那么就是 Debian 9,不然是 Debian 7,目前手上这个路由器运行着 v2.0.8,也就是 Debian 9

  • EdgeOS v2.0.0 Release Uses Debian 9 (Stretch).
  • Older EdgeOS Releases Uses Debian 7 (Wheezy).

要升级固件的话看官网:Ubiquiti - Download,注意 UBNT 给 ER-X 同时提供了两个版本的固件,一个是 v1.10.x,一个是 v2.0.x,都是可用的,不过有说法是 v2.0.x 相比较之前的 bug 会变多,转发性能下降。

在升级系统这块,如果系统中有多于两个镜像的话,几乎约等于重启后无法起来(由于存储空间实在太小了,只有 256 MB),所以升级系统前建议先 SSH 到路由器上 show system image 一下看看有没有多余的系统,例如本例中只有一个 image:

ubnt@ubnt:~$ show system image 
The system currently has the following image(s) installed:

v2.0.8-hotfix.1.5278088.200305.1641 (running image) (default boot) 

如果有多的话,使用 delete system image,删掉多余的,或者如果 default boot 不是最新系统的话使用 set system image default-boot 切换一下默认开机系统,重启后删除另一个多余的系统。

Hardware

在硬件方面我们需要关注的是:

  • Max. Power Consumption: 5W(功耗很小)
  • Processor: Dual-Core 880 MHz, MIPS1004Kc
  • System Memory: 256 MB DDR3 RAM
  • Code Storage: 256 MB NAND(存储空间很小,别瞎装不需要的包)

对于 CPU 来说,SSH 进入路由器后通过 lscpu 可以看到如下输出:

Architecture:          mips
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    2
Core(s) per socket:    2
Socket(s):             1
BogoMIPS:              581.63
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K

用的是小端法(Little Endian),所以后文中下载的包一律找包含关键词 mipsle 的(le -> little endian)。

Configuration

有了以上预备知识之后就可以开始配置路由器了,在本文中,路由器的配置模式为「光猫桥接,路由器 eth0 口 PPPoE 拨号,eth1~eth4 配置在 switch0 接口上并开启了 DHCP」

Add Debian repo

SSH 到路由器上后使用:

configure
set system package repository stretch components 'main contrib non-free' 
set system package repository stretch distribution stretch
set system package repository stretch url http://mirrors.tuna.tsinghua.edu.cn/debian
commit ; save

配置 Debian 的源,这里使用了清华的源,如果有别的需求的话可以上 Debian worldwide mirror sites 找一下对于你来说速度比较快的源,记得看后面的注释是需要包含 mipsel 的,比如下图中的 163 的源这种就不要选了.

配置好后 apt update 一波(但别 apt upgrade,不然要炸),然后安装用来临时保持的 screen,和用来传包的 rsync: apt install screen rsync -y

Download GOST

在自己电脑上下载 GOST,在写本文时 GOST 版本为 v2.11.1,所以用的是 https://github.com/ginuerzh/gost/releases 的 https://github.com/ginuerzh/gost/releases/download/v2.11.1/gost-linux-mips64le-2.11.1.gz

在本地解压之后把 GOST 的可执行文件传上路由器,然后在路由器上开 screen 后启动 GOST,这里假设你使用的是如下指令启动的 GOST(监听本地 3306 端口,并使用 WebSocket 隧道转发到远程 12.34.56.78 的 995 端口):

./gost -L=tcp://:3306 -L=udp://:3306  -F=forward+ws://12.34.56.78:995

Configure Firewall

由于这个程序是直接开在路由器上的,UBNT ERX 默认有防火墙挡住了这个请求,所以需要在防火墙上开个口子放行 3306 端口的流量到路由器上,在 「Firewall/NAT」 那一栏找到 WAN_LOCAL.

并加入一条目的地址为 3306 的放行规则即可.

Performance

在测试的情况下,用 wss Forward 方式,跑到 45 Mbps 左右的时候路由器的 CPU 接近 100%。

Misc

POC

以上只能算是个 POC 了,证明路由器可以这么用,但是从转发(以及加解密)性能来看,跑 GOST 的确吃力,通过这个实验也算是慢慢理解为啥之前某著名代理工具的某些加密算法会强调在弱算力设备上的运行速度。

DDNS

UBNT ERX 没有自带 DDNS 功能,不过既然路由器上有 Linux 环境,我们可以自己搓一个出来,可以参考我的笔记本: 用 cURL 自動更新 Cloudflare IP 地址實現 DDNS,配合 crontab 使用。

HWNAT

许多人拿到路由器后可能会习惯性地打开 Hardware Offloading,虽然这个特性有一些好处,比如:

Without offloading enabled, IPv4 traffic will be routed via the CPU and will be limited to around 300Mbps on the EdgeRouter Lite (ERLite-3). With offloading enabled, the throughput will be about 950Mbps.

但是在文末 Reference 3 链接中有一些说明:

You should only need to enable offloading for these features if you are using them in your environment. However, enabling offloading for all features will not cause a negative impact if those features are not being used.

开启前建议仔细阅读一下。

Refereneces

  1. EdgeRouter - Add Debian Packages to EdgeOS
  2. 路由 UBNT ER-X 官方固件升级及开启硬件加速的方法
  3. EdgeRouter - Hardware Offloading
from https://nova.moe/gost-tunnel-on-ubnt-erx/

f