FeralHosting 共享盒配置

大类
Env
技术标签
云服务-白嫖
环境增强
优先级
Medium
开始日期
Aug 4, 2022
状态
Maintaining
Public
Public
最后更新
Jul 22, 2023

为什么要配他

FeralHosting的价格非常便宜
  • 1TB的硬盘
  • 56Core CPU
  • 256G Mem
  • 无限流量
 
因此如果能配出来一个好用的环境,将非常有用
 

1. 了解基本的配置

环境信息

一般来说如果一个环境没有Root,那么人们会一般会:
  1. 使用rootless container: feral禁用了全部的namespacing,chroot都做不到
  1. 使用gentoo prefix:直接编译,将动态链接器ld.so指向prefix中的而不是系统自带的,从而实现一个隔离的环境
  1. 使用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