62 lines
1.5 KiB
Bash
62 lines
1.5 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
# Configuration
|
|
CTID=120
|
|
CTNAME="portfolio-ct"
|
|
STORAGE="local-lvm"
|
|
TEMPLATE="local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst"
|
|
ROOTFS_SIZE="2" # in GB
|
|
MEMORY=512
|
|
CPU_CORES=1
|
|
HOSTNAME="portfolio"
|
|
NETWORK="name=eth0,bridge=vmbr0,ip=dhcp"
|
|
|
|
# Repo info
|
|
REPO="https://git.hzwnrw.my/Resume/Portfolio.git"
|
|
WWW="/var/www/portfolio"
|
|
|
|
# Step 1: Create container
|
|
echo "📦 Creating LXC container with ID ${CTID}..."
|
|
pct create ${CTID} ${TEMPLATE} \
|
|
--hostname ${HOSTNAME} \
|
|
--storage ${STORAGE} \
|
|
--rootfs ${ROOTFS_SIZE} \
|
|
--memory ${MEMORY} \
|
|
--cores ${CPU_CORES} \
|
|
--net0 ${NETWORK} \
|
|
--unprivileged 0
|
|
|
|
# Step 2: Start container
|
|
echo "🚀 Starting container..."
|
|
pct start ${CTID}
|
|
|
|
# Step 3: Install Nginx and Git, deploy static site
|
|
echo "🔧 Installing Nginx and Git..."
|
|
pct exec ${CTID} -- bash -c "
|
|
apt update &&
|
|
apt install -y nginx git &&
|
|
mkdir -p $WWW &&
|
|
git clone $REPO $WWW || (cd $WWW && git pull) &&
|
|
rm -f /etc/nginx/sites-enabled/default &&
|
|
cat > /etc/nginx/sites-available/portfolio <<EOF
|
|
server {
|
|
listen 80;
|
|
server_name _;
|
|
root $WWW;
|
|
index index.html;
|
|
location / {
|
|
try_files \$uri \$uri/ =404;
|
|
}
|
|
}
|
|
EOF
|
|
ln -s /etc/nginx/sites-available/portfolio /etc/nginx/sites-enabled/ &&
|
|
nginx -t &&
|
|
systemctl reload nginx
|
|
"
|
|
|
|
# Step 4: Show IP
|
|
IP_ADDRESS=$(pct exec ${CTID} -- bash -c "ip -4 -brief addr show eth0 | awk '{print \$3}' | cut -d/ -f1")
|
|
echo ""
|
|
echo "✅ Portfolio container ready! Visit http://$IP_ADDRESS"
|