实测:招商银行万事达借记卡注册甲骨文云免费 VPS,DD Debian 纯净系统 并搭建 3x-ui

国内办理的招商银行万事达借记卡,能不能注册甲骨文云 Oracle Cloud 免费 VPS?我的这次实测结果是:可以。全程使用中国大陆正常网络,没有使用 VPN,资料按本人真实情况填写,最终顺利收到 Oracle Cloud 开通邮件,并创建了一台控制台标记符合免费条件的实例。

验证时银行显示一笔 SGD 1.38、折合人民币约 7.31 元的境外线上预授权,随后同额撤销。这不是购买云服务器的正式消费,而是付款方式验证。Oracle 官方文档说明,注册 Free Tier 时会进行 1 美元或当地等值金额的预授权,并由 Oracle 立即撤销;银行何时解除冻结,以发卡行处理速度为准。

先说清楚:本文只是一次真实成功案例,不代表招商银行同类卡、所有地区或所有申请人都一定成功。Oracle 的风控、可用区域、免费政策和界面都会变化,请以申请时官方页面和控制台显示为准。

本文实测结果

项目 实测情况
注册网络 中国大陆日常网络,全程未使用 VPN
验证卡片 国内办理的招商银行万事达借记卡
付款验证 SGD 1.38,约人民币 7.31 元,随后预授权撤销
云账户 Oracle Cloud Free Tier 成功开通
云服务器 创建控制台标记符合免费条件的 OCI 实例
最终系统 通过第三方网络重装方案安装 Debian 12
管理面板 原生安装 3x-ui,并配置域名和 ACME HTTPS 证书

文中“DD”沿用 VPS 用户常见说法,实际过程是第三方网络重装。它会清空整个系统盘,并非 Oracle 官方重装功能;请先备份,风险自行评估。

一、Oracle Cloud 的“免费”到底是什么

OCI Free Tier 主要包含两部分:

  1. 初次注册的 Free Trial:可获得一定试用金,通常最长使用 30 天;
  2. Always Free:在主区域、指定规格和免费配额内长期使用的资源。

常见免费计算规格包括:

  • VM.Standard.E2.1.Micro:AMD/x86 架构,最多两台,每台约 1 GB 内存;
  • VM.Standard.A1.Flex:Arm 架构,每月前 1,500 OCPU 小时和 9,000 GB 内存小时免费,对纯免费账户约等于持续运行 2 OCPU + 12 GB 内存。

免费资源必须在主区域创建,并以控制台的 Always Free-eligible 或“符合始终免费条件”标识为准。免费容量也不保证,出现 Out of host capacity 代表当前可用域暂时没货,不要为了抢机器误选收费规格。

官方资料:

二、注册前准备

建议准备:

  • 本人长期使用、未注册过 OCI 的邮箱;
  • 本人真实姓名、地址和手机号;
  • 支持国际线上交易及预授权的万事达借记卡;
  • 稳定的日常网络;
  • 用于保存 SSH 私钥的安全目录;
  • 提前选好主区域。

我的经验是:不要使用 VPN,不要频繁切换网络、国家和设备,也不要伪造地址。网络所在地、注册国家、手机号和付款资料应尽量保持真实一致。Oracle 是否接受某张卡由其支付验证和风控系统决定,失败时不要短时间重复轰炸式提交。

三、招商银行万事达借记卡实测

这次使用的是国内办理的招商银行万事达借记卡。提交卡片后,银行出现了:

  • 商户:Oracle Singapore;
  • 原交易:SGD 1.38;
  • 人民币冻结:约 7.31 元;
  • 随后状态:预授权撤销、冻结解除。

这与 Oracle 官方所说的 1 美元等值预授权相符。不同日期的汇率、入账币种和显示金额可能不同。若授权长期未撤销,应联系招商银行和 Oracle 支持核查,不要把预授权冻结误认为正式扣费。

四、不用 VPN 的注册流程

  1. 打开 Oracle Cloud 免费账户注册页
  2. 选择真实国家/地区,填写姓名和常用邮箱;
  3. 打开验证邮件,完成邮箱验证;
  4. 设置 Cloud Account Name、密码和主区域;
  5. 填写真实地址与可接收短信的手机号;
  6. 添加招商银行万事达借记卡,完成小额预授权;
  7. 阅读并接受条款,提交申请;
  8. 收到“立即开始使用 Oracle 云”邮件后登录控制台。

主区域注册后通常不能更改。选区域时不要只看延迟,还要考虑 A1 免费实例是否经常缺货。本文演示使用免费规格,不建议在不理解账单规则时升级为 Pay As You Go。

五、创建第一台免费实例

进入:

OCI 控制台 → Compute → Instances → Create instance

建议选择:

  • 入门和软件兼容优先:VM.Standard.E2.1.Micro;
  • 需要更多内存且软件支持 Arm:VM.Standard.A1.Flex;
  • 系统镜像:Oracle Linux 或 Ubuntu;
  • 引导卷:默认约 50 GB 即可;
  • 网络:公有子网,并分配公网 IPv4;
  • SSH:上传自己的公钥,或下载 OCI 生成的私钥。

提交前再次确认费用估算为免费范围。实例创建成功后,在 Security List 或 NSG 中先放行 SSH。管理端口不要直接对全网开放,最好把来源限制为自己的公网 IP /32。

Oracle Linux 默认登录用户通常是 opc:

ssh -i "C:\安全目录\ssh-key.key" opc@服务器公网IP

Ubuntu 默认用户通常是 ubuntu。

六、可选:网络重装为 Debian 12

3x-ui 本身支持 Oracle Linux,因此不是必须重装。以下步骤只适合明确需要 Debian 12 的用户。它会清空整个系统盘,属于第三方网络重装方案,不是 Oracle 官方功能。

新手提示:每次只复制一个代码块,确认执行结束并重新出现命令提示符后,再执行下一块。不要把教程中的 服务器公网IP、你的域名等占位文字原样粘贴。

1. 重装前必须完成的三件事

第一,在 OCI 控制台给当前启动卷创建备份:

OCI 控制台 → Storage → Boot Volumes → 当前启动卷 → Create Backup

第二,记录实例的公网 IP。第三,在实例使用的 Security List 或 NSG 中提前添加:

用途 协议 目标端口 来源
当前 SSH TCP 22 仅自己的公网 IP /32
Debian 新 SSH TCP 202 仅自己的公网 IP /32

在确认 Debian 的 202 可以登录之前,暂时不要删除 22 端口规则。

2. 登录原系统并切换 root

Oracle Linux 默认用户通常是 opc。本地 PowerShell 示例:

ssh -i "C:\安全目录\ssh-key.key" opc@服务器公网IP

登录服务器后执行:

sudo -i

看到提示符从类似:

[opc@instance ~]$

变成:

[root@instance ~]#

说明已经取得 root 权限。

3. 检查架构、虚拟化、系统盘和网络

cat /etc/os-release
uname -m
systemd-detect-virt
findmnt /
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT
ip -br -4 address
ip -4 route
free -h

常见结果:

  • x86_64:AMD 免费机 VM.Standard.E2.1.Micro;
  • aarch64:Ampere A1 Arm 免费机;
  • kvm:OCI 虚拟机环境;
  • 系统盘常见为 /dev/sda;
  • 网卡通常获得 10.x.x.x 私网地址,公网 IP 由 OCI 映射,不会直接显示在网卡上。

检查 EFI:

if [ -d /sys/firmware/efi ]; then
    echo "BOOT_MODE=EFI"
else
    echo "BOOT_MODE=BIOS"
fi

不要手工把 OCI 公网 IP 写进网卡配置,也不要修改默认网关。

4. 确认 curl 可用

curl --version

如果提示 curl: command not found,Oracle Linux 才需要执行:

dnf install -y curl ca-certificates

1 GB 小机器第一次读取软件仓库元数据可能需要几分钟。只要 dnf 仍有 CPU 占用就耐心等待,不要同时启动多个 dnf。

5. 下载并检查重装脚本

cd /root
curl -fL --proto '=https' --tlsv1.2 \
  -o reinstall.sh \
  https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh
chmod 700 reinstall.sh
bash -n reinstall.sh
ls -lh reinstall.sh

bash -n 没有输出就是语法检查通过。ls -lh 应能看到下载好的脚本,而不是 0 字节文件。

6. 设置 Debian 12、root 和 SSH 202

bash /root/reinstall.sh debian 12 --username root --ssh-port 202

安装脚本会询问密码。输入密码时终端不会显示星号或字符,这是 Linux 的正常安全行为;输入完成后直接按 Enter。不要留空,否则脚本可能生成随机密码。

建议使用至少 20 位、包含大小写字母、数字和符号的随机密码,并立即保存到密码管理器。

脚本结束前检查摘要,至少应包含:

debian 12
Username: root
SSH port: 202
Reboot to start the reinstallation.

如果出现红色 ERROR,不要重启。若尚未重启并想取消,可以执行:

bash /root/reinstall.sh reset

项目说明:bin456789/reinstall

7. 重启并等待安装

确认摘要正确且密码已经保存后:

reboot

SSH 会立即断开。等待约 10~30 分钟,不要连续强制重启。安装期间短暂出现 Connection refused 或超时通常是正常现象。

8. 在本地连接新的 Debian 12

重装后 SSH 主机密钥会变化。Windows PowerShell 先删除旧记录:

ssh-keygen -R "[服务器公网IP]:202"

然后连接:

ssh -p 202 root@服务器公网IP

首次提示是否信任新指纹时,确认连接的是自己的服务器后输入:

yes

再输入刚才设置的 root 密码。若等待 30 分钟仍无法连接,应查看 OCI 串行控制台的启动日志,不要急着终止免费实例,否则目标区域可能暂时没有容量重新创建。

七、Debian 12 基础优化

1. 先确认确实进入了 Debian 12

cat /etc/os-release
uname -m
ip -4 route
df -hT

/etc/os-release 应包含:

PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"

2. 更新系统并安装基础工具

apt-get update
apt-get full-upgrade -y
DEBIAN_FRONTEND=noninteractive apt-get install -y \
  curl wget ca-certificates \
  fail2ban nftables unattended-upgrades \
  tmux htop

如果 APT 提示锁被占用,先用下面命令确认是否仍有升级进程,不要直接删除锁文件:

ps -ef | grep -E '[a]pt|[d]pkg'

3. 给 1 GB 小机器增加 2 GB Swap

先检查:

free -h
swapon --show

若 Swap 为 0,再执行:

fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

设置开机自动启用:

grep -qF '/swapfile none swap sw 0 0' /etc/fstab || \
echo '/swapfile none swap sw 0 0' >> /etc/fstab
echo 'vm.swappiness=20' > /etc/sysctl.d/99-swap.conf
sysctl --system

检查结果:

free -h
swapon --show
sysctl vm.swappiness

预期看到 /swapfile、大小约 2 GB、vm.swappiness = 20。

4. 设置容易识别的主机名

hostnamectl set-hostname xui-node
if grep -q '^127\.0\.1\.1' /etc/hosts; then
    sed -i 's/^127\.0\.1\.1.*/127.0.1.1 xui-node/' /etc/hosts
else
    echo '127.0.1.1 xui-node' >> /etc/hosts
fi

重新登录后,提示符会从 root@localhost 变成 root@xui-node。

5. 固化并加固 SSH 202

保留当前 SSH 窗口不要关闭。创建统一配置:

cat >/etc/ssh/sshd_config.d/00-local-security.conf <<'EOF'
Port 202
PermitRootLogin yes
PasswordAuthentication yes
PubkeyAuthentication yes
KbdInteractiveAuthentication no
PermitEmptyPasswords no
MaxAuthTries 3
LoginGraceTime 30
X11Forwarding no
EOF

重装脚本可能另外生成 01-port.conf。如果存在,将它移到 root 目录备份,避免 port 202 重复显示:

if [ -f /etc/ssh/sshd_config.d/01-port.conf ]; then
    mv /etc/ssh/sshd_config.d/01-port.conf \
       /root/01-port.conf.backup
fi

验证语法并重新加载:

sshd -t && systemctl reload ssh

确认最终配置:

sshd -T | grep -E \
'^(port|permitrootlogin|passwordauthentication|pubkeyauthentication|maxauthtries|logingracetime) '

应只看到一个:

port 202

不要关闭当前连接,先在本地另开一个 PowerShell 窗口测试:

ssh -p 202 root@服务器公网IP

新窗口登录成功后再继续。虽然这里为了演示保留了 root 密码登录,更安全的长期方案仍然是 SSH 密钥,并在 OCI 安全组中把 202 端口限制为自己的 IP。

6. 配置 Fail2ban 防止 SSH 爆破

确认目录存在:

install -d -m 0755 /etc/fail2ban/jail.d
cat >/etc/fail2ban/jail.d/99-sshd.local <<'EOF'
[sshd]
enabled = true
port = 202
backend = systemd
banaction = nftables-multiport
usedns = no
maxretry = 5
findtime = 600
bantime = 3600
bantime.increment = true
bantime.factor = 2
bantime.maxtime = 604800
EOF

先测试配置:

fail2ban-client -t

看到配置测试成功后再启动:

systemctl enable --now fail2ban
systemctl restart fail2ban
systemctl is-active fail2ban
fail2ban-client ping
fail2ban-client status sshd

正常结果应包含 active、Server replied: pong 和 Status for the jail: sshd。

7. 可选:启用 BBR

BBR 对高延迟网络可能有帮助,但不是运行 3x-ui 的硬性要求。

modprobe tcp_bbr
echo 'tcp_bbr' > /etc/modules-load.d/bbr.conf
cat >/etc/sysctl.d/90-bbr.conf <<'EOF'
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF
sysctl --system
lsmod | grep tcp_bbr
sysctl net.core.default_qdisc
sysctl net.ipv4.tcp_congestion_control

预期最后两项为 fq 和 bbr。如果 modprobe tcp_bbr 提示模块不存在,保持默认 cubic 即可,不要为了 BBR 安装来历不明的内核。

8. 启用自动安全更新

cat >/etc/apt/apt.conf.d/20auto-upgrades <<'EOF'
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";
EOF

禁止无人值守更新自动重启服务器:

cat >/etc/apt/apt.conf.d/52unattended-upgrades-local <<'EOF'
Unattended-Upgrade::Automatic-Reboot "false";
EOF
systemctl enable --now apt-daily.timer apt-daily-upgrade.timer

9. 安装面板前做一次验收

free -h
swapon --show
sshd -t
systemctl --failed
systemctl is-active ssh fail2ban
fail2ban-client status sshd
ss -lntup
df -hT

此时通常只有 SSH 202 对外监听。若出现陌生服务或失败单元,先查明原因再安装面板。

八、安装 3x-ui 面板

3x-ui 是管理 Xray-core 的开源 Web 面板。请只用于自有设备远程访问、开发测试和合法网络互联,并遵守所在地法律、Oracle 服务条款及资源使用政策。

1 GB 机器建议原生安装,不使用 Docker。官方安装文档:MHSanaei/3x-ui Installation

1. 下载官方安装脚本

cd /root
curl -fL \
  -o 3x-ui-install.sh \
  https://raw.githubusercontent.com/MHSanaei/3x-ui/master/install.sh
chmod 700 3x-ui-install.sh
bash -n 3x-ui-install.sh
ls -lh 3x-ui-install.sh

bash -n 没有输出代表语法检查通过。

2. 执行安装

bash /root/3x-ui-install.sh

安装过程中按屏幕提示操作。新版安装器会生成随机的:

  • 面板用户名;
  • 面板密码;
  • 面板监听端口;
  • Web Base Path,也就是随机访问路径。

安装结果出现后先暂停,不要急着关终端。把四项内容准确保存到密码管理器,任何一项都不要公开到博客、视频或聊天群。

安装器还可能询问是否立即配置 SSL:

  • 已准备好域名:选择域名证书或 Cloudflare DNS 验证;
  • 暂时没有域名:可以选择 IP 证书,之后再从 x-ui 菜单更换;
  • 证书续期重载命令使用默认的 systemctl restart x-ui 即可;
  • 询问是否把证书设置给面板时,选择 y。

3. 检查服务状态

systemctl enable --now x-ui
systemctl status x-ui --no-pager

看到 Active: active (running) 才表示服务正常。

查看管理菜单:

x-ui

菜单可以查看当前设置、重置面板账号、更新、重启、备份和管理 SSL。菜单编号会随版本变化,优先看选项文字,不要只记编号。

检查监听端口:

ss -lntup | grep -E 'x-ui|xray'

4. 在 OCI 放行面板端口

回到 OCI 控制台,在实例对应的 Security List 或 NSG 添加:

用途 协议 目标端口 来源
3x-ui 面板 TCP 安装器生成的面板端口 仅自己的公网 IP /32

面板端口不要对 0.0.0.0/0 开放。以后在面板中新建入站时,再按实际使用的 TCP/UDP 端口逐个添加规则,不要一次开放 1-65535。

5. 登录面板

没有 HTTPS 时,地址形式通常为:

http://服务器公网IP:面板端口/随机路径/

配置 HTTPS 后则为:

https://你的域名:面板端口/随机路径/

若打不开,依次检查:

systemctl is-active x-ui
ss -lntup | grep -E 'x-ui|xray'
journalctl -u x-ui -n 100 --no-pager

同时检查 OCI 安全规则是否填对协议、目标端口和来源 IP。

6. 首次登录后的安全设置

首次进入面板后建议立即完成:

  1. 确认管理员用户名和密码不是简单组合;
  2. 保留随机 Web Base Path,不要改成 /、/admin等容易猜测的路径;
  3. 开启两步验证;
  4. 检查面板只允许 HTTPS;
  5. 不在截图中展示客户端 UUID、订阅地址、密钥或 Reality 私钥;
  6. 只创建自己实际需要的入站与端口。

7. 备份面板数据库

3x-ui 默认 SQLite 数据库通常位于 /etc/x-ui/x-ui.db。手工备份:

cp /etc/x-ui/x-ui.db \
   /root/x-ui-backup-$(date +%F).db

证书通常保存在 /root/cert/。数据库和证书都要再下载到本地或其他存储,不能只留在同一台服务器。官方备份说明:3x-ui Backup & Restore

九、给面板配置域名和 HTTPS

1. 添加 DNS 记录

在域名 DNS 服务商处添加独立子域名,例如:

类型:A
主机记录:panel
记录值:服务器公网 IPv4

最终域名类似 panel.example.com。等待解析生效后,在服务器检查:

getent ahostsv4 panel.example.com

输出的 IP 应与服务器公网 IP 一致。把示例域名替换成自己的真实域名。

2. 方法一:普通域名 HTTP 验证

这种方法最容易理解,但要求公网 TCP 80 能访问服务器,并且没有其他程序占用 80 端口。

在 OCI 临时放行 TCP 80,然后检查本机端口:

ss -lntp | grep ':80 '

没有输出通常表示 80 未被占用。运行:

x-ui

选择 SSL Certificate Management,当前版本通常是菜单 20;再选择 Get SSL (Domain),输入完整域名。证书通常会保存为:

/root/cert/你的域名/fullchain.pem
/root/cert/你的域名/privkey.pem

询问是否修改续期后的 reload 命令时选择 n,保留默认 systemctl restart x-ui;询问是否把证书设置给面板时选择 y。

3. 方法二:Cloudflare DNS 验证

如果域名由 Cloudflare 托管、服务器不方便开放 80,或者需要通配符证书,可以使用 DNS-01。

在 Cloudflare 创建仅允许目标域名 Zone:DNS:Edit 的 API Token,不要使用权限过大的 Global API Key。然后运行:

x-ui

选择 Cloudflare SSL Certificate,当前版本通常是菜单 21;选择 API Token 模式并按提示输入域名和 Token。Token 只在终端输入,不要录屏或截图。

官方 SSL 说明:3x-ui SSL Certificates

4. 确认面板已经使用 HTTPS

完成后访问:

https://你的域名:面板端口/随机路径/

服务器侧检查:

systemctl restart x-ui
systemctl status x-ui --no-pager

如果域名使用 Cloudflare 橙云代理,将 SSL/TLS 模式设置为 Full (strict)。Cloudflare 免费代理只支持指定的 HTTP/HTTPS 端口;随机面板端口若不在支持列表中,应改成受支持端口或使用灰云 DNS only。公网 ACME 证书比只能由 Cloudflare 信任的长期 Origin CA 证书更灵活。

不要移动或删除 /root/cert/、/root/.acme.sh/中的证书文件,否则自动续期可能失效。可以用下面命令查看已有证书:

/root/.acme.sh/acme.sh --list

十、OCI 端口怎么开放才安全

建议规则:

用途 协议/端口 来源
SSH TCP 202 仅自己的公网 IP /32
3x-ui 面板 实际面板 TCP 端口 仅自己的公网 IP /32
HTTPS TCP 443 或实际 HTTPS 端口 根据访问需求
Xray 入站 实际创建的 TCP/UDP 端口 根据客户端范围

不要执行 iptables -F,不要开放 1-65535,不要把数据库、Docker API 或管理后台无条件暴露给 0.0.0.0/0。

十一、最终验收

free -h
swapon --show
systemctl --failed
systemctl is-active ssh fail2ban x-ui
fail2ban-client status sshd
ss -lntup
df -hT

同时在 OCI 中建立低额度预算告警、定期检查费用分析,并给重要配置和面板数据库做异地备份。Always Free 空闲实例存在被回收的可能,Oracle 官方判断标准与规则可能调整,不要使用虚假流量规避平台政策。

结语

这次实测最有价值的地方,并不是“找到一张神卡”,而是证明了一条更稳妥的思路:正常网络、真实资料、支持国际预授权的本人借记卡,再加上对免费额度和安全边界的理解。

招商银行万事达借记卡在我的案例中完成了 SGD 1.38 / 约 7.31 元预授权,并很快撤销;Oracle Cloud 账号随后开通。我再创建免费实例、重装 Debian 12、设置 Swap 与 Fail2ban,最后部署了带 HTTPS 的 3x-ui 面板。

申请结果因人而异,但流程可以做到清楚、透明、可复现。请务必保护个人信息,合法使用云资源,并定期备份。


本文不构成 Oracle、招商银行或 3x-ui 的官方承诺,也不构成财务、法律或规避网络监管建议。