chore: initial private ActivityWatch Russian deployment project

This commit is contained in:
igor04091968
2026-04-25 15:24:04 +03:00
commit 0821de0964
26 changed files with 2915 additions and 0 deletions
+66
View File
@@ -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"
+21
View File
@@ -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
+62
View File
@@ -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"