mirror of
https://github.com/YunoHost-Apps/flohmarkt_ynh.git
synced 2024-09-03 18:36:30 +02:00
Merge pull request 'backup-restore' (#20) from backup-restore into main
Reviewed-on: https://codeberg.org/ChriChri/flohmarkt_ynh/pulls/20
This commit is contained in:
commit
c4d19c550e
8 changed files with 65 additions and 125 deletions
|
@ -1,6 +1,6 @@
|
||||||
## installs
|
## installs
|
||||||
|
|
||||||
But very limited.
|
But very limited - see [issues](https://codeberg.org/ChriChri/flohmarkt_ynh/issues)
|
||||||
|
|
||||||
### Exclusive use of couchdb
|
### Exclusive use of couchdb
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ https://codeberg.org/ChriChri/flohmarkt_ynh/issues/5 .
|
||||||
|
|
||||||
**Warning:** This will probably break any existing installation of couchdb (there's an couchdb app to install just couchdb and expose its port via nginx reverse-proxy).
|
**Warning:** This will probably break any existing installation of couchdb (there's an couchdb app to install just couchdb and expose its port via nginx reverse-proxy).
|
||||||
|
|
||||||
## no backup, yet
|
## read before test installation
|
||||||
|
|
||||||
**Another warning:** When installing flohmarkt on a a domain and letting it talk to other ActivityPub instances it will propagate a key associated to your domain. If you remove your flohmarkt from that domain and loose that key other instances might not want to talk to you anymore after you installed flohmarkt again on the same domain generating a new key.
|
**Another warning:** When installing flohmarkt on a a domain and letting it talk to other ActivityPub instances it will propagate a key associated to your domain. If you remove your flohmarkt from that domain and loose that key other instances might not want to talk to you anymore after you installed flohmarkt again on the same domain generating a new key.
|
||||||
|
|
||||||
|
|
|
@ -1,55 +1,28 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# GENERIC START
|
|
||||||
#=================================================
|
|
||||||
# IMPORT GENERIC HELPERS
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
|
|
||||||
source ../settings/scripts/_common.sh
|
source ../settings/scripts/_common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# DECLARE DATA AND CONF FILES TO BACKUP
|
|
||||||
#=================================================
|
|
||||||
ynh_print_info --message="Declaring files to be backed up..."
|
ynh_print_info --message="Declaring files to be backed up..."
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# BACKUP THE APP MAIN DIR
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_backup --src_path="$install_dir"
|
ynh_backup --src_path="$install_dir"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# BACKUP THE DATA DIR
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_backup --src_path="$data_dir" --is_big
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# BACKUP THE NGINX CONFIGURATION
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# BACKUP FAIL2BAN CONFIGURATION
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_backup --src_path="/etc/fail2ban/jail.d/$app.conf"
|
ynh_backup --src_path="/etc/fail2ban/jail.d/$app.conf"
|
||||||
ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf"
|
ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# SPECIFIC BACKUP
|
|
||||||
#=================================================
|
|
||||||
# BACKUP LOGROTATE
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_backup --src_path="/etc/logrotate.d/$app"
|
ynh_backup --src_path="/etc/logrotate.d/$app"
|
||||||
|
ynh_backup --src_path="/opt/couchdb/etc/local.d/05-flohmarkt.ini"
|
||||||
|
# ynh_backup --src_path="/etc/yunohost/apps/$app"
|
||||||
|
|
||||||
#=================================================
|
# for the following backups we'll want to stop flohmarkt and couchdb
|
||||||
# END OF SCRIPT
|
# to guarentee a consistant state
|
||||||
#=================================================
|
ynh_print_info --message="Stopping flohmarkt and couchdb to backup data..."
|
||||||
|
yunohost service stop flohmarkt
|
||||||
|
systemctl stop couchdb
|
||||||
|
|
||||||
|
ynh_backup --src_path="$data_dir" --is_big
|
||||||
|
ynh_backup --src_path="/var/lib/couchdb" --is_big
|
||||||
|
|
||||||
|
ynh_print_info --message="...done. Starting couchdb and flohmarkt."
|
||||||
|
systemctl start couchdb
|
||||||
|
yunohost service start flohmarkt
|
||||||
|
|
||||||
ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)."
|
ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)."
|
||||||
|
|
|
@ -27,7 +27,7 @@ ynh_script_progression --message="Installing CouchDB..." --weight=60
|
||||||
# This value must match for all nodes in the cluster. If they do not match,
|
# This value must match for all nodes in the cluster. If they do not match,
|
||||||
# attempts to connect the node to the cluster will be rejected.
|
# attempts to connect the node to the cluster will be rejected.
|
||||||
couchdb_magic_cookie=$(ynh_string_random --length=23 --filter='A-Za-z0-9_')
|
couchdb_magic_cookie=$(ynh_string_random --length=23 --filter='A-Za-z0-9_')
|
||||||
ynh_app_setting_set --app=$app --key=erlang_cookie --value="$couchdb_magic_cookie"
|
ynh_app_setting_set --app=$app --key=couchdb_magic_cookie --value="$couchdb_magic_cookie"
|
||||||
|
|
||||||
echo "\
|
echo "\
|
||||||
couchdb couchdb/mode select standalone
|
couchdb couchdb/mode select standalone
|
||||||
|
@ -49,14 +49,9 @@ ynh_install_extra_app_dependencies \
|
||||||
# add couchdb configuration
|
# add couchdb configuration
|
||||||
ynh_script_progression --message="Adding a configuration file..." --weight=2
|
ynh_script_progression --message="Adding a configuration file..." --weight=2
|
||||||
# customize couchdb config
|
# customize couchdb config
|
||||||
ynh_add_config --template="../conf/5-flohmarkt.ini" --destination="/opt/couchdb/etc/local.d/5-flohmarkt.ini"
|
ynh_add_config --template="../conf/05-flohmarkt.ini" --destination="/opt/couchdb/etc/local.d/05-flohmarkt.ini"
|
||||||
chown root:couchdb /opt/couchdb/etc/local.d/5-flohmarkt.ini
|
chown root:couchdb /opt/couchdb/etc/local.d/05-flohmarkt.ini
|
||||||
chmod 640 /opt/couchdb/etc/local.d/5-flohmarkt.ini
|
chmod 640 /opt/couchdb/etc/local.d/05-flohmarkt.ini
|
||||||
|
|
||||||
# @@ todo need to create a couchdb user and set the files to be readable/executable by it
|
|
||||||
chmod 750 "$install_dir"
|
|
||||||
chmod -R o-rwx "$install_dir"
|
|
||||||
chown -R "$app:$app" "$install_dir"
|
|
||||||
|
|
||||||
# restart couchdb to pick up changes
|
# restart couchdb to pick up changes
|
||||||
systemctl restart couchdb
|
systemctl restart couchdb
|
||||||
|
@ -88,7 +83,7 @@ python3 -m venv --without-pip "$install_dir/venv"
|
||||||
jwtsecret=$(ynh_string_random --length=344 --filter='a-zA-Z0-9/+')
|
jwtsecret=$(ynh_string_random --length=344 --filter='a-zA-Z0-9/+')
|
||||||
|
|
||||||
password_couchdb_flohmarkt=$(ynh_string_random --length=31 --filter='A-Za-z0-9_.:,')
|
password_couchdb_flohmarkt=$(ynh_string_random --length=31 --filter='A-Za-z0-9_.:,')
|
||||||
ynh_app_setting_set --app=$app --key=erlang_cookie --value="$password_couchdb_flohmarkt"
|
ynh_app_setting_set --app=$app --key=password_couchdb_flohmarkt --value="$password_couchdb_flohmarkt"
|
||||||
|
|
||||||
# generate flohmarkt.conf
|
# generate flohmarkt.conf
|
||||||
ynh_add_config --template="../conf/flohmarkt.conf" --destination="$install_dir/$app/flohmarkt.conf"
|
ynh_add_config --template="../conf/flohmarkt.conf" --destination="$install_dir/$app/flohmarkt.conf"
|
||||||
|
@ -136,4 +131,3 @@ ynh_systemd_action --service_name=$app --action="start"
|
||||||
# @@ logrotation
|
# @@ logrotation
|
||||||
|
|
||||||
ynh_script_progression --message="Installation of $app completed" --last
|
ynh_script_progression --message="Installation of $app completed" --last
|
||||||
# qed
|
|
||||||
|
|
|
@ -52,6 +52,10 @@ ynh_remove_nginx_config
|
||||||
# Remove the dedicated Fail2Ban config
|
# Remove the dedicated Fail2Ban config
|
||||||
ynh_remove_fail2ban_config
|
ynh_remove_fail2ban_config
|
||||||
|
|
||||||
|
# Remove home
|
||||||
|
ynh_script_progression --message="Removing data directory..." --weight=2
|
||||||
|
ynh_secure_remove --file=$data_dir
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# END OF SCRIPT
|
# END OF SCRIPT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
107
scripts/restore
107
scripts/restore
|
@ -1,54 +1,13 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# GENERIC START
|
|
||||||
#=================================================
|
|
||||||
# IMPORT GENERIC HELPERS
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
|
|
||||||
source ../settings/scripts/_common.sh
|
source ../settings/scripts/_common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
# restore couchdb directory
|
||||||
# STANDARD RESTORATION STEPS
|
ynh_script_progression --message="Restoring couchdb directory..." --weight=1
|
||||||
#=================================================
|
ynh_restore_file --origin_path="/var/lib/couchdb"
|
||||||
# RESTORE THE APP MAIN DIR
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Restoring the app main directory..." --weight=10
|
|
||||||
|
|
||||||
ynh_restore_file --origin_path="$install_dir"
|
# reinstall couchdb
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RESTORE THE DATA DIRECTORY
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Restoring the data directory..." --weight=1
|
|
||||||
|
|
||||||
ynh_restore_file --origin_path="$data_dir" --not_mandatory
|
|
||||||
|
|
||||||
mkdir -p $data_dir
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RESTORE FAIL2BAN CONFIGURATION
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Restoring the Fail2Ban configuration..." --weight=2
|
|
||||||
|
|
||||||
ynh_restore_file --origin_path="/etc/fail2ban/jail.d/$app.conf"
|
|
||||||
ynh_restore_file --origin_path="/etc/fail2ban/filter.d/$app.conf"
|
|
||||||
ynh_systemd_action --action=restart --service_name=fail2ban
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# SPECIFIC RESTORATION
|
|
||||||
#=================================================
|
|
||||||
# RESTORE THE NGINX CONFIGURATION
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Restoring the NGINX web server configuration..." --weight=1
|
|
||||||
|
|
||||||
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# REINSTALL COUCHDB
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Reinstalling couchdb..." --weight=40
|
ynh_script_progression --message="Reinstalling couchdb..." --weight=40
|
||||||
|
|
||||||
echo "\
|
echo "\
|
||||||
|
@ -56,10 +15,10 @@ couchdb couchdb/mode select standalone
|
||||||
couchdb couchdb/mode seen true
|
couchdb couchdb/mode seen true
|
||||||
couchdb couchdb/bindaddress string 127.0.0.1
|
couchdb couchdb/bindaddress string 127.0.0.1
|
||||||
couchdb couchdb/bindaddress seen true
|
couchdb couchdb/bindaddress seen true
|
||||||
couchdb couchdb/cookie string $password
|
couchdb couchdb/cookie string $couchdb_magic_cookie
|
||||||
couchdb couchdb/adminpass password $password
|
couchdb couchdb/adminpass password $password_couchdb_admin
|
||||||
couchdb couchdb/adminpass seen true
|
couchdb couchdb/adminpass seen true
|
||||||
couchdb couchdb/adminpass_again password $password
|
couchdb couchdb/adminpass_again password $password_couchdb_admin
|
||||||
couchdb couchdb/adminpass_again seen true" | debconf-set-selections
|
couchdb couchdb/adminpass_again seen true" | debconf-set-selections
|
||||||
DEBIAN_FRONTEND=noninteractive # apt-get install -y --force-yes couchdb
|
DEBIAN_FRONTEND=noninteractive # apt-get install -y --force-yes couchdb
|
||||||
|
|
||||||
|
@ -68,39 +27,49 @@ ynh_install_extra_app_dependencies \
|
||||||
--key="https://couchdb.apache.org/repo/keys.asc" \
|
--key="https://couchdb.apache.org/repo/keys.asc" \
|
||||||
--package="couchdb"
|
--package="couchdb"
|
||||||
|
|
||||||
chmod 750 "$install_dir"
|
# stop couchdb
|
||||||
chmod -R o-rwx "$install_dir"
|
systemctl stop couchdb
|
||||||
chown -R $app:$app "$install_dir"
|
|
||||||
|
|
||||||
chmod 750 "$data_dir"
|
# add couchdb configuration
|
||||||
chmod -R o-rwx "$data_dir"
|
ynh_script_progression --message="Adding a configuration file..." --weight=2
|
||||||
chown -R $app:www-data "$data_dir"
|
ynh_restore_file --origin_path="/opt/couchdb/etc/local.d/05-flohmarkt.ini"
|
||||||
|
chown root:couchdb /opt/couchdb/etc/local.d/05-flohmarkt.ini
|
||||||
|
chmod 640 /opt/couchdb/etc/local.d/05-flohmarkt.ini
|
||||||
|
|
||||||
|
# start couchdb
|
||||||
|
systemctl start couchdb
|
||||||
|
systemctl status couchdb
|
||||||
|
|
||||||
|
# RESTORE THE APP MAIN DIR
|
||||||
|
ynh_script_progression --message="Restoring the app main directory..." --weight=10
|
||||||
|
ynh_restore_file --origin_path="$install_dir"
|
||||||
|
|
||||||
|
# RESTORE THE DATA DIRECTORY
|
||||||
|
ynh_script_progression --message="Restoring the data directory..." --weight=1
|
||||||
|
ynh_restore_file --origin_path="$data_dir" --not_mandatory
|
||||||
|
mkdir -p $data_dir
|
||||||
|
|
||||||
|
# RESTORE FAIL2BAN CONFIGURATION
|
||||||
|
ynh_script_progression --message="Restoring the Fail2Ban configuration..." --weight=2
|
||||||
|
ynh_restore_file --origin_path="/etc/fail2ban/jail.d/$app.conf"
|
||||||
|
ynh_restore_file --origin_path="/etc/fail2ban/filter.d/$app.conf"
|
||||||
|
ynh_systemd_action --action=restart --service_name=fail2ban
|
||||||
|
|
||||||
|
# RESTORE THE NGINX CONFIGURATION
|
||||||
|
ynh_script_progression --message="Restoring the NGINX web server configuration..." --weight=1
|
||||||
|
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RESTORE THE LOGROTATE CONFIGURATION
|
# RESTORE THE LOGROTATE CONFIGURATION
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1
|
ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1
|
||||||
|
|
||||||
ynh_restore_file --origin_path="/etc/logrotate.d/$app"
|
ynh_restore_file --origin_path="/etc/logrotate.d/$app"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# INTEGRATE SERVICE IN YUNOHOST
|
# INTEGRATE SERVICE IN YUNOHOST
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
|
ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
|
||||||
|
|
||||||
yunohost service add $app --description="A decentral federated small advertisement platform" --log="/var/log/$app/$app.log"
|
yunohost service add $app --description="A decentral federated small advertisement platform" --log="/var/log/$app/$app.log"
|
||||||
|
ynh_systemd_action --action=start --line_match="INFO: Application startup complete."
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# GENERIC FINALIZATION
|
|
||||||
#=================================================
|
|
||||||
# RELOAD NGINX
|
# RELOAD NGINX
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
|
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
|
||||||
|
|
||||||
ynh_systemd_action --service_name=nginx --action=reload
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# END OF SCRIPT
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_script_progression --message="Restoration completed for $app" --last
|
ynh_script_progression --message="Restoration completed for $app" --last
|
||||||
|
|
|
@ -52,7 +52,7 @@ fi
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Updating a configuration file..." --weight=1
|
ynh_script_progression --message="Updating a configuration file..." --weight=1
|
||||||
|
|
||||||
ynh_add_config --template="../conf/5-flohmarkt.ini" --destination="$install_dir/etc/local.d/5-flohmarkt.ini"
|
ynh_add_config --template="../conf/05-flohmarkt.ini" --destination="$install_dir/etc/local.d/05-flohmarkt.ini"
|
||||||
|
|
||||||
chmod 750 "$install_dir"
|
chmod 750 "$install_dir"
|
||||||
chmod -R o-rwx "$install_dir"
|
chmod -R o-rwx "$install_dir"
|
||||||
|
|
|
@ -2,7 +2,7 @@ test_format = 1.0
|
||||||
|
|
||||||
[default]
|
[default]
|
||||||
# still in development
|
# still in development
|
||||||
exclude = ["install.private", "install.multi", "upgrade", "backup_restore", "change_url", "install_subdir"]
|
exclude = ["install.private", "install.multi", "upgrade", "change_url", "install_subdir"]
|
||||||
|
|
||||||
args.password_couchdb_admin = "TestPasswordCouchDBadmin"
|
args.password_couchdb_admin = "TestPasswordCouchDBadmin"
|
||||||
args.password_couchdb_flohmarkt = "TestPasswordCouchDBflohmarkt"
|
args.password_couchdb_flohmarkt = "TestPasswordCouchDBflohmarkt"
|
||||||
|
|
Loading…
Reference in a new issue