sovereign-stack/deployment/www/stub/nostr_yml.sh

97 lines
2.5 KiB
Bash
Raw Normal View History

2022-11-14 01:23:48 +00:00
#!/bin/bash
2023-02-01 19:44:05 +00:00
set -ex
2022-11-14 01:23:48 +00:00
cd "$(dirname "$0")"
2022-11-15 20:59:08 +00:00
docker pull "$NOSTR_RELAY_IMAGE"
2022-11-14 01:23:48 +00:00
for DOMAIN_NAME in ${DOMAIN_LIST//,/ }; do
export DOMAIN_NAME="$DOMAIN_NAME"
export SITE_PATH="$SITES_PATH/$DOMAIN_NAME"
# source the site path so we know what features it has.
2023-02-01 19:44:05 +00:00
source ../../../defaults.sh
2022-11-14 01:23:48 +00:00
source "$SITE_PATH/site_definition"
2023-02-01 19:44:05 +00:00
source ../../domain_env.sh
2022-11-14 01:23:48 +00:00
if [ -n "$NOSTR_ACCOUNT_PUBKEY" ]; then
2022-11-14 01:23:48 +00:00
REMOTE_NOSTR_PATH="$REMOTE_HOME/nostr"
NOSTR_PATH="$REMOTE_NOSTR_PATH/$DOMAIN_NAME"
2022-11-15 20:59:08 +00:00
NOSTR_CONFIG_PATH="$SITE_PATH/webstack/nostr.config"
2022-11-14 01:23:48 +00:00
ssh "$PRIMARY_WWW_FQDN" mkdir -p "$NOSTR_PATH/data" "$NOSTR_PATH/db"
export STACK_TAG="nostr-$DOMAIN_IDENTIFIER"
export DOCKER_YAML_PATH="$SITE_PATH/webstack/nostr.yml"
NET_NAME="nostrnet-$DOMAIN_IDENTIFIER"
DBNET_NAME="nostrdbnet-$DOMAIN_IDENTIFIER"
# here's the NGINX config. We support ghost and nextcloud.
echo "" > "$DOCKER_YAML_PATH"
cat >>"$DOCKER_YAML_PATH" <<EOL
version: "3.8"
services:
${STACK_TAG}:
image: ${NOSTR_RELAY_IMAGE}
volumes:
- ${NOSTR_PATH}/data:/usr/src/app/db
# environment:
# - USER_UID=1000
networks:
- ${NET_NAME}
2022-11-15 20:59:08 +00:00
configs:
- source: nostr-config
target: /usr/src/app/config.toml
2022-11-14 01:23:48 +00:00
deploy:
restart_policy:
condition: on-failure
networks:
2022-11-15 20:59:08 +00:00
${NET_NAME}:
name: "reverse-proxy_${NET_NAME}-en"
external: true
configs:
nostr-config:
file: ${NOSTR_CONFIG_PATH}
EOL
# documentation: https://git.sr.ht/~gheartsfield/nostr-rs-relay/tree/0.7.0/item/config.toml
2023-01-07 15:45:44 +00:00
cat >"$NOSTR_CONFIG_PATH" <<EOL
2022-11-15 20:59:08 +00:00
[info]
relay_url = "wss://${NOSTR_FQDN}/"
2023-01-07 15:45:44 +00:00
name = "${NOSTR_FQDN}"
2023-01-07 22:04:00 +00:00
description = "A nostr relay for ${DOMAIN_NAME} whitelisted for pubkey ${NOSTR_ACCOUNT_PUBKEY}."
2023-01-07 15:45:44 +00:00
pubkey = "${NOSTR_ACCOUNT_PUBKEY}"
contact = "mailto:${CERTIFICATE_EMAIL_ADDRESS}"
2022-11-15 20:59:08 +00:00
[options]
reject_future_seconds = 1800
2022-11-14 01:23:48 +00:00
2022-11-15 20:59:08 +00:00
[limits]
2023-01-07 15:45:44 +00:00
#messages_per_sec = 3
2022-11-15 20:59:08 +00:00
#max_event_bytes = 131072
2023-01-07 15:45:44 +00:00
#max_ws_message_bytes = 131072
#max_ws_frame_bytes = 131072
#broadcast_buffer = 16384
#event_persist_buffer = 4096
[authorization]
# Pubkey addresses in this array are whitelisted for event publishing.
# Only valid events by these authors will be accepted, if the variable
# is set.
pubkey_whitelist = [ "${NOSTR_ACCOUNT_PUBKEY}" ]
domain_whitelist = [ "${DOMAIN_NAME}" ]
2022-11-14 01:23:48 +00:00
EOL
if [ "$STOP_SERVICES" = false ]; then
docker stack deploy -c "$DOCKER_YAML_PATH" "$DOMAIN_IDENTIFIER-nostr-$LANGUAGE_CODE"
sleep 1
fi
2022-11-14 01:23:48 +00:00
fi
done