mirror of
https://github.com/community-scripts/ProxmoxVE
synced 2025-02-09 01:09:16 +00:00
Compare commits
5 Commits
ac64a9de31
...
2f620240a8
Author | SHA1 | Date | |
---|---|---|---|
|
2f620240a8 | ||
|
07c9dc4d0a | ||
|
8caf5e59b3 | ||
|
f8ab39e4d6 | ||
|
e47d7c4452 |
25
CHANGELOG.md
25
CHANGELOG.md
@ -16,6 +16,31 @@ All LXC instances created using this repository come pre-installed with Midnight
|
|||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
|
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
|
||||||
|
|
||||||
|
## 2025-01-13
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Update Hoarder: Improvement .env location (see PR comment for little migration) [@MahrWe](https://github.com/MahrWe) ([#1325](https://github.com/community-scripts/ProxmoxVE/pull/1325))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Fix: tandoor.sh: Call version.py to write current version [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1454](https://github.com/community-scripts/ProxmoxVE/pull/1454))
|
||||||
|
- Fix inexistent folder on actualbudget update script [@dosten](https://github.com/dosten) ([#1444](https://github.com/community-scripts/ProxmoxVE/pull/1444))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Update kavita.json: Add info on how to enable folder adding. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1447](https://github.com/community-scripts/ProxmoxVE/pull/1447))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- GitHub Actions: Fix Shellsheck workflow to only run on changes `*.sh` files [@andygrunwald](https://github.com/andygrunwald) ([#1423](https://github.com/community-scripts/ProxmoxVE/pull/1423))
|
||||||
|
|
||||||
|
### ❔ Unlabelled
|
||||||
|
|
||||||
|
- feat: allow adding SSH authorized key for root (advanced settings) by @dsiebel [@MickLesk](https://github.com/MickLesk) ([#1456](https://github.com/community-scripts/ProxmoxVE/pull/1456))
|
||||||
|
|
||||||
## 2025-01-11
|
## 2025-01-11
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
@ -40,7 +40,10 @@ function update_script() {
|
|||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
cd /opt
|
cd /opt
|
||||||
mv /opt/hoarder/.env /opt/.env
|
if [[ -f /opt/hoarder/.env ]] && [[ ! -f /etc/hoarder/hoarder.env ]]; then
|
||||||
|
mkdir -p /etc/hoarder
|
||||||
|
mv /opt/hoarder/.env /etc/hoarder/hoarder.env
|
||||||
|
fi
|
||||||
rm -rf /opt/hoarder
|
rm -rf /opt/hoarder
|
||||||
wget -q "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip"
|
wget -q "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip"
|
||||||
unzip -q v${RELEASE}.zip
|
unzip -q v${RELEASE}.zip
|
||||||
@ -54,8 +57,7 @@ function update_script() {
|
|||||||
export DATA_DIR=/opt/hoarder_data
|
export DATA_DIR=/opt/hoarder_data
|
||||||
cd /opt/hoarder/packages/db
|
cd /opt/hoarder/packages/db
|
||||||
pnpm migrate &>/dev/null
|
pnpm migrate &>/dev/null
|
||||||
mv /opt/.env /opt/hoarder/.env
|
sed -i "s/SERVER_VERSION=${PREV_RELEASE}/SERVER_VERSION=${RELEASE}/" /etc/hoarder/hoarder.env
|
||||||
sed -i "s/SERVER_VERSION=${PREV_RELEASE}/SERVER_VERSION=${RELEASE}/" /opt/hoarder/.env
|
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
@ -79,4 +81,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
@ -45,6 +45,8 @@ function update_script() {
|
|||||||
cd /opt/tandoor/vue
|
cd /opt/tandoor/vue
|
||||||
yarn install >/dev/null 2>&1
|
yarn install >/dev/null 2>&1
|
||||||
yarn build >/dev/null 2>&1
|
yarn build >/dev/null 2>&1
|
||||||
|
cd /opt/tandoor
|
||||||
|
python3 version.py &>/dev/null
|
||||||
systemctl restart gunicorn_tandoor
|
systemctl restart gunicorn_tandoor
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
fi
|
fi
|
||||||
@ -58,4 +60,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8002${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8002${CL}"
|
||||||
|
@ -78,7 +78,8 @@ $STD pnpm install --frozen-lockfile
|
|||||||
|
|
||||||
export DATA_DIR=/opt/hoarder_data
|
export DATA_DIR=/opt/hoarder_data
|
||||||
HOARDER_SECRET=$(openssl rand -base64 36 | cut -c1-24)
|
HOARDER_SECRET=$(openssl rand -base64 36 | cut -c1-24)
|
||||||
cat <<EOF >/opt/hoarder/.env
|
mkdir -p /etc/hoarder
|
||||||
|
cat <<EOF >/etc/hoarder/hoarder.env
|
||||||
SERVER_VERSION=$RELEASE
|
SERVER_VERSION=$RELEASE
|
||||||
NEXTAUTH_SECRET="$HOARDER_SECRET"
|
NEXTAUTH_SECRET="$HOARDER_SECRET"
|
||||||
NEXTAUTH_URL="http://localhost:3000"
|
NEXTAUTH_URL="http://localhost:3000"
|
||||||
@ -129,7 +130,7 @@ After=network.target hoarder-workers.service
|
|||||||
[Service]
|
[Service]
|
||||||
ExecStart=pnpm start
|
ExecStart=pnpm start
|
||||||
WorkingDirectory=/opt/hoarder/apps/web
|
WorkingDirectory=/opt/hoarder/apps/web
|
||||||
EnvironmentFile=/opt/hoarder/.env
|
EnvironmentFile=/etc/hoarder/hoarder.env
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
@ -159,7 +160,7 @@ After=network.target hoarder-browser.service meilisearch.service
|
|||||||
[Service]
|
[Service]
|
||||||
ExecStart=pnpm start:prod
|
ExecStart=pnpm start:prod
|
||||||
WorkingDirectory=/opt/hoarder/apps/workers
|
WorkingDirectory=/opt/hoarder/apps/workers
|
||||||
EnvironmentFile=/opt/hoarder/.env
|
EnvironmentFile=/etc/hoarder/hoarder.env
|
||||||
Restart=always
|
Restart=always
|
||||||
TimeoutStopSec=5
|
TimeoutStopSec=5
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ color() {
|
|||||||
INFO="${TAB}💡${TAB}${CL}"
|
INFO="${TAB}💡${TAB}${CL}"
|
||||||
OS="${TAB}🖥️${TAB}${CL}"
|
OS="${TAB}🖥️${TAB}${CL}"
|
||||||
OSVERSION="${TAB}🌟${TAB}${CL}"
|
OSVERSION="${TAB}🌟${TAB}${CL}"
|
||||||
CONTAINERTYPE="${TAB}📦${TAB}${CL}"
|
CONTAINERTYPE="${TAB}📦${TAB}${CL}"
|
||||||
DISKSIZE="${TAB}💾${TAB}${CL}"
|
DISKSIZE="${TAB}💾${TAB}${CL}"
|
||||||
CPUCORE="${TAB}🧠${TAB}${CL}"
|
CPUCORE="${TAB}🧠${TAB}${CL}"
|
||||||
RAMSIZE="${TAB}🛠️${TAB}${CL}"
|
RAMSIZE="${TAB}🛠️${TAB}${CL}"
|
||||||
@ -283,8 +283,9 @@ base_settings() {
|
|||||||
MAC=""
|
MAC=""
|
||||||
VLAN=""
|
VLAN=""
|
||||||
SSH="no"
|
SSH="no"
|
||||||
|
SSH_AUTHORIZED_KEY=""
|
||||||
TAGS="community-script;"
|
TAGS="community-script;"
|
||||||
|
|
||||||
# Override default settings with variables from ct script
|
# Override default settings with variables from ct script
|
||||||
CT_TYPE=${var_unprivileged:-$CT_TYPE}
|
CT_TYPE=${var_unprivileged:-$CT_TYPE}
|
||||||
DISK_SIZE=${var_disk:-$DISK_SIZE}
|
DISK_SIZE=${var_disk:-$DISK_SIZE}
|
||||||
@ -292,7 +293,7 @@ base_settings() {
|
|||||||
RAM_SIZE=${var_ram:-$RAM_SIZE}
|
RAM_SIZE=${var_ram:-$RAM_SIZE}
|
||||||
VERB=${var_verbose:-$VERBOSE}
|
VERB=${var_verbose:-$VERBOSE}
|
||||||
TAGS="${TAGS}${var_tags:-}"
|
TAGS="${TAGS}${var_tags:-}"
|
||||||
|
|
||||||
# Since these 2 are only defined outside of default_settings function, we add a temporary fallback. TODO: To align everything, we should add these as constant variables (e.g. OSTYPE and OSVERSION), but that would currently require updating the default_settings function for all existing scripts
|
# Since these 2 are only defined outside of default_settings function, we add a temporary fallback. TODO: To align everything, we should add these as constant variables (e.g. OSTYPE and OSVERSION), but that would currently require updating the default_settings function for all existing scripts
|
||||||
if [ -z "$var_os" ]; then
|
if [ -z "$var_os" ]; then
|
||||||
var_os="debian"
|
var_os="debian"
|
||||||
@ -314,9 +315,9 @@ echo_default() {
|
|||||||
echo -e "${OS}${BOLD}${DGN}Operating System: ${BGN}$var_os${CL}"
|
echo -e "${OS}${BOLD}${DGN}Operating System: ${BGN}$var_os${CL}"
|
||||||
echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}"
|
echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}"
|
||||||
echo -e "${CONTAINERTYPE}${BOLD}${DGN}Container Type: ${BGN}$CT_TYPE_DESC${CL}"
|
echo -e "${CONTAINERTYPE}${BOLD}${DGN}Container Type: ${BGN}$CT_TYPE_DESC${CL}"
|
||||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}GB${CL}"
|
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE} GB${CL}"
|
||||||
echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}${CORE_COUNT}${CL}"
|
echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}${CORE_COUNT}${CL}"
|
||||||
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}MiB${CL}"
|
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE} MiB${CL}"
|
||||||
echo -e "${CONTAINERID}${BOLD}${DGN}Container ID: ${BGN}${CT_ID}${CL}"
|
echo -e "${CONTAINERID}${BOLD}${DGN}Container ID: ${BGN}${CT_ID}${CL}"
|
||||||
if [ "$VERB" == "yes" ]; then
|
if [ "$VERB" == "yes" ]; then
|
||||||
echo -e "${SEARCH}${BOLD}${DGN}Verbose Mode: ${BGN}Enabled${CL}"
|
echo -e "${SEARCH}${BOLD}${DGN}Verbose Mode: ${BGN}Enabled${CL}"
|
||||||
@ -463,13 +464,13 @@ advanced_settings() {
|
|||||||
if DISK_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Disk Size in GB" 8 58 $var_disk --title "DISK SIZE" 3>&1 1>&2 2>&3); then
|
if DISK_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Disk Size in GB" 8 58 $var_disk --title "DISK SIZE" 3>&1 1>&2 2>&3); then
|
||||||
if [ -z "$DISK_SIZE" ]; then
|
if [ -z "$DISK_SIZE" ]; then
|
||||||
DISK_SIZE="$var_disk"
|
DISK_SIZE="$var_disk"
|
||||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}GB${CL}"
|
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE} GB${CL}"
|
||||||
else
|
else
|
||||||
if ! [[ $DISK_SIZE =~ $INTEGER ]]; then
|
if ! [[ $DISK_SIZE =~ $INTEGER ]]; then
|
||||||
echo -e "{INFO}${HOLD}${RD} DISK SIZE MUST BE AN INTEGER NUMBER!${CL}"
|
echo -e "{INFO}${HOLD}${RD} DISK SIZE MUST BE AN INTEGER NUMBER!${CL}"
|
||||||
advanced_settings
|
advanced_settings
|
||||||
fi
|
fi
|
||||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}GB${CL}"
|
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE} GB${CL}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
exit_script
|
exit_script
|
||||||
@ -489,9 +490,9 @@ advanced_settings() {
|
|||||||
if RAM_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate RAM in MiB" 8 58 $var_ram --title "RAM" 3>&1 1>&2 2>&3); then
|
if RAM_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate RAM in MiB" 8 58 $var_ram --title "RAM" 3>&1 1>&2 2>&3); then
|
||||||
if [ -z "$RAM_SIZE" ]; then
|
if [ -z "$RAM_SIZE" ]; then
|
||||||
RAM_SIZE="$var_ram"
|
RAM_SIZE="$var_ram"
|
||||||
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}MiB${CL}"
|
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE} MiB${CL}"
|
||||||
else
|
else
|
||||||
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}MiB${CL}"
|
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE} MiB${CL}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
exit_script
|
exit_script
|
||||||
@ -649,6 +650,15 @@ advanced_settings() {
|
|||||||
echo -e "${ROOTSSH}${BOLD}${DGN}Root SSH Access: ${BGN}$SSH${CL}"
|
echo -e "${ROOTSSH}${BOLD}${DGN}Root SSH Access: ${BGN}$SSH${CL}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ "${SSH}" == "yes" ]]; then
|
||||||
|
SSH_AUTHORIZED_KEY="$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "SSH Authorized key for root (leave empty for none)" 8 58 --title "SSH Key" 3>&1 1>&2 2>&3)"
|
||||||
|
|
||||||
|
if [[ -z "${SSH_AUTHORIZED_KEY}" ]]; then
|
||||||
|
echo "Warning: No SSH key provided."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
SSH_AUTHORIZED_KEY=""
|
||||||
|
fi
|
||||||
if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "VERBOSE MODE" --yesno "Enable Verbose Mode?" 10 58); then
|
if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "VERBOSE MODE" --yesno "Enable Verbose Mode?" 10 58); then
|
||||||
VERB="yes"
|
VERB="yes"
|
||||||
else
|
else
|
||||||
@ -697,15 +707,15 @@ install_script() {
|
|||||||
header_info
|
header_info
|
||||||
echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME${CL}"
|
echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME${CL}"
|
||||||
VERB="no"
|
VERB="no"
|
||||||
base_settings "$VERB"
|
base_settings "$VERB"
|
||||||
echo_default
|
echo_default
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
header_info
|
header_info
|
||||||
echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME (${SEARCH}${BL}Verbose)${CL}"
|
echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME (${SEARCH}Verbose)${CL}"
|
||||||
VERB="yes"
|
VERB="yes"
|
||||||
base_settings "$VERB"
|
base_settings "$VERB"
|
||||||
echo_default
|
echo_default
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
@ -729,13 +739,13 @@ install_script() {
|
|||||||
check_container_resources() {
|
check_container_resources() {
|
||||||
# Check actual RAM & Cores
|
# Check actual RAM & Cores
|
||||||
current_ram=$(free -m | awk 'NR==2{print $2}')
|
current_ram=$(free -m | awk 'NR==2{print $2}')
|
||||||
current_cpu=$(nproc)
|
current_cpu=$(nproc)
|
||||||
|
|
||||||
# Check whether the current RAM is less than the required RAM or the CPU cores are less than required
|
# Check whether the current RAM is less than the required RAM or the CPU cores are less than required
|
||||||
if [[ "$current_ram" -lt "$var_ram" ]] || [[ "$current_cpu" -lt "$var_cpu" ]]; then
|
if [[ "$current_ram" -lt "$var_ram" ]] || [[ "$current_cpu" -lt "$var_cpu" ]]; then
|
||||||
echo -e "\n${INFO}${HOLD} ${GN}Required: ${var_cpu} CPU, ${var_ram}MB RAM ${CL}| ${RD}Current: ${current_cpu} CPU, ${current_ram}MB RAM${CL}"
|
echo -e "\n${INFO}${HOLD} ${GN}Required: ${var_cpu} CPU, ${var_ram}MB RAM ${CL}| ${RD}Current: ${current_cpu} CPU, ${current_ram}MB RAM${CL}"
|
||||||
echo -e "${YWB}Please ensure that the ${APP} LXC is configured with at least ${var_cpu} vCPU and ${var_ram} MB RAM for the build process.${CL}\n"
|
echo -e "${YWB}Please ensure that the ${APP} LXC is configured with at least ${var_cpu} vCPU and ${var_ram} MB RAM for the build process.${CL}\n"
|
||||||
read -r -p "${INFO}${HOLD} May cause data loss! ${INFO} Continue update with under-provisioned LXC? <yes/No> " prompt
|
read -r -p "${INFO}${HOLD} May cause data loss! ${INFO} Continue update with under-provisioned LXC? <yes/No> " prompt
|
||||||
# Check if the input is 'yes', otherwise exit with status 1
|
# Check if the input is 'yes', otherwise exit with status 1
|
||||||
if [[ ! ${prompt,,} =~ ^(yes)$ ]]; then
|
if [[ ! ${prompt,,} =~ ^(yes)$ ]]; then
|
||||||
echo -e "${CROSS}${HOLD} ${YWB}Exiting based on user input.${CL}"
|
echo -e "${CROSS}${HOLD} ${YWB}Exiting based on user input.${CL}"
|
||||||
@ -754,7 +764,7 @@ check_container_storage() {
|
|||||||
if (( usage > 80 )); then
|
if (( usage > 80 )); then
|
||||||
# Prompt the user for confirmation to continue
|
# Prompt the user for confirmation to continue
|
||||||
echo -e "${INFO}${HOLD} ${YWB}Warning: Storage is dangerously low (${usage}%).${CL}"
|
echo -e "${INFO}${HOLD} ${YWB}Warning: Storage is dangerously low (${usage}%).${CL}"
|
||||||
read -r -p "Continue anyway? <y/N> " prompt
|
read -r -p "Continue anyway? <y/N> " prompt
|
||||||
# Check if the input is 'y' or 'yes', otherwise exit with status 1
|
# Check if the input is 'y' or 'yes', otherwise exit with status 1
|
||||||
if [[ ! ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ! ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
echo -e "${CROSS}${HOLD}${YWB}Exiting based on user input.${CL}"
|
echo -e "${CROSS}${HOLD}${YWB}Exiting based on user input.${CL}"
|
||||||
|
Loading…
Reference in New Issue
Block a user