1. 精华:快速上手 —— 购买到上线只需20分钟,适配Ubuntu与主流面板。
2. 精华:安全优先 —— 默认启用SSH密钥登录、防火墙与fail2ban,降低被扫描风险。
3. 精华:自动化部署 —— 提供两段自动化脚本:系统加固+安装Docker与应用一键部署。
本文由具有多年运维与云主机部署经验的作者撰写,面向想在香港机房部署稳定、低延迟服务的开发者与站长。全程以安全与可重复性为核心,遵循Google EEAT原则:说明来源、步骤可验证、提供回滚与备份建议。
第一步:选购与准备。建议选择有香港节点的厂商(例如常见云厂商或本地VPS商),下单时选择Ubuntu 22.04或20.04,配置按业务选择:测试1核1G、生产至少2核4G起步。准备好本地的SSH公钥(id_rsa.pub),并记录控制台提供的IP与初始密码(若有)。
第二步:首次登录与账户初始化。用
SSH登录后立即:
- 更新系统:sudo apt update && sudo apt upgrade -y
- 创建普通用户并加入sudo组,导入SSH公钥,禁止root登录与密码认证(后面自动化脚本会处理)。
下面是一份实用的一键初始化脚本(适用于Ubuntu)。使用前请确认理解每一行并在测试机验证:
# 初始化脚本:init-vps.sh
#!/bin/bash
set -e
if [ "$(id -u)" != "0" ]; then echo "请以root运行"; exit 1; fi
# 更新与基础工具
apt update && apt upgrade -y
apt install -y curl wget ufw fail2ban software-properties-common apt-transport-https ca-certificates gnupg lsb-release
# 新建用户(替换USERNAME与你的公钥)
USERNAME=deploy
adduser --disabled-password --gecos "" $USERNAME
usermod -aG sudo $USERNAME
mkdir -p /home/$USERNAME/.ssh
echo "ssh-rsa AAAA... your_public_key ..." > /home/$USERNAME/.ssh/authorized_keys
chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh
chmod 700 /home/$USERNAME/.ssh
chmod 600 /home/$USERNAME/.ssh/authorized_keys
# SSH 强化
sed -i 's/^#PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl reload sshd
# 防火墙
ufw default deny incoming
ufw default allow outgoing
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable
# fail2ban 默认启用
systemctl enable --now fail2ban
# Docker 安装
curl -fsSL https://get.docker.com | bash
usermod -aG docker $USERNAME
# docker-compose(v2)
mkdir -p /etc/docker
curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 时区与清理
timedatectl set-timezone Asia/Hong_Kong
apt autoremove -y
echo "初始化完成,请以 $USERNAME 登录"
将上面脚本保存为 init-vps.sh,用root执行:bash init-vps.sh。脚本功能:系统更新、创建用户、导入公钥、关闭密码登录、启用ufw、安装Docker与docker-compose。
第三步:应用部署示例。使用Docker Compose可实现一键部署。示例:简单的NGINX+Let's Encrypt(使用nginx-proxy和acme-companion)或者你的应用容器。示例docker-compose.yml:
version: '3.8'
services:
web:
image: nginx:stable
ports:
- "80:80"
- "443:443"
volumes:
- ./data/nginx:/etc/nginx/conf.d
- ./certs:/etc/nginx/certs
restart: unless-stopped
把compose文件放到非root用户目录下,切换用户执行:docker-compose up -d,观察日志确认服务启动。
第四步:备份与监控建议。强烈建议:配置快照策略(按月/按周)、启用每日数据库备份到对象存储、并使用简单监控(例如Zabbix/Prometheus或第三方SaaS)。同时为关键目录设置自动备份脚本并测试恢复流程。
安全与合规提醒:在香港VPS上运行服务时,注意合规内容(不得存储或传播违法内容),对外开放端口应最小化。定期更新系统与容器镜像,及时修补漏洞。
常见问题解答(常见问题解答):
问:我可以用IPv6吗?
答:如果供应商支持IPv6,在VPS控制台启用后,系统会自动分配。注意调整ufw规则以允许IPv6(编辑 /etc/default/ufw,设置IPV6=yes)。
问:脚本会不会把我原有数据删掉?
答:上述脚本仅做系统初始化与安装,不会删除用户目录外的数据。但强烈建议在生产环境运行前备份并在测试机验证。
问:如何回滚?
答:最快回滚方式是恢复快照或快照创建的镜像。如果没有快照,只能手动反向操作(删除用户、恢复sshd配置、卸载Docker等),因此务必先做快照。
问:如何开放自定义端口?
答:使用ufw:例如开放端口12345,运行 sudo ufw allow 12345/tcp,并确保应用监听该端口。
问:我想一键部署自己的应用,有推荐吗?
答:推荐使用 docker-compose 或者 Portainer(图形化管理)。把应用打包成容器后可实现可重复的一键部署流程,并把镜像推到私有或公有仓库。
最后的建议:部署前在本地或测试机演练脚本,开启自动化后依然需要监控与日志审计,定期更新。若需要更复杂的CI/CD、备份或高可用架构,可在评论区说明你的业务场景(网站/API/游戏服等),我会给出针对性方案。
本文原创,基于多年云主机与容器化运维经验编写,欢迎收藏并在实际操作中把关键命令先在测试环境验证,确保安全与可恢复性。