diff --git a/defaults.sh b/defaults.sh index 6190325..0b09dfc 100755 --- a/defaults.sh +++ b/defaults.sh @@ -7,7 +7,7 @@ export WWW_SERVER_MAC_ADDRESS= export DEPLOY_BTCPPAY_SERVER=false export DEPLOY_GHOST=true -export DEPLOY_NOSTR_RELAY=false +export DEPLOY_NOSTR_RELAY=true export DEPLOY_ONION_SITE=false export DEPLOY_NEXTCLOUD=false export DEPLOY_GITEA=false @@ -108,7 +108,7 @@ DEFAULT_DB_IMAGE="mariadb:10.9.3-jammy" # run the docker stack. -export GHOST_IMAGE="ghost:5.14.2" +export GHOST_IMAGE="ghost:5.18.0" export GHOST_DB_IMAGE="$DEFAULT_DB_IMAGE" export NGINX_IMAGE="nginx:1.23.1" export NEXTCLOUD_IMAGE="nextcloud:24.0.5" diff --git a/deploy.sh b/deploy.sh index 0830751..79727cd 100755 --- a/deploy.sh +++ b/deploy.sh @@ -122,7 +122,6 @@ done source ./defaults.sh export CACHES_DIR="$HOME/ss-cache" -export SSH_HOME="$HOME/.ssh" export DOMAIN_NAME="$DOMAIN_NAME" export REGISTRY_DOCKER_IMAGE="registry:2" export RESTORE_ARCHIVE="$RESTORE_ARCHIVE" @@ -158,7 +157,7 @@ if [ ! -f "$CLUSTER_PATH/authorized_keys" ]; then cat "$SSH_HOME/id_rsa.pub" >> "$CLUSTER_PATH/authorized_keys" echo "INFO: Sovereign Stack just stubbed out '$CLUSTER_PATH/authorized_keys'. Go update it." echo " Add ssh pubkeys for your various management machines, if any." - echo " By default we added your main ssh pubkey: '$HOME/.ssh/id_rsa.pub'." + echo " By default we added your main ssh pubkey: '$SSH_HOME/id_rsa.pub'." exit 1 fi @@ -246,7 +245,16 @@ function instantiate_vms { if [ "$VPS_HOSTING_TARGET" = lxd ]; then # first let's get the DISK_TO_USE and DATA_PLANE_MACVLAN_INTERFACE from the ss-config # which is set up during LXD cluster creation ss-cluster. - LXD_SS_CONFIG_LINE="$(lxc network list --format csv | grep lxdbrSS | grep ss-config)" + LXD_SS_CONFIG_LINE= + if lxc network list --format csv | grep lxdbrSS | grep ss-config; then + LXD_SS_CONFIG_LINE="$(lxc network list --format csv | grep lxdbrSS | grep ss-config)" + fi + + if [ -z "$LXD_SS_CONFIG_LINE" ]; then + echo "ERROR: the MACVLAN interface has not been specified. You may need to run ss-cluster again." + exit 1 + fi + CONFIG_ITEMS="$(echo "$LXD_SS_CONFIG_LINE" | awk -F'"' '{print $2}')" DATA_PLANE_MACVLAN_INTERFACE="$(echo "$CONFIG_ITEMS" | cut -d ',' -f2)" DISK_TO_USE="$(echo "$CONFIG_ITEMS" | cut -d ',' -f3)" @@ -428,7 +436,7 @@ export DUPLICITY_BACKUP_PASSPHRASE="$(new_pass)" #export BTCPAY_HOSTNAME_IN_CERT="store" export DEPLOY_GHOST=true export DEPLOY_NEXTCLOUD=true -export DEPLOY_NOSTR_RELAY=false +export DEPLOY_NOSTR_RELAY=true export NOSTR_ACCOUNT_PUBKEY="CHANGE_ME" export DEPLOY_GITEA=false #export DEPLOY_ONION_SITE=false @@ -469,14 +477,14 @@ export DEPLOY_BTCPAY_SERVER=true export BTCPAYSERVER_MAC_ADDRESS="CHANGE_ME_REQUIRED" # export BTC_CHAIN=mainnet export PRIMARY_DOMAIN="CHANGE_ME" -export OTHER_SITES_LIST= +export OTHER_SITES_LIST="" EOL chmod 0744 "$PROJECT_DEFINITION_PATH" echo "INFO: we stubbed a new project_defition for you at '$PROJECT_DEFINITION_PATH'. Go update it yo!" echo "INFO: Learn more at https://www.sovereign-stack.org/project-definitions/" + exit 1 - fi # source project defition. diff --git a/deployment/deploy_vms.sh b/deployment/deploy_vms.sh index 4fa04fa..cc89a87 100755 --- a/deployment/deploy_vms.sh +++ b/deployment/deploy_vms.sh @@ -3,7 +3,7 @@ set -eux cd "$(dirname "$0")" -# let's make sure we have an ssh keypair. We just use ~/.ssh/id_rsa +# let's make sure we have an ssh keypair. We just use $SSH_HOME/id_rsa # TODO convert this to SSH private key held on Trezor. THus trezor-T required for # login operations. This should be configurable of course. if [ ! -f "$SSH_HOME/id_rsa" ]; then diff --git a/deployment/www/stop_docker_stacks.sh b/deployment/www/stop_docker_stacks.sh index d9ccac6..a6999fb 100755 --- a/deployment/www/stop_docker_stacks.sh +++ b/deployment/www/stop_docker_stacks.sh @@ -17,7 +17,7 @@ for DOMAIN_NAME in ${DOMAIN_LIST//,/ }; do for APP in ghost gitea; do # backup each language for each app. for LANGUAGE_CODE in ${SITE_LANGUAGE_CODES//,/ }; do - STACK_NAME="$DOCKER_STACK_SUFFIX-$APP-$LANGUAGE_CODE" + STACK_NAME="$DOMAIN_IDENTIFIER-$APP-$LANGUAGE_CODE" if docker stack list --format "{{.Name}}" | grep -q "$STACK_NAME"; then docker stack rm "$STACK_NAME" @@ -26,7 +26,7 @@ for DOMAIN_NAME in ${DOMAIN_LIST//,/ }; do # these variable are used by both backup/restore scripts. export APP="$APP" - export REMOTE_BACKUP_PATH="$REMOTE_HOME/backups/www/$APP/$DOCKER_STACK_SUFFIX-$LANGUAGE_CODE" + export REMOTE_BACKUP_PATH="$REMOTE_HOME/backups/www/$APP/$DOMAIN_IDENTIFIER-$LANGUAGE_CODE" export REMOTE_SOURCE_BACKUP_PATH="$REMOTE_HOME/$APP/$DOMAIN_NAME" # ensure our local backup path exists so we can pull down the duplicity archive to the management machine. @@ -76,7 +76,7 @@ for DOMAIN_NAME in ${DOMAIN_LIST//,/ }; do # these variable are used by both backup/restore scripts. export APP="letsencrypt" - export REMOTE_BACKUP_PATH="$REMOTE_HOME/backups/www/$APP/$DOCKER_STACK_SUFFIX" + export REMOTE_BACKUP_PATH="$REMOTE_HOME/backups/www/$APP/$DOMAIN_IDENTIFIER" export REMOTE_SOURCE_BACKUP_PATH="$REMOTE_HOME/$APP/$DOMAIN_NAME" # ensure our local backup path exists so we can pull down the duplicity archive to the management machine. diff --git a/deployment/www/stub/ghost_yml.sh b/deployment/www/stub/ghost_yml.sh index a603d60..1594289 100755 --- a/deployment/www/stub/ghost_yml.sh +++ b/deployment/www/stub/ghost_yml.sh @@ -16,9 +16,10 @@ for DOMAIN_NAME in ${DOMAIN_LIST//,/ }; do # at https://www.domain.com/$LANGUAGE_CODE for LANGUAGE_CODE in ${SITE_LANGUAGE_CODES//,/ }; do - STACK_NAME="$DOCKER_STACK_SUFFIX-$LANGUAGE_CODE" + STACK_NAME="$DOMAIN_IDENTIFIER-$LANGUAGE_CODE" # ensure directories on remote host exist so we can mount them into the containers. + ssh "$PRIMARY_WWW_FQDN" mkdir -p "$REMOTE_HOME/ghost/$DOMAIN_NAME" ssh "$PRIMARY_WWW_FQDN" mkdir -p "$REMOTE_HOME/ghost/$DOMAIN_NAME/$LANGUAGE_CODE/ghost" "$REMOTE_HOME/ghost/$DOMAIN_NAME/$LANGUAGE_CODE/db" export GHOST_STACK_TAG="ghost-$STACK_NAME" @@ -30,8 +31,7 @@ for DOMAIN_NAME in ${DOMAIN_LIST//,/ }; do export DOCKER_YAML_PATH="$WEBSTACK_PATH/ghost-$LANGUAGE_CODE.yml" # here's the NGINX config. We support ghost and nextcloud. - echo "" > "$DOCKER_YAML_PATH" - cat >>"$DOCKER_YAML_PATH" < "$DOCKER_YAML_PATH" <>"$DOCKER_YAML_PATH" < "$DOCKER_YAML_PATH" @@ -80,7 +80,7 @@ EOL ${DBNET_NAME}: EOL - docker stack deploy -c "$DOCKER_YAML_PATH" "$DOCKER_STACK_SUFFIX-gitea-$LANGUAGE_CODE" + docker stack deploy -c "$DOCKER_YAML_PATH" "$DOMAIN_IDENTIFIER-gitea-$LANGUAGE_CODE" sleep 1 fi diff --git a/deployment/www/stub/nginx_config.sh b/deployment/www/stub/nginx_config.sh index 325ba02..d703c5b 100755 --- a/deployment/www/stub/nginx_config.sh +++ b/deployment/www/stub/nginx_config.sh @@ -256,7 +256,7 @@ EOL echo " # set up cache paths for nginx caching" >>"$NGINX_CONF_PATH" for LANGUAGE_CODE in ${SITE_LANGUAGE_CODES//,/ }; do - STACK_NAME="$DOCKER_STACK_SUFFIX-$LANGUAGE_CODE" + STACK_NAME="$DOMAIN_IDENTIFIER-$LANGUAGE_CODE" cat >>"$NGINX_CONF_PATH" <>"$NGINX_CONF_PATH" <> "$DOCKER_YAML_PATH" <> "$DOCKER_YAML_PATH" <> "$DOCKER_YAML_PATH" <> "$DOCKER_YAML_PATH" <> "$DOCKER_YAML_PATH" < "$SITE_PATH/domain_id" export BACKUP_TIMESTAMP="$BACKUP_TIMESTAMP" export UNIX_BACKUP_TIMESTAMP="$UNIX_BACKUP_TIMESTAMP" -export DOCKER_STACK_SUFFIX="${DOMAIN_NAME//./-}" + export LANGUAGE_CODE_COUNT=$(("$(echo "$SITE_LANGUAGE_CODES" | tr -cd , | wc -c)"+1)) - - diff --git a/reset_env.sh b/reset_env.sh index 33c5390..ac0299f 100755 --- a/reset_env.sh +++ b/reset_env.sh @@ -7,7 +7,7 @@ export DUPLICITY_BACKUP_PASSPHRASE= export BTCPAY_HOSTNAME_IN_CERT= export DEPLOY_GHOST=true export DEPLOY_NEXTCLOUD=true -export DEPLOY_NOSTR_RELAY=false +export DEPLOY_NOSTR_RELAY=true export NOSTR_ACCOUNT_PUBKEY= export DEPLOY_GITEA=false export DEPLOY_ONION_SITE=false