73 lines
2.0 KiB
Bash
73 lines
2.0 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
APP_URL="${1:?APP_URL is required}"
|
|
REMOTE_DIR="${2:-/opt/caiwuxitong}"
|
|
|
|
if [ "$(id -u)" -ne 0 ]; then
|
|
echo "bootstrap-server.sh must run as root" >&2
|
|
exit 1
|
|
fi
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update
|
|
apt-get install -y --no-install-recommends ca-certificates openssl docker.io docker-compose-v2
|
|
systemctl enable --now docker
|
|
|
|
if ! swapon --show=NAME --noheadings | grep -q .; then
|
|
if [ ! -f /swapfile ]; then
|
|
fallocate -l 2G /swapfile
|
|
chmod 600 /swapfile
|
|
mkswap /swapfile >/dev/null
|
|
fi
|
|
|
|
swapon /swapfile
|
|
|
|
if ! grep -q '^/swapfile ' /etc/fstab; then
|
|
printf '%s\n' '/swapfile none swap sw 0 0' >> /etc/fstab
|
|
fi
|
|
fi
|
|
|
|
install -d -m 700 "$REMOTE_DIR/runtime"
|
|
|
|
if [ ! -f "$REMOTE_DIR/runtime/.env" ]; then
|
|
DB_PASSWORD="$(openssl rand -hex 24)"
|
|
DB_ROOT_PASSWORD="$(openssl rand -hex 24)"
|
|
APP_KEY="$(openssl rand -base64 32 | tr -d '\n')"
|
|
|
|
umask 077
|
|
{
|
|
printf '%s\n' \
|
|
'APP_NAME=CaiWuXiTong' \
|
|
'APP_ENV=production' \
|
|
"APP_KEY=base64:$APP_KEY" \
|
|
'APP_DEBUG=false' \
|
|
'APP_INSTALLED=false' \
|
|
"APP_URL=$APP_URL" \
|
|
'APP_LOCALE=zh-CN' \
|
|
'APP_FALLBACK_LOCALE=en-GB' \
|
|
'APP_TIMEZONE=Asia/Shanghai' \
|
|
'LOG_CHANNEL=stack' \
|
|
'DB_CONNECTION=mysql' \
|
|
'DB_HOST=db' \
|
|
'DB_PORT=3306' \
|
|
'DB_DATABASE=caiwu' \
|
|
'DB_USERNAME=caiwu' \
|
|
"DB_PASSWORD=$DB_PASSWORD" \
|
|
'DB_PREFIX=ak_' \
|
|
'CACHE_DRIVER=file' \
|
|
'SESSION_DRIVER=file' \
|
|
'QUEUE_CONNECTION=sync' \
|
|
'MARIADB_DATABASE=caiwu' \
|
|
'MARIADB_USER=caiwu' \
|
|
"MARIADB_PASSWORD=$DB_PASSWORD" \
|
|
"MARIADB_ROOT_PASSWORD=$DB_ROOT_PASSWORD" \
|
|
'MARIADB_AUTO_UPGRADE=1'
|
|
} > "$REMOTE_DIR/runtime/.env"
|
|
chmod 600 "$REMOTE_DIR/runtime/.env"
|
|
fi
|
|
|
|
docker --version
|
|
docker compose version
|
|
echo "Server runtime is ready: $REMOTE_DIR"
|