mirror of
https://github.com/community-scripts/ProxmoxVE
synced 2025-01-31 04:50:14 +00:00
Compare commits
21 Commits
1638e104e2
...
926fac9422
Author | SHA1 | Date | |
---|---|---|---|
|
926fac9422 | ||
|
f8f166e26f | ||
|
b97d40bf5a | ||
|
0e443536cc | ||
|
0b73d9f689 | ||
|
5c11b67507 | ||
|
2f20db8a42 | ||
|
b04dc0261b | ||
|
f3db85739e | ||
|
66015ba45c | ||
|
303f08e488 | ||
|
1f1e0c31bf | ||
|
36c004706b | ||
|
7f69965576 | ||
|
f8f890f01f | ||
|
8b691a5b79 | ||
|
496792f102 | ||
|
46669f4cfe | ||
|
0ae1c6492b | ||
|
ebcb0e846b | ||
|
aca900782e |
1
.github/CONTRIBUTING.md
vendored
1
.github/CONTRIBUTING.md
vendored
@ -2,6 +2,7 @@
|
||||
# Community Scripts Contribution Guide
|
||||
|
||||
## **Welcome to the communty-scripts Repository!**
|
||||
|
||||
📜 These documents outline the essential coding standards for all our scripts and JSON files. Adhering to these standards ensures that our codebase remains consistent, readable, and maintainable. By following these guidelines, we can improve collaboration, reduce errors, and enhance the overall quality of our project.
|
||||
|
||||
### Why Coding Standards Matter
|
||||
|
@ -23,10 +23,14 @@ Do not break established syntax in this file, as it is automatically updated by
|
||||
|
||||
### 💥 Breaking Changes
|
||||
|
||||
- **READ GUIDE FIRST** breaking change: Homeassistant-Core upgrade os and python3 [@MickLesk](https://github.com/MickLesk) ([#1550](https://github.com/community-scripts/ProxmoxVE/pull/1550))
|
||||
- Update Openwrt: Delete lines that do WAN input and forward accept [@chackl1990](https://github.com/chackl1990) ([#1540](https://github.com/community-scripts/ProxmoxVE/pull/1540))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- added cifs support in ubuntu2404-vm.sh [@plonxyz](https://github.com/plonxyz) ([#1461](https://github.com/community-scripts/ProxmoxVE/pull/1461))
|
||||
- Fix linkwarden update [@burgerga](https://github.com/burgerga) ([#1565](https://github.com/community-scripts/ProxmoxVE/pull/1565))
|
||||
- [jellyseerr] Update nodejs if not up-to-date [@makstech](https://github.com/makstech) ([#1563](https://github.com/community-scripts/ProxmoxVE/pull/1563))
|
||||
- Update VM Tags [@oOStroudyOo](https://github.com/oOStroudyOo) ([#1562](https://github.com/community-scripts/ProxmoxVE/pull/1562))
|
||||
- Update apt-cacher-ng.sh: Typo/Missing $ [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1545](https://github.com/community-scripts/ProxmoxVE/pull/1545))
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: tteck (tteckster) | Co-Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.home-assistant.io/
|
||||
|
||||
@ -9,10 +9,10 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
|
||||
APP="Home Assistant-Core"
|
||||
var_tags="automation;smarthome"
|
||||
var_cpu="2"
|
||||
var_ram="1024"
|
||||
var_disk="8"
|
||||
var_ram="2048"
|
||||
var_disk="10"
|
||||
var_os="ubuntu"
|
||||
var_version="24.04"
|
||||
var_version="24.10"
|
||||
var_unprivileged="1"
|
||||
|
||||
# App Output & Base Settings
|
||||
@ -26,6 +26,13 @@ catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
|
||||
# OS Check
|
||||
if ! lsb_release -d | grep -q "Ubuntu 24.10"; then
|
||||
msg_error "Wrong OS detected. This script only supports Ubuntu 24.10."
|
||||
msg_error "Read Guide: https://github.com/community-scripts/ProxmoxVE/discussions/1549"
|
||||
exit 1
|
||||
fi
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /srv/homeassistant ]]; then
|
||||
@ -51,17 +58,13 @@ function update_script() {
|
||||
echo -e "${GN}Updating to Stable Version${CL}"
|
||||
BR=""
|
||||
fi
|
||||
if [[ "$PY" =~ ^python3\.(11|12)\.[0-9]+$ ]]; then
|
||||
echo -e "⚠️ Home Assistant will soon require Python 3.13.x";
|
||||
fi
|
||||
|
||||
msg_info "Stopping Home Assistant"
|
||||
systemctl stop homeassistant
|
||||
msg_ok "Stopped Home Assistant"
|
||||
|
||||
msg_info "Updating Home Assistant"
|
||||
source /srv/homeassistant/bin/activate
|
||||
uv pip install ${BR}--upgrade homeassistant &>/dev/null
|
||||
pip install ${BR}--upgrade homeassistant &>/dev/null
|
||||
msg_ok "Updated Home Assistant"
|
||||
|
||||
msg_info "Starting Home Assistant"
|
||||
@ -75,7 +78,7 @@ function update_script() {
|
||||
if [ "$UPD" == "2" ]; then
|
||||
msg_info "Installing Home Assistant Community Store (HACS)"
|
||||
apt update &>/dev/null
|
||||
apt install unzip &>/dev/null
|
||||
apt install -y unzip &>/dev/null
|
||||
cd .homeassistant
|
||||
bash <(curl -fsSL https://get.hacs.xyz) &>/dev/null
|
||||
msg_ok "Installed Home Assistant Community Store (HACS)"
|
||||
@ -102,16 +105,19 @@ function update_script() {
|
||||
msg_ok "Installed FileBrowser"
|
||||
|
||||
msg_info "Creating Service"
|
||||
service_path="/etc/systemd/system/filebrowser.service"
|
||||
echo "[Unit]
|
||||
cat <<EOF > /etc/systemd/system/filebrowser.service
|
||||
[Unit]
|
||||
Description=Filebrowser
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
User=root
|
||||
WorkingDirectory=/root/
|
||||
ExecStart=/usr/local/bin/filebrowser -r /root/.homeassistant
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target" >$service_path
|
||||
WantedBy=default.target
|
||||
EOF
|
||||
|
||||
systemctl enable --now -q filebrowser.service
|
||||
msg_ok "Created Service"
|
||||
@ -130,4 +136,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
|
72
ct/mealie.sh
Normal file
72
ct/mealie.sh
Normal file
@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: TheRealVira
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/mealie-recipes/mealie
|
||||
|
||||
# App Default Values
|
||||
APP="mealie"
|
||||
var_tags="food"
|
||||
var_cpu="2"
|
||||
var_ram="2048"
|
||||
var_disk="6"
|
||||
var_os="debian"
|
||||
var_version="12"
|
||||
var_unprivileged="1"
|
||||
|
||||
# App Output & Base Settings
|
||||
header_info "$APP"
|
||||
base_settings
|
||||
|
||||
# Core
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
# Check if installation is present | -f for file, -d for folder
|
||||
if [[ ! -d "/opt/${APP}" ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -s https://api.github.com/repos/mealie-recipes/mealie/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f "/opt/${APP}_version.txt" ]]; then
|
||||
# Crawling the new version and checking whether an update is required
|
||||
msg_info "Updating System"
|
||||
apt-get update &>/dev/null
|
||||
apt-get -y upgrade &>/dev/null
|
||||
msg_ok "Updated System"
|
||||
|
||||
# Execute Update
|
||||
msg_info "Updating ${APP}"
|
||||
# TBD
|
||||
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
# Cleaning up
|
||||
msg_info "Cleaning Up"
|
||||
rm "${RELEASE}.zip"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleanup Completed"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9000${CL}"
|
@ -44,34 +44,36 @@ $STD apt-get install -y \
|
||||
libavfilter-dev \
|
||||
libmariadb-dev-compat \
|
||||
libatlas-base-dev \
|
||||
software-properties-common
|
||||
software-properties-common \
|
||||
libmariadb-dev \
|
||||
pkg-config
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD add-apt-repository -y ppa:deadsnakes/ppa
|
||||
msg_info "Setup Python3/pip"
|
||||
$STD apt-get update
|
||||
$STD rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
$STD apt-get remove --purge -y python3.12 python3.12-dev python3.12-venv
|
||||
|
||||
$STD apt-get install -y \
|
||||
python3.13-* \
|
||||
python3.13 \
|
||||
python3-pip \
|
||||
python3.13-dev \
|
||||
python3.13-venv
|
||||
msg_ok "Setup Python3"
|
||||
|
||||
msg_info "Installing UV"
|
||||
$STD pip install uv
|
||||
msg_ok "Installed UV"
|
||||
ln -sf /usr/bin/python3.13 /usr/bin/python3
|
||||
msg_ok "Setup Python3"
|
||||
|
||||
msg_info "Setting up Home Assistant-Core environment"
|
||||
mkdir /srv/homeassistant
|
||||
cd /srv/homeassistant
|
||||
uv venv . &>/dev/null
|
||||
python3 -m venv .
|
||||
source bin/activate
|
||||
msg_ok "Created virtual environment with UV"
|
||||
msg_ok "Created virtual environment"
|
||||
|
||||
msg_info "Installing Home Assistant-Core and packages"
|
||||
$STD uv pip install webrtcvad wheel homeassistant mysqlclient psycopg2-binary isal
|
||||
msg_info "Installing Home Assistant-Core"
|
||||
$STD python3 -m pip install webrtcvad wheel homeassistant mysqlclient psycopg2-binary isal
|
||||
mkdir -p /root/.homeassistant
|
||||
msg_ok "Installed Home Assistant-Core and required packages"
|
||||
msg_ok "Installed Home Assistant-Core"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/homeassistant.service
|
||||
@ -97,4 +99,4 @@ customize
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Cleaned"
|
120
install/mealie-install.sh
Normal file
120
install/mealie-install.sh
Normal file
@ -0,0 +1,120 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: TheRealVira
|
||||
# License: MIT
|
||||
# Source: https://github.com/mealie-recipes/mealie
|
||||
|
||||
# Import Functions und Setup
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
nodejs \
|
||||
npm \
|
||||
sudo \
|
||||
git \
|
||||
python3 \
|
||||
curl \
|
||||
mc \
|
||||
build-essential \
|
||||
libwebp-dev \
|
||||
libsasl2-dev \
|
||||
libldap2-dev \
|
||||
libssl-dev \
|
||||
gnupg \
|
||||
gnupg2 \
|
||||
gnupg1 \
|
||||
gosu \
|
||||
iproute2 \
|
||||
libldap-common \
|
||||
libldap-2.5
|
||||
|
||||
mkdir /app
|
||||
npm install -g yarn
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
RELEASE=$(curl -s https://api.github.com/repos/mealie-recipes/mealie/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
msg_info "Downloading mealie ${RELEASE}"
|
||||
wget -q "https://github.com/mealie-recipes/mealie/archive/refs/tags/${RELEASE}.zip"
|
||||
unzip "${RELEASE}.zip" -d /app/mealie
|
||||
echo "${RELEASE}" >/app/mealie_version.txt
|
||||
msg_ok "Downloading mealie ${RELEASE}"
|
||||
|
||||
msg_info "Setting up frontend"
|
||||
cd /app/mealie
|
||||
/usr/local/bin/yarn install \
|
||||
--prefer-offline \
|
||||
--frozen-lockfile \
|
||||
--non-interactive \
|
||||
--production=false \
|
||||
--network-timeout=1000000
|
||||
/usr/local/bin/yarn generate
|
||||
msg_ok "Setting up frontend"
|
||||
|
||||
msg_info "Setting up ENV"
|
||||
cat <<EOF >>/etc/environment
|
||||
MEALIE_HOME="/app"
|
||||
|
||||
PYTHONUNBUFFERED=1
|
||||
PYTHONDONTWRITEBYTECODE=1
|
||||
PIP_NO_CACHE_DIR=off
|
||||
PIP_DISABLE_PIP_VERSION_CHECK=on
|
||||
PIP_DEFAULT_TIMEOUT=100
|
||||
POETRY_HOME="/opt/poetry"
|
||||
POETRY_VIRTUALENVS_IN_PROJECT=true
|
||||
POETRY_NO_INTERACTION=1
|
||||
POETRY_VERSION=1.3.1
|
||||
PYSETUP_PATH="/opt/pysetup"
|
||||
VENV_PATH="/opt/pysetup/.venv"
|
||||
|
||||
PRODUCTION=true
|
||||
TESTING=false
|
||||
LD_LIBRARY_PATH=/usr/local/lib
|
||||
APP_PORT=9000
|
||||
STATIC_FILES=/spa/static
|
||||
HOST 0.0.0.0
|
||||
EOF
|
||||
export PATH="$POETRY_HOME/bin:$VENV_PATH/bin:$PATH"
|
||||
set -a; source /etc/environment; set +a;
|
||||
msg_ok "Setting up ENV"
|
||||
|
||||
msg_info "Create user account"
|
||||
useradd -u 911 -U -d $MEALIE_HOME -s /bin/bash abc
|
||||
usermod -G users abc
|
||||
msg_ok "Create user account"
|
||||
|
||||
msg_info "Builder Image"
|
||||
pip install -U --no-cache-dir pip
|
||||
curl -sSL https://install.python-poetry.org | python3 -
|
||||
cd $PYSETUP_PATH
|
||||
cp ./poetry.lock ./pyproject.toml ./
|
||||
poetry install -E pgsql --only main
|
||||
msg_ok "Builder Image"
|
||||
|
||||
msg_info "CRFPP Image"
|
||||
mkdir -p /run/secrets
|
||||
cp ./mealie $MEALIE_HOME/mealie
|
||||
cp ./poetry.lock ./pyproject.toml $MEALIE_HOME/
|
||||
cd $MEALIE_HOME
|
||||
. $VENV_PATH/bin/activate
|
||||
poetry install -E pgsql --only main
|
||||
cd ~
|
||||
python $MEALIE_HOME/mealie/scripts/install_model.py
|
||||
msg_ok "CRFPP Image"
|
||||
|
||||
msg_info "Copy Frontend"
|
||||
cp /app/dist $STATIC_FILES
|
||||
cp ./docker/entry.sh $MEALIE_HOME/run.sh
|
||||
chmod +x $MEALIE_HOME/run.sh
|
||||
$MEALIE_HOME/run.sh
|
||||
msg_ok "Copy Frontend"
|
||||
|
||||
motd_ssh
|
||||
customize
|
@ -4,7 +4,7 @@
|
||||
"categories": [
|
||||
2
|
||||
],
|
||||
"date_created": "2024-04-29",
|
||||
"date_created": "2025-01-17",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
@ -19,10 +19,10 @@
|
||||
"script": "ct/homeassistant-core.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 8,
|
||||
"ram": 2048,
|
||||
"hdd": 10,
|
||||
"os": "ubuntu",
|
||||
"version": "24.04"
|
||||
"version": "24.10"
|
||||
}
|
||||
}
|
||||
],
|
||||
@ -40,7 +40,7 @@
|
||||
"type": "warning"
|
||||
},
|
||||
{
|
||||
"text": "Use Ubuntu 24.04 ONLY",
|
||||
"text": "Use Ubuntu 24.10 ONLY",
|
||||
"type": "warning"
|
||||
},
|
||||
{
|
||||
@ -48,4 +48,4 @@
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
34
json/mealie.json
Normal file
34
json/mealie.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "mealie",
|
||||
"slug": "mealie",
|
||||
"categories": [
|
||||
0
|
||||
],
|
||||
"date_created": "2025-01-01",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 9000,
|
||||
"documentation": "https://docs.mealie.io/",
|
||||
"website": "https://mealie.io/",
|
||||
"logo": "https://raw.githubusercontent.com/mealie-recipes/mealie/refs/heads/mealie-next/docs/docs/assets/img/favicon.png",
|
||||
"description": "A self-hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/mealie.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 6,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
@ -370,7 +370,7 @@ msg_ok "Downloaded ${CL}${BL}${FILE}${CL}"
|
||||
|
||||
STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
|
||||
case $STORAGE_TYPE in
|
||||
nfs | dir)
|
||||
nfs | dir | cifs)
|
||||
DISK_EXT=".qcow2"
|
||||
DISK_REF="$VMID/"
|
||||
DISK_IMPORT="-format qcow2"
|
||||
|
Loading…
Reference in New Issue
Block a user