/ setup.sh
setup.sh
1 #! /bin/bash 2 set -o errexit 3 set -o nounset 4 set -o pipefail 5 6 GENERATE_SECURE_SECRET_CMD="openssl rand --hex 16" 7 GENERATE_K256_PRIVATE_KEY_CMD="openssl ecparam --name secp256k1 --genkey --noout --outform DER | tail --bytes=+8 | head --bytes=32 | xxd --plain --cols 32" 8 9 PDS_ROOTDIR="${1:-/opt/pds}" 10 PDS_HOSTNAME="${2:-}" 11 PDS_ADMIN_EMAIL="${3:-}" 12 13 REQUIRED_SYSTEM_PACKAGES="sed openssl xxd podman podman-compose" 14 15 apt-get install -y ${REQUIRED_SYSTEM_PACKAGES} 16 17 mkdir -p ${PDS_ROOTDIR}/data 18 cat <<_____ > ${PDS_ROOTDIR}/pds.env 19 PDS_HOSTNAME=${PDS_HOSTNAME} 20 PDS_JWT_SECRET=$(eval "${GENERATE_SECURE_SECRET_CMD}") 21 PDS_ADMIN_PASSWORD=$(eval "${GENERATE_SECURE_SECRET_CMD}") 22 PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=$(eval "${GENERATE_K256_PRIVATE_KEY_CMD}") 23 _____ 24 25 cp compose-pdsonly.yaml "${PDS_ROOTDIR}/compose.yaml" 26 for f in CaddyFile pds.service; do 27 sed -e "s|@ROOTDIR@|${PDS_ROOTDIR}|g" \ 28 -e "s|@HOSTNAME@|${PDS_HOSTNAME}|g" \ 29 -e "s|@ADMIN_EMAIL@|${PDS_ADMIN_EMAIL}|g" \ 30 < $f.in > "${PDS_ROOTDIR}/$f" 31 done 32 33 cat <<_____ 34 ======================================================================== 35 Standalone PDS setup successful! 36 ------------------------------------------------------------------------ 37 38 Things to do: 39 40 Install Caddy : apt install caddy 41 Copy CaddyFile : cp ${PDS_ROOTDIR}/CaddyFile /etc/caddy/FILENAME 42 (you choose how you set up Caddy) 43 Restart caddy: : systemctl restart caddy 44 45 Copy systemd unit file : cp ${PDS_ROOTDIR}/pds.service /etc/systemd/system/pds.service 46 [Re]start the service : systemctl daemon-reload 47 systemctl enable pds 48 systemctl restart pds 49 50 Check service status : sudo systemctl status pds 51 Watch service logs : sudo docker logs -f pds 52 Backup service data : ${PDS_ROOTDIR}/data 53 54 Required DNS entries 55 ------------------------------------------------------------------------ 56 Name Type Value 57 ------- --------- --------------- 58 ${PDS_HOSTNAME} A Server's IP 59 *.${PDS_HOSTNAME} A Server's IP 60 61 ======================================================================== 62 _____