新增大量内容
This commit is contained in:
2
.idea/dataSources.local.xml
generated
2
.idea/dataSources.local.xml
generated
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="dataSourceStorageLocal" created-in="IU-252.23892.409">
|
<component name="dataSourceStorageLocal" created-in="IU-252.25557.131">
|
||||||
<data-source name="腾讯云-成都" uuid="79c9466f-d8a3-418a-b54a-f6e314306a0c">
|
<data-source name="腾讯云-成都" uuid="79c9466f-d8a3-418a-b54a-f6e314306a0c">
|
||||||
<database-info product="MySQL" version="8.0.27" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-java-8.0.25 (Revision: 08be9e9b4cba6aa115f9b27b215887af40b159e0)" dbms="MYSQL" exact-version="8.0.27" exact-driver-version="8.0">
|
<database-info product="MySQL" version="8.0.27" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-java-8.0.25 (Revision: 08be9e9b4cba6aa115f9b27b215887af40b159e0)" dbms="MYSQL" exact-version="8.0.27" exact-driver-version="8.0">
|
||||||
<extra-name-characters>#@</extra-name-characters>
|
<extra-name-characters>#@</extra-name-characters>
|
||||||
|
|||||||
342
0-部署应用/CloudCone-备份中心/b-vault-warden-dsv3.1.sh
Normal file
342
0-部署应用/CloudCone-备份中心/b-vault-warden-dsv3.1.sh
Normal file
@@ -0,0 +1,342 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# =============================================================================
|
||||||
|
# b-vault-warden备份脚本
|
||||||
|
# 功能:远程执行Vaultwarden备份、同步备份文件、加密压缩及清理
|
||||||
|
# 版本:1.0.0
|
||||||
|
# 作者:Shell脚本工程师
|
||||||
|
# 许可证:MIT License
|
||||||
|
# 依赖:ssh, rsync, 7zip, docker (远程主机)
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
IFS=$'\n\t'
|
||||||
|
|
||||||
|
# > 全局常量定义
|
||||||
|
readonly SCRIPT_NAME="$(basename "$0")"
|
||||||
|
readonly SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
readonly LOCK_FILE="/tmp/${SCRIPT_NAME}.lock"
|
||||||
|
|
||||||
|
# > 配置参数(可根据需要调整为环境变量)
|
||||||
|
readonly REMOTE_HOST="s5"
|
||||||
|
readonly REMOTE_PORT="22333"
|
||||||
|
readonly REMOTE_USER="root"
|
||||||
|
readonly REMOTE_BACKUP_CMD="docker exec vault-warden /vaultwarden backup"
|
||||||
|
readonly REMOTE_DATA_DIR="/data/vault-warden/persist-data"
|
||||||
|
readonly LOCAL_STAGE_DIR="/tmp/vault_warden_backup_stage"
|
||||||
|
readonly LOCAL_BACKUP_DIR="${SCRIPT_DIR}/backups"
|
||||||
|
readonly BACKUP_PATTERNS=(
|
||||||
|
"config.json"
|
||||||
|
"rsa_key*"
|
||||||
|
"attachments"
|
||||||
|
"sends"
|
||||||
|
"db_*.sqlite3"
|
||||||
|
)
|
||||||
|
readonly ENCRYPTION_PASSWORD="your_encryption_password_here" # > 请在实际使用时修改
|
||||||
|
|
||||||
|
# > 日志配置
|
||||||
|
readonly LOG_DIR="${SCRIPT_DIR}/logs"
|
||||||
|
readonly LOG_FILE="${LOG_DIR}/backup_$(date +%Y%m%d).log"
|
||||||
|
|
||||||
|
# > 颜色输出定义
|
||||||
|
readonly RED='\033[0;31m'
|
||||||
|
readonly GREEN='\033[0;32m'
|
||||||
|
readonly YELLOW='\033[1;33m'
|
||||||
|
readonly BLUE='\033[0;34m'
|
||||||
|
readonly NC='\033[0m'
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 日志函数集
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
###
|
||||||
|
# 初始化日志系统
|
||||||
|
# @require 无
|
||||||
|
# @return 0 成功 | >0 失败
|
||||||
|
###
|
||||||
|
init_log_system() {
|
||||||
|
mkdir -p "${LOG_DIR}" || return 1
|
||||||
|
touch "${LOG_FILE}" || return 1
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# 记录日志消息
|
||||||
|
# @param level string 日志级别(DEBUG/INFO/WARN/ERROR)
|
||||||
|
# @param message string 日志消息
|
||||||
|
# @require LOG_FILE
|
||||||
|
# @return 0 成功
|
||||||
|
###
|
||||||
|
log_message() {
|
||||||
|
local level="$1"
|
||||||
|
local message="$2"
|
||||||
|
local timestamp
|
||||||
|
timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
|
case "${level}" in
|
||||||
|
"DEBUG") echo -e "${BLUE}[DEBUG]${NC} ${timestamp} - ${message}" | tee -a "${LOG_FILE}" ;;
|
||||||
|
"INFO") echo -e "${GREEN}[INFO]${NC} ${timestamp} - ${message}" | tee -a "${LOG_FILE}" ;;
|
||||||
|
"WARN") echo -e "${YELLOW}[WARN]${NC} ${timestamp} - ${message}" | tee -a "${LOG_FILE}" >&2 ;;
|
||||||
|
"ERROR") echo -e "${RED}[ERROR]${NC} ${timestamp} - ${message}" | tee -a "${LOG_FILE}" >&2 ;;
|
||||||
|
*) echo "${timestamp} - ${message}" | tee -a "${LOG_FILE}" ;;
|
||||||
|
esac
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 工具函数集
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
###
|
||||||
|
# 检查命令是否存在
|
||||||
|
# @param command_name string 命令名称
|
||||||
|
# @require 无
|
||||||
|
# @return 0 存在 | 1 不存在
|
||||||
|
###
|
||||||
|
check_command() {
|
||||||
|
local command_name="$1"
|
||||||
|
if ! command -v "${command_name}" >/dev/null 2>&1; then
|
||||||
|
log_message "ERROR" "命令不存在: ${command_name}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# 执行远程SSH命令
|
||||||
|
# @param command string 要执行的命令
|
||||||
|
# @require REMOTE_HOST, REMOTE_PORT, REMOTE_USER
|
||||||
|
# @return 远程命令的退出码
|
||||||
|
###
|
||||||
|
execute_remote_command() {
|
||||||
|
local command="$1"
|
||||||
|
ssh -p "${REMOTE_PORT}" "${REMOTE_USER}@${REMOTE_HOST}" "${command}"
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# 创建锁文件防止并发执行
|
||||||
|
# @require LOCK_FILE
|
||||||
|
# @return 0 成功获取锁 | 1 锁已存在
|
||||||
|
###
|
||||||
|
acquire_lock() {
|
||||||
|
if [ -e "${LOCK_FILE}" ]; then
|
||||||
|
log_message "ERROR" "备份任务正在运行或异常退出,请检查锁文件: ${LOCK_FILE}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
echo "$$" > "${LOCK_FILE}"
|
||||||
|
trap 'release_lock' EXIT
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# 释放锁文件
|
||||||
|
# @require LOCK_FILE
|
||||||
|
# @return 0 成功
|
||||||
|
###
|
||||||
|
release_lock() {
|
||||||
|
[ -e "${LOCK_FILE}" ] && rm -f "${LOCK_FILE}"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 核心备份函数
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
###
|
||||||
|
# 远程执行Vaultwarden备份命令
|
||||||
|
# @require execute_remote_command, REMOTE_BACKUP_CMD
|
||||||
|
# @return 0 成功 | >0 失败
|
||||||
|
###
|
||||||
|
remote_execute_backup() {
|
||||||
|
log_message "INFO" "开始在远程主机执行Vaultwarden备份..."
|
||||||
|
|
||||||
|
if ! execute_remote_command "${REMOTE_BACKUP_CMD}"; then
|
||||||
|
log_message "ERROR" "远程备份命令执行失败"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_message "INFO" "远程备份命令执行成功"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# 使用rsync同步备份文件到本地
|
||||||
|
# @require REMOTE_HOST, REMOTE_PORT, REMOTE_USER, REMOTE_DATA_DIR, LOCAL_STAGE_DIR, BACKUP_PATTERNS
|
||||||
|
# @return 0 成功 | >0 失败
|
||||||
|
###
|
||||||
|
sync_backup_files() {
|
||||||
|
log_message "INFO" "开始同步备份文件到本地..."
|
||||||
|
|
||||||
|
# > 创建本地暂存目录
|
||||||
|
mkdir -p "${LOCAL_STAGE_DIR}" || {
|
||||||
|
log_message "ERROR" "创建本地暂存目录失败: ${LOCAL_STAGE_DIR}"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# > 构建rsync命令
|
||||||
|
local rsync_cmd="rsync -avz --progress -e 'ssh -p ${REMOTE_PORT}'"
|
||||||
|
|
||||||
|
for pattern in "${BACKUP_PATTERNS[@]}"; do
|
||||||
|
rsync_cmd+=" ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DATA_DIR}/${pattern}"
|
||||||
|
done
|
||||||
|
|
||||||
|
rsync_cmd+=" ${LOCAL_STAGE_DIR}/"
|
||||||
|
|
||||||
|
# > 执行rsync同步
|
||||||
|
if ! eval "${rsync_cmd}"; then
|
||||||
|
log_message "ERROR" "文件同步失败"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_message "INFO" "文件同步完成"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# 使用7zip加密压缩备份文件
|
||||||
|
# @require LOCAL_STAGE_DIR, LOCAL_BACKUP_DIR, ENCRYPTION_PASSWORD
|
||||||
|
# @return 0 成功 | >0 失败
|
||||||
|
###
|
||||||
|
encrypt_and_compress() {
|
||||||
|
log_message "INFO" "开始加密压缩备份文件..."
|
||||||
|
|
||||||
|
# > 检查7zip命令
|
||||||
|
if ! check_command "7z"; then
|
||||||
|
log_message "ERROR" "7zip命令不存在,请安装p7zip-full包"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# > 创建备份目录
|
||||||
|
mkdir -p "${LOCAL_BACKUP_DIR}" || {
|
||||||
|
log_message "ERROR" "创建备份目录失败: ${LOCAL_BACKUP_DIR}"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
local backup_file="${LOCAL_BACKUP_DIR}/vaultwarden-backup-$(date +%Y%m%d-%H%M%S).7z"
|
||||||
|
|
||||||
|
# > 执行加密压缩
|
||||||
|
if ! (cd "${LOCAL_STAGE_DIR}" && 7z a -p"${ENCRYPTION_PASSWORD}" -mhe=on "${backup_file}" . >/dev/null); then
|
||||||
|
log_message "ERROR" "加密压缩失败"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_message "INFO" "加密压缩完成: ${backup_file}"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# 远程删除备份数据库文件
|
||||||
|
# @require execute_remote_command, REMOTE_DATA_DIR
|
||||||
|
# @return 0 成功 | >0 失败
|
||||||
|
###
|
||||||
|
remote_cleanup_backup() {
|
||||||
|
log_message "INFO" "开始清理远程备份文件..."
|
||||||
|
|
||||||
|
local cleanup_cmd="rm -rf ${REMOTE_DATA_DIR}/db_*.sqlite3"
|
||||||
|
|
||||||
|
if ! execute_remote_command "${cleanup_cmd}"; then
|
||||||
|
log_message "ERROR" "远程清理失败"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_message "INFO" "远程清理完成"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# 清理本地暂存目录
|
||||||
|
# @require LOCAL_STAGE_DIR
|
||||||
|
# @return 0 成功
|
||||||
|
###
|
||||||
|
local_cleanup() {
|
||||||
|
log_message "INFO" "清理本地暂存目录..."
|
||||||
|
[ -d "${LOCAL_STAGE_DIR}" ] && rm -rf "${LOCAL_STAGE_DIR}"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 主执行流程
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
###
|
||||||
|
# 主备份流程
|
||||||
|
# @require 所有上述函数
|
||||||
|
# @return 0 成功 | >0 失败
|
||||||
|
###
|
||||||
|
main_backup_process() {
|
||||||
|
log_message "INFO" "=== 开始Vaultwarden备份任务 ==="
|
||||||
|
|
||||||
|
# > 检查依赖命令
|
||||||
|
local required_commands=("ssh" "rsync" "7z")
|
||||||
|
for cmd in "${required_commands[@]}"; do
|
||||||
|
if ! check_command "${cmd}"; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# > 执行备份流程
|
||||||
|
local steps=(
|
||||||
|
remote_execute_backup
|
||||||
|
sync_backup_files
|
||||||
|
encrypt_and_compress
|
||||||
|
remote_cleanup_backup
|
||||||
|
local_cleanup
|
||||||
|
)
|
||||||
|
|
||||||
|
for step in "${steps[@]}"; do
|
||||||
|
if ! "${step}"; then
|
||||||
|
log_message "ERROR" "备份任务在第 ${#steps[@]} 步失败"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
log_message "INFO" "=== Vaultwarden备份任务完成 ==="
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 脚本入口点
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# > 设置错误处理
|
||||||
|
trap 'log_message "ERROR" "脚本异常退出"; release_lock; exit 1' ERR
|
||||||
|
|
||||||
|
# > 主执行块
|
||||||
|
main() {
|
||||||
|
if ! acquire_lock; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! init_log_system; then
|
||||||
|
log_message "ERROR" "日志系统初始化失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! main_backup_process; then
|
||||||
|
log_message "ERROR" "备份任务执行失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
release_lock
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# > 脚本执行入口
|
||||||
|
main "$@"
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 函数调用关系图
|
||||||
|
# =============================================================================
|
||||||
|
# main
|
||||||
|
# ├── acquire_lock
|
||||||
|
# ├── init_log_system
|
||||||
|
# └── main_backup_process
|
||||||
|
# ├── check_command (多次调用)
|
||||||
|
# ├── remote_execute_backup
|
||||||
|
# │ └── execute_remote_command
|
||||||
|
# ├── sync_backup_files
|
||||||
|
# ├── encrypt_and_compress
|
||||||
|
# │ └── check_command
|
||||||
|
# ├── remote_cleanup_backup
|
||||||
|
# │ └── execute_remote_command
|
||||||
|
# └── local_cleanup
|
||||||
32
0-部署应用/CloudCone-备份中心/b-vault-warden备份.sh
Normal file
32
0-部署应用/CloudCone-备份中心/b-vault-warden备份.sh
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 定时任务 每天凌晨2点执行
|
||||||
|
# 环境变量
|
||||||
|
vault_warden_host_ip=s5
|
||||||
|
|
||||||
|
|
||||||
|
remote_fetch_vault_warden_backup_data() {
|
||||||
|
|
||||||
|
ssh -p 22333 root@s5 "docker exec -it vault-warden /vaultwarden backup"
|
||||||
|
|
||||||
|
ssh -p 22333 root@s5 "rm -rf /data/vault-warden/persist-data/db_*.sqlite3"
|
||||||
|
}
|
||||||
|
|
||||||
|
mkdir -p /tmp/vault_warden_backup_stage/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
rsync -a /data/vault-warden/persist-data/config.json /data/vault-warden/persist-data/rsa_key* /data/vault-warden/persist-data/attachments /data/vault-warden/persist-data/sends /data/vault-warden/persist-data/db_*.sqlite3 /tmp/vault_warden_backup_stage/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
将暂存目录的全部内容打包成最终的归档文件。
|
||||||
|
cd /tmp/vault_warden_backup_stage/
|
||||||
|
tar -czf vaultwarden-backup-$(date +%Y%m%d-%H%M%S).tar.gz /tmp/vault_warden_backup_stage/*
|
||||||
|
|
||||||
|
|
||||||
|
rm -rf /tmp/vault_warden_backup_stage/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
7
0-部署应用/CloudCone-备份中心/基本环境说明.txt
Normal file
7
0-部署应用/CloudCone-备份中心/基本环境说明.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
64.69.32.106
|
||||||
|
|
||||||
|
购买日期 2026/08/29
|
||||||
|
购买价格 15美元/年
|
||||||
|
|
||||||
|
|
||||||
28
0-部署应用/CloudCone-备份中心/备份内容说明.txt
Normal file
28
0-部署应用/CloudCone-备份中心/备份内容说明.txt
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
|
||||||
|
需要备份的内容
|
||||||
|
S5 nextcloud
|
||||||
|
S5 vault-warden
|
||||||
|
|
||||||
|
T0 gitea
|
||||||
|
|
||||||
|
你是一名计算机领域的大师,你非常善于应用互联网上成熟的工具和自己编写一些小工具,对于数据安全备份具有深刻的理解。
|
||||||
|
请为以下的情况创建一套解决方法,只需要解决方案,不需要实际的代码内容
|
||||||
|
|
||||||
|
主机A的配置为2C 2GB 120GB,用作备份服务器,可以安装任何软件
|
||||||
|
主机B的配置为4C 24GB 100GB 已有docker-compose部署的nextcloud和vault-warden应用,nextcloud的信息为,版本nextcloud:27.0.1-apache,本地映射的目录为/data/nextcloud:/var/www/html,使用的数据库为image: mariadb:10.5,同样需要备份数据库信息。其备份方法请严格参考https://docs.nextcloud.com/server/latest/admin_manual/maintenance/backup.html
|
||||||
|
|
||||||
|
vault-warden的信息为:版本image: vaultwarden/server:1.34.3-alpine,本地存储目录为/data/vault-warden/persist-data:/data,需要备份attachments文件,其备份方法请严格参考https://github.com/dani-garcia/vaultwarden/wiki/Backing-up-your-vault
|
||||||
|
|
||||||
|
主机C的配置为4C 24GB 100GB 已部署gitea应用,gitea的信息为image: docker.io/bitnami/gitea:1.19.3-debian-11-r0,本次存储目录为/var/lib/docker/wdd/gitea/gitea_data:/bitnami/gitea,其备份方法请严格参考https://docs.gitea.com/zh-tw/administration/backup-and-restore
|
||||||
|
|
||||||
|
主机A B C是三台独立的公网服务器,他们之间的网络是互联互通的。
|
||||||
|
主机A B C之间已经配置使用root用户的免费登录
|
||||||
|
主机ABC上的业务均使用root用户启动
|
||||||
|
|
||||||
|
请给出方案,
|
||||||
|
1 求B C之上的nextcloud数据按照1周一次备份到C vault-warden数据按照1填一次备份到C gitea的数据按照1周一次备份到C
|
||||||
|
2 最好采用软件自带的方式导出,需要考虑数据恢复
|
||||||
|
3 备份传输最好考虑安全加密,但不是必要的。
|
||||||
|
4 最好使用rsync和rclone的方式,第一备份为主机A,第二备份请放置于OneDrive
|
||||||
|
|
||||||
39
0-部署应用/CloudCone-备份中心/备份说明.md
Normal file
39
0-部署应用/CloudCone-备份中心/备份说明.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
|
||||||
|
|
||||||
|
# Vault-Warden备份
|
||||||
|
|
||||||
|
## 备份说明
|
||||||
|
备份频率 每天一次 通过crontab执行 每天凌晨2点执行
|
||||||
|
备份副本数 最近3份
|
||||||
|
官方备份说明 https://github.com/dani-garcia/vaultwarden/wiki/Backing-up-your-vault
|
||||||
|
|
||||||
|
## 备份过程
|
||||||
|
1. 远程执行s5:执行vault-warden官方备份命令
|
||||||
|
2. rsync复制s5主机上,特定的备份文件到本地主机备份目录/data/s5_146-56-159-175/vault-warden/
|
||||||
|
3. 远程执行s5:删除掉备份的数据库文件
|
||||||
|
|
||||||
|
|
||||||
|
# NextCloud备份
|
||||||
|
## 备份说明
|
||||||
|
备份频率 每周一次 通过crontab执行 每周日凌晨2点执行
|
||||||
|
备份副本数 最近1份
|
||||||
|
官方备份说明 https://docs.nextcloud.com/server/latest/admin_manual/maintenance/backup.html
|
||||||
|
|
||||||
|
## 备份过程
|
||||||
|
1. 远程执行s5:启用维护模式 docker exec nextcloud_web php occ maintenance:mode --on
|
||||||
|
2. 远程执行s5:数据库备份 (MariaDB) docker exec nextcloud-db mariadb-dump --single-transaction -h localhost -u nextcloud -p'boge14@Level5' nextcloud > /data/nextcloud/nextcloud-db_backup_$(date +%Y%m%d-%H%M%S).sql
|
||||||
|
3. rsync复制s5主机上下面的备份文件,到本地主机目录/data/s5_146-56-159-175/nextcloud/
|
||||||
|
1. /data/nextcloud/*
|
||||||
|
4. 远程执行s5: 删除掉下面的文件
|
||||||
|
1. /data/nextcloud/nextcloud-db_backup_*.sql
|
||||||
|
5. 远程执行s5: 禁用维护模式 docker exec nextcloud_web php occ maintenance:mode --off
|
||||||
|
|
||||||
|
|
||||||
|
# Gitea备份
|
||||||
|
## 备份说明
|
||||||
|
备份频率 每周三 周六凌晨2点执行
|
||||||
|
备份副本数 最近3份
|
||||||
|
官方备份说明 https://docs.gitea.com/zh-tw/administration/backup-and-restore
|
||||||
|
|
||||||
|
## 备份过程
|
||||||
|
1. 远程执行t0: 执行gitea备份命令 docker exec -it --tempdir=/bitnami/gitea/tmp gitea-gitea-1 /opt/bitnami/gitea/bin/gitea dump -c /bitnami/gitea/custom/conf/app.ini
|
||||||
BIN
0-部署应用/CloudCone-备份中心/服务器数据备份与恢复方案.docx
Normal file
BIN
0-部署应用/CloudCone-备份中心/服务器数据备份与恢复方案.docx
Normal file
Binary file not shown.
@@ -2,3 +2,5 @@
|
|||||||
|
|
||||||
### https://www.dejavu.moe/posts/selfhosted-bitwarden-with-cloudflare-tunnel/
|
### https://www.dejavu.moe/posts/selfhosted-bitwarden-with-cloudflare-tunnel/
|
||||||
|
|
||||||
|
|
||||||
|
官方使用说明 https://github.com/dani-garcia/vaultwarden/wiki
|
||||||
@@ -9,6 +9,12 @@ EMERGENCY_ACCESS_ALLOWED=true
|
|||||||
# 日志等级
|
# 日志等级
|
||||||
LOG_LEVEL=warn
|
LOG_LEVEL=warn
|
||||||
|
|
||||||
|
# 是否禁止
|
||||||
|
DISABLE_ADMIN_TOKEN=true
|
||||||
|
|
||||||
|
# 是否允许注册
|
||||||
|
SIGNUPS_ALLOWED=false
|
||||||
|
|
||||||
# 注册需要验证?
|
# 注册需要验证?
|
||||||
SIGNUPS_VERIFY=true
|
SIGNUPS_VERIFY=true
|
||||||
SIGNUPS_VERIFY_RESEND_TIME=3600
|
SIGNUPS_VERIFY_RESEND_TIME=3600
|
||||||
@@ -21,7 +27,7 @@ SIGNUPS_DOMAINS_WHITELIST=107421.xyz
|
|||||||
ORG_CREATION_USERS=you@107421.xyz
|
ORG_CREATION_USERS=you@107421.xyz
|
||||||
|
|
||||||
# 使用 openssl rand -base64 48 命令快速生成管理员令牌
|
# 使用 openssl rand -base64 48 命令快速生成管理员令牌
|
||||||
ADMIN_TOKEN=WnzCmaUPhFsN5jUphoazxw4hlh2cfwjlUPPKJOXxYdLAApxuoFiCIgIjUO8HbaY7
|
# ADMIN_TOKEN=WnzCmaUPhFsN5jUphoazxw4hlh2cfwjlUPPKJOXxYdLAApxuoFiCIgIjUO8HbaY7
|
||||||
|
|
||||||
# 允许邀请?
|
# 允许邀请?
|
||||||
INVITATIONS_ALLOWED=true
|
INVITATIONS_ALLOWED=true
|
||||||
|
|||||||
@@ -44,21 +44,21 @@ services:
|
|||||||
|
|
||||||
cron:
|
cron:
|
||||||
|
|
||||||
image: nextcloud:27.0.1-apache
|
image: nextcloud:27.0.1-apache
|
||||||
|
|
||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
|
|
||||||
- /data/nextcloud/cron:/var/www/html
|
- /data/nextcloud/cron:/var/www/html
|
||||||
|
|
||||||
entrypoint: /cron.sh
|
entrypoint: /cron.sh
|
||||||
|
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|
||||||
- db
|
- db
|
||||||
|
|
||||||
- redis
|
- redis
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,20 +1,18 @@
|
|||||||
# https://hub.docker.com/r/bitnami/gitea
|
|
||||||
|
|
||||||
version: '2'
|
version: '2'
|
||||||
services:
|
services:
|
||||||
postgresql:
|
postgresql:
|
||||||
image: docker.io/bitnami/postgresql:15
|
image: docker.io/bitnami/postgresql:15
|
||||||
volumes:
|
volumes:
|
||||||
- '/var/lib/docker/wdd/gitea/postgresql_data/:/bitnami/postgresql'
|
- '/data/gitea/postgresql_data/:/bitnami/postgresql'
|
||||||
environment:
|
environment:
|
||||||
- POSTGRESQL_DATABASE=gitea_db
|
- POSTGRESQL_DATABASE=gitea_db
|
||||||
- POSTGRESQL_USERNAME=bn_gitea
|
- POSTGRESQL_USERNAME=bn_gitea
|
||||||
- POSTGRESQL_PASSWORD=Superwdd.12
|
- POSTGRESQL_PASSWORD=Superwdd.12
|
||||||
# ALLOW_EMPTY_PASSWORD is recommended only for development.
|
# ALLOW_EMPTY_PASSWORD is recommended only for development.
|
||||||
gitea:
|
gitea:
|
||||||
image: docker.io/bitnami/gitea:1.19.3-debian-11-r0
|
image: docker.io/bitnami/gitea:1.24.5-debian-12-r0
|
||||||
volumes:
|
volumes:
|
||||||
- '/var/lib/docker/wdd/gitea/gitea_data:/bitnami/gitea'
|
- '/data/gitea/gitea_data:/bitnami/gitea'
|
||||||
environment:
|
environment:
|
||||||
- GITEA_DATABASE_HOST=postgresql
|
- GITEA_DATABASE_HOST=postgresql
|
||||||
- GITEA_DATABASE_NAME=gitea_db
|
- GITEA_DATABASE_NAME=gitea_db
|
||||||
@@ -24,11 +22,11 @@ services:
|
|||||||
- GITEA_ADMIN_PASSWORD=lovemm.23
|
- GITEA_ADMIN_PASSWORD=lovemm.23
|
||||||
- GITEA_ADMIN_EMAIL=wdd@107421.xyz
|
- GITEA_ADMIN_EMAIL=wdd@107421.xyz
|
||||||
- GITEA_HTTP_PORT=3000
|
- GITEA_HTTP_PORT=3000
|
||||||
|
# - GITEA_DOMAIN=gitea.107421.xyz
|
||||||
|
# - GITEA_ROOT_URL=gitea.107421.xyz
|
||||||
- GITEA_SSH_LISTEN_PORT=22222
|
- GITEA_SSH_LISTEN_PORT=22222
|
||||||
- GITEA_APP_NAME=Gitea-闲下来就喝杯茶吧
|
- ARCHIVE_CLEANUP_ENABLED = true
|
||||||
- GITEA_DOMAIN=192.168.35.80
|
- ARCHIVE_CLEANUP_TIMEOUT = 168h #设置归档文件过期时间(默认7天)
|
||||||
- GITEA_PROTOCOL=http
|
|
||||||
- GITEA_RUN_MODE=prod
|
|
||||||
ports:
|
ports:
|
||||||
- '3000:3000'
|
- '3000:3000'
|
||||||
- '22222:22222'
|
- '22222:22222'
|
||||||
@@ -441,12 +441,12 @@ proxy-groups:
|
|||||||
proxies:
|
proxies:
|
||||||
- TC-HongKong
|
- TC-HongKong
|
||||||
- BFC-LosAngles
|
- BFC-LosAngles
|
||||||
- FV-HongKong
|
|
||||||
- Care-DEU-Dusseldorf-R-TCHK
|
- Care-DEU-Dusseldorf-R-TCHK
|
||||||
- Oracle-KOR-Seoul-R-TCHK
|
- Oracle-KOR-Seoul-R-TCHK
|
||||||
- Oracle-JPN-Tokyo-R-TCHK
|
- Oracle-JPN-Tokyo-R-TCHK
|
||||||
- Oracle-USA-Phoenix-R-TCHK
|
- Oracle-USA-Phoenix-R-TCHK
|
||||||
- Care-DEU-Dusseldorf
|
- Care-DEU-Dusseldorf
|
||||||
|
- FV-HongKong
|
||||||
- Oracle-KOR-Seoul
|
- Oracle-KOR-Seoul
|
||||||
- FV-DEU-Frankfurt
|
- FV-DEU-Frankfurt
|
||||||
- FV-KOR-Seoul
|
- FV-KOR-Seoul
|
||||||
|
|||||||
@@ -1,19 +1,17 @@
|
|||||||
vless://f8702759-f402-4e85-92a6-8540d577de22@43.154.83.213:24443?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#TC-HongKong
|
vless://f8702759-f402-4e85-92a6-8540d577de22@43.154.83.213:24443?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#TC-HongKong
|
||||||
vless://302fbcb8-e096-46a1-906f-e879ec5ab0c5@154.40.34.106:443?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=xx.l4.ca.bg.107421.xyz#BFC-LosAngles
|
vless://302fbcb8-e096-46a1-906f-e879ec5ab0c5@154.40.34.106:443?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=xx.l4.ca.bg.107421.xyz#BFC-LosAngles
|
||||||
vless://93be1d17-8e02-449d-bb99-683ed46fbe50@43.154.83.213:24453?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#CF-HongKong-R-TCHK
|
vless://9fa9b4e7-d76d-4890-92cf-ce9251a76f59@43.154.83.213:24451?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#Care-DEU-Dusseldorf-R-TCHK
|
||||||
vless://cdf0b19a-9524-48d5-b697-5f10bb567734@43.154.83.213:24452?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#FV-HongKong
|
|
||||||
|
|
||||||
|
|
||||||
vless://7e27da0c-3013-4ed4-817b-50cc76a0bf81@43.154.83.213:24449?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#Oracle-KOR-Seoul-R-TCHK
|
vless://7e27da0c-3013-4ed4-817b-50cc76a0bf81@43.154.83.213:24449?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#Oracle-KOR-Seoul-R-TCHK
|
||||||
vless://c751811a-404f-4a05-bc41-5d572e741398@43.154.83.213:25000?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#Oracle-JPN-Tokyo-R-TCHK
|
vless://c751811a-404f-4a05-bc41-5d572e741398@43.154.83.213:25000?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#Oracle-JPN-Tokyo-R-TCHK
|
||||||
vless://fce2a9c6-1380-4ffa-ba84-6b9ec9ee2eea@43.154.83.213:25001?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#Oracle-USA-Phoenix-R-TCHK
|
vless://fce2a9c6-1380-4ffa-ba84-6b9ec9ee2eea@43.154.83.213:25001?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#Oracle-USA-Phoenix-R-TCHK
|
||||||
vless://9fa9b4e7-d76d-4890-92cf-ce9251a76f59@43.154.83.213:24451?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#Care-DEU-Dusseldorf-R-TCHK
|
|
||||||
|
|
||||||
|
vless://93be1d17-8e02-449d-bb99-683ed46fbe50@43.154.83.213:24453?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#CF-HongKong-R-TCHK
|
||||||
|
vless://cdf0b19a-9524-48d5-b697-5f10bb567734@43.154.83.213:24452?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#FV-HongKong
|
||||||
|
|
||||||
vless://b1417d92-998d-410b-a5f3-cf144b6f043e@45.134.50.233:443?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=bingo.107421.xyz#Care-DEU-Dusseldorf
|
vless://b1417d92-998d-410b-a5f3-cf144b6f043e@45.134.50.233:443?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=bingo.107421.xyz#Care-DEU-Dusseldorf
|
||||||
vless://1089cc14-557e-47ac-ac85-c07957b3cce3@140.238.14.103:443?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=xx.s4.cc.hh.107421.xyz#Oracle-KOR-Seoul
|
vless://1089cc14-557e-47ac-ac85-c07957b3cce3@140.238.14.103:443?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=xx.s4.cc.hh.107421.xyz#Oracle-KOR-Seoul
|
||||||
|
|
||||||
|
|
||||||
vless://6055eac4-dee7-463b-b575-d30ea94bb768@43.154.83.213:24444?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#FV-DEU-Frankfurt
|
vless://6055eac4-dee7-463b-b575-d30ea94bb768@43.154.83.213:24444?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#FV-DEU-Frankfurt
|
||||||
vless://1cd284b2-d3d8-4165-b773-893f836c2b51@43.154.83.213:24445?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#FV-KOR-Seoul
|
vless://1cd284b2-d3d8-4165-b773-893f836c2b51@43.154.83.213:24445?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#FV-KOR-Seoul
|
||||||
vless://bf0e9c35-84a9-460e-b5bf-2fa9f2fb3bca@43.154.83.213:24446?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#FV-JPN-Tokyo
|
vless://bf0e9c35-84a9-460e-b5bf-2fa9f2fb3bca@43.154.83.213:24446?type=tcp&encryption=none&security=tls&path=%2f&flow=xtls-rprx-vision&sni=book.107421.xyz#FV-JPN-Tokyo
|
||||||
|
|||||||
Reference in New Issue
Block a user