forked from 0k/0k-charms
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.7 KiB
67 lines
1.7 KiB
# -*- mode: shell-script -*-
|
|
|
|
PDS_LOCAL_DATADIR=/var/lib/bluesky
|
|
PDS_DATADIR="$SERVICE_DATASTORE$PDS_LOCAL_DATADIR"
|
|
PDS_ENV_FILE="$PDS_DATADIR/.env"
|
|
|
|
|
|
bluesky:init() {
|
|
local admin_password
|
|
init-config-add "
|
|
$SERVICE_NAME:
|
|
env_file:
|
|
- \"$PDS_ENV_FILE\"
|
|
"
|
|
|
|
[ -e "$PDS_ENV_FILE" ] && return
|
|
|
|
admin_password=$(password:get admin internal) || {
|
|
err "Failed to get admin password" >&2
|
|
return 1
|
|
}
|
|
mkdir -p "${PDS_ENV_FILE%/*}"
|
|
|
|
if ! plc_key=$(openssl ecparam --name secp256k1 --genkey --noout --outform DER 2>&1); then
|
|
err "Failed to generate PLC key" >&2
|
|
e "$plc_key" | prefix " $GRAY|$NORMAL " >&2
|
|
return 1
|
|
fi
|
|
if ! plc_key=$(set -o pipefail
|
|
echo "$plc_key" |
|
|
tail --bytes=+8 |
|
|
head --bytes=32 |
|
|
xxd --plain --cols 32 2>&1
|
|
); then
|
|
err "Failed to extract PLC key" >&2
|
|
e "$plc_key" | prefix " $GRAY|$NORMAL " >&2
|
|
return 1
|
|
fi
|
|
|
|
if ! jwt_secret=$(openssl rand -hex 16); then
|
|
err "Failed to generate JWT secret" >&2
|
|
e "$jwt_secret" | prefix " $GRAY|$NORMAL " >&2
|
|
return 1
|
|
fi
|
|
|
|
cat > "$PDS_ENV_FILE" <<EOF
|
|
PDS_JWT_SECRET=${jwt_secret}
|
|
PDS_ADMIN_PASSWORD=${admin_password}
|
|
PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=${plc_key}
|
|
PDS_DATA_DIRECTORY=${PDS_LOCAL_DATADIR}
|
|
PDS_BLOBSTORE_DISK_LOCATION=${PDS_LOCAL_DATADIR}/blocks
|
|
PDS_BLOB_UPLOAD_LIMIT=52428800
|
|
|
|
PDS_DID_PLC_URL=https://plc.directory
|
|
|
|
PDS_BSKY_APP_VIEW_URL=https://api.bsky.app
|
|
PDS_BSKY_APP_VIEW_DID=did:web:api.bsky.app
|
|
|
|
PDS_REPORT_SERVICE_URL=https://mod.bsky.app
|
|
PDS_REPORT_SERVICE_DID=did:plc:ar7c4by46qjdydhdevvrndac
|
|
|
|
PDS_CRAWLERS=https://bsky.network
|
|
|
|
LOG_ENABLED=true
|
|
EOF
|
|
|
|
}
|