Files
go-sip/docs/evidence/20260918-cloud-host-bootstrap.md
T

82 lines
3.7 KiB
Markdown

# 2026-09-18 Alibaba Cloud host bootstrap evidence
## Scope
This is real cloud deployment evidence for the owner-authorized first test Cell.
It is **not** W13-b/P1 or production acceptance: the Go binary still has no
production ARI/SIP/ExternalMedia/call-execution path, and no real provider call
was initiated from this host. The host later ran a separately isolated,
mock-only Asterisk/PJSIP/PJSUA2/ARI compatibility stack; those results are
recorded in the W09 evidence documents below.
- Region: `cn-beijing`
- Instance: `i-2zeb69p1fo75r92wplbz`
- Status: `Running`
- Image: `debian_13_6_x64_20G_alibase_20260828.vhd` (Debian 13)
- Type/charge: `ecs.e-c1m1.large`, `PostPaid`, owner-selected `SpotAsPriceGo`
- Zone: `cn-beijing-g`
- EIP: `123.56.71.98`, allocation `eip-2zeevfsaxzwuue2szy7xb`, `InUse` by the
instance
- Security group: `sg-2zed6d5vmcvojt7zek4r`
- SSH key: existing `mac_ed25519`, matching the required rogee public key
- Release binary SHA-256: `6047a9a6a1f52db52e326167f1f50a17d8c46c34b34327294657d35c87d10cf9`
The initial `RunInstances` request was rejected for insufficient balance. After
account eligibility was restored, the same persisted request/client token
passed `DryRun` and was applied. No second EIP, unrelated instance, or new key
pair was used.
## Host hardening
- Host ED25519 key was scanned twice and was stable at
`SHA256:k1OBPlQcjYo5DqO2sbvcJEpdoqKNuWZHBreHSVB24pQ`; the stale EIP entry was
replaced only after confirming the EIP was now attached to this new instance.
- User `rogee` (UID 1000) was created with only the required public key.
- `PasswordAuthentication no`, `KbdInteractiveAuthentication no`,
`PermitRootLogin no`, public-key authentication, and `AllowUsers rogee` were
applied and `sshd -t` passed.
- Root SSH login was rejected after the hardening reload.
- Subsequent host commands used SSH as `rogee` and the restricted sudoers file;
no root command was used after final hardening.
- Existing security-group rules were inspected. TCP 22 is open for the
required administration path; UDP/SIP/RTP rules are limited to the recorded
provider/diagnostic source IPs and no `0.0.0.0/0` UDP rule was added.
## Release smoke
The release binary was copied over SSH to `/opt/sip-go-agent/sip-go-agent` and
local/remote SHA-256 matched. On the Debian host, both commands completed in
explicit `mock` mode and returned valid JSON:
```text
SIP_GO_AGENT_MODE=mock ... /opt/sip-go-agent/sip-go-agent agent
SIP_GO_AGENT_MODE=mock ... /opt/sip-go-agent/sip-go-agent dispatcher
```
The smoke only proves the binary, directories, permissions, SQLite/file spool
startup, and non-production mode on the real host. It does not prove mTLS
Dispatcher/Agent interop, a management-approved static artifact, production
Asterisk loading, Agent ARI/RTP/PCMA integration, AI suppliers, OSS/MQ, or a
phone call.
## Isolated mock compatibility follow-up
Docker was installed on this host for an isolated mock-only Asterisk container.
The pinned Asterisk 22.10.1 image was transferred from the local cache because
Docker Hub was unreachable from the host. The container was loopback-restricted
for ARI/SIP publication and used no provider credentials. Runtime results:
- `docs/evidence/20260918-w09-ari-runtime.md`
- `docs/evidence/20260918-w09-sip-ari.md`
- `docs/evidence/20260918-w09-sip-rtp-ari.md`
These documents prove only the disposable mock compatibility layers and do not
change the host's production or real-provider status.
## Resource state and cleanup
The instance and EIP remain running/attached for the next explicitly authorized
step. Spot interruption can terminate the host and does not migrate calls.
Do not stop/delete the instance or release/unbind the fixed EIP without a
separate user cleanup instruction.