diff --git a/ct/chevereto.sh b/ct/chevereto.sh new file mode 100644 index 000000000..05704305f --- /dev/null +++ b/ct/chevereto.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main" +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://chevereto.com/ + +APP="Chevereto" +var_tags="${var_tags:-image-hosting;gallery;media}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-2048}" +var_disk="${var_disk:-10}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/chevereto ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "chevereto" "chevereto/chevereto"; then + msg_info "Stopping Services" + systemctl stop nginx php8.3-fpm + msg_ok "Stopped Services" + + create_backup /opt/chevereto/app/env.php \ + /opt/chevereto/images \ + /opt/chevereto/content + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "chevereto" "chevereto/chevereto" "tarball" + + restore_backup + + msg_info "Updating Chevereto" + cd /opt/chevereto/app + export COMPOSER_ALLOW_SUPERUSER=1 + $STD composer install --no-dev --prefer-dist --no-interaction --optimize-autoloader + chown -R www-data:www-data /opt/chevereto + chmod -R 775 /opt/chevereto/images /opt/chevereto/content + msg_ok "Updated Chevereto" + + msg_info "Starting Services" + systemctl start php8.3-fpm nginx + msg_ok "Started Services" + msg_ok "Updated successfully!" + 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 "${GATEWAY}${BGN}http://${IP}${CL}" +echo -e "${INFO}${YW}Complete the setup by finishing the web installer in your browser.${CL}" diff --git a/ct/headers/chevereto b/ct/headers/chevereto new file mode 100644 index 000000000..7361f30ac --- /dev/null +++ b/ct/headers/chevereto @@ -0,0 +1,6 @@ + ________ __ + / ____/ /_ ___ _ _____ ________ / /_____ + / / / __ \/ _ \ | / / _ \/ ___/ _ \/ __/ __ \ +/ /___/ / / / __/ |/ / __/ / / __/ /_/ /_/ / +\____/_/ /_/\___/|___/\___/_/ \___/\__/\____/ + diff --git a/install/chevereto-install.sh b/install/chevereto-install.sh new file mode 100644 index 000000000..2674b503d --- /dev/null +++ b/install/chevereto-install.sh @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://chevereto.com/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt install -y \ + nginx \ + ffmpeg \ + exiftran \ + libimage-exiftool-perl +msg_ok "Installed Dependencies" + +PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULE="bcmath,curl,exif,gd,imagick,intl,mbstring,mysql,xml,zip" PHP_UPLOAD_MAX_FILESIZE="512M" PHP_POST_MAX_SIZE="512M" PHP_MAX_EXECUTION_TIME="600" setup_php +setup_composer +setup_mariadb +MARIADB_DB_NAME="chevereto" MARIADB_DB_USER="chevereto" setup_mariadb_db + +fetch_and_deploy_gh_release "chevereto" "chevereto/chevereto" "tarball" + +msg_info "Installing Chevereto Dependencies" +cd /opt/chevereto/app +export COMPOSER_ALLOW_SUPERUSER=1 +$STD composer install --no-dev --prefer-dist --no-interaction --optimize-autoloader +msg_ok "Installed Chevereto Dependencies" + +msg_info "Configuring Chevereto" +cat </opt/chevereto/app/env.php + 'localhost', + 'CHEVERETO_DB_PORT' => '3306', + 'CHEVERETO_DB_NAME' => '${MARIADB_DB_NAME}', + 'CHEVERETO_DB_USER' => '${MARIADB_DB_USER}', + 'CHEVERETO_DB_PASS' => '${MARIADB_DB_PASS}', + 'CHEVERETO_DB_TABLE_PREFIX' => 'chv_', + 'CHEVERETO_HOSTNAME' => '${LOCAL_IP}', +]; +EOF +chown -R www-data:www-data /opt/chevereto +chmod -R 775 /opt/chevereto/images /opt/chevereto/content +msg_ok "Configured Chevereto" + +msg_info "Configuring Nginx" +cat <<'EOF' >/etc/nginx/sites-available/chevereto +server { + listen 80; + server_name _; + root /opt/chevereto; + index index.php; + + charset utf-8; + client_max_body_size 512M; + + add_header X-Frame-Options "SAMEORIGIN"; + add_header X-Content-Type-Options "nosniff"; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location = /favicon.ico { access_log off; log_not_found off; } + location = /robots.txt { access_log off; log_not_found off; } + + location ~* ^/images/.+\.(gif|jpe?g|png|bmp|webp)$ { + try_files $uri =404; + } + + location = /index.php { + include fastcgi_params; + fastcgi_pass unix:/run/php/php8.3-fpm.sock; + fastcgi_param SCRIPT_FILENAME $document_root/index.php; + fastcgi_read_timeout 600; + } + + location ~ \.php$ { + deny all; + } + + location ^~ /app/ { + deny all; + } + + location ~ /\.(?!well-known).* { + deny all; + } +} +EOF +ln -sf /etc/nginx/sites-available/chevereto /etc/nginx/sites-enabled/chevereto +rm -f /etc/nginx/sites-enabled/default +$STD nginx -t +systemctl enable -q --now php8.3-fpm +systemctl reload nginx +msg_ok "Configured Nginx" + +motd_ssh +customize +cleanup_lxc