diff --git a/ct/alpine-postgresql.sh b/ct/alpine-postgresql.sh new file mode 100644 index 000000000..c8afad0f1 --- /dev/null +++ b/ct/alpine-postgresql.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-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://postgresql.org/ + +APP="Alpine-PostgreSQL" +var_tags="${var_tags:-alpine;database}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-256}" +var_disk="${var_disk:-1}" +var_os="${var_os:-alpine}" +var_version="${var_version:-3.21}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + msg_info "Updating Alpine Packages" + $STD apk update + $STD apk upgrade + msg_ok "Updated Alpine Packages" + + msg_info "Updating PostgreSQL" + $STD apk upgrade postgresql postgresql-contrib + msg_ok "Updated PostgreSQL" + + msg_info "Restarting PostgreSQL" + $STD rc-service postgresql restart + msg_ok "Restarted PostgreSQL" + + exit 0 +} + +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 IP:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}${IP}:5432${CL}" diff --git a/frontend/public/json/postgresql.json b/frontend/public/json/postgresql.json index ca48964cd..9a9537933 100644 --- a/frontend/public/json/postgresql.json +++ b/frontend/public/json/postgresql.json @@ -1,39 +1,48 @@ { - "name": "PostgreSQL", - "slug": "postgresql", - "categories": [ - 8 - ], - "date_created": "2024-05-02", - "type": "ct", - "updateable": false, - "privileged": false, - "interface_port": 5432, - "documentation": null, - "website": "https://www.postgresql.org/", - "logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/postgresql.svg", - "description": "PostgreSQL (often referred to as Postgres) is an open-source relational database management system that is known for its extensibility and strict adherence to SQL standards. It is a free and powerful database solution, suitable for a wide range of applications, from small projects to large enterprise systems. PostgreSQL is widely used for its reliability, feature-richness, and robustness.", - "install_methods": [ - { - "type": "default", - "script": "ct/postgresql.sh", - "resources": { - "cpu": 1, - "ram": 1024, - "hdd": 4, - "os": "debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": null, - "password": null + "name": "PostgreSQL", + "slug": "postgresql", + "categories": [8], + "date_created": "2024-05-02", + "type": "ct", + "updateable": false, + "privileged": false, + "interface_port": 5432, + "documentation": null, + "website": "https://www.postgresql.org/", + "logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/postgresql.svg", + "description": "PostgreSQL (often referred to as Postgres) is an open-source relational database management system that is known for its extensibility and strict adherence to SQL standards. It is a free and powerful database solution, suitable for a wide range of applications, from small projects to large enterprise systems. PostgreSQL is widely used for its reliability, feature-richness, and robustness.", + "install_methods": [ + { + "type": "default", + "script": "ct/postgresql.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 4, + "os": "debian", + "version": "12" + } }, - "notes": [ - { - "text": "Set a password after installation for postgres user by running `echo \"ALTER USER postgres with encrypted password 'your_password';\" | sudo -u postgres psql`", - "type": "info" - } - ] -} \ No newline at end of file + { + "type": "alpine", + "script": "ct/alpine-postgresql.sh", + "resources": { + "cpu": 1, + "ram": 256, + "hdd": 1, + "os": "alpine", + "version": "3.21" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Set a password after installation for postgres user by running `echo \"ALTER USER postgres with encrypted password 'your_password';\" | sudo -u postgres psql`", + "type": "info" + } + ] +} diff --git a/install/alpine-postgresql-install.sh b/install/alpine-postgresql-install.sh new file mode 100644 index 000000000..b8cf02103 --- /dev/null +++ b/install/alpine-postgresql-install.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.postgresql.org/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing PostgreSQL" +$STD apk add --no-cache postgresql16 postgresql16-contrib postgresql16-openrc sudo +msg_ok "Installed PostgreSQL" + +msg_info "Enabling PostgreSQL Service" +$STD rc-update add postgresql default +msg_ok "Enabled PostgreSQL Service" + +msg_info "Starting PostgreSQL" +$STD rc-service postgresql start +msg_ok "Started PostgreSQL" + +msg_info "Configuring PostgreSQL for External Access" +conf_file="/etc/postgresql16/postgresql.conf" +hba_file="/etc/postgresql16/pg_hba.conf" +sed -i 's/^#listen_addresses =.*/listen_addresses = '\''*'\''/' "$conf_file" +sed -i '/^host\s\+all\s\+all\s\+127.0.0.1\/32\s\+md5/ s/.*/host all all 0.0.0.0\/0 md5/' "$hba_file" +$STD rc-service postgresql restart +msg_ok "Configured and Restarted PostgreSQL" + +read -r -p "Would you like to install Adminer with lighttpd? : " prompt +if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then + msg_info "Installing Adminer and dependencies" + $STD apk add --no-cache \ + lighttpd \ + lighttpd-openrc \ + php83 \ + php83-cgi \ + php83-common \ + php83-curl \ + php83-gd \ + php83-mbstring \ + php83-pdo \ + php83-pgsql \ + php83-openssl \ + php83-zip \ + php83-session \ + jq + + sed -i 's|# *include "mod_fastcgi.conf"|include "mod_fastcgi.conf"|' /etc/lighttpd/lighttpd.conf + mkdir -p /var/www/localhost/htdocs + ADMINER_VERSION=$(curl -fsSL https://api.github.com/repos/vrana/adminer/releases/latest | jq -r '.tag_name' | sed 's/^v//') + curl -fsSL "https://github.com/vrana/adminer/releases/download/v${ADMINER_VERSION}/adminer-${ADMINER_VERSION}.php" -o /var/www/localhost/htdocs/adminer.php + chown lighttpd:lighttpd /var/www/localhost/htdocs/adminer.php + chmod 755 /var/www/localhost/htdocs/adminer.php + msg_ok "Adminer Installed" + + msg_info "Starting Lighttpd" + $STD rc-update add lighttpd default + $STD rc-service lighttpd restart + msg_ok "Lighttpd Started" +fi + +motd_ssh +customize