feat: support postgresql database
This commit is contained in:
3 files changed
+71
-6
No files matched your search
+24
-5
@@ -8,8 +8,10 @@ function clear_dir() {
|
|||||||
|
|
||||||
function backup_init() {
|
function backup_init() {
|
||||||
NOW="$(date +"${BACKUP_FILE_DATE_FORMAT}")"
|
NOW="$(date +"${BACKUP_FILE_DATE_FORMAT}")"
|
||||||
# backup vaultwarden database file
|
# backup vaultwarden database file (sqlite)
|
||||||
BACKUP_FILE_DB="${BACKUP_DIR}/db.${NOW}.sqlite3"
|
BACKUP_FILE_DB_SQLITE="${BACKUP_DIR}/db.${NOW}.sqlite3"
|
||||||
|
# backup vaultwarden database file (postgresql)
|
||||||
|
BACKUP_FILE_DB_POSTGRESQL="${BACKUP_DIR}/db.${NOW}.dump"
|
||||||
# backup vaultwarden config file
|
# backup vaultwarden config file
|
||||||
BACKUP_FILE_CONFIG="${BACKUP_DIR}/config.${NOW}.json"
|
BACKUP_FILE_CONFIG="${BACKUP_DIR}/config.${NOW}.json"
|
||||||
# backup vaultwarden rsakey files
|
# backup vaultwarden rsakey files
|
||||||
@@ -22,16 +24,29 @@ function backup_init() {
|
|||||||
BACKUP_FILE_ZIP="${BACKUP_DIR}/backup.${NOW}.${ZIP_TYPE}"
|
BACKUP_FILE_ZIP="${BACKUP_DIR}/backup.${NOW}.${ZIP_TYPE}"
|
||||||
}
|
}
|
||||||
|
|
||||||
function backup_db() {
|
function backup_db_sqlite() {
|
||||||
color blue "backup vaultwarden sqlite database"
|
color blue "backup vaultwarden sqlite database"
|
||||||
|
|
||||||
if [[ -f "${DATA_DB}" ]]; then
|
if [[ -f "${DATA_DB}" ]]; then
|
||||||
sqlite3 "${DATA_DB}" ".backup '${BACKUP_FILE_DB}'"
|
sqlite3 "${DATA_DB}" ".backup '${BACKUP_FILE_DB_SQLITE}'"
|
||||||
else
|
else
|
||||||
color yellow "not found vaultwarden sqlite database, skipping"
|
color yellow "not found vaultwarden sqlite database, skipping"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function backup_db_postgresql() {
|
||||||
|
color blue "backup vaultwarden postgresql database"
|
||||||
|
|
||||||
|
pg_dump -Fc -h "${PG_HOST}" -p "${PG_PORT}" -d "${PG_DBNAME}" -U "${PG_USERNAME}" -f "${BACKUP_FILE_DB_POSTGRESQL}"
|
||||||
|
if [[ $? != 0 ]]; then
|
||||||
|
color red "backup vaultwarden postgresql database failed"
|
||||||
|
|
||||||
|
send_mail_content "FALSE" "Backup failed at $(date +"%Y-%m-%d %H:%M:%S %Z"). Reason: Backup postgresql database failed."
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function backup_config() {
|
function backup_config() {
|
||||||
color blue "backup vaultwarden config"
|
color blue "backup vaultwarden config"
|
||||||
|
|
||||||
@@ -90,7 +105,11 @@ function backup_sends() {
|
|||||||
function backup() {
|
function backup() {
|
||||||
mkdir -p "${BACKUP_DIR}"
|
mkdir -p "${BACKUP_DIR}"
|
||||||
|
|
||||||
backup_db
|
case "${DB_TYPE}" in
|
||||||
|
SQLITE) backup_db_sqlite ;;
|
||||||
|
POSTGRESQL) backup_db_postgresql ;;
|
||||||
|
esac
|
||||||
|
|
||||||
backup_config
|
backup_config
|
||||||
backup_rsakey
|
backup_rsakey
|
||||||
backup_attachments
|
backup_attachments
|
||||||
|
|||||||
@@ -36,6 +36,13 @@ if [[ "$1" == "restore" ]]; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
function configure_postgresql() {
|
||||||
|
if [[ "${DB_TYPE}" == "POSTGRESQL" ]]; then
|
||||||
|
echo "${PG_HOST}:${PG_PORT}:${PG_DBNAME}:${PG_USERNAME}:${PG_PASSWORD}" > ~/.pgpass
|
||||||
|
chmod 0600 ~/.pgpass
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function configure_timezone() {
|
function configure_timezone() {
|
||||||
ln -sf "/usr/share/zoneinfo/${TIMEZONE}" "${LOCALTIME_FILE}"
|
ln -sf "/usr/share/zoneinfo/${TIMEZONE}" "${LOCALTIME_FILE}"
|
||||||
}
|
}
|
||||||
@@ -49,6 +56,7 @@ function configure_cron() {
|
|||||||
|
|
||||||
init_env
|
init_env
|
||||||
check_rclone_connection
|
check_rclone_connection
|
||||||
|
configure_postgresql
|
||||||
configure_timezone
|
configure_timezone
|
||||||
configure_cron
|
configure_cron
|
||||||
|
|
||||||
|
|||||||
+39
-1
@@ -237,6 +237,7 @@ function init_env() {
|
|||||||
export_env_file
|
export_env_file
|
||||||
|
|
||||||
init_env_dir
|
init_env_dir
|
||||||
|
init_env_db
|
||||||
init_env_mail
|
init_env_mail
|
||||||
|
|
||||||
# CRON
|
# CRON
|
||||||
@@ -305,11 +306,19 @@ function init_env() {
|
|||||||
|
|
||||||
color yellow "========================================"
|
color yellow "========================================"
|
||||||
color yellow "DATA_DIR: ${DATA_DIR}"
|
color yellow "DATA_DIR: ${DATA_DIR}"
|
||||||
color yellow "DATA_DB: ${DATA_DB}"
|
|
||||||
color yellow "DATA_CONFIG: ${DATA_CONFIG}"
|
color yellow "DATA_CONFIG: ${DATA_CONFIG}"
|
||||||
color yellow "DATA_RSAKEY: ${DATA_RSAKEY}"
|
color yellow "DATA_RSAKEY: ${DATA_RSAKEY}"
|
||||||
color yellow "DATA_ATTACHMENTS: ${DATA_ATTACHMENTS}"
|
color yellow "DATA_ATTACHMENTS: ${DATA_ATTACHMENTS}"
|
||||||
color yellow "DATA_SENDS: ${DATA_SENDS}"
|
color yellow "DATA_SENDS: ${DATA_SENDS}"
|
||||||
|
color yellow "========================================"
|
||||||
|
color yellow "DB_TYPE: ${DB_TYPE}"
|
||||||
|
|
||||||
|
if [[ "${DB_TYPE}" == "POSTGRESQL" ]]; then
|
||||||
|
color yellow "DB_URL: ${PG_HOST}:${PG_PORT}:${PG_DBNAME}:${PG_USERNAME}:***(${#PG_PASSWORD} Chars)"
|
||||||
|
else
|
||||||
|
color yellow "DATA_DB: ${DATA_DB}"
|
||||||
|
fi
|
||||||
|
|
||||||
color yellow "========================================"
|
color yellow "========================================"
|
||||||
color yellow "CRON: ${CRON}"
|
color yellow "CRON: ${CRON}"
|
||||||
|
|
||||||
@@ -369,6 +378,35 @@ function init_env_dir() {
|
|||||||
DATA_SENDS_BASENAME="$(basename "${DATA_SENDS}")"
|
DATA_SENDS_BASENAME="$(basename "${DATA_SENDS}")"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function init_env_db() {
|
||||||
|
# DB_TYPE
|
||||||
|
get_env DB_TYPE
|
||||||
|
|
||||||
|
if [[ "${DB_TYPE^^}" == "POSTGRESQL" ]]; then # postgresql
|
||||||
|
DB_TYPE="POSTGRESQL"
|
||||||
|
|
||||||
|
# PG_HOST
|
||||||
|
get_env PG_HOST
|
||||||
|
|
||||||
|
# PG_PORT
|
||||||
|
get_env PG_PORT
|
||||||
|
PG_PORT="${PG_PORT:-"5432"}"
|
||||||
|
|
||||||
|
# PG_DBNAME
|
||||||
|
get_env PG_DBNAME
|
||||||
|
PG_DBNAME="${PG_DBNAME:-"vaultwarden"}"
|
||||||
|
|
||||||
|
# PG_USERNAME
|
||||||
|
get_env PG_USERNAME
|
||||||
|
PG_USERNAME="${PG_USERNAME:-"vaultwarden"}"
|
||||||
|
|
||||||
|
# PG_PASSWORD
|
||||||
|
get_env PG_PASSWORD
|
||||||
|
else # sqlite
|
||||||
|
DB_TYPE="SQLITE"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function init_env_mail() {
|
function init_env_mail() {
|
||||||
# MAIL_SMTP_ENABLE
|
# MAIL_SMTP_ENABLE
|
||||||
# MAIL_TO
|
# MAIL_TO
|
||||||
|
|||||||
Reference in new issue
Block a user