1
0
Fork 0
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:
Chris Vogel 2024-04-21 17:52:06 +00:00
commit c4d19c550e
8 changed files with 65 additions and 125 deletions

View file

@ -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.

View file

@ -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)."

View file

@ -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

View file

@ -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
#================================================= #=================================================

View file

@ -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

View file

@ -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"

View file

@ -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"