chore: initial private ActivityWatch Russian deployment project
This commit is contained in:
Executable
+66
@@ -0,0 +1,66 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
||||
DEFAULT_ENV_FILE="$SCRIPT_DIR/../secrets/deploy.secrets.env"
|
||||
|
||||
if [ "$#" -gt 1 ]; then
|
||||
echo "usage: $0 [ /path/to/deploy.secrets.env ]" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ENV_FILE="${1:-$DEFAULT_ENV_FILE}"
|
||||
if [ ! -f "$ENV_FILE" ]; then
|
||||
echo "env file not found: $ENV_FILE" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
. "$ENV_FILE"
|
||||
|
||||
required_vars="CT_ID CT_HOSTNAME CT_STORAGE CT_TEMPLATE CT_ROOTFS_SIZE CT_CORES CT_MEMORY CT_SWAP CT_BRIDGE CT_IP CT_GW CT_PASSWORD CT_UNPRIVILEGED CT_ONBOOT CT_FEATURES"
|
||||
for var_name in $required_vars; do
|
||||
eval "var_value=\${$var_name:-}"
|
||||
if [ -z "$var_value" ]; then
|
||||
echo "missing required variable: $var_name" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
if pct status "$CT_ID" >/dev/null 2>&1; then
|
||||
echo "CT $CT_ID already exists" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
NET0="name=eth0,bridge=$CT_BRIDGE,ip=$CT_IP,gw=$CT_GW"
|
||||
if [ -n "${CT_VLAN:-}" ]; then
|
||||
NET0="$NET0,tag=$CT_VLAN"
|
||||
fi
|
||||
|
||||
pct create "$CT_ID" "$CT_TEMPLATE" \
|
||||
--hostname "$CT_HOSTNAME" \
|
||||
--cores "$CT_CORES" \
|
||||
--memory "$CT_MEMORY" \
|
||||
--swap "$CT_SWAP" \
|
||||
--rootfs "$CT_STORAGE:$CT_ROOTFS_SIZE" \
|
||||
--password "$CT_PASSWORD" \
|
||||
--unprivileged "$CT_UNPRIVILEGED" \
|
||||
--onboot "$CT_ONBOOT" \
|
||||
--features "$CT_FEATURES" \
|
||||
--net0 "$NET0" \
|
||||
--nameserver "${CT_NAMESERVER:-}" \
|
||||
--searchdomain "${CT_SEARCHDOMAIN:-}" \
|
||||
--ostype debian
|
||||
|
||||
pct start "$CT_ID"
|
||||
sleep 5
|
||||
|
||||
pct exec "$CT_ID" -- bash -lc '
|
||||
set -eu
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update
|
||||
apt-get install -y curl ca-certificates bash unzip xz-utils jq
|
||||
mkdir -p /root/bootstrap /etc/activitywatch
|
||||
'
|
||||
|
||||
echo "CT $CT_ID created and bootstrapped"
|
||||
Executable
+21
@@ -0,0 +1,21 @@
|
||||
# Copy this file outside git and fill with real values.
|
||||
|
||||
PVE_NODE=pve-example
|
||||
CT_ID=203
|
||||
CT_HOSTNAME=activitywatch-server
|
||||
CT_STORAGE=local-lvm
|
||||
CT_TEMPLATE=local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst
|
||||
CT_ROOTFS_SIZE=8G
|
||||
CT_CORES=2
|
||||
CT_MEMORY=2048
|
||||
CT_SWAP=512
|
||||
CT_BRIDGE=vmbr10
|
||||
CT_IP=10.20.30.13/24
|
||||
CT_GW=10.20.30.1
|
||||
CT_VLAN=
|
||||
CT_NAMESERVER=1.1.1.1 8.8.8.8
|
||||
CT_SEARCHDOMAIN=example.internal
|
||||
CT_PASSWORD=CHANGE_ME
|
||||
CT_UNPRIVILEGED=1
|
||||
CT_ONBOOT=1
|
||||
CT_FEATURES=nesting=1,keyctl=1
|
||||
Executable
+62
@@ -0,0 +1,62 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
||||
PROJECT_ROOT=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)
|
||||
DEFAULT_ENV_FILE="$PROJECT_ROOT/secrets/deploy.secrets.env"
|
||||
|
||||
if [ "$#" -gt 1 ]; then
|
||||
echo "usage: $0 [ /path/to/deploy.secrets.env ]" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ENV_FILE="${1:-$DEFAULT_ENV_FILE}"
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
. "$ENV_FILE"
|
||||
|
||||
: "${CT_ID:?missing CT_ID}"
|
||||
|
||||
pct exec "$CT_ID" -- mkdir -p /root/bootstrap
|
||||
|
||||
for file_name in \
|
||||
install_aw_server.sh \
|
||||
apply_webui_ru_patch.sh \
|
||||
activitywatch-server.service \
|
||||
aw-server.env.example \
|
||||
aw-ru-patch.js \
|
||||
aw-sw-cleanup.js
|
||||
do
|
||||
pct push "$CT_ID" "$PROJECT_ROOT/aw-server/$file_name" "/root/bootstrap/$file_name"
|
||||
done
|
||||
|
||||
if [ -n "${AW_SERVER_VERSION:-}" ] &&
|
||||
[ -n "${AW_SERVER_DOWNLOAD_URL:-}" ] &&
|
||||
[ -n "${AW_SERVER_BIND_HOST:-}" ] &&
|
||||
[ -n "${AW_SERVER_PORT:-}" ] &&
|
||||
[ -n "${AW_SERVER_WEBUI_DIR:-}" ] &&
|
||||
[ -n "${AW_SERVER_DATA_DIR:-}" ] &&
|
||||
[ -n "${AW_SERVER_LOG_DIR:-}" ] &&
|
||||
[ -n "${AW_SERVER_USER:-}" ] &&
|
||||
[ -n "${AW_SERVER_GROUP:-}" ]; then
|
||||
tmp_env=$(mktemp)
|
||||
trap 'rm -f "$tmp_env"' EXIT
|
||||
{
|
||||
echo "AW_SERVER_VERSION=$AW_SERVER_VERSION"
|
||||
echo "AW_SERVER_DOWNLOAD_URL=$AW_SERVER_DOWNLOAD_URL"
|
||||
echo "AW_SERVER_BIND_HOST=$AW_SERVER_BIND_HOST"
|
||||
echo "AW_SERVER_PORT=$AW_SERVER_PORT"
|
||||
echo "AW_SERVER_WEBUI_DIR=$AW_SERVER_WEBUI_DIR"
|
||||
echo "AW_SERVER_DATA_DIR=$AW_SERVER_DATA_DIR"
|
||||
echo "AW_SERVER_LOG_DIR=$AW_SERVER_LOG_DIR"
|
||||
echo "AW_SERVER_USER=$AW_SERVER_USER"
|
||||
echo "AW_SERVER_GROUP=$AW_SERVER_GROUP"
|
||||
} > "$tmp_env"
|
||||
pct push "$CT_ID" "$tmp_env" "/etc/activitywatch/aw-server.env"
|
||||
pct exec "$CT_ID" -- chmod 0600 /etc/activitywatch/aw-server.env
|
||||
echo "Server env pushed to CT $CT_ID:/etc/activitywatch/aw-server.env"
|
||||
else
|
||||
echo "WARN: AW_SERVER_* variables are incomplete in $ENV_FILE; /etc/activitywatch/aw-server.env was not updated" >&2
|
||||
fi
|
||||
|
||||
echo "Bootstrap artifacts pushed to CT $CT_ID:/root/bootstrap"
|
||||
Reference in New Issue
Block a user