从此告别龟速的goagent,节省下来的时间会让你觉得很值。
为什么要自己搭梯子?
答:请看此试验 ----> 评测告诉你:那些免费代理悄悄做的龌蹉事儿
所以:免费的东西是最贵的!
更多性价比VPS请移步 老高推荐的VPS,希望大家在这里能够找到适合自己的VPS
HostMyBytes速度也不错,价格很合适!
2018年1月7日更:
谁说好用的服务器只有搬瓦工,更多VPS推荐在这里 ----> 老高推荐的VPS
2017年12月13日更:
2015年11月28日更:
搬瓦工支持auto-renew了,之前买到9.9刀的TX可以不用担心不给续期了吧!
2016年02月26日更:
10G PROMO V3 - FREMONT CA 年付$19.99,是目前比较值得套餐,不要忘记用老高的专属优惠码phpgao还可以再便宜一点。
2017年03月09日更:
搬瓦工最近加入了Direct route via China Telecom and China Unicom,意思是直连中国电信和联通的线路,收费比普通的线路贵一点,但值得一试,购买链接在稳重已更新!
下图为老高更新SDK时的速度,如果你也有无法更新Android SDK的烦恼,请参考使用搬瓦工代理解决无法更新Android SDK的问题
服务器下载测速:50MB/s
服务器下载国内文件测速:31.9MB/s
网友@何时不做中国的牲口的服务器,位于凤凰城
今天老高给大家推荐一个国外的VPS服务商,名字叫Bandwagon host,又名搬瓦工。开始觉得VPS这么便宜是不是坑?用了才发现,果然是坑,因为老高第一次买了比较便宜的套餐,内存只有坑爹的128MB,centos还算跑的流畅,可是再想弄点别的就显得有点力不从心了。所以一咬牙一跺脚,小心翼翼的升级到$9.99的,内存512MB,还算不太坑,搭个小站足够用了。
这是要被墙的节奏吗?搬瓦工支持centos一键安装shadowsocks(仅支持centos)。
架构 | 内存 | CPU | 硬盘 | 网速 | 流量 | 价格 |
---|---|---|---|---|---|---|
openvz | 64M | Intel Xeon | 1.5GB 机械硬盘 | 千兆 | 100G/月 | $3.99/年 |
openvz | 96M | Intel Xeon | 2GB 机械硬盘 | 千兆 | 200G/月 | $4.99/年 |
openvz | 128M | Intel Xeon | 3GB 机械硬盘 | 千兆 | 300G/月 | $5.99/年 |
以上是常规的套餐,主要不足是内存太小,并且不是SSD固态硬盘,速度会慢一些,不过还是有一定的性价比的。
名称 | 架构 | 内存 | CPU | 硬盘 | 网速 | 流量 | 价格 |
---|---|---|---|---|---|---|---|
5G PROMO V2 | openvz | 512M | Intel Xeon | 5 GB 固态硬盘 | 千兆 | 500G/月 | $9.99/年 |
10G PROMO V3 | openvz | 512M | Intel Xeon | 10 GB 固态硬盘 | 千兆 | 1000G/月 | $11.99/年 |
20G PROMO V3 | openvz | 1G | Intel Xeon | 20 GB 固态硬盘 | 千兆 | 2000G/月 | $18.99/年 |
名称 | 架构 | 内存 | CPU | 硬盘 | 网速 | 流量 | 价格 |
---|---|---|---|---|---|---|---|
SPECIAL 10G PROMO V3 | openvz | 512MB | Intel Xeon | 10 GB 固态硬盘 RAID 10 | 千兆 | 1000G/月 | $19.99/年 |
SPECIAL 20G PROMO V3 | openvz | 1024MB | Intel Xeon | 20 GB 固态硬盘 RAID 10 | 千兆 | 2000G/月 | $39.99/年 |
名称 | 架构 | 内存 | CPU | 硬盘 | 网速 | 流量 | 价格 |
---|---|---|---|---|---|---|---|
BETA 10G KVM V1 - 中国直连 | KVM | 512MB | Intel Xeon | 10 GB 固态硬盘 RAID 10 | 千兆 | 500G/月 | $28.80/年 |
这个猛了,为什么这么说? KVM可是完全虚拟的,可以说是最真实的虚拟机,一般不会超售,内存不共享,并且可以做很多事情,比如装docker,锐速等不能在OPENVZ上使用的软件!
超值套餐说明
VPS technology: OpenVZ/KiwiVM 先进的管理后台
Linux OS: Centos, Debian, Ubuntu, Fedora 这么多的系统选择
Instant OS reload 瞬间系统切换
1 Dedicated IPv4 address 独占一个IP
Full root access 完整的root权限
PPP and VPN support (tun/tap) 支持PPP和VPN!
Instant RDNS update from control panel 管理后台瞬间实现可逆DNS
No contract, anytime cancellation 无需客服,不满意直接退款!
99% uptime guarantee 保证99%的无故障时间
30-day money back guarantee 30天内可以随意退款
总结一下
独立IP,1G带宽,随便整,直接翻墙,不爽退款
最简单的方式是先去bandwagonhost.com注册一个帐号
由于验证码经常被Q,下单时直接注册不需要填写验证码了。
好消息,搬瓦工支持支付宝了!!结账的时候选择 Credit Card and AliPay (Stripe) 即可,不要忘了使用老高的优惠码!。
6/29更:目测500G流量以下已经没有库存了!
优惠码在这里! ---> phpgao
如何使用搬瓦工优惠码?
添加到购物车后,在结帐页面输入搬瓦工优惠码phpgao
年付$3.99 流量100G/月 年付$4.99 流量200G/月 年付$5.99 流量300G/月 (5G PROMO V2) 年付$9.99 流量500G/月 (10G PROMO V3) 年付$11.99 流量1000G/月 (20G PROMO V3) 年付$18.99 流量2000G/月
以上套餐已经绝版
以下套餐会不定期供货,一旦有货基本就是半天抢光。。。如果买到了以后不想用了可以转手卖出去(不过老高现在买了3个KVM都嫌不够用。。。)
SPECIAL 10G PROMO V3 - LOS ANGELES - CHINA DIRECT ROUTE 特别套餐,洛杉矶直连中国 512MB内存 年付19.99刀
SPECIAL 20G PROMO V3 - LOS ANGELES - CHINA DIRECT ROUTE 特别套餐,洛杉矶直连中国 1G内存 年付39.99刀
⏬⏬⏬⏬⏬ KVM 512M内存 目前老高主要推荐这一款 主要是因为KVM架构可以自定义更多的特性,安装docker等 ⏫⏫⏫⏫⏫
如果内存不够用,可以选择1G内存的KVM,年付50刀,适合多人一起
谁说好用的服务器只有搬瓦工,更多VPS推荐在这里 ----> 老高推荐的VPS
点击对应的链接后如下图所示。
点击checkout就可以下单了。
下单前请注意:monthly是每月,quarterly是每季,semiannually是半年,annually是一年,请按需购买
长城宽带就不要买了
可以先体验最便宜的那一款,测试后觉得靠谱再升级即可!($9.9以下可能有限速)。
更多的折腾方式翻越功夫网
1. [点此登陆帐户][39]
2. 在页面最下面找到 -> My Services menu
3. 点击 Manage
4. 找到 Management Actions -> Upgrade/Downgrade
5. 选择合适的套餐升级,补差价
6. 瞬间升级完毕
老高的博客现在就运行在5G PROMO V2,由于内存还算充裕,速度和稳定性也是不错,机子已经一个多月没有重启了!
这么好的资源不用shadowsocks真是浪费,赶紧参考老高写的安装shadowsocks教程,同时老高还是提供免费shadowsocks服务器的试用,方便大家使用google查资料。
]]>老高会从K8S的方方面面写一系列文章。
]]>刚好老高手头有一台配置还行的服务器,赶紧安装记录一下,省的服务器迁移后数据全丢,然后又要重头来。
进入 https://minikube.sigs.k8s.io/docs/start/
老高比较喜欢RPM的安装方式,大家可以选择自己喜欢的方法。
# root @ VM-117-17-tencentos in ~ [23:42:47] C:1
$ minikube start
😄 Centos 8.4.2105 (amd64) 上的 minikube v1.32.0
✨ 自动选择 docker 驱动。其他选项:none, ssh
🛑 The "docker" driver should not be used with root privileges. If you wish to continue as root, use --force.
💡 如果您在VM中运行 minikube,请考虑使用 --driver=none:
📘 https://minikube.sigs.k8s.io/docs/reference/drivers/none/
❌ 因 DRV_AS_ROOT 错误而退出:docker 驱动不应使用 root 权限。
改为minikube start --driver=none
运行,报错
❌ 因 GUEST_MISSING_CONNTRACK 错误而退出:Sorry, Kubernetes 1.28.3 requires conntrack to be installed in root's path
安装conntrack-tools
yum install conntrack-tools
继续运行minikube start --driver=none
,报错
❌ 因 GUEST_MISSING_CONNTRACK 错误而退出:Sorry, Kubernetes 1.28.3 requires crictl to be installed in root's path
安装crictl
VERSION="v1.29.0"
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
继续运行minikube start --driver=none
,报错
因 NOT_FOUND_CRI_DOCKERD 错误而退出:
💡 建议:
Kubernetes v1.24+ 和 docker 容器运行时的 none 驱动需要 cri-dockerd。
请使用以下说明安装 cri-dockerd:
https://github.com/Mirantis/cri-dockerd
安装cri-dockerd
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.9/cri-dockerd-0.3.9-3.el8.x86_64.rpm
rpm -Uvh cri-dockerd-0.3.9-3.el8.x86_64.rpm
继续运行minikube start --driver=none
,报错
因 NOT_FOUND_CNI_PLUGINS 错误而退出:
💡 建议:
The none driver with Kubernetes v1.24+ requires containernetworking-plugins.
Please install containernetworking-plugins using these instructions:
https://minikube.sigs.k8s.io/docs/faq/#how-do-i-install-containernetworking-plugins-for-none-driver
安装containernetworking-plugins-for-none
CNI_PLUGIN_VERSION=v1.4.0
CNI_PLUGIN_TAR="cni-plugins-linux-amd64-$CNI_PLUGIN_VERSION.tgz" # change arch if not on amd64
CNI_PLUGIN_INSTALL_DIR="/opt/cni/bin"
curl -LO "https://github.com/containernetworking/plugins/releases/download/$CNI_PLUGIN_VERSION/$CNI_PLUGIN_TAR"
mkdir -p "$CNI_PLUGIN_INSTALL_DIR"
tar -xf "$CNI_PLUGIN_TAR" -C "$CNI_PLUGIN_INSTALL_DIR"
rm "$CNI_PLUGIN_TAR"
继续运行minikube start --driver=none
,终于成功
find: ‘/etc/cni/net.d’: 没有那个文件或目录
> kubelet.sha256: 64 B / 64 B [-------------------------] 100.00% ? p/s 0s
> kubectl.sha256: 64 B / 64 B [-------------------------] 100.00% ? p/s 0s
> kubeadm.sha256: 64 B / 64 B [-------------------------] 100.00% ? p/s 0s
> kubeadm: 46.77 MiB / 46.77 MiB [--------------] 100.00% 1.08 MiB p/s 43s
> kubectl: 47.56 MiB / 47.56 MiB [--------------] 100.00% 1.08 MiB p/s 44s
> kubelet: 105.65 MiB / 105.65 MiB [----------] 100.00% 1.07 MiB p/s 1m39s
▪ 正在生成证书和密钥...
▪ 正在启动控制平面...
▪ 配置 RBAC 规则 ...
🔗 配置 bridge CNI (Container Networking Interface) ...
🤹 开始配置本地主机环境...
❗ The 'none' driver is designed for experts who need to integrate with an existing VM
💡 Most users should use the newer 'docker' driver instead, which does not require root!
📘 更多信息,请参阅:https://minikube.sigs.k8s.io/docs/reference/drivers/none/
❗ kubectl 和 minikube 配置将存储在 /root 中
❗ 如需以您自己的用户身份使用 kubectl 或 minikube 命令,您可能需要重新定位该命令。例如,如需覆盖您的自定义设置,请运行:
▪ sudo mv /root/.kube /root/.minikube $HOME
▪ sudo chown -R $USER $HOME/.kube $HOME/.minikube
💡 此操作还可通过设置环境变量 CHANGE_MINIKUBE_NONE_USER=true 自动完成
🔎 正在验证 Kubernetes 组件...
▪ 正在使用镜像 gcr.io/k8s-minikube/storage-provisioner:v5
🌟 启用插件: default-storageclass, storage-provisioner
💡 kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
🏄 完成!kubectl 现在已配置,默认使用"minikube"集群和"default"命名空间
完成后老高建议把shell切换为zsh,因为有kubectl的插件,就不用额外去做alias了。
还没有安装zsh的同学可以移步 zsh + oh-my-zsh 默认shell的最佳替代品 还有 打造高效多环境zsh开发环境两篇文章。
]]>我们需要一个清晰的思路来解决环境配置的问题,这样配置既灵活又可维护。系统化管理的优点包括:
这个结构指导我们如何根据场景放置环境变量。
在GitHub上fork我的 dotfiles仓库,然后将其设置为私有。
克隆你的私有fork到~/.dotfiles
:
git clone git@github.com:yourusername/dotfiles.git ~/.dotfiles
备份旧的配置文件,并创建新配置的软链接:
cp ~/.zshrc ~/.zshrc.bak
ln -sf ~/.dotfiles/zshrc ~/.zshrc
env/
。linux/
,Mac专用变量则根据芯片类型分到macos/{x86_64|arm}/
。.zshrc
中的MACHINE
环境变量来指向对应的机器特定配置,例如在machine/dev/
下的env.sh
。.zshrc
中启用DEBUG=1
以追踪配置文件的加载过程。整体来看,系统化的配置方法简化了不同系统环境变量的管理,并提升了配置的精确性与一致性。若你正在寻找跨平台配置解决方案,这套方法或许可以满足你的需求,让你的环境配置更加高效和有序。
]]>偶然的机会搜索到了RWKV这个开源的语言模型,刚好手头有一台配置还行的服务器,那就在服务器上部署一套试试。
若计划使用NVIDIA显卡加速,建议将驱动程序升级至最新版,以获得最佳cuda支持。
请参考NVIDIA CUDA Toolkit Archive寻找合适版本。
升级cuda:以CentOS系统为例,根据NVIDIA的官方指导操作即可。通常情况下,无需重启系统:
这里可以使用nvida-smi
查看驱动和显卡信息。
感谢josStorer的贡献,RWKV-Runner 工具提供了快捷的部署方式。
git clone https://github.com/josStorer/RWKV-Runner.git
RWKV-Runner 对 Python 3.10 的兼容性良好,准备开始之前,先编译安装。
cd /tmp
wget https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tgz
tar zxf Python-3.10.13.tgz
cd Python-3.10.13
yum groupinstall "Development Tools" -y
yum install openssl-devel libffi-devel libffi-devel bzip2-devel -y
./configure
make
make install
# 先确认版本和路径
➜ ~ ls /usr/bin/python3* /usr/local/bin/python*
/usr/bin/python3 /usr/bin/python3.8-config /usr/local/bin/python3.10
/usr/bin/python3.6 /usr/bin/python3.8-x86_64-config /usr/local/bin/python3.10-config
/usr/bin/python3.6m /usr/bin/python3-config /usr/local/bin/python3-config
/usr/bin/python3.8 /usr/local/bin/python3
➜ ~ which python python3 pip pip3
/usr/bin/python
/usr/local/bin/python3
/usr/local/bin/pip
/usr/local/bin/pip3
# 设置软连接
ln -sf /usr/local/bin/python3.10 /usr/bin/python
ln -sf /usr/local/bin/python3.10 /usr/bin/python3
ln -sf /usr/local/bin/pip3.10 /usr/local/bin/pip
ln -sf /usr/local/bin/pip3.10 /usr/local/bin/pip3
ln -sf /usr/local/bin/python3.10-config /usr/bin/python-config
ln -sf /usr/local/bin/python3.10-config /usr/bin/python3-config
# 最后检查
➜ ~ python -V
Python 3.10.13
➜ ~ pip --version
pip 23.0.1 from /usr/local/lib/python3.10/site-packages/pip (python 3.10)
➜ ~
准备好了python3.10,我们开始安装依赖(也是一个很漫长的过程)
# 进入git仓库
cd RWKV-Runner
# 先升级一下pip
pip install --upgrade pip
pip install -r backend-python/requirements.txt
至此,python版本的RWKV-Runner已经可以跑了
➜ RWKV-Runner git:(master) ✗ python ./backend-python/main.py -h
usage: main.py [-h] [--port PORT] [--host HOST] [--webui] [--rwkv-beta] [--rwkv.cpp] [--webgpu]
options:
-h, --help show this help message and exit
server arguments:
--port PORT port to run the server on (default: 8000)
--host HOST host to run the server on (default: 127.0.0.1)
mode arguments:
--webui whether to enable WebUI (default: False)
--rwkv-beta whether to use rwkv-beta (default: False)
--rwkv.cpp whether to use rwkv.cpp (default: False)
--webgpu whether to use webgpu (default: False)
python ./backend-python/main.py --host 0.0.0.0 --port 8088
--- 0.7059581279754639 seconds ---
INFO: Started server process [2325754]
INFO: Waiting for application startup.
torch found: /usr/local/lib/python3.10/site-packages/torch/lib
torch set
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8088 (Press CTRL+C to quit)
选择合适的预训练模型,这里以 RWKV-5-World-3B 为例。下载模型后,通过接口切换至新模型:
# 创建模型目录并下载预训练模型
mkdir models
wget [模型下载链接] -O ./models/[模型文件名]
# 发送请求切换模型
curl -X POST [API URL] -H "Content-Type: application/json" -d '{"model":"[模型路径]","strategy":"cuda fp16","deploy":"true"}'
# 应返回 'success'
在服务器部署完毕后,我们可以在本地安装聊天机器人软件(例如chatbot),配置AI服务器为刚刚搭建的模型服务器:
部署成功后,您可以体验独立的聊天机器人。
通过上述步骤,您不仅在服务器上成功部署了一个聊天机器人模型,而且通过简单的配置,实现了与本地应用的无缝对接。
]]>其实在arm上编译php和在x86没有太大区别,主要是很多依赖都需要重新编译,这里拿openssl和curl举例。
wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1h.tar.gz
tar zxf openssl-1.0.1h.tar.gz
./config -fPIC --prefix=/usr/local/services/php/environment/openssl enable-shared
make
make install
wget https://curl.se/download/curl-7.42.1.tar.gz
tar zxf curl-7.42.1.tar.gz
cd curl-7.42.1
./configure --without-nss --prefix=/usr/local/services/php/environment/curl -with-ssl=/usr/local/services/php/environment/openssl
make
make install
wget https://pecl.php.net/get/imagick-3.7.0.tgz
tar zxf imagick-3.7.0.tgz
cd imagick-3.7.0
/usr/local/services/php/bin/phpize
./configure --with-php-config=/usr/local/services/php/bin/php-config
make
make install
wget https://www.php.net/distributions/php-5.5.25.tar.gz
tar zxf php-5.5.25.tar.gz
cd php-5.5.25
./configure --prefix=/usr/local/services/php --with-config-file-path=/usr/local/services/php/etc --enable-opcache --enable-fpm --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-xml --enable-pcntl --enable-sysvmsg --enable-sysvshm --enable-sysvsem --enable-sockets --enable-mbstring --enable-soap --enable-bcmath --enable-zip --with-curl=/usr/local/services/php/environment/curl --with-gmp --with-mcrypt=/usr/local/services/php/environment/libmcrypt --with-openssl=/usr/local/services/php/environment/openssl --with-jpeg-dir=/usr/local/services/php/environment/jpegsr8c --with-png-dir=/usr/local/services/php/environment/libpng --with-gd
make
make install
就这么简单(完)
]]>下面老高会总结一些平时遇到的问题,以及对应的解决思路和方法,同事也欢迎大家补充!
环境问题是一个比较宽泛的概念,如果把一个应用比作一个人,程序的运行就比作去工作,对应人类的办公室。
最常见的办公室就是你的开发机了,可以理解为应用在在家办公。
有钱的公司会给自己的所有应用租一栋大楼,然后把应用合理规划到大楼的各个办公室,而像老高这种码农,也就租的起一个路边摊了。。。
这二者的差别在哪儿呢?打个比方,如果大楼失火了,如果是大公司,有自己的灭火团队,可能作为员工的"应用",感知到的是个别办公室暂时无法使用,被分配到别的场地办公,等火灭了,就自动回迁。如果是老高的路边摊出了问题,那我的网站你都打不开了(不会自动恢复)。
系统决定了你的应用的办公舒适度,他可以为应用提供各种支持,比如大仓库(大硬盘),24小时监控、保安巡逻(监控告警) 等等。
如果服务突然出现了应用卡顿,首先应该排查应用使用的磁盘空间是否已经所剩无几。
原因有:
解决方案:
df -h
查看磁盘使用df -i
查看inode使用情况# 寻找当前目录下大于1G的文件
find . -type f -size +1G
# 寻找当前目录下大于1G的文件并排序
find . -type f -size +1G -print0 | xargs -0 du -h | sort -nr
# 查看最大深度为2的文件夹大小
du -h --max-depth=2
logging:
driver: “json-file”
options:
max-size: “3m”
说到内存,老高第一个想到的就是OOM了。。。但是想把OOM讲清楚不是本文的目的。这里就像说一个点,在编程的时候,一定要尽量节省内存,Linux虽然是无私的(Memory Overcommit),你申请的内存的时候"满口答应",但真的等到系统内存不够用的时候,别忘了OMM Killer会来嘎嘎乱杀。
举个golang的demo
# snippet 1
response, err = ioutil.ReadAll(resp.Body)
# snippet 2
response := bytes.NewBuffer(make([]byte, 4096))
io.Copy(response, resp.Body)
不知道大家看出来代码1和2的区别没,如果resp.Body
投毒,返回会来一个10G的文件,那么代码1会让你的内存瞬间爆掉,而代码二会更加柔性(这种情况在下载文件的时候十分明显)。
内存对齐
这个最好用能够区分的字体
老高的业务中不同的环境有不同配置文件,有时会出现某项配置在开发环境,但是测试环境中丢失的问题。
业务中有时候会填写DSN(数据源名称),比如:
mysql:
dsn://user:password@tcp(localhost:3306)/your_db?charset=xxx
redis://password@127.0.0.1:6379/0
但是密码中可能会出现 =
、?
、:
等特殊字符,这些字符可能会导致DSN无法解析,比如dsn://user:localhost:3306@tcp(localhost:3306)/your_db?charset=xxx
这种,就会比较难解析。
此处就很容易发生错误。
wget -qO- https://raw.githubusercontent.com/littleplus/TencentAgentRemove/master/remove.sh | bash
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
# 验证
lsmod | grep bbr
# 显示
tcp_bbr 20480 101
]]>先准备两个ss,参数都是可以自己改的,推荐使用不同的加密方法
extra_hosts是用来自定义解析的,可以删掉。
cat docker-compose.yaml
version: '3'
services:
shadowsocks-:
image: shadowsocks/shadowsocks-libev:edge
ports:
- "57348:8388/udp"
- "57348:8388/tcp"
restart: unless-stopped
environment:
TZ: Asia/Shanghai
PASSWORD: LKSJDFHd2321jhdfjds1203
METHOD: aes-256-gcm
TIMEOUT: 300
DNS_ADDRS: '8.8.8.8,8.8.4.4'
ARGS: "-v --no-delay"
logging:
driver: "json-file"
options:
max-size: "1M"
max-file: "10"
extra_hosts:
- "domain:ip"
shadowsocks:
image: shadowsocks/shadowsocks-libev:edge
ports:
- "57349:8388/udp"
- "57349:8388/tcp"
restart: unless-stopped
environment:
TZ: Asia/Shanghai
PASSWORD: LKSJDFHd2321jhdfjds1203
METHOD: aes-256-gcm
TIMEOUT: 300
DNS_ADDRS: '8.8.8.8,8.8.4.4'
ARGS: "-v --no-delay"
logging:
driver: "json-file"
options:
max-size: "1M"
max-file: "10"
extra_hosts:
- "domain:ip"
然后划分一下端口,把10000-20000的端口都分给第一个ss实例,40000-50000分给第二个。
iptables -t nat -A PREROUTING -p tcp --dport 10000:20000 -j REDIRECT --to-port 57348
iptables -t nat -A PREROUTING -p udp --dport 10000:20000 -j REDIRECT --to-port 57348
iptables -t nat -A PREROUTING -p tcp --dport 40000:50000 -j REDIRECT --to-port 57349
iptables -t nat -A PREROUTING -p udp --dport 40000:50000 -j REDIRECT --to-port 57349
以上就完成了,在客户端登记的时候就可以随意填一个端口了
]]>屏蔽后记得恢复电视的出厂设置
ad.mi.com
ad.xiaomi.com
ad1.xiaomi.com
appstore.cdn.pandora.xiaomi.com
appstore.pandora.xiaomi.com
api.ad.xiaomi.com
ad.doubleclick.net
bss.pandora.xiaomi.com
b.netcheck.gallery.pandora.xiaomi.com
broker.mqtt.pandora.xiaomi.com
config.kuyun.com
dvb.pandora.xiaomi.com
de.pandora.xiaomi.com
data.mistat.xiaomi.com
f1.market.xiaomi.com
f2.market.xiaomi.com
f3.market.xiaomi.com
f4.market.xiaomi.com
f5.market.xiaomi.com
f1.market.mi-img.com
f2.market.mi-img.com
f3.market.mi-img.com
f4.market.mi-img.com
f5.market.mi-img.com
file.xmpush.xiaomi.com
gvod.aiseejapp.atianqi.com
g.dtv.cn.miaozhan.com
gallery.pandora.xiaomi.com
jellyfish.pandora.xiaomi.com
logonext.tv.kuyun.com
mishop.pandora.xiaomi.com
milink.pandora.xiaomi.com
misc.pandora.xiaomi.com
mitv.tracking.miui.com
metok.sys.miui.com
new.api.ad.xiaomi.com
pandora.mi.com
redirect.pandora.xiaomi.com
register.xmpush.xiaomi.com
resolver.msg.xiaomi.net
r.browser.miui.com
stat.pandora.xiaomi.com
sdkconfig.ad.xiaomi.com
staging.ai.api.xiaomi.com
tracking.miui.com
tv.weixin.pandora.xiaomi.com
tvmanager.pandora.xiaomi.com
tvmgr.pandora.xiaomi.com
tat.pandora.xiaomi.com
t7z.cupid.ptqy.gitv.tv
upgrade.mishop.pandora.xiaomi.com
v.admaster.com.cn
]]>下面跟着老高一起编译frp吧
自己想办法
pkg install golang git
go get github.com/fatedier/frp
# 注意版本号可能不一样,本文是v0.37.1
cd ~/go/pkg/mod/github.com/fatedier/frp\@v0.37.1/cmd/frpc
# 此时frpc已经被安装到$GOPATH/bin下了
go install main.go
cd ~/go/bin
# 准备好你的frpc.ini在~/go/bin
./frpc
ps:在给文章起名字的时候,第一时间是想着叫
在Android系统上运行frp
,slug顺手敲了run_frp_on_android
,突然仔细一想,好像之前真没有思考过一个问题,当描述一个app运行在某个系统的情况的时候,是说在Android上运行微信,还是说在Android中运行微信?刚好英文中有对应的on和in。顺手一查,发现on貌似还是最贴切,于是本文结束。。。
Refer:
]]>