算是之前写的Server Initial Setup的姊妹篇,但是这篇的侧重点在腾讯云。

购买

趁着 618 活动入手了腾讯云的 4核 4GB 40GB VPS (轻量应用服务器),首单只要 ¥68 一年。

虽然还有一个首单 ¥38 的同配置机器,但是那个要每天蹲点秒杀。

而且好像需要本账号首单?好不容易想起来了告诉我买不了,而我之前只买过 CDN 服务。(域名要备案的那种)

活动链接在这里,没有 aff,虽然你点开左上角大大的“最新活动”就能找到。

(话说腾讯 阿里 等国内的云,一年365天里有365天都在搞活动,比育碧狠多了。)

安装之后,root 的密码会通过站内信发送,在右上角的铃铛图标那里。

不过腾讯云说可以“通过OrcaTerm免密登录”,居然可以随便指定用户。

看了一下说明,OrcaTerm 免密好像是另起了一个终端连接到主机上的。 乍一听挺可怕的,不过转念一想物理主机都在他们手里,和虚拟的 VNC 区别不大,只是更方便而已。另外这个免密登录的 Agent 是开源的,甚至用了 Rust —— 那很安全了。

系统配置

系统我选择了 Rocky Linux 9.

用 OrcaTerm 登录后,参照 DigitalOcean 上的教程:

root 的密码:

1
passwd

添加用户(假设你叫 sammy):

1
2
3
adduser sammy
passwd sammy
usermod -aG wheel sammy

上传你的 ssh 密钥(手动,因为我用 Windows):

1
2
3
4
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys
chmod -R go= ~/.ssh
chown -R sammy:sammy ~/.ssh

关闭 root 登录和密码登录:

1
nano /etc/ssh/sshd_config

PermitRootLoginPasswordAuthentication 都设置成 no.

防火墙默认是关闭的,也不用管,因为腾讯云那一层自带一个防火墙。

记得重启~

安装软件

Oh My Bash

Oh My Bash 是一个美化 bash 的软件,我常年用里面的 half-life 主题。

通过检查安装脚本,搜索 github,我们知道安装脚本调取的是 $OSH_REPOSITORY,那么把它替换掉就行了。

这里以 https://ghfast.top/https://gh-proxy.com/ 加速为例,请自行搜索可以用的 GitHub 加速:

1
2
export OSH_REPOSITORY=https://gh-proxy.com/github.com/ohmybash/oh-my-bash.git
bash -c "$(curl -fsSL https://ghfast.top/https://github.com/ohmybash/oh-my-bash/raw/refs/heads/master/tools/install.sh)"

uv

uv 是 Astral 出品的 Python 包管理器。

uv 是用 Rust 写的,体验接近于 cargo (除了没有类似 pnpm run dev 的自定义命令以外).

使用环境变量替换安装脚本的 URL:

1
2
export INSTALLER_DOWNLOAD_URL="https://gh-proxy.com/github.com/astral-sh/uv/releases/download/0.7.13"
curl -LsSf https://astral.sh/uv/install.sh | sh

然后就是下载 Python 了,使用的环境变量如下,建议加入 .bashrc:

1
2
3
# UV package index
export UV_DEFAULT_INDEX="https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple"
export UV_PYTHON_INSTALL_MIRROR="https://gh-proxy.com/github.com/astral-sh/python-build-standalone/releases/download"

其中,UV_PYTHON_INSTALL_MIRROR 用来下载 Python, 而 UV_DEFAULT_INDEX 用来下载 pip (确切地说是 PyPI) 包。

或者,更好的方法是创建 ~/.config/uv/uv.toml (用户) 或者 /etc/uv/uv.toml (系统) 配置文件, 然后写入配置:

1
2
3
4
5
python-install-mirror = "https://gh-proxy.com/github.com/astral-sh/python-build-standalone/releases/download"

[[index]]
url = "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/"
default = true

然后 (开一个新的 bash 之后) 就可以愉快地使用 uv 了,比如:

1
2
uv python list
uv python install 3.13

再比如,如果你很有钱,买了带显卡的服务器:

1
uvx nvitop

Cockpit

Cockpit 其实是 RHEL 自带的,每次登录都会出现提示。

1
systemctl enable --now cockpit.socket

然后登录 localhost:9090 就行了——记得在腾讯云的防火墙里开一下。

但其实这是不合规的,因为没有备案(见下文),所以其实不用开。

另外,如果是用 Cloudflare Tunnels 映射的话,那么需要设置一下:

1
2
su
touch /etc/cockpit/cockpit.conf

然后在里面填写:

1
2
3
4
[WebService]
Origins = https://dashboard.xxxxx.com wss://dashboard.xxxxx.com
ProtocolHeader = X-Forwarded-Proto
AllowUnencrypted = true

这样从你的浏览器到 Cloudflare 的流量是 HTTPS 加密的,而 Cloudflare 连接 Tunnels 的流量也不公开。

这样做之后实测是可以访问的,但也不合规(见下文),于是逛了一会儿之后就删掉了。

如何卸载

1
2
systemctl disable cockpit.socket
dnf remove cockpit*

Docker

TUNA (清华大学开源软件镜像站) 有教程,跟着做就行,不用动脑。

居然是通过 sed 替换掉 /etc/yum.repos.d/docker-ce.repo 里的内容的——真是简单粗暴。

安装完了记得启动 Docker daemon, 然后把自己加到管理 Docker 的列表里:

1
2
sudo systemctl enable --now docker
sudo usermod -aG docker sammy

(后面这一步可能需要新开一个 SSH 连接才能生效。)

至于 Docker 镜像么……就请亲爱的读者(你)自己努力吧。

lazydocker

人生苦短,我用 nano lazydocker, 一个 Docker 的 TUI.

首先下载安装脚本:

1
curl -OL https://ghfast.top/https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh

然后用 nano 进行简单的替换,加上加速域名(比如 https://ghfast.top/).

我还把安装目录改成了 /usr/local/bin.

最后执行脚本就行了:

1
2
chmod +x install_update_linux.sh
sudo ./install_update_linux.sh

干啥用

不知道。毕竟绑域名需要备案,而不绑的话没法访问。

关于备案,首先境内注册商需要备案才能解析,所以不备案的话域名没法用,备案了就没这些问题了。

而境外注册商的域名(好像)没法备案,需要转到境内。

为啥不备案呢?备案是要公开主体信息(姓名)的,我还没做好实名上网的准备。

那么在域名没备案的情况下:

  • 绑定域名:不合法,会被拦截
  • 直接用 IP 访问:如果是网站的话也需要备案,但是好像没人支持。
  • 直接用 IP 访问 HTTP/HTTPS:似乎会被拦截。
  • 转发到境外 VPS 然后从那里访问:看 v2ex 说似乎会被警告,不过帖子找不到了。
    • Cloudflare Tunnels 应该也算这种?
    • 而且 Tunnels 访问也不快。
  • 访问 FTPS:理论上应该可以,实际上感觉会被拦截。
  • 访问 SSH (SFTP):应该不会被拦截?或者流量不够大的时候。
    • 或许这说明我应该开个 VNC? 或者 VSCode 的 Tunnel 用来开发。

或许可以用来挂 BT, 下载 Ubuntu 的种子吧。