Add aws/ec2-user-data.sh

This commit is contained in:
2026-10-15 19:31:21 +00:00
parent 95345c03cd
commit 5bb3939a81
+41
View File
@@ -0,0 +1,41 @@
#!/bin/bash
# First-boot setup for the Gitea host on Amazon Linux 2023 (x86_64). Runs once as root.
# No secrets in this file. Output goes to /var/log/user-data.log and the EC2 console.
# Installs: 2 GB swap (t3.micro has 1 GB RAM), Docker, git, and a pinned, checksummed
# Docker Compose plugin. Does NOT deploy Gitea: that is done by hand and documented.
set -euxo pipefail
exec > >(tee /var/log/user-data.log | logger -t user-data -s 2>/dev/console) 2>&1
COMPOSE_VERSION="v5.6.0"
# SHA-256 of docker-compose-linux-x86_64 for v5.6.0 (GitHub release asset digest and .sha256 file agree).
COMPOSE_SHA256="40343e21ca777173e69cff5dbafeb37c6f81f3b0d57d9e597f036e95eb63e76a"
# --- 2 GB swap file (idempotent) ---
if ! swapon --show | grep -q /swapfile; then
dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
grep -q '^/swapfile' /etc/fstab || echo '/swapfile swap swap defaults 0 0' >> /etc/fstab
fi
# --- Docker + git from the Amazon Linux repositories ---
dnf install -y docker git
systemctl enable --now docker
usermod -aG docker ec2-user
# --- Docker Compose plugin, pinned and verified ---
PLUGIN_DIR=/usr/local/lib/docker/cli-plugins
mkdir -p "$PLUGIN_DIR"
curl -fsSL -o "$PLUGIN_DIR/docker-compose" \
"https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-linux-x86_64"
echo "${COMPOSE_SHA256} ${PLUGIN_DIR}/docker-compose" | sha256sum -c -
chmod +x "$PLUGIN_DIR/docker-compose"
# --- Record versions for the manual ---
docker --version
docker compose version
git --version
free -m
swapon --show
echo "user-data finished OK"