为什么要配他
FeralHosting的价格非常便宜
- 1TB的硬盘
- 56Core CPU
- 256G Mem
- 无限流量
因此如果能配出来一个好用的环境,将非常有用
1. 了解基本的配置
环境信息
一般来说如果一个环境没有Root,那么人们会一般会:
- 使用rootless container: feral禁用了全部的namespacing,chroot都做不到
- 使用gentoo prefix:直接编译,将动态链接器ld.so指向prefix中的而不是系统自带的,从而实现一个隔离的环境
- 使用PRoot强行使用ptrace和seccomp来创造一个chroot环境
而由于我后面还想使用PRoot来用udocker,而proot是不能嵌套的,因此外层的环境我不能依赖于proot,所以我们必须使用gentoo prefix
配额
- Feral的配额非常迷,他声称是无限流量,但是实际上Joshua会不定期的去抓人,防止你abuse
- 目前测试的情况
- 使用资源过多,会立刻被清退
- CPU > 600%
- 内存(看起来是超过10%)
- Joshua的活动时间是GMT+0的早上7点~晚上9点,所以测试绝对不能超过这个时间
- Joshua坚决反对使用rclone
- 使用内存8%(20G),CPU500%,带宽跑850M/s在跑了2h之后还是被清退了
- 这一轮用了40*5=200线程,极大可能是把带宽打满了,导致被ban
- 目前我们定配额
- 内存:小于7%
- CPU,长期小于400%,突发小于600%
- 带宽,小于500M/s
- 伪装rclone成aria2c,避免任何rclone字样
2. 配置Gentoo Prefix
见单独的项目页
GentooPrefix无Root通用便携环境其他的操作
配置udocker(放弃)
- 由于namespace没有打开, 我们必须使用udocker。
- 而udocker没有namespace的支持,因此我们不得不自己手写一个
- 通过docker-compose自带的Python库,解析各个services
- 通过daemonize运行各个docker,为了避免kill的信号传到父级,使用os.setsid()来创建一个新的process group
- 通过pid文件存储container的运行信息
- 模拟docker compose的up和down
- 运行下列服务:
- qbittorrentee
- aria2
- rclone
- ttyd
argue让他开启FUSE
现有的解压工具完全依赖FUSE,因此我必须得要开开FUSE
但是反正不管怎么说,Joshua拒绝开开,我tm