Table of Contents
准备工作
- scaleway 星辰官网
- 注册账号,绑定信用卡
- 创建API 拿到 ACCESS_KEY、SECRET_KEY、PROJECT_ID
- 添加一个 SSH Keys,下面开机会用到,例如:key_name
- 安装 scaleway-cli
- 可在三个区域各创建一台 STARDUST1-S ,这里以 fr-par-1 为例,其他两个区域 nl-ams-1、pl-waw-2 操作一样
创建实例
- 首先设置环境变量,下面的main.tf再引用
export SCW_ACCESS_KEY="你的AccessKey"export SCW_SECRET_KEY="你的SecretKey"export SCW_DEFAULT_PROJECT_ID="你的项目ID"- Terraform 代码 (main.tf)
terraform { required_providers { scaleway = { source = "scaleway/scaleway" } }}
provider "scaleway" { zone = "fr-par-1"}
# 1. 引用已有的 SSH Keydata "scaleway_account_ssh_key" "existing_oracle_key" { name = "key_name"}
# 2. 申请纯 IPv6 地址resource "scaleway_instance_ip" "ipv6_only" { type = "routed_ipv6"}
# 3. 创建 Stardust 实例resource "scaleway_instance_server" "stardust_node" { name = "stardust-ubuntu-2404" type = "STARDUST1-S" image = "ubuntu_noble"
# 绑定 IPv6 地址 ip_ids = [scaleway_instance_ip.ipv6_only.id]
# 修复 1: 强制关闭动态 IPv4 以避免收费 enable_dynamic_ip = false
# 默认 10GB 磁盘 root_volume { size_in_gb = 10 volume_type = "l_ssd" }
# 修复 3: Scaleway 的 user_data 必须指定 key 为 "cloud-init" user_data = { cloud-init = <<-EOT #!/bin/bash apt-get clean rm -rf /var/lib/apt/lists/* EOT }}
# 输出所有绑定的 IPv6 地址列表output "all_public_ipv6" { value = scaleway_instance_server.stardust_node.public_ips[*].address}
# 直接生成方便复制的 SSH 命令(取列表中的第一个)output "ssh_login_fixed" { value = "ssh root@${scaleway_instance_server.stardust_node.public_ips[0].address}"}- 部署命令
terraform initterraform plan# 如果 plan 没问题,直接 applyterraform apply- 至此创建实例完成,可正常使用,费用为 0.43欧/月。如果想要 0.15欧/月则更换磁盘为1GB,操作往下看
scaleway-cli 创建1G磁盘并关联实例
- 查看刚才创建的实例,记录实例ID
scw instance server listscw instance server list zone=all- 关闭实例
scw instance server stop ecd6-4540-8c60-c9d55bea89e8 zone=fr-par-1- 创建 1G 磁盘
scw instance volume create name=fr-par-1 size=1G volume-type=l_ssd zone=fr-par-1- 查看区域下的磁盘
scw instance volume list- 关联磁盘到实例
scw instance server attach-volume server-id=ecd6-4540-8c60-c9d55bea89e8 volume-id=a40a-4eb7-ac29-0dbd1a05d58b zone=fr-par-1 volume-type=l_ssd- 分离10G磁盘并删除
scw instance server detach-volume volume-id=9fe5-45b5-b238-b17245447362 zone=fr-par-1 server-id=ecd6-4540-8c60-c9d55bea89e8scw instance volume delete 9fe5-45b5-b238-b17245447362 zone=fr-par-1救援恢复模式启动
-
到后台面板设置
实例 - settings - Use rescue image(救援系统) - 然后保存启动 -
终端 ssh 实例执行下面命令
parted /dev/vda mklabel gptwget -qO- https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/x86_64/alpine-virt-3.21.1-x86_64.iso | dd of=/dev/vdainit 0改回 1G 硬盘启动
实例 - 把boot mode改回Use local boot - 下面的硬盘选上你的1G盘,接着开机
配置Alpine系统
- 登录系统
scw instance server console server-id=ecd6-4540-8c60-c9d55bea89e8 zone=fr-par-1- 格式化硬盘安装系统
mkdir /media/setupcp -a /media/vda/* /media/setupmkdir /lib/setupcp -a /.modloop/* /lib/setup/etc/init.d/modloop stopumount /dev/vdamv /media/setup/* /media/vda/mv /lib/setup/* /.modloop/- 配置系统(大多数默认回车就可以了,以下需要手动配置)
setup-alpine
# 网络,添加以下配置auto eth0iface eth0 inet6 static address ipv6地址 netmask 64 gateway 网关
# 镜像源cat > /etc/apk/repositories << EOFhttps://dl-cdn.alpinelinux.org/alpine/v3.21/mainhttps://dl-cdn.alpinelinux.org/alpine/v3.21/community# https://dl-cdn.alpinelinux.org/alpine/edge/main# https://dl-cdn.alpinelinux.org/alpine/edge/community# https://dl-cdn.alpinelinux.org/alpine/edge/testingEOF
# ssh key 最好也添加上
# 配置DNS64服务器echo "nameserver 2a00:1098:2c::1" | tee /etc/resolv.conf > /dev/null
# 安装引导并安装到硬盘apk updateapk add dosfstoolsapk add grub-efisetup-disk -s 0 (vda - sys - y 即可)彻底销毁所有资源
terraform destroy