diff --git a/scripts/backup-init.sh b/scripts/backup-init.sh deleted file mode 100755 index f842e6cb285973910b0e3014919389a0cc0160f3..0000000000000000000000000000000000000000 --- a/scripts/backup-init.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -eux - -BACKUP_DESTINATION=`cat /data/BACKUP_DESTINATION` - -echo "Intitializing backups with $BACKUP_DESTINATION" -if [ ! -d /data/domains/$DOMAIN/.git ]; then - if [ `ssh $BACKUP_DESTINATION "test -d $DOMAIN"; echo $?` -eq 0 ]; then # git repo exists on the backup server - git clone $BACKUP_DESTINATION:$DOMAIN /data/domains/$DOMAIN - cd /data/domains/$DOMAIN - else - ssh $BACKUP_DESTINATION " \ - mkdir -p $DOMAIN; \ - cd $DOMAIN; \ - git init --bare;" - if [ ! -d /data/domains/$DOMAIN ]; then - mkdir /data/domains/$DOMAIN - fi - cd /data/domains/$DOMAIN - git init - git remote add origin $BACKUP_DESTINATION:$DOMAIN - fi - git config --local user.email "backups@`hostname`" - git config --local user.name "`hostname` hourly backups" -fi diff --git a/scripts/import.sh b/scripts/import.sh deleted file mode 100755 index c765ec4c8710b8532966a172f2f35c8d9359c9ba..0000000000000000000000000000000000000000 --- a/scripts/import.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -eux - -if [ -d /data/import/$DOMAIN ]; then - cp -r /data/import/$DOMAIN/* /data/domains/$DOMAIN; - rm -rf /data/import/$DOMAIN; -fi diff --git a/unit-files/init@.service b/unit-files/init@.service new file mode 100644 index 0000000000000000000000000000000000000000..f4051cad84ae142930aaf4aa44ebb0c5b70503b0 --- /dev/null +++ b/unit-files/init@.service @@ -0,0 +1,31 @@ +[Unit] +Description=Initializer + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStartPre=/bin/bash -euxc ' \ + BACKUP_DESTINATION=`cat /data/BACKUP_DESTINATION`; \ + echo "Intitializing backups with $BACKUP_DESTINATION"; \ + if [ ! -d /data/domains/%i/.git ]; then \ + if [ `ssh $BACKUP_DESTINATION "test -d %i"; echo $?` -eq 0 ]; then \ + git clone $BACKUP_DESTINATION:%i /data/domains/%i; \ + cd /data/domains/%i; \ + else \ + ssh $BACKUP_DESTINATION "mkdir -p %i;cd %i;git init --bare;"; \ + if [ ! -d /data/domains/%i ]; then \ + mkdir /data/domains/%i; \ + fi; \ + cd /data/domains/%i; \ + git init; \ + git remote add origin $BACKUP_DESTINATION:%i; \ + fi; \ + git config --local user.email "backups@`hostname`"; \ + git config --local user.name "`hostname` hourly backups"; \ + fi' + +ExecStart=/bin/bash -euxc ' \ + if [ -d /data/import/%i ]; then \ + cp -r /data/import/%i/* /data/domains/%i; \ + rm -rf /data/import/%i; \ + fi' diff --git a/unit-files/known-importer@.service b/unit-files/known-importer@.service index 588a63c8465a7c444a8690a9a8cb01092c9e5ba4..fc39b65eb7b64791b4de7a9a2ee0eba87fa018b6 100644 --- a/unit-files/known-importer@.service +++ b/unit-files/known-importer@.service @@ -1,7 +1,11 @@ [Unit] Description=WordPress importer +# Requirements +Requires=init@%i.service + # Dependency ordering +After=init@%i.service After=mysql@%i.service Before=known@%i.service Before=backup@%i.timer @@ -12,9 +16,6 @@ BindsTo=known@%i.service [Service] Type=oneshot RemainAfterExit=yes -Environment=DOMAIN=%i -ExecStartPre=/data/indiehosters/scripts/backup-init.sh -ExecStartPre=/data/indiehosters/scripts/import.sh ExecStart=/bin/bash -euxc ' \ cp /data/domains/%i/TLS/%i.pem /data/runtime/haproxy/approved-certs/%i.pem; \ known_folder=/data/domains/%i/known; \ diff --git a/unit-files/mysql-importer@.service b/unit-files/mysql-importer@.service index c8d46284bcc8b683a7cb601f9110a0c9a7b55d95..fffab4720966b9f12798db5ac885c7898d78bd88 100644 --- a/unit-files/mysql-importer@.service +++ b/unit-files/mysql-importer@.service @@ -2,6 +2,7 @@ Description=MySQL importer # Dependency ordering +After=init@%i.service Before=mysql@%i.service # Dependency binding @@ -13,10 +14,7 @@ RemainAfterExit=yes ExecStart=/bin/bash -euxc ' \ mysql_folder=/data/domains/%i/mysql; \ if [ ! -d /data/runtime/domains/%i/mysql ]; then \ - if [ -d $mysql_folder ]; then \ - echo develop import mysql feature; \ - exit 1; \ - else \ + if [ ! -d $mysql_folder ]; then \ mkdir -p $mysql_folder; \ pass=`echo $RANDOM ${date} | md5sum | base64 | cut -c-10`; \ echo MYSQL_PASS=$pass > $mysql_folder/.env; \ diff --git a/unit-files/mysql@.service b/unit-files/mysql@.service index 6b8bb75091bb6de0d26f1607f0a4c48f30a52621..809d0ff2bfaaed037cacc273a7cf260739a67079 100644 --- a/unit-files/mysql@.service +++ b/unit-files/mysql@.service @@ -17,6 +17,7 @@ ExecStartPre=-/usr/bin/docker rm %p-%i ExecStart=/usr/bin/docker run \ --name %p-%i \ -v /data/runtime/domains/%i/%p/db_files:/var/lib/mysql \ + -e STARTUP_SQL="/data/domains/%i/%p/dump.sql" \ --env-file /data/domains/%i/%p/.env \ indiehosters/mysql ExecReload=/usr/bin/docker restart %p-%i diff --git a/unit-files/static-git-importer@.service b/unit-files/static-git-importer@.service index 9ebdb3d891111538a9eaccf1b9f38bd01920a04f..8e1949a2aefa7b3645a22cd51b7d9c9a107c21e6 100644 --- a/unit-files/static-git-importer@.service +++ b/unit-files/static-git-importer@.service @@ -1,16 +1,17 @@ [Unit] Description=static importer +# Requirements +Requires=init@%i.service + # Dependency ordering +After=init@%i.service Before=static-git@%i.service Before=backup@%i.timer [Service] Type=oneshot RemainAfterExit=yes -Environment=DOMAIN=%i -ExecStartPre=/data/indiehosters/scripts/backup-init.sh -ExecStartPre=/data/indiehosters/scripts/import.sh ExecStart=/bin/bash -euxc ' \ cp /data/domains/%i/TLS/%i.pem /data/runtime/haproxy/approved-certs/%i.pem; \ git_folder=/data/runtime/domains/%i/static-git; \ diff --git a/unit-files/static-importer@.service b/unit-files/static-importer@.service index ee1b69564e9825ecdc52395f203f045fb72ee94e..88579c8397bf60e2c209e1893e82dafa329beb50 100644 --- a/unit-files/static-importer@.service +++ b/unit-files/static-importer@.service @@ -1,16 +1,17 @@ [Unit] Description=static importer +# Requirements +Requires=init@%i.service + # Dependency ordering +After=init@%i.service Before=static@%i.service Before=backup@%i.timer [Service] Type=oneshot RemainAfterExit=yes -Environment=DOMAIN=%i -ExecStartPre=/data/indiehosters/scripts/backup-init.sh -ExecStartPre=/data/indiehosters/scripts/import.sh ExecStart=/bin/bash -euxc ' \ cp /data/domains/%i/TLS/%i.pem /data/runtime/haproxy/approved-certs/%i.pem; \ static_folder=/data/domains/%i/static/www-content; \ diff --git a/unit-files/wordpress-importer@.service b/unit-files/wordpress-importer@.service index c192c416e5b57aada7793b984a6a7353f0ccc20a..4db5c238b5766edca3d8cab3c016652f63c630e4 100644 --- a/unit-files/wordpress-importer@.service +++ b/unit-files/wordpress-importer@.service @@ -1,7 +1,11 @@ [Unit] Description=WordPress importer +# Requirements +Requires=init@%i.service + # Dependency ordering +After=init@%i.service After=mysql@%i.service Before=wordpress@%i.service Before=backup@%i.timer @@ -12,9 +16,6 @@ BindsTo=wordpress@%i.service [Service] Type=oneshot RemainAfterExit=yes -Environment=DOMAIN=%i -ExecStartPre=/data/indiehosters/scripts/backup-init.sh -ExecStartPre=/data/indiehosters/scripts/import.sh ExecStart=/bin/bash -euxc ' \ cp /data/domains/%i/TLS/%i.pem /data/runtime/haproxy/approved-certs/%i.pem; \ wordpress_folder=/data/domains/%i/wordpress; \