1
0
mirror of https://github.com/community-scripts/ProxmoxVE.git synced 2025-04-19 01:18:07 +00:00
* Plant-it

* update source

* fix header

* Update json/plant-it.json

Co-authored-by: Bas van den Berg <74251551+bvdberg01@users.noreply.github.com>

* Update plant-it.sh

---------

Co-authored-by: Bas van den Berg <74251551+bvdberg01@users.noreply.github.com>
This commit is contained in:
CanbiZ 2025-03-11 12:01:10 +01:00 committed by GitHub
parent a0f7643838
commit 293a220719
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 252 additions and 0 deletions

64
ct/plant-it.sh Normal file
View File

@ -0,0 +1,64 @@
#!/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: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://plant-it.org/
APP="Plant-it"
var_tags="plants;garden"
var_cpu="2"
var_ram="2048"
var_disk="5"
var_os="debian"
var_version="12"
var_unprivileged="1"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/plant-it ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/MDeLuise/plant-it/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
msg_info "Stopping $APP"
systemctl stop plant-it
msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
wget -q -O /opt/plant-it/server.jar "https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/server.jar"
cd /opt/plant-it/frontend
wget -q https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/client.tar.gz
tar -xzf client.tar.gz
rm -f client.tar.gz
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP"
systemctl start plant-it
msg_ok "Started $APP"
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at v${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}:3000${CL}"

145
install/plant-it-install.sh Normal file
View File

@ -0,0 +1,145 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://plant-it.org/
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 \
curl \
mc \
sudo \
gnupg2 \
mariadb-server \
redis \
nginx
msg_ok "Installed Dependencies"
msg_info "Setting up Adoptium Repository"
mkdir -p /etc/apt/keyrings
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor >/etc/apt/trusted.gpg.d/adoptium.gpg
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" >/etc/apt/sources.list.d/adoptium.list
$STD apt-get update
msg_ok "Set up Adoptium Repository"
msg_info "Installing Temurin JDK 21 (LTS)"
$STD apt-get install -y temurin-21-jdk
msg_ok "Setup Temurin JDK 21 (LTS)"
msg_info "Setting up MariaDB"
JWT_SECRET=$(openssl rand -base64 24 | tr -d '/+=')
DB_NAME=plantit
DB_USER=plantit_usr
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD mysql -u root -e "CREATE DATABASE $DB_NAME;"
$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
{
echo "Plant-it Credentials"
echo "Plant-it Database User: $DB_USER"
echo "Plant-it Database Password: $DB_PASS"
echo "Plant-it Database Name: $DB_NAME"
} >>~/plant-it.creds
msg_ok "Set up MariaDB"
msg_info "Setup Plant-it"
RELEASE=$(curl -s https://api.github.com/repos/MDeLuise/plant-it/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
wget -q https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/server.jar
mkdir -p /opt/plant-it/{backend,frontend}
mkdir -p /opt/plant-it-data
mv -f server.jar /opt/plant-it/backend/server.jar
cat <<EOF >/opt/plant-it/backend/server.env
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USERNAME=$DB_USER
MYSQL_PSW=$DB_PASS
MYSQL_DATABASE=$DB_NAME
MYSQL_ROOT_PASSWORD=$DB_PASS
JWT_SECRET=$JWT_SECRET
JWT_EXP=1
USERS_LIMIT=-1
UPLOAD_DIR=/opt/plant-it-data
API_PORT=8080
FLORACODEX_KEY=
LOG_LEVEL=DEBUG
ALLOWED_ORIGINS=*
CACHE_TYPE=redis
CACHE_TTL=86400
CACHE_HOST=localhost
CACHE_PORT=6379
EOF
cd /opt/plant-it/frontend
wget -q https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/client.tar.gz
tar -xzf client.tar.gz
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Setup Plant-it"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/plant-it.service
[Unit]
Description=Plant-it Backend Service
After=syslog.target network.target
[Service]
Type=simple
WorkingDirectory=/opt/plant-it/backend
EnvironmentFile=/opt/plant-it/backend/server.env
ExecStart=/usr/bin/java -jar -Xmx2g server.jar
TimeoutStopSec=20
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl enable --now -q plant-it
cat <<EOF >/etc/nginx/nginx.conf
events {
worker_connections 1024;
}
http {
server {
listen 3000;
server_name localhost;
root /opt/plant-it/frontend;
index index.html;
location / {
try_files \$uri \$uri/ /index.html;
}
error_page 404 /404.html;
location = /404.html {
internal;
}
}
}
EOF
systemctl restart nginx
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -rf /opt/plant-it/frontend/client.tar.gz
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

43
json/plant-it.json Normal file
View File

@ -0,0 +1,43 @@
{
"name": "Plant-it",
"slug": "plant-it",
"categories": [
24
],
"date_created": "2025-03-11",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3000,
"documentation": "https://docs.plant-it.org/latest/",
"website": "https://plant-it.org/",
"logo": "https://raw.githubusercontent.com/MDeLuise/plant-it/refs/heads/main/images/plant-it-logo.png",
"description": "Plant-it is a self-hosted, open-source app designed to help users manage and track plant care. It allows users to add plants, log activities like watering, fertilizing, and pruning, set reminders, and upload photos for visual tracking. The app includes a database of over 400,000 plant species, offering detailed care information such as optimal growing conditions and maintenance tips.\n\nUsers can organize their plant collection, monitor growth, and share data with others. The app is free to use and works on Android, iOS, and the web.",
"install_methods": [
{
"type": "default",
"script": "ct/plant-it.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 5,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "This Script use Adoptium JDK 21 - Sometimes the installation of these takes a while",
"type": "info"
},
{
"text": "After the initial start, the backend requires approx. 1-2 minutes boot time",
"type": "info"
}
]
}