mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 02:12:49 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			149 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/usr/bin/env bash
 | 
						|
 | 
						|
# Copyright (c) 2021-2025 tteck
 | 
						|
# Author: tteck (tteckster)
 | 
						|
# 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 Dependencies"
 | 
						|
$STD apt-get install -y gnupg
 | 
						|
msg_ok "Installed Dependencies"
 | 
						|
 | 
						|
msg_info "Setting up PostgreSQL Repository"
 | 
						|
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
 | 
						|
echo "deb http://apt.postgresql.org/pub/repos/apt ${VERSION}-pgdg main" >/etc/apt/sources.list.d/pgdg.list
 | 
						|
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor --output /etc/apt/trusted.gpg.d/postgresql.gpg
 | 
						|
msg_ok "Setup PostgreSQL Repository"
 | 
						|
 | 
						|
msg_info "Installing PostgreSQL"
 | 
						|
$STD apt-get update
 | 
						|
$STD apt-get install -y postgresql
 | 
						|
 | 
						|
cat <<EOF >/etc/postgresql/17/main/pg_hba.conf
 | 
						|
# PostgreSQL Client Authentication Configuration File
 | 
						|
local   all             postgres                                peer
 | 
						|
# TYPE  DATABASE        USER            ADDRESS                 METHOD
 | 
						|
# "local" is for Unix domain socket connections only
 | 
						|
local   all             all                                     md5
 | 
						|
# IPv4 local connections:
 | 
						|
host    all             all             127.0.0.1/32            scram-sha-256
 | 
						|
host    all             all             0.0.0.0/24              md5
 | 
						|
# IPv6 local connections:
 | 
						|
host    all             all             ::1/128                 scram-sha-256
 | 
						|
host    all             all             0.0.0.0/0               md5
 | 
						|
# Allow replication connections from localhost, by a user with the
 | 
						|
# replication privilege.
 | 
						|
local   replication     all                                     peer
 | 
						|
host    replication     all             127.0.0.1/32            scram-sha-256
 | 
						|
host    replication     all             ::1/128                 scram-sha-256
 | 
						|
EOF
 | 
						|
 | 
						|
cat <<EOF >/etc/postgresql/17/main/postgresql.conf
 | 
						|
# -----------------------------
 | 
						|
# PostgreSQL configuration file
 | 
						|
# -----------------------------
 | 
						|
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
# FILE LOCATIONS
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
 | 
						|
data_directory = '/var/lib/postgresql/17/main'       
 | 
						|
hba_file = '/etc/postgresql/17/main/pg_hba.conf'     
 | 
						|
ident_file = '/etc/postgresql/17/main/pg_ident.conf'   
 | 
						|
external_pid_file = '/var/run/postgresql/17-main.pid'                   
 | 
						|
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
# CONNECTIONS AND AUTHENTICATION
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
 | 
						|
# - Connection Settings -
 | 
						|
 | 
						|
listen_addresses = '*'                 
 | 
						|
port = 5432                             
 | 
						|
max_connections = 100                  
 | 
						|
unix_socket_directories = '/var/run/postgresql' 
 | 
						|
 | 
						|
# - SSL -
 | 
						|
 | 
						|
ssl = on
 | 
						|
ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
 | 
						|
ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'
 | 
						|
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
# RESOURCE USAGE (except WAL)
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
 | 
						|
shared_buffers = 128MB                
 | 
						|
dynamic_shared_memory_type = posix      
 | 
						|
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
# WRITE-AHEAD LOG
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
 | 
						|
max_wal_size = 1GB
 | 
						|
min_wal_size = 80MB
 | 
						|
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
# REPORTING AND LOGGING
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
 | 
						|
# - What to Log -
 | 
						|
 | 
						|
log_line_prefix = '%m [%p] %q%u@%d '           
 | 
						|
log_timezone = 'Etc/UTC'
 | 
						|
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
# PROCESS TITLE
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
 | 
						|
cluster_name = '17/main'                
 | 
						|
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
# CLIENT CONNECTION DEFAULTS
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
 | 
						|
# - Locale and Formatting -
 | 
						|
 | 
						|
datestyle = 'iso, mdy'
 | 
						|
timezone = 'Etc/UTC'
 | 
						|
lc_messages = 'C'                      
 | 
						|
lc_monetary = 'C'                       
 | 
						|
lc_numeric = 'C'                        
 | 
						|
lc_time = 'C'                           
 | 
						|
default_text_search_config = 'pg_catalog.english'
 | 
						|
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
# CONFIG FILE INCLUDES
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
 | 
						|
include_dir = 'conf.d'                  
 | 
						|
EOF
 | 
						|
 | 
						|
sudo systemctl restart postgresql
 | 
						|
msg_ok "Installed PostgreSQL"
 | 
						|
 | 
						|
read -r -p "Would you like to add Adminer? <y/N> " prompt
 | 
						|
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
 | 
						|
  msg_info "Installing Adminer"
 | 
						|
  $STD apt install -y adminer
 | 
						|
  $STD a2enconf adminer
 | 
						|
  systemctl reload apache2
 | 
						|
  msg_ok "Installed Adminer"
 | 
						|
fi
 | 
						|
 | 
						|
motd_ssh
 | 
						|
customize
 | 
						|
 | 
						|
msg_info "Cleaning up"
 | 
						|
$STD apt-get -y autoremove
 | 
						|
$STD apt-get -y autoclean
 | 
						|
msg_ok "Cleaned"
 |