diff --git a/ct/apache-cassandra.sh b/ct/apache-cassandra.sh new file mode 100644 index 000000000..40d948d7a --- /dev/null +++ b/ct/apache-cassandra.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 tteck +# Author: tteck (tteckster) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://cassandra.apache.org/_/index.html + +APP="Apache-Cassandra" +var_tags="${var_tags:-database;NoSQL}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-2048}" +var_disk="${var_disk:-4}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/init.d/cassandra ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating Apache Cassandra" + $STD apt update + $STD apt install -y --only-upgrade cassandra cassandra-tools + msg_ok "Updated Apache Cassandra" + msg_ok "Updated successfully!" + exit +} + +start +build_container +description + +msg_ok "Completed successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" diff --git a/ct/argus.sh b/ct/argus.sh new file mode 100644 index 000000000..3ddbdb074 --- /dev/null +++ b/ct/argus.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/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://release-argus.io/ | Github: https://github.com/release-argus/Argus + +APP="Argus" +var_tags="${var_tags:-watcher}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-3}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +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/argus ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + if check_for_gh_release "argus" "release-argus/Argus"; then + msg_info "Stopping service" + systemctl stop argus + msg_ok "Service stopped" + + fetch_and_deploy_gh_release "Argus" "release-argus/Argus" "singlefile" "latest" "/opt/argus" "Argus*linux-amd64" + + msg_info "Starting service" + systemctl start argus + msg_ok "Service started" + 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 "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" diff --git a/ct/commafeed.sh b/ct/commafeed.sh new file mode 100644 index 000000000..79c5003f0 --- /dev/null +++ b/ct/commafeed.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 tteck +# Author: tteck (tteckster) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.commafeed.com/#/welcome | Github: https://github.com/Athou/commafeed + +APP="CommaFeed" +var_tags="${var_tags:-rss-reader}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-2048}" +var_disk="${var_disk:-4}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +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/commafeed ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + JAVA_VERSION="25" setup_java + if check_for_gh_release "commafeed" "Athou/commafeed"; then + msg_info "Stopping Service" + systemctl stop commafeed + msg_ok "Stopped Service" + + ensure_dependencies rsync + + if [ -d /opt/commafeed/data ] && [ "$(ls -A /opt/commafeed/data)" ]; then + msg_info "Backing up existing data" + mv /opt/commafeed/data /opt/data.bak + msg_ok "Backed up existing data" + fi + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "commafeed" "Athou/commafeed" "prebuild" "latest" "/opt/commafeed" "commafeed-*-h2-jvm.zip" + + if [ -d /opt/data.bak ] && [ "$(ls -A /opt/data.bak)" ]; then + msg_info "Restoring data" + mv /opt/data.bak /opt/commafeed/data + msg_ok "Restored data" + fi + + msg_info "Starting Service" + systemctl start commafeed + msg_ok "Started Service" + 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 "${TAB}${GATEWAY}${BGN}http://${IP}:8082${CL}" diff --git a/ct/globaleaks.sh b/ct/globaleaks.sh new file mode 100644 index 000000000..abfa23cd6 --- /dev/null +++ b/ct/globaleaks.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Giovanni Pellerano (evilaliv3) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/globaleaks/globaleaks-whistleblowing-software + +APP="GlobaLeaks" +var_tags="${var_tags:-whistleblowing-software}" +var_disk="${var_disk:-4}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-2048}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /usr/sbin/globaleaks ]]; then + msg_error "No ${APP} installation found!" + exit + fi + + msg_info "Updating $APP LXC" + $STD apt update + $STD apt -y upgrade + msg_ok "Updated $APP LXC" + msg_ok "Updated successfully!" +} + +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}https://${IP}${CL}" diff --git a/ct/headers/apache-cassandra b/ct/headers/apache-cassandra new file mode 100644 index 000000000..e82ea7c51 --- /dev/null +++ b/ct/headers/apache-cassandra @@ -0,0 +1,6 @@ + ___ __ ______ __ + / | ____ ____ ______/ /_ ___ / ____/___ _______________ _____ ____/ /________ _ + / /| | / __ \/ __ `/ ___/ __ \/ _ \______/ / / __ `/ ___/ ___/ __ `/ __ \/ __ / ___/ __ `/ + / ___ |/ /_/ / /_/ / /__/ / / / __/_____/ /___/ /_/ (__ |__ ) /_/ / / / / /_/ / / / /_/ / +/_/ |_/ .___/\__,_/\___/_/ /_/\___/ \____/\__,_/____/____/\__,_/_/ /_/\__,_/_/ \__,_/ + /_/ diff --git a/ct/headers/argus b/ct/headers/argus new file mode 100644 index 000000000..47434a30a --- /dev/null +++ b/ct/headers/argus @@ -0,0 +1,6 @@ + ___ + / | _________ ___ _______ + / /| | / ___/ __ `/ / / / ___/ + / ___ |/ / / /_/ / /_/ (__ ) +/_/ |_/_/ \__, /\__,_/____/ + /____/ diff --git a/ct/headers/commafeed b/ct/headers/commafeed new file mode 100644 index 000000000..06beb9a56 --- /dev/null +++ b/ct/headers/commafeed @@ -0,0 +1,6 @@ + ______ ______ __ + / ____/___ ____ ___ ____ ___ ____ _/ ____/__ ___ ____/ / + / / / __ \/ __ `__ \/ __ `__ \/ __ `/ /_ / _ \/ _ \/ __ / +/ /___/ /_/ / / / / / / / / / / / /_/ / __/ / __/ __/ /_/ / +\____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ \___/\___/\__,_/ + diff --git a/ct/headers/globaleaks b/ct/headers/globaleaks new file mode 100644 index 000000000..b54d1871c --- /dev/null +++ b/ct/headers/globaleaks @@ -0,0 +1,6 @@ + ________ __ __ __ + / ____/ /___ / /_ ____ _/ / ___ ____ _/ /_______ + / / __/ / __ \/ __ \/ __ `/ / / _ \/ __ `/ //_/ ___/ +/ /_/ / / /_/ / /_/ / /_/ / /___/ __/ /_/ / ,< (__ ) +\____/_/\____/_.___/\__,_/_____/\___/\__,_/_/|_/____/ + diff --git a/ct/headers/hivemq b/ct/headers/hivemq new file mode 100644 index 000000000..ac5216a72 --- /dev/null +++ b/ct/headers/hivemq @@ -0,0 +1,6 @@ + __ ___ __ _______ + / / / (_) _____ / |/ / __ \ + / /_/ / / | / / _ \/ /|_/ / / / / + / __ / /| |/ / __/ / / / /_/ / +/_/ /_/_/ |___/\___/_/ /_/\___\_\ + diff --git a/ct/headers/inspircd b/ct/headers/inspircd new file mode 100644 index 000000000..0d7550da1 --- /dev/null +++ b/ct/headers/inspircd @@ -0,0 +1,6 @@ + ____ ________ ______ __ + / _/___ _________ / _/ __ \/ ____/___/ / + / // __ \/ ___/ __ \ / // /_/ / / / __ / + _/ // / / (__ ) /_/ // // _, _/ /___/ /_/ / +/___/_/ /_/____/ .___/___/_/ |_|\____/\__,_/ + /_/ diff --git a/ct/headers/kubo b/ct/headers/kubo new file mode 100644 index 000000000..a8490005f --- /dev/null +++ b/ct/headers/kubo @@ -0,0 +1,6 @@ + __ __ __ + / //_/_ __/ /_ ____ + / ,< / / / / __ \/ __ \ + / /| / /_/ / /_/ / /_/ / +/_/ |_\__,_/_.___/\____/ + diff --git a/ct/headers/neo4j b/ct/headers/neo4j new file mode 100644 index 000000000..7e5311b4e --- /dev/null +++ b/ct/headers/neo4j @@ -0,0 +1,6 @@ + _ __ __ __ _ + / | / /__ ____ / // / (_) + / |/ / _ \/ __ \/ // /_/ / + / /| / __/ /_/ /__ __/ / +/_/ |_/\___/\____/ /_/_/ / + /___/ diff --git a/ct/headers/nodebb b/ct/headers/nodebb new file mode 100644 index 000000000..0ca632d82 --- /dev/null +++ b/ct/headers/nodebb @@ -0,0 +1,6 @@ + _ __ __ ____ ____ + / | / /___ ____/ /__ / __ )/ __ ) + / |/ / __ \/ __ / _ \/ __ / __ | + / /| / /_/ / /_/ / __/ /_/ / /_/ / +/_/ |_/\____/\__,_/\___/_____/_____/ + diff --git a/ct/headers/opengist b/ct/headers/opengist new file mode 100644 index 000000000..618b72dc3 --- /dev/null +++ b/ct/headers/opengist @@ -0,0 +1,6 @@ + ____ _ __ + / __ \____ ___ ____ ____ _(_)____/ /_ + / / / / __ \/ _ \/ __ \/ __ `/ / ___/ __/ +/ /_/ / /_/ / __/ / / / /_/ / (__ ) /_ +\____/ .___/\___/_/ /_/\__, /_/____/\__/ + /_/ /____/ diff --git a/ct/headers/ots b/ct/headers/ots new file mode 100644 index 000000000..64a5fc431 --- /dev/null +++ b/ct/headers/ots @@ -0,0 +1,6 @@ + ____ ___________ + / __ \/_ __/ ___/ + / / / / / / \__ \ +/ /_/ / / / ___/ / +\____/ /_/ /____/ + diff --git a/ct/headers/ps5-mqtt b/ct/headers/ps5-mqtt new file mode 100644 index 000000000..7d04f172d --- /dev/null +++ b/ct/headers/ps5-mqtt @@ -0,0 +1,6 @@ + ____ _____ ______ __ _______ ____________ + / __ \/ ___// ____/ / |/ / __ \/_ __/_ __/ + / /_/ /\__ \/___ \______/ /|_/ / / / / / / / / + / ____/___/ /___/ /_____/ / / / /_/ / / / / / +/_/ /____/_____/ /_/ /_/\___\_\/_/ /_/ + diff --git a/ct/headers/rustypaste b/ct/headers/rustypaste new file mode 100644 index 000000000..9e914cc65 --- /dev/null +++ b/ct/headers/rustypaste @@ -0,0 +1,6 @@ + __ __ + _______ _______/ /___ ______ ____ ______/ /____ + / ___/ / / / ___/ __/ / / / __ \/ __ `/ ___/ __/ _ \ + / / / /_/ (__ ) /_/ /_/ / /_/ / /_/ (__ ) /_/ __/ +/_/ \__,_/____/\__/\__, / .___/\__,_/____/\__/\___/ + /____/_/ diff --git a/ct/headers/seelf b/ct/headers/seelf new file mode 100644 index 000000000..b7202eb37 --- /dev/null +++ b/ct/headers/seelf @@ -0,0 +1,6 @@ + ______ + ________ ___ / / __/ + / ___/ _ \/ _ \/ / /_ + (__ ) __/ __/ / __/ +/____/\___/\___/_/_/ + diff --git a/ct/headers/streamlink-webui b/ct/headers/streamlink-webui new file mode 100644 index 000000000..f067c6120 --- /dev/null +++ b/ct/headers/streamlink-webui @@ -0,0 +1,6 @@ + __ ___ __ __ _ + _____/ /_________ ____ _____ ___ / (_)___ / /__ _ _____ / /_ __ __(_) + / ___/ __/ ___/ _ \/ __ `/ __ `__ \/ / / __ \/ //_/____| | /| / / _ \/ __ \/ / / / / + (__ ) /_/ / / __/ /_/ / / / / / / / / / / / ,< /_____/ |/ |/ / __/ /_/ / /_/ / / +/____/\__/_/ \___/\__,_/_/ /_/ /_/_/_/_/ /_/_/|_| |__/|__/\___/_.___/\__,_/_/ + diff --git a/ct/headers/valkey b/ct/headers/valkey new file mode 100644 index 000000000..e0b2b739e --- /dev/null +++ b/ct/headers/valkey @@ -0,0 +1,6 @@ + _ __ ____ +| | / /___ _/ / /_____ __ __ +| | / / __ `/ / //_/ _ \/ / / / +| |/ / /_/ / / ,< / __/ /_/ / +|___/\__,_/_/_/|_|\___/\__, / + /____/ diff --git a/ct/headers/wavelog b/ct/headers/wavelog new file mode 100644 index 000000000..717a75bcb --- /dev/null +++ b/ct/headers/wavelog @@ -0,0 +1,6 @@ + _ __ __ +| | / /___ __ _____ / /___ ____ _ +| | /| / / __ `/ | / / _ \/ / __ \/ __ `/ +| |/ |/ / /_/ /| |/ / __/ / /_/ / /_/ / +|__/|__/\__,_/ |___/\___/_/\____/\__, / + /____/ diff --git a/ct/headers/writefreely b/ct/headers/writefreely new file mode 100644 index 000000000..088cfecf7 --- /dev/null +++ b/ct/headers/writefreely @@ -0,0 +1,6 @@ + _ __ _ __ ______ __ +| | / /____(_) /____ / ____/_______ ___ / /_ __ +| | /| / / ___/ / __/ _ \/ /_ / ___/ _ \/ _ \/ / / / / +| |/ |/ / / / / /_/ __/ __/ / / / __/ __/ / /_/ / +|__/|__/_/ /_/\__/\___/_/ /_/ \___/\___/_/\__, / + /____/ diff --git a/ct/hivemq.sh b/ct/hivemq.sh new file mode 100644 index 000000000..f9b1bedc4 --- /dev/null +++ b/ct/hivemq.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 tteck +# Author: tteck (tteckster) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.hivemq.com/ | Github: https://github.com/hivemq/hivemq-community-edition + +APP="HiveMQ" +var_tags="${var_tags:-mqtt}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-1024}" +var_disk="${var_disk:-4}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +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 /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "Currently we don't provide an update function for this ${APP}." + exit +} + +start +build_container +description + +msg_ok "Completed successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" diff --git a/ct/inspircd.sh b/ct/inspircd.sh new file mode 100644 index 000000000..86b7d2e11 --- /dev/null +++ b/ct/inspircd.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: kristocopani +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.inspircd.org/ | Github: https://github.com/inspircd/inspircd + +APP="InspIRCd" +var_tags="${var_tags:-IRC}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-2}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -f /lib/systemd/system/inspircd.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + if check_for_gh_release "inspircd" "inspircd/inspircd"; then + msg_info "Stopping Service" + systemctl stop inspircd + msg_ok "Stopped Service" + + fetch_and_deploy_gh_release "inspircd" "inspircd/inspircd" "binary" "latest" "/opt/inspircd" "inspircd_*.deb13u1_amd64.deb" + + msg_info "Starting Service" + systemctl start inspircd + msg_ok "Started Service" + 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} Server-Acces it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}${IP}:6667${CL}" diff --git a/ct/kubo.sh b/ct/kubo.sh new file mode 100644 index 000000000..06be770cf --- /dev/null +++ b/ct/kubo.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 tteck +# Author: tteck (tteckster) | Co-Author: ulmentflam +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/ipfs/kubo + +APP="Kubo" +var_tags="${var_tags:-sharing}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-4096}" +var_disk="${var_disk:-4}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /usr/local/kubo/ipfs ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + if check_for_gh_release "kubo" "ipfs/kubo"; then + msg_info "Stopping service" + systemctl stop ipfs + msg_ok "Stopped service" + + fetch_and_deploy_gh_release "kubo" "ipfs/kubo" "prebuild" "latest" "/usr/local/kubo" "kubo*linux-amd64.tar.gz" + + msg_info "Starting service" + systemctl start ipfs + msg_ok "Service started" + 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 "${TAB}${GATEWAY}${BGN}http://${IP}:5001/webui${CL}" diff --git a/ct/neo4j.sh b/ct/neo4j.sh new file mode 100644 index 000000000..11270934f --- /dev/null +++ b/ct/neo4j.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 tteck +# Author: tteck | Co-Author: havardthom +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://neo4j.com/product/neo4j-graph-database/ + +APP="Neo4j" +var_tags="${var_tags:-database}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-1024}" +var_disk="${var_disk:-4}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +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 /etc/neo4j ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + JAVA_VERSION="21" setup_java + + msg_info "Updating ${APP}" + $STD apt update + $STD apt -y upgrade + msg_ok "Updated successfully!" + 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}:7474${CL}" diff --git a/ct/nodebb.sh b/ct/nodebb.sh new file mode 100644 index 000000000..54a0327f8 --- /dev/null +++ b/ct/nodebb.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/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://github.com/NodeBB/NodeBB + +APP="NodeBB" +var_tags="${var_tags:-forum}" +var_disk="${var_disk:-10}" +var_cpu="${var_cpu:-4}" +var_ram="${var_ram:-2048}" +var_os="${var_os:-ubuntu}" +var_version="${var_version:-24.04}" +var_unprivileged="${var_unprivileged:-1}" + +# App Output & Base Settings +header_info "$APP" + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/nodebb ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + if check_for_gh_release "nodebb" "NodeBB/NodeBB"; then + msg_info "Stopping Service" + systemctl stop nodebb + msg_ok "Stopped Service" + + msg_info "Updating ${APP}" + cd /opt/nodebb + $STD ./nodebb upgrade + echo "${CHECK_UPDATE_RELEASE}" >~/.nodebb + msg_ok "Updated ${APP}" + + msg_info "Starting Service" + systemctl start nodebb + msg_ok "Started Service" + 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 "${TAB}${GATEWAY}${BGN}http://${IP}:4567${CL}" diff --git a/ct/opengist.sh b/ct/opengist.sh new file mode 100644 index 000000000..58414b04a --- /dev/null +++ b/ct/opengist.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Jonathan (jd-apprentice) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://opengist.io/ | Github: https://github.com/thomiceli/opengist + +APP="Opengist" +var_tags="${var_tags:-development}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-1024}" +var_disk="${var_disk:-8}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +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/opengist ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + if check_for_gh_release "opengist" "thomiceli/opengist"; then + msg_info "Stopping Service" + systemctl stop opengist + msg_ok "Stopped Service" + + msg_info "Creating backup" + mv /opt/opengist /opt/opengist-backup + msg_ok "Backup created" + + fetch_and_deploy_gh_release "opengist" "thomiceli/opengist" "prebuild" "latest" "/opt/opengist" "opengist*linux-amd64.tar.gz" + + msg_info "Restoring Configuration" + mv /opt/opengist-backup/config.yml /opt/opengist/config.yml + msg_ok "Configuration Restored" + + msg_info "Starting Service" + systemctl start opengist + msg_ok "Started Service" + 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 "${TAB}${GATEWAY}${BGN}http://${IP}:6157${CL}" diff --git a/ct/ots.sh b/ct/ots.sh new file mode 100644 index 000000000..d14bc5338 --- /dev/null +++ b/ct/ots.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: bvdberg01 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Luzifer/ots + +APP="OTS" +var_tags="${var_tags:-secrets-sharer}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-3}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +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/ots ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + if check_for_gh_release "ots" "Luzifer/ots"; then + msg_info "Stopping Services" + systemctl stop ots + systemctl stop nginx + msg_ok "Stopped Services" + + fetch_and_deploy_gh_release "ots" "Luzifer/ots" "prebuild" "latest" "/opt/ots" "ots_linux_amd64.tgz" + + msg_info "Starting Services" + systemctl start ots + systemctl start 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 "${TAB}${GATEWAY}${BGN}https://${IP}${CL}" diff --git a/ct/ps5-mqtt.sh b/ct/ps5-mqtt.sh new file mode 100644 index 000000000..4a5e782a1 --- /dev/null +++ b/ct/ps5-mqtt.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: liecno +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/FunkeyFlo/ps5-mqtt/ + +APP="PS5-MQTT" +var_tags="${var_tags:-smarthome;automation}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-3}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +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/ps5-mqtt ]]; then + msg_error "No ${APP} installation found!" + exit + fi + if check_for_gh_release "ps5-mqtt" "FunkeyFlo/ps5-mqtt"; then + msg_info "Stopping service" + systemctl stop ps5-mqtt + msg_ok "Stopped service" + + fetch_and_deploy_gh_release "ps5-mqtt" "FunkeyFlo/ps5-mqtt" "tarball" + + msg_info "Configuring ${APP}" + cd /opt/ps5-mqtt/ps5-mqtt/ + $STD npm install + $STD npm run build + msg_ok "Configured ${APP}" + + msg_info "Starting service" + systemctl start ps5-mqtt + msg_ok "Started service" + 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 "${TAB}${GATEWAY}${BGN}http://${IP}:8645${CL}" diff --git a/ct/rustypaste.sh b/ct/rustypaste.sh new file mode 100644 index 000000000..6bccbc973 --- /dev/null +++ b/ct/rustypaste.sh @@ -0,0 +1,69 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: GoldenSpringness +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/orhun/rustypaste + +APP="rustypaste" +var_tags="${var_tags:-pastebin;storage}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-1024}" +var_disk="${var_disk:-20}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -f /opt/rustypaste/rustypaste ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "rustypaste" "orhun/rustypaste"; then + msg_info "Stopping Services" + systemctl stop rustypaste + msg_ok "Stopped Services" + + msg_info "Creating Backup" + tar -czf "/opt/rustypaste_backup_$(date +%F).tar.gz" /opt/rustypaste/upload 2>/dev/null || true + cp /opt/rustypaste/config.toml /tmp/rustypaste_config.toml.bak + msg_ok "Backup Created" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "rustypaste" "orhun/rustypaste" "prebuild" "latest" "/opt/rustypaste" "*x86_64-unknown-linux-gnu.tar.gz" + + msg_info "Restoring Data" + mv /tmp/rustypaste_config.toml.bak /opt/rustypaste/config.toml + tar -xzf "/opt/rustypaste_backup_$(date +%F).tar.gz" -C /opt/rustypaste/upload 2>/dev/null || true + rm -rf /opt/rustypaste_backup_$(date +%F).tar.gz + msg_ok "Restored Data" + + msg_info "Starting Services" + systemctl start rustypaste + msg_ok "Started Services" + msg_ok "Updated successfully!" + fi + + if check_for_gh_release "rustypaste-cli" "orhun/rustypaste-cli"; then + fetch_and_deploy_gh_release "rustypaste-cli" "orhun/rustypaste-cli" "prebuild" "latest" "/usr/local/bin" "*x86_64-unknown-linux-gnu.tar.gz" + fi + exit +} + +start +build_container +description + +msg_ok "Completed successfully!\n" +echo -e "${CREATING}${GN}rustypaste setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}" diff --git a/ct/seelf.sh b/ct/seelf.sh new file mode 100644 index 000000000..af96d3185 --- /dev/null +++ b/ct/seelf.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/YuukanOO/seelf + +APP="seelf" +var_tags="${var_tags:-server;docker}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-4096}" +var_disk="${var_disk:-10}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +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/seelf ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + if check_for_gh_release "seelf" "YuukanOO/seelf"; then + msg_info "Stopping Service" + systemctl stop seelf + msg_info "Stopped Service" + + msg_info "Updating seelf" + cd /opt/seelf + $STD make build + msg_ok "Updated seelf" + + msg_info "Starting Service" + systemctl start seelf + msg_ok "Started Service" + 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 "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" diff --git a/ct/streamlink-webui.sh b/ct/streamlink-webui.sh new file mode 100644 index 000000000..4f69c5790 --- /dev/null +++ b/ct/streamlink-webui.sh @@ -0,0 +1,66 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: CrazyWolf13 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/CrazyWolf13/streamlink-webui + +APP="streamlink-webui" +var_tags="${var_tags:-download;streaming}" +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_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/streamlink-webui ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "streamlink-webui" "CrazyWolf13/streamlink-webui"; then + msg_info "Stopping Service" + systemctl stop streamlink-webui + msg_info "Stopped Service" + + NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs + setup_uv + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "streamlink-webui" "CrazyWolf13/streamlink-webui" "tarball" + + msg_info "Updating streamlink-webui" + $STD uv venv --clear /opt/streamlink-webui/backend/src/.venv + source /opt/streamlink-webui/backend/src/.venv/bin/activate + $STD uv pip install -r /opt/streamlink-webui/backend/src/requirements.txt --python=/opt/streamlink-webui/backend/src/.venv + cd /opt/streamlink-webui/frontend/src + $STD yarn install + $STD yarn build + chmod +x /opt/streamlink-webui/start.sh + msg_ok "Updated streamlink-webui" + + msg_info "Starting Service" + systemctl start streamlink-webui + msg_ok "Started Service" + 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 "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}" diff --git a/ct/valkey.sh b/ct/valkey.sh new file mode 100644 index 000000000..93eb097be --- /dev/null +++ b/ct/valkey.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: pshankinclarke (lazarillo) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://valkey.io/ + +APP="Valkey" +var_tags="${var_tags:-database}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-1024}" +var_disk="${var_disk:-4}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /lib/systemd/system/valkey-server.service ]]; then + msg_error "No Valkey Installation Found!" + exit + fi + msg_info "Updating Valkey LXC" + $STD apt update + $STD apt -y upgrade + msg_ok "Updated Valkey LXC" + msg_ok "Updated successfully!" + 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}:6379${CL}" diff --git a/ct/wavelog.sh b/ct/wavelog.sh new file mode 100644 index 000000000..75752614b --- /dev/null +++ b/ct/wavelog.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Don Locke (DonLocke) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/wavelog/wavelog + +APP="Wavelog" +var_tags="${var_tags:-radio-logging}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-2}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +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/wavelog ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + setup_mariadb + if check_for_gh_release "wavelog" "wavelog/wavelog"; then + msg_info "Stopping Services" + systemctl stop apache2 + msg_ok "Services Stopped" + + msg_info "Creating backup" + cp /opt/wavelog/application/config/config.php /opt/config.php + cp /opt/wavelog/application/config/database.php /opt/database.php + cp -r /opt/wavelog/userdata /opt/userdata + if [[ -f /opt/wavelog/assets/js/sections/custom.js ]]; then + cp /opt/wavelog/assets/js/sections/custom.js /opt/custom.js + fi + msg_ok "Backup created" + + rm -rf /opt/wavelog + fetch_and_deploy_gh_release "wavelog" "wavelog/wavelog" "tarball" + + msg_info "Updating Wavelog" + rm -rf /opt/wavelog/install + mv /opt/config.php /opt/wavelog/application/config/config.php + mv /opt/database.php /opt/wavelog/application/config/database.php + cp -r /opt/userdata/* /opt/wavelog/userdata + rm -rf /opt/userdata + if [[ -f /opt/custom.js ]]; then + mv /opt/custom.js /opt/wavelog/assets/js/sections/custom.js + fi + chown -R www-data:www-data /opt/wavelog/ + find /opt/wavelog/ -type d -exec chmod 755 {} \; + find /opt/wavelog/ -type f -exec chmod 664 {} \; + msg_ok "Updated Wavelog" + + msg_info "Starting Services" + systemctl start apache2 + 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 "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/ct/writefreely.sh b/ct/writefreely.sh new file mode 100644 index 000000000..ec465b91b --- /dev/null +++ b/ct/writefreely.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: StellaeAlis +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/writefreely/writefreely + +APP="WriteFreely" +var_tags="${var_tags:-writing}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-1024}" +var_disk="${var_disk:-4}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +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/writefreely ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "writefreely" "writefreely/writefreely"; then + msg_info "Stopping Services" + systemctl stop writefreely + msg_ok "Stopped Services" + + msg_info "Creating Backup" + mkdir -p /tmp/writefreely_backup + cp /opt/writefreely/keys /tmp/writefreely_backup/ 2>/dev/null + cp /opt/writefreely/config.ini /tmp/writefreely_backup/ 2>/dev/null + msg_ok "Created Backup" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "writefreely" "writefreely/writefreely" "prebuild" "latest" "/opt/writefreely" "writefreely_*_linux_amd64.tar.gz" + + msg_info "Restoring Data" + cp /tmp/writefreely_backup/config.ini /opt/writefreely/ 2>/dev/null + cp /tmp/writefreely_backup/keys/* /opt/writefreely/keys/ 2>/dev/null + rm -rf /tmp/writefreely_backup + msg_ok "Restored Data" + + msg_info "Running Post-Update Tasks" + cd /opt/writefreely + $STD ./writefreely db migrate + ln -s /opt/writefreely/writefreely /usr/local/bin/writefreely + msg_ok "Ran Post-Update Tasks" + + msg_info "Starting Services" + systemctl start writefreely + 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 "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/install/apache-cassandra-install.sh b/install/apache-cassandra-install.sh new file mode 100644 index 000000000..b1eca2994 --- /dev/null +++ b/install/apache-cassandra-install.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 tteck +# Author: tteck (tteckster) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://cassandra.apache.org/_/index.html + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +JAVA_VERSION="11" setup_java + +msg_info "Installing Apache Cassandra" +setup_deb822_repo \ + "cassandra" \ + "https://downloads.apache.org/cassandra/KEYS" \ + "https://debian.cassandra.apache.org" \ + "41x" \ + "main" +$STD apt install -y cassandra cassandra-tools +sed -i -e 's/^rpc_address: localhost/#rpc_address: localhost/g' -e 's/^# rpc_interface: eth1/rpc_interface: eth0/g' /etc/cassandra/cassandra.yaml +msg_ok "Installed Apache Cassandra" + +motd_ssh +customize +cleanup_lxc diff --git a/install/argus-install.sh b/install/argus-install.sh new file mode 100644 index 000000000..12e3e0079 --- /dev/null +++ b/install/argus-install.sh @@ -0,0 +1,85 @@ +#!/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://release-argus.io/ | Github: https://github.com/release-argus/Argus + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +fetch_and_deploy_gh_release "Argus" "release-argus/Argus" "singlefile" "latest" "/opt/argus" "Argus*linux-amd64" + +msg_info "Setup Argus Config" +cat </opt/argus/config.yml +settings: + log: + level: INFO + timestamps: false + data: + database_file: data/argus.db + web: + listen_host: 0.0.0.0 + listen_port: 8080 + route_prefix: / + +defaults: + service: + options: + interval: 30m + semantic_versioning: true + latest_version: + allow_invalid_certs: false + use_prerelease: false + dashboard: + auto_approve: true + webhook: + desired_status_code: 201 + +service: + release-argus/argus: + latest_version: + type: github + url: release-argus/argus + dashboard: + icon: https://raw.githubusercontent.com/release-argus/Argus/master/web/ui/react-app/public/favicon.svg + icon_link_to: https://release-argus.io + web_url: https://github.com/release-argus/Argus/blob/master/CHANGELOG.md + + community-scripts/ProxmoxVE: + latest_version: + type: github + url: community-scripts/ProxmoxVE + use_prerelease: false + dashboard: + icon: https://raw.githubusercontent.com/community-scripts/ProxmoxVE/refs/heads/main/misc/images/logo.png + icon_link_to: https://community-scripts.org/ + web_url: https://github.com/community-scripts/ProxmoxVE/releases +EOF +msg_ok "Setup Config" + +msg_info "Creating Service" +cat </etc/systemd/system/argus.service +[Unit] +Description=Argus +After=network.target +[Service] +Type=simple +WorkingDirectory=/opt/argus +ExecStart=/opt/argus/Argus +Restart=on-failure +RestartSec=5 +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now argus +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/commafeed-install.sh b/install/commafeed-install.sh new file mode 100644 index 000000000..2141a0545 --- /dev/null +++ b/install/commafeed-install.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 tteck +# Author: tteck (tteckster) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.commafeed.com/#/welcome | Github: https://github.com/Athou/commafeed + +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 rsync +msg_ok "Installed Dependencies" + +JAVA_VERSION="25" setup_java +fetch_and_deploy_gh_release "commafeed" "Athou/commafeed" "prebuild" "latest" "/opt/commafeed" "commafeed-*-h2-jvm.zip" + +msg_info "Creating Service" +cat </etc/systemd/system/commafeed.service +[Unit] +Description=CommaFeed Service +After=network.target + +[Service] +ExecStart=java -Xminf0.05 -Xmaxf0.1 -jar quarkus-run.jar +WorkingDirectory=/opt/commafeed/ +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now commafeed +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/globaleaks-install.sh b/install/globaleaks-install.sh new file mode 100644 index 000000000..08cf79dcc --- /dev/null +++ b/install/globaleaks-install.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Giovanni Pellerano (evilaliv3) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/globaleaks/globaleaks-whistleblowing-software + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Setup GlobaLeaks" +DISTRO_CODENAME="$(awk -F= '/^VERSION_CODENAME=/{print $2}' /etc/os-release)" +curl -fsSL https://deb.globaleaks.org/globaleaks.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/globaleaks.gpg +echo "deb [signed-by=/etc/apt/trusted.gpg.d/globaleaks.gpg] http://deb.globaleaks.org $DISTRO_CODENAME/" >/etc/apt/sources.list.d/globaleaks.list +echo 'APPARMOR_SANDBOXING=0' >/etc/default/globaleaks +$STD apt update +$STD apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install globaleaks +msg_ok "Setup GlobaLeaks" + +motd_ssh +customize +cleanup_lxc diff --git a/install/hivemq-install.sh b/install/hivemq-install.sh new file mode 100644 index 000000000..9eb6f1282 --- /dev/null +++ b/install/hivemq-install.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 tteck +# Author: tteck (tteckster) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.hivemq.com/ | Github: https://github.com/hivemq/hivemq-community-edition + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +JAVA_VERSION="21" setup_java +fetch_and_deploy_gh_release "hivemq" "hivemq/hivemq-community-edition" "prebuild" "latest" "/opt/hivemq" "hivemq-ce-*.zip" + +msg_info "Configuring HiveMQ CE" +useradd -d /opt/hivemq hivemq +chown -R hivemq:hivemq /opt/hivemq +chmod +x /opt/hivemq/bin/run.sh +cp /opt/hivemq/bin/init-script/hivemq.service /etc/systemd/system/hivemq.service +rm /opt/hivemq/conf/config.xml +mv /opt/hivemq/conf/examples/configuration/config-sample-tcp-and-websockets.xml /opt/hivemq/conf/config.xml +msg_ok "Configured HiveMQ CE" + +msg_info "Starting service" +systemctl enable -q --now hivemq +msg_ok "Service started" + +motd_ssh +customize +cleanup_lxc diff --git a/install/inspircd-install.sh b/install/inspircd-install.sh new file mode 100644 index 000000000..88e4c9d6f --- /dev/null +++ b/install/inspircd-install.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: kristocopani +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.inspircd.org/ | Github: https://github.com/inspircd/inspircd + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +fetch_and_deploy_gh_release "inspircd" "inspircd/inspircd" "binary" "latest" "/opt/inspircd" "inspircd_*.deb13u1_amd64.deb" + +msg_info "Configuring InspIRCd" +cat </etc/inspircd/inspircd.conf + + + + + + +EOF +msg_ok "Installed InspIRCd" + +motd_ssh +customize +cleanup_lxc diff --git a/install/kubo-install.sh b/install/kubo-install.sh new file mode 100644 index 000000000..cc86dae3b --- /dev/null +++ b/install/kubo-install.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 tteck +# Author: tteck (tteckster) +# Co-Author: ulmentflam +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/ipfs/kubo + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +fetch_and_deploy_gh_release "kubo" "ipfs/kubo" "prebuild" "latest" "/usr/local/kubo" "kubo*linux-amd64.tar.gz" + +msg_info "Configuring IPFS" +$STD ln -s /usr/local/kubo/ipfs /usr/local/bin/ipfs +$STD ipfs init +ipfs config Addresses.API /ip4/0.0.0.0/tcp/5001 +ipfs config Addresses.Gateway /ip4/0.0.0.0/tcp/8080 +ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"http://${LOCAL_IP}:5001\", \"http://localhost:3000\", \"http://127.0.0.1:5001\", \"https://webui.ipfs.io\", \"http://0.0.0.0:5001\"]" +ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "POST"]' +msg_ok "Configured IPFS" + +msg_info "Creating Service" +cat </etc/systemd/system/ipfs.service +[Unit] +Description=IPFS Daemon +After=syslog.target network.target + +[Service] +Type=simple +ExecStart=/usr/local/bin/ipfs daemon +Restart=on-failure +Environment=HOME=/root +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now ipfs +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/neo4j-install.sh b/install/neo4j-install.sh new file mode 100644 index 000000000..176c27b75 --- /dev/null +++ b/install/neo4j-install.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 tteck +# Author: tteck +# Co-Author: havardthom +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://neo4j.com/product/neo4j-graph-database/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +JAVA_VERSION="21" setup_java + +msg_info "Installing Neo4j (patience)" +curl -fsSL "https://debian.neo4j.com/neotechnology.gpg.key" | gpg --dearmor -o /etc/apt/keyrings/neotechnology.gpg +echo 'deb [signed-by=/etc/apt/keyrings/neotechnology.gpg] https://debian.neo4j.com stable latest' >/etc/apt/sources.list.d/neo4j.list +$STD apt update +$STD apt install -y neo4j +sed -i '/server.default_listen_address/s/^#//' /etc/neo4j/neo4j.conf +systemctl enable -q --now neo4j +msg_ok "Installed Neo4j" + +motd_ssh +customize +cleanup_lxc diff --git a/install/nodebb-install.sh b/install/nodebb-install.sh new file mode 100644 index 000000000..73468576c --- /dev/null +++ b/install/nodebb-install.sh @@ -0,0 +1,133 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2024 tteck +# Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/NodeBB/NodeBB + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies (Patience)" +$STD apt install -y \ + build-essential \ + redis-server \ + expect \ + ca-certificates +msg_ok "Installed Dependencies" + +setup_mongodb +NODE_VERSION="22" setup_nodejs + +msg_info "Configuring MongoDB" +MONGO_ADMIN_USER="admin" +MONGO_ADMIN_PWD="$(openssl rand -base64 18 | cut -c1-13)" +NODEBB_USER="nodebb" +NODEBB_PWD="$(openssl rand -base64 18 | cut -c1-13)" +MONGO_CONNECTION_STRING="mongodb://${NODEBB_USER}:${NODEBB_PWD}@localhost:27017/nodebb" +NODEBB_SECRET=$(uuidgen) +{ + echo "NodeBB-Credentials" + echo "Mongo Database User: $MONGO_ADMIN_USER" + echo "Mongo Database Password: $MONGO_ADMIN_PWD" + echo "NodeBB User: $NODEBB_USER" + echo "NodeBB Password: $NODEBB_PWD" + echo "NodeBB Secret: $NODEBB_SECRET" +} >>~/nodebb.creds + +$STD mongosh <> /etc/mongod.conf' +systemctl restart mongod +msg_ok "MongoDB configured" + +fetch_and_deploy_gh_release "nodebb" "NodeBB/NodeBB" "tarball" + +msg_info "Configuring NodeBB" +cd /opt/nodebb +touch pidfile +expect </dev/null 2>&1 +log_file /dev/null +set timeout -1 + +spawn ./nodebb setup +expect "URL used to access this NodeBB" { + send "http://localhost:4567\r" +} +expect "Please enter a NodeBB secret" { + send "$NODEBB_SECRET\r" +} +expect "Would you like to submit anonymous plugin usage to nbbpm? (yes)" { + send "no\r" +} +expect "Which database to use (mongo)" { + send "mongo\r" +} +expect "Format: mongodb://*" { + send "$MONGO_CONNECTION_STRING\r" +} +expect "Administrator username" { + send "community-scripts\r" +} +expect "Administrator email address" { + send "admin@community-scripts.org\r" +} +expect "Password" { + send "community-scripts\r" +} +expect "Confirm Password" { + send "community-scripts\r" +} +expect eof +EOF +msg_ok "Configured NodeBB" + +msg_info "Creating Services" +cat </etc/systemd/system/nodebb.service +[Unit] +Description=NodeBB +Documentation=https://docs.nodebb.org +After=system.slice multi-user.target mongod.service + +[Service] +Type=forking +User=root + +WorkingDirectory=/opt/nodebb +PIDFile=/opt/nodebb/pidfile +ExecStart=/usr/bin/node /opt/nodebb/loader.js +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now nodebb +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/opengist-install.sh b/install/opengist-install.sh new file mode 100644 index 000000000..ae7496bd9 --- /dev/null +++ b/install/opengist-install.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Jonathan (jd-apprentice) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://opengist.io/ | Github: https://github.com/thomiceli/opengist + +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 git +msg_ok "Installed Dependencies" + +fetch_and_deploy_gh_release "opengist" "thomiceli/opengist" "prebuild" "latest" "/opt/opengist" "opengist*linux-amd64.tar.gz" +mkdir -p /opt/opengist-data +sed -i 's|opengist-home:.*|opengist-home: /opt/opengist-data|' /opt/opengist/config.yml + +msg_info "Creating Service" +cat </etc/systemd/system/opengist.service +[Unit] +Description=Opengist server to manage your Gists +After=network.target + +[Service] +WorkingDirectory=/opt/opengist +ExecStart=/opt/opengist/opengist --config /opt/opengist/config.yml +Restart=always +User=root + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now opengist +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/ots-install.sh b/install/ots-install.sh new file mode 100644 index 000000000..ddad7d671 --- /dev/null +++ b/install/ots-install.sh @@ -0,0 +1,91 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: bvberg01 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Luzifer/ots + +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 \ + redis-server \ + nginx +msg_ok "Installed Dependencies" + +fetch_and_deploy_gh_release "ots" "Luzifer/ots" "prebuild" "latest" "/opt/ots" "ots_linux_amd64.tgz" +create_self_signed_cert + +msg_info "Setup OTS" +cat </opt/ots/.env +LISTEN=127.0.0.1:3000 +REDIS_URL=redis://127.0.0.1:6379 +SECRET_EXPIRY=604800 +STORAGE_TYPE=redis +EOF +msg_ok "Setup OTS" + +msg_info "Setting up nginx" +cat </etc/nginx/sites-available/ots.conf +server { + listen 80; + listen [::]:80; + server_name ots; + return 301 https://\$host\$request_uri; +} +server { + listen 443 ssl; + listen [::]:443 ssl; + server_name ots; + + ssl_certificate /etc/ssl/ots/ots.crt; + ssl_certificate_key /etc/ssl/ots/ots.key; + + location / { + add_header X-Robots-Tag noindex; + + proxy_set_header Upgrade \$http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_set_header Host \$host; + proxy_set_header X-Real-IP \$remote_addr; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto \$scheme; + client_max_body_size 64M; + proxy_pass http://127.0.0.1:3000/; + } +} +EOF + +ln -s /etc/nginx/sites-available/ots.conf /etc/nginx/sites-enabled/ +rm -f /etc/nginx/sites-enabled/default +$STD systemctl reload nginx +msg_ok "Configured nginx" + +msg_info "Creating Services" +cat </etc/systemd/system/ots.service +[Unit] +Description=One-Time-Secret Service +After=network-online.target +Requires=network-online.target + +[Service] +EnvironmentFile=/opt/ots/.env +ExecStart=/opt/ots/ots +Restart=Always +RestartSecs=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now ots +msg_ok "Created Services" + +motd_ssh +customize +cleanup_lxc diff --git a/install/ps5-mqtt-install.sh b/install/ps5-mqtt-install.sh new file mode 100644 index 000000000..96c380286 --- /dev/null +++ b/install/ps5-mqtt-install.sh @@ -0,0 +1,87 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: liecno +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/FunkeyFlo/ps5-mqtt/ + +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 \ + jq \ + ca-certificates +msg_ok "Installed Dependencies" + +NODE_VERSION="22" NODE_MODULE="playactor" setup_nodejs +fetch_and_deploy_gh_release "ps5-mqtt" "FunkeyFlo/ps5-mqtt" "tarball" + +msg_info "Configuring PS5-MQTT" +cd /opt/ps5-mqtt/ps5-mqtt/ +$STD npm install +$STD npm run build +mkdir -p /opt/.config/ps5-mqtt/ +mkdir -p /opt/.config/ps5-mqtt/playactor +cat </opt/.config/ps5-mqtt/config.json +{ + "mqtt": { + "host": "", + "port": "", + "user": "", + "pass": "", + "discovery_topic": "homeassistant" + }, + + "device_check_interval": 5000, + "device_discovery_interval": 60000, + "device_discovery_broadcast_address": "", + + "include_ps4_devices": false, + + "psn_accounts": [ + { + "username": "", + "npsso":"" + } + ], + + "account_check_interval": 5000, + + "credentialsStoragePath": "/opt/.config/ps5-mqtt/credentials.json", + "frontendPort": "8645" +} +EOF +msg_ok "Configured PS5-MQTT" + +msg_info "Creating Service" +cat </etc/systemd/system/ps5-mqtt.service +[Unit] +Description=PS5-MQTT Daemon +After=syslog.target network.target + +[Service] +WorkingDirectory=/opt/ps5-mqtt/ps5-mqtt +Environment="CONFIG_PATH=/opt/.config/ps5-mqtt/config.json" +Environment="DEBUG='@ha:ps5:*'" +Restart=always +RestartSec=5 +Type=simple +ExecStart=node server/dist/index.js +KillMode=process +SyslogIdentifier=ps5-mqtt + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now ps5-mqtt +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/rustypaste-install.sh b/install/rustypaste-install.sh new file mode 100644 index 000000000..67c495058 --- /dev/null +++ b/install/rustypaste-install.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: GoldenSpringness | MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/orhun/rustypaste + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +fetch_and_deploy_gh_release "rustypaste" "orhun/rustypaste" "prebuild" "latest" "/opt/rustypaste" "*x86_64-unknown-linux-gnu.tar.gz" +fetch_and_deploy_gh_release "rustypaste-cli" "orhun/rustypaste-cli" "prebuild" "latest" "/usr/local/bin" "*x86_64-unknown-linux-gnu.tar.gz" + +msg_info "Setting up RustyPaste" +cd /opt/rustypaste +sed -i 's|^address = ".*"|address = "0.0.0.0:8000"|' config.toml +msg_ok "Set up RustyPaste" + +msg_info "Creating Service" +cat </etc/systemd/system/rustypaste.service +[Unit] +Description=rustypaste Service +After=network.target + +[Service] +WorkingDirectory=/opt/rustypaste +ExecStart=/opt/rustypaste/rustypaste +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now rustypaste +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/seelf-install.sh b/install/seelf-install.sh new file mode 100644 index 000000000..2b8f4c69c --- /dev/null +++ b/install/seelf-install.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/YuukanOO/seelf + +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 \ + make \ + gcc +msg_ok "Installed Dependencies" + +setup_go +NODE_VERSION="22" setup_nodejs +fetch_and_deploy_gh_release "seelf" "YuukanOO/seelf" "tarball" + +msg_info "Setting up seelf. Patience" +cd /opt/seelf +$STD make build +PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) +mkdir -p /opt/seelf/data +{ + echo "ADMIN_EMAIL=admin@example.com" + echo "ADMIN_PASSWORD=$PASS" +} | tee .env ~/seelf.creds >/dev/null +SEELF_ADMIN_EMAIL=admin@example.com SEELF_ADMIN_PASSWORD=$PASS ./seelf serve &>/dev/null & +sleep 5 +kill $! +msg_ok "Done setting up seelf" + +msg_info "Creating Service" +cat </etc/systemd/system/seelf.service +[Unit] +Description=seelf Service +After=network.target + +[Service] +Type=simple +User=root +Group=root +EnvironmentFile=/opt/seelf/.env +Environment=DATA_PATH=/opt/seelf/data +WorkingDirectory=/opt/seelf +ExecStart=/opt/seelf/./seelf -c data/conf.yml serve +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now seelf +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/streamlink-webui-install.sh b/install/streamlink-webui-install.sh new file mode 100644 index 000000000..b62d68b26 --- /dev/null +++ b/install/streamlink-webui-install.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: CrazyWolf13 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/CrazyWolf13/streamlink-webui + +# Import Functions und Setup +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +NODE_VERSION="22" +NODE_MODULE="npm@latest,yarn@latest" +setup_nodejs +setup_uv +fetch_and_deploy_gh_release "streamlink-webui" "CrazyWolf13/streamlink-webui" "tarball" + +msg_info "Setup ${APPLICATION}" +mkdir -p "/opt/${APPLICATION}-download" +$STD uv venv --clear /opt/"${APPLICATION}"/backend/src/.venv +source /opt/"${APPLICATION}"/backend/src/.venv/bin/activate +$STD uv pip install -r /opt/streamlink-webui/backend/src/requirements.txt --python=/opt/"${APPLICATION}"/backend/src/.venv +cd /opt/"${APPLICATION}"/frontend/src +$STD yarn install +$STD yarn build +chmod +x /opt/"${APPLICATION}"/start.sh +msg_ok "Setup ${APPLICATION}" + +msg_info "Creating Service" +cat <<'EOF' >/opt/"${APPLICATION}".env +CLIENT_ID='your_client_id' +CLIENT_SECRET='your_client_secret' +DOWNLOAD_PATH='/opt/streamlink-webui-download' +# BASE_URL='https://sub.domain.com' \ +# REVERSE_PROXY=True \ +EOF + +cat </etc/systemd/system/"${APPLICATION}".service +[Unit] +Description=${APPLICATION} Service +After=network.target + +[Service] +EnvironmentFile=/opt/${APPLICATION}.env +WorkingDirectory=/opt/${APPLICATION}/backend/src +ExecStart=/bin/bash -c 'source /opt/${APPLICATION}/backend/src/.venv/bin/activate && exec /opt/${APPLICATION}/start.sh' +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now "${APPLICATION}" +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/valkey-install.sh b/install/valkey-install.sh new file mode 100644 index 000000000..0bd06db1c --- /dev/null +++ b/install/valkey-install.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: pshankinclarke (lazarillo) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://valkey.io/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Valkey" +$STD apt update +$STD apt install -y valkey openssl +sed -i 's/^bind .*/bind 0.0.0.0/' /etc/valkey/valkey.conf + +PASS="$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9' | head -c32)" +echo "requirepass $PASS" >> /etc/valkey/valkey.conf +echo "$PASS" >~/valkey.creds +chmod 600 ~/valkey.creds + +MEMTOTAL_MB=$(free -m | grep ^Mem: | awk '{print $2}') +# reserve 25% of a node type's maxmemory value for system use +MAXMEMORY_MB=$((MEMTOTAL_MB * 75 / 100)) + +echo "" >> /etc/valkey/valkey.conf +echo "# Memory-optimized settings for small-scale deployments" >> /etc/valkey/valkey.conf +echo "maxmemory ${MAXMEMORY_MB}mb" >> /etc/valkey/valkey.conf +echo "maxmemory-policy allkeys-lru" >> /etc/valkey/valkey.conf +echo "maxmemory-samples 10" >> /etc/valkey/valkey.conf +msg_ok "Installed Valkey" + +echo +read -r -p "${TAB3}Enable TLS for Valkey (Sentinel mode does not supported)? [y/N]: " prompt +if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then + read -r -p "${TAB3}Use TLS-only mode (disable TCP port 6379)? [y/N]: " tls_only + msg_info "Configuring TLS for Valkey..." + + create_self_signed_cert "Valkey" + TLS_DIR="/etc/ssl/valkey" + TLS_CERT="$TLS_DIR/valkey.crt" + TLS_KEY="$TLS_DIR/valkey.key" + chown valkey:valkey "$TLS_CERT" "$TLS_KEY" + + if [[ ${tls_only,,} =~ ^(y|yes)$ ]]; then + { + echo "" + echo "# TLS configuration generated by Proxmox VE Valkey helper-script" + echo "port 0" + echo "tls-port 6379" + echo "tls-cert-file $TLS_DIR/valkey.crt" + echo "tls-key-file $TLS_DIR/valkey.key" + echo "tls-auth-clients no" + } >> /etc/valkey/valkey.conf + msg_ok "Enabled TLS-only mode on port 6379" + else + { + echo "" + echo "# TLS configuration generated by Proxmox VE Valkey helper-script" + echo "tls-port 6380" + echo "tls-cert-file $TLS_DIR/valkey.crt" + echo "tls-key-file $TLS_DIR/valkey.key" + echo "tls-auth-clients no" + } >> /etc/valkey/valkey.conf + msg_ok "Enabled TLS on port 6380 and TCP on 6379" + fi +fi + +systemctl enable -q --now valkey-server +systemctl restart valkey-server + +motd_ssh +customize +cleanup_lxc diff --git a/install/vaultwarden-install.sh b/install/vaultwarden-install.sh deleted file mode 100644 index 9c2858148..000000000 --- a/install/vaultwarden-install.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/dani-garcia/vaultwarden - -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 \ - build-essential \ - pkgconf \ - libssl-dev \ - libmariadb-dev-compat \ - libpq-dev \ - argon2 \ - ssl-cert -msg_ok "Installed Dependencies" - -setup_rust -fetch_and_deploy_gh_release "vaultwarden" "dani-garcia/vaultwarden" "tarball" "latest" "/tmp/vaultwarden-src" - -msg_info "Building Vaultwarden (Patience)" -cd /tmp/vaultwarden-src -VW_VERSION=$(get_latest_github_release "dani-garcia/vaultwarden") -export VW_VERSION -$STD cargo build --features "sqlite,mysql,postgresql" --release -msg_ok "Built Vaultwarden" - -msg_info "Setting up Vaultwarden" -$STD addgroup --system vaultwarden -$STD adduser --system --home /opt/vaultwarden --shell /usr/sbin/nologin --no-create-home --gecos 'vaultwarden' --ingroup vaultwarden --disabled-login --disabled-password vaultwarden -mkdir -p /opt/vaultwarden/{bin,data,web-vault} -cp target/release/vaultwarden /opt/vaultwarden/bin/ -cd ~ && rm -rf /tmp/vaultwarden-src -msg_ok "Set up Vaultwarden" - -fetch_and_deploy_gh_release "vaultwarden_webvault" "dani-garcia/bw_web_builds" "prebuild" "latest" "/opt/vaultwarden/web-vault" "bw_web_*.tar.gz" - -msg_info "Configuring Vaultwarden" -cat </opt/vaultwarden/.env -ADMIN_TOKEN='' -ROCKET_ADDRESS=0.0.0.0 -ROCKET_TLS='{certs="/opt/vaultwarden/ssl-cert-snakeoil.pem",key="/opt/vaultwarden/ssl-cert-snakeoil.key"}' -DATA_FOLDER=/opt/vaultwarden/data -DATABASE_MAX_CONNS=10 -WEB_VAULT_FOLDER=/opt/vaultwarden/web-vault -WEB_VAULT_ENABLED=true -EOF -mv /etc/ssl/certs/ssl-cert-snakeoil.pem /opt/vaultwarden/ -mv /etc/ssl/private/ssl-cert-snakeoil.key /opt/vaultwarden/ - -chown -R vaultwarden:vaultwarden /opt/vaultwarden/ -chown root:root /opt/vaultwarden/bin/vaultwarden -chmod +x /opt/vaultwarden/bin/vaultwarden -chown -R root:root /opt/vaultwarden/web-vault/ -chmod +r /opt/vaultwarden/.env -msg_ok "Configured Vaultwarden" - -msg_info "Creating Service" -cat </etc/systemd/system/vaultwarden.service -[Unit] -Description=Bitwarden Server (Powered by Vaultwarden) -Documentation=https://github.com/dani-garcia/vaultwarden -After=network.target - -[Service] -User=vaultwarden -Group=vaultwarden -EnvironmentFile=-/opt/vaultwarden/.env -ExecStart=/opt/vaultwarden/bin/vaultwarden -LimitNOFILE=65535 -LimitNPROC=4096 -PrivateTmp=true -PrivateDevices=true -ProtectHome=true -ProtectSystem=strict -DevicePolicy=closed -ProtectControlGroups=yes -ProtectKernelModules=yes -ProtectKernelTunables=yes -RestrictNamespaces=yes -RestrictRealtime=yes -MemoryDenyWriteExecute=yes -LockPersonality=yes -WorkingDirectory=/opt/vaultwarden -ReadWriteDirectories=/opt/vaultwarden/data -AmbientCapabilities=CAP_NET_BIND_SERVICE - -[Install] -WantedBy=multi-user.target -EOF -systemctl enable -q --now vaultwarden -msg_ok "Created Service" - -motd_ssh -customize -cleanup_lxc diff --git a/install/verdaccio-install.sh b/install/verdaccio-install.sh new file mode 100644 index 000000000..a241c6e25 --- /dev/null +++ b/install/verdaccio-install.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: BrynnJKnight +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://verdaccio.org/ | Github: https://github.com/verdaccio/verdaccio + +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 build-essential +msg_ok "Installed Dependencies" + +NODE_VERSION="24" NODE_MODULE="verdaccio" setup_nodejs + +msg_info "Configuring Verdaccio" +mkdir -p /opt/verdaccio/config +mkdir -p /opt/verdaccio/storage +cat </opt/verdaccio/config/config.yaml +# Verdaccio configuration +storage: /opt/verdaccio/storage +auth: + htpasswd: + file: /opt/verdaccio/storage/htpasswd + max_users: 1000 +uplinks: + npmjs: + url: https://registry.npmjs.org/ +packages: + '@*/*': + access: \$all + publish: \$authenticated + proxy: npmjs + '**': + access: \$all + publish: \$authenticated + proxy: npmjs +middlewares: + audit: + enabled: true +logs: + - {type: stdout, format: pretty, level: http} +listen: + - 0.0.0.0:4873 +web: + enable: true + title: Verdaccio + gravatar: true + sort_packages: asc + login: true +EOF +chown -R root:root /opt/verdaccio +chmod -R 755 /opt/verdaccio +msg_ok "Configured Verdaccio" + +msg_info "Creating Service" +cat </etc/systemd/system/verdaccio.service +[Unit] +Description=Verdaccio lightweight private npm proxy registry +After=network.target + +[Service] +Type=simple +ExecStart=/usr/bin/verdaccio --config /opt/verdaccio/config/config.yaml +Restart=on-failure +StandardOutput=journal +StandardError=journal +SyslogIdentifier=verdaccio +KillMode=control-group + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now verdaccio +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/wavelog-install.sh b/install/wavelog-install.sh new file mode 100644 index 000000000..b70507749 --- /dev/null +++ b/install/wavelog-install.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Don Locke (DonLocke) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/wavelog/wavelog + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MAX_EXECUTION_TIME="600" setup_php +setup_mariadb +MARIADB_DB_NAME="wavelog" MARIADB_DB_USER="waveloguser" setup_mariadb_db +fetch_and_deploy_gh_release "wavelog" "wavelog/wavelog" "tarball" + +msg_info "Configuring Wavelog" +chown -R www-data:www-data /opt/wavelog/ +find /opt/wavelog/ -type d -exec chmod 755 {} \; +find /opt/wavelog/ -type f -exec chmod 664 {} \; +msg_ok "Configured Wavelog" + +msg_info "Creating Service" +cat </etc/apache2/sites-available/wavelog.conf + + ServerAdmin webmaster@localhost + DocumentRoot /opt/wavelog + + + Options Indexes FollowSymLinks + AllowOverride All + Require all granted + + + ErrorLog /var/log/apache2/error.log + CustomLog /var/log/apache2/access.log combined + +EOF +$STD a2ensite wavelog.conf +$STD a2dissite 000-default.conf +$STD systemctl reload apache2 +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/writefreely-install.sh b/install/writefreely-install.sh new file mode 100644 index 000000000..e87e89184 --- /dev/null +++ b/install/writefreely-install.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: StellaeAlis +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/writefreely/writefreely + +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 crudini +msg_ok "Installed Dependencies" + +setup_mariadb +MARIADB_DB_NAME="writefreely" MARIADB_DB_USER="writefreely" setup_mariadb_db +fetch_and_deploy_gh_release "writefreely" "writefreely/writefreely" "prebuild" "latest" "/opt/writefreely" "writefreely_*_linux_amd64.tar.gz" + +msg_info "Setting up WriteFreely" +cd /opt/writefreely +$STD ./writefreely config generate +$STD ./writefreely keys generate +msg_ok "Setup WriteFreely" + +msg_info "Configuring WriteFreely" +$STD crudini --set config.ini server port 80 +$STD crudini --set config.ini server bind $LOCAL_IP +$STD crudini --set config.ini database username $MARIADB_DB_USER +$STD crudini --set config.ini database password $MARIADB_DB_PASS +$STD crudini --set config.ini database database $MARIADB_DB_NAME +$STD crudini --set config.ini app host http://$LOCAL_IP:80 +$STD ./writefreely db init +ln -s /opt/writefreely/writefreely /usr/local/bin/writefreely +msg_ok "Configured WriteFreely" + +msg_info "Creating Service" +cat </etc/systemd/system/writefreely.service +[Unit] +Description=WriteFreely Service +After=syslog.target network.target + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/writefreely +ExecStart=/opt/writefreely/writefreely +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now writefreely +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/tools/addon/daemonsync_2.2.0.0059_amd64.deb b/tools/addon/daemonsync_2.2.0.0059_amd64.deb deleted file mode 100644 index 0444976c7..000000000 Binary files a/tools/addon/daemonsync_2.2.0.0059_amd64.deb and /dev/null differ