Files
proxmox-script/portfolio.sh
2025-06-24 22:47:52 +08:00

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"