pull/2563/head
CanbiZ 1 year ago
commit 1377a28240
  1. 7
      CHANGELOG.md
  2. 24
      ct/tandoor.sh
  3. 123
      install/tandoor-install.sh
  4. 9
      misc/build.func

@ -10,6 +10,13 @@
- All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment. - All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
- 🚨 **The scripts in the repository will no longer provide support for Proxmox VE 7 starting from July 2024 (scripts will not execute on PVE7). Subsequent <a href='https://forum.proxmox.com/threads/proxmox-ve-support-lifecycle.35755/' target='_blank' rel='noopener noreferrer'>Proxmox VE - Support Lifecycle</a>** - 🚨 **The scripts in the repository will no longer provide support for Proxmox VE 7 starting from July 2024 (scripts will not execute on PVE7). Subsequent <a href='https://forum.proxmox.com/threads/proxmox-ve-support-lifecycle.35755/' target='_blank' rel='noopener noreferrer'>Proxmox VE - Support Lifecycle</a>**
## 2024-02-23
### Changed
- **Tandoor Recipes LXC**
- NEW Script (Thanks @MickLesk)
## 2024-02-21 ## 2024-02-21
### Changed ### Changed

@ -1,27 +1,28 @@
#!/usr/bin/env bash #!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func) source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck # Copyright (c) 2021-2024 tteck
# Author: MickLesk (Canbiz) # Author: tteck
# Co-Author: MickLesk (Canbiz)
# License: MIT # License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE # https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info { function header_info {
clear clear
cat <<"EOF" cat <<"EOF"
______ __ ______ __ ____ _
/_ __/___ _____ ____/ /___ ____ _____ /_ __/___ _____ ____/ /___ ____ _____ / __ \___ _____(_)___ ___ _____
/ / / __ `/ __ \/ __ / __ \/ __ \/ ___/ / / / __ `/ __ \/ __ / __ \/ __ \/ ___/ / /_/ / _ \/ ___/ / __ \/ _ \/ ___/
/ / / /_/ / / / / /_/ / /_/ / /_/ / / / / / /_/ / / / / /_/ / /_/ / /_/ / / / _, _/ __/ /__/ / /_/ / __(__ )
/_/ \__,_/_/ /_/\__,_/\____/\____/_/ /_/ \__,_/_/ /_/\__,_/\____/\____/_/ /_/ |_|\___/\___/_/ .___/\___/____/
/_/
EOF EOF
} }
header_info header_info
echo -e "Loading..." echo -e "Loading..."
APP="Tandoor" APP="Tandoor"
var_disk="10" var_disk="10"
var_cpu="2" var_cpu="4"
var_ram="1024" var_ram="4096"
var_os="debian" var_os="debian"
var_version="12" var_version="12"
variables variables
@ -79,6 +80,11 @@ start
build_container build_container
description description
msg_info "Setting Container to Normal Resources"
pct set $CTID -memory 2048
pct set $CTID -cores 2
msg_ok "Set Container to Normal Resources"
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${APP} Setup should be reachable by going to the following URL. echo -e "${APP} Setup should be reachable by going to the following URL.
${BL}http://${IP}:8002${CL} \n" ${BL}http://${IP}:8002${CL} \n"

@ -1,7 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Copyright (c) 2021-2024 tteck # Copyright (c) 2021-2024 tteck
# Author: MickLesk (Canbiz) # Author: tteck
# Co-Author: MickLesk (Canbiz)
# License: MIT # License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE # https://github.com/tteck/Proxmox/raw/main/LICENSE
@ -15,11 +16,6 @@ update_os
msg_info "Installing Dependencies (Patience)" msg_info "Installing Dependencies (Patience)"
$STD apt-get install -y --no-install-recommends \ $STD apt-get install -y --no-install-recommends \
postgresql \
python3 \
python3-dev \
python3-setuptools \
python3-venv \
build-essential \ build-essential \
libpq-dev \ libpq-dev \
libmagic-dev \ libmagic-dev \
@ -28,6 +24,7 @@ $STD apt-get install -y --no-install-recommends \
libsasl2-dev \ libsasl2-dev \
libldap2-dev \ libldap2-dev \
libssl-dev \ libssl-dev \
gpg \
curl \ curl \
sudo \ sudo \
git \ git \
@ -35,64 +32,66 @@ $STD apt-get install -y --no-install-recommends \
mc mc
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setup Tandoor (Patience)" msg_info "Updating Python3"
sudo useradd tandoor $STD apt-get install -y \
cd /opt python3 \
git clone https://github.com/vabene1111/recipes.git -b master >/dev/null 2>&1 python3-dev \
mv recipes tandoor >/dev/null 2>&1 python3-setuptools \
chown -R tandoor:www-data /opt/tandoor >/dev/null 2>&1 python3-pip
python3 -m venv /opt/tandoor >/dev/null 2>&1 msg_ok "Updated Python3"
source /opt/tandoor/bin/activate >/dev/null 2>&1
curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - >/dev/null 2>&1 msg_info "Setting up Node.js Repository"
apt install -y nodejs >/dev/null 2>&1 mkdir -p /etc/apt/keyrings
sudo npm install --global yarn >/dev/null 2>&1 curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
/opt/tandoor/bin/pip3 install -r /opt/tandoor/requirements.txt >/dev/null 2>&1 echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
msg_ok "Set up Node.js Repository"
msg_info "Installing Node.js"
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install -g yarn
msg_ok "Installed Node.js"
msg_info "Installing Tandoor (Patience)"
$STD git clone https://github.com/vabene1111/recipes.git -b master /opt/tandoor
mkdir -p /opt/tandoor/{config,api,mediafiles,staticfiles}
$STD pip3 install -r /opt/tandoor/requirements.txt
cd /opt/tandoor/vue cd /opt/tandoor/vue
yarn install --silent >/dev/null 2>&1 $STD yarn install
yarn build --silent >/dev/null 2>&1 $STD yarn build
cd /opt/tandoor wget -q https://raw.githubusercontent.com/vabene1111/recipes/develop/.env.template -O /opt/tandoor/.env
sudo mkdir -p config api mediafiles staticfiles >/dev/null 2>&1 DB_NAME=db_recipes
msg_ok "Initial Setup complete" DB_USER=tandoor
msg_info "Setting up Database"
DB_NAME=djangodb
DB_USER=djangouser
DB_ENCODING=utf8 DB_ENCODING=utf8
DB_TIMEZONE=UTC DB_TIMEZONE=UTC
secret_key=$(openssl rand -base64 45 | sed 's/\//\\\//g')
DB_PASS="$(openssl rand -base64 18 | cut -c1-13)" DB_PASS="$(openssl rand -base64 18 | cut -c1-13)"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME;" sed -i -e "s|SECRET_KEY=.*|SECRET_KEY=$secret_key|g" \
$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';" -e "s|POSTGRES_HOST=.*|POSTGRES_HOST=localhost|g" \
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;" -e "s|POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$DB_PASS|g" \
$STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME OWNER TO $DB_USER;" -e "s|POSTGRES_DB=.*|POSTGRES_DB=$DB_NAME|g" \
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO $DB_ENCODING;" -e "s|POSTGRES_USER=.*|POSTGRES_USER=$DB_USER|g" \
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';" -e "\$a\STATIC_URL=/staticfiles/" /opt/tandoor/.env
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO $DB_TIMEZONE;" msg_ok "Installed Tandoor"
$STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
msg_info "Install/Set up PostgreSQL Database"
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
echo "deb https://apt.postgresql.org/pub/repos/apt bookworm-pgdg main" >/etc/apt/sources.list.d/pgdg.list
$STD apt-get update
$STD apt-get install -y postgresql-16
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
echo "" >>~/tandoor.creds echo "" >>~/tandoor.creds
echo -e "Tandoor Database Name: \e[32m$DB_NAME\e[0m" >>~/tandoor.creds
echo -e "Tandoor Database User: \e[32m$DB_USER\e[0m" >>~/tandoor.creds echo -e "Tandoor Database User: \e[32m$DB_USER\e[0m" >>~/tandoor.creds
echo -e "Tandoor Database Password: \e[32m$DB_PASS\e[0m" >>~/tandoor.creds echo -e "Tandoor Database Password: \e[32m$DB_PASS\e[0m" >>~/tandoor.creds
echo -e "Tandoor Database Name: \e[32m$DB_NAME\e[0m" >>~/tandoor.creds export $(cat /opt/tandoor/.env |grep "^[^#]" | xargs)
msg_ok "Set up PostgreSQL database" /usr/bin/python3 /opt/tandoor/manage.py migrate >/dev/null 2>&1
/usr/bin/python3 /opt/tandoor/manage.py collectstatic --no-input >/dev/null 2>&1
msg_info "Setting up Tandoor Env" /usr/bin/python3 /opt/tandoor/manage.py collectstatic_js_reverse >/dev/null 2>&1
wget https://raw.githubusercontent.com/vabene1111/recipes/develop/.env.template -O /opt/tandoor/.env >/dev/null 2>&1 msg_ok "Set up PostgreSQL Database"
secret_key=$(openssl rand -base64 45 | sed 's/\//\\\//g') >/dev/null 2>&1
sudo sed -i "s/SECRET_KEY=.*/SECRET_KEY=$secret_key/" /opt/tandoor/.env msg_info "Creating Services"
sudo sed -i 's/POSTGRES_HOST=.*/POSTGRES_HOST=127.0.0.1/' /opt/tandoor/.env
sudo sed -i "s/POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$DB_PASS/" /opt/tandoor/.env
sudo sed -i 's/STATIC_URL=.*/STATIC_URL=\/staticfiles\//' /opt/tandoor/.env
sudo sed -i 's/MEDIA_URL=.*/MEDIA_URL=\/mediafiles\//' /opt/tandoor/.env
msg_ok "Tandoor successfully set up"
msg_info "Initialize Application"
export $(cat /opt/tandoor/.env |grep "^[^#]" | xargs) >/dev/null 2>&1
/opt/tandoor/bin/python3 /opt/tandoor/manage.py migrate >/dev/null 2>&1
$STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH NOSUPERUSER;"
/opt/tandoor/bin/python3 /opt/tandoor/manage.py collectstatic --no-input >/dev/null 2>&1
/opt/tandoor/bin/python3 /opt/tandoor/manage.py collectstatic_js_reverse >/dev/null 2>&1
msg_ok "Application Initialized"
msg_info "Set up web services"
cat <<EOF >/etc/systemd/system/gunicorn_tandoor.service cat <<EOF >/etc/systemd/system/gunicorn_tandoor.service
[Unit] [Unit]
Description=gunicorn daemon for tandoor Description=gunicorn daemon for tandoor
@ -102,18 +101,14 @@ After=network.target
Type=simple Type=simple
Restart=always Restart=always
RestartSec=3 RestartSec=3
User=tandoor
Group=www-data
WorkingDirectory=/opt/tandoor WorkingDirectory=/opt/tandoor
EnvironmentFile=/opt/tandoor/.env EnvironmentFile=/opt/tandoor/.env
ExecStart=/opt/tandoor/bin/gunicorn --error-logfile /tmp/gunicorn_err.log --log-level debug --capture-output --bind unix:/opt/tandoor/tandoor.sock recipes.wsgi:application ExecStart=/usr/local/bin/gunicorn --error-logfile /tmp/gunicorn_err.log --log-level debug --capture-output --bind unix:/opt/tandoor/tandoor.sock recipes.wsgi:application
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
$STD sudo systemctl enable --now gunicorn_tandoor
cat << 'EOF' >/etc/nginx/conf.d/tandoor.conf cat << 'EOF' >/etc/nginx/conf.d/tandoor.conf
server { server {
listen 8002; listen 8002;
@ -136,8 +131,8 @@ server {
} }
} }
EOF EOF
systemctl reload nginx
$STD sudo systemctl reload nginx systemctl enable -q --now gunicorn_tandoor
msg_ok "Created Services" msg_ok "Created Services"
motd_ssh motd_ssh

@ -119,16 +119,15 @@ arch_check() {
# This function checks if the script is running through SSH and prompts the user to confirm if they want to proceed or exit. # This function checks if the script is running through SSH and prompts the user to confirm if they want to proceed or exit.
ssh_check() { ssh_check() {
if command -v pveversion >/dev/null 2>&1; then if command -v pveversion >/dev/null 2>&1 && [ -n "${SSH_CLIENT:+x}" ]; then
if [ -n "${SSH_CLIENT:+x}" ]; then if whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SSH DETECTED" --yesno "It's advisable to utilize the Proxmox shell rather than SSH, as there may be potential complications with variable retrieval. Proceed using SSH?" 10 72; then
if whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SSH DETECTED" --yesno "It's suggested to use the Proxmox shell instead of SSH, since SSH can create issues while gathering variables. Would you like to proceed with using SSH?" 10 62; then whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Proceed using SSH" "You've chosen to proceed using SSH. If any issues arise, please run the script in the Proxmox shell before creating a repository issue." 10 72
echo "you've been warned"
else else
clear clear
echo "Exiting due to SSH usage. Please consider using the Proxmox shell."
exit exit
fi fi
fi fi
fi
} }
# This function displays the default values for various settings. # This function displays the default values for various settings.

Loading…
Cancel
Save