Files
owncast/test/automated/activitypub/setup.sh
T
Gabe KangasandGitHub b0fc8260d9 ActivityPub integration test (#4761)
* feat(test): add an end-to-end ActivityPub integration test

* chore(ci): run AP integration test under CI

* feat(test): use caddy instead of home built reverse proxy

* fix(test): fix linter warnings

* chore(test): don't commit test self-signed certs I suppose

* chore(test): more shellcheck linter warnings

* fix: fix test setup under CI
2026-01-21 22:33:55 -08:00

84 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
# One-time setup script for ActivityPub federation tests
# Run with: sudo ./setup.sh
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
if [[ ${EUID} -ne 0 ]]; then
log_error "This script must be run as root (sudo ./setup.sh)"
exit 1
fi
# Get the actual user who ran sudo
ACTUAL_USER="${SUDO_USER:-${USER}}"
ACTUAL_HOME=$(getent passwd "${ACTUAL_USER}" | cut -d: -f6)
log_info "Setting up ActivityPub federation test environment..."
# 1. Install mkcert
if ! command -v mkcert &> /dev/null; then
log_info "Downloading mkcert..."
curl -sL "https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-amd64" -o /usr/local/bin/mkcert
chmod +x /usr/local/bin/mkcert
else
log_info "mkcert already installed"
fi
# 2. Install CA into system trust store
log_info "Installing mkcert CA into system trust store..."
sudo -u "${ACTUAL_USER}" CAROOT="${ACTUAL_HOME}/.local/share/mkcert" mkcert -install
# 3. Generate certificates
log_info "Generating certificates..."
mkdir -p "${SCRIPT_DIR}/certs"
chown "${ACTUAL_USER}:${ACTUAL_USER}" "${SCRIPT_DIR}/certs"
sudo -u "${ACTUAL_USER}" CAROOT="${ACTUAL_HOME}/.local/share/mkcert" mkcert \
-cert-file "${SCRIPT_DIR}/certs/cert.pem" \
-key-file "${SCRIPT_DIR}/certs/key.pem" \
owncast.local snac.local localhost 127.0.0.1
# 4. Add hosts entries
if ! grep -q "owncast.local" /etc/hosts; then
log_info "Adding hosts entries..."
echo "127.0.0.1 owncast.local snac.local" >> /etc/hosts
else
log_info "Hosts entries already exist"
fi
# 5. Check for snac2
if ! command -v snac &> /dev/null; then
log_error "snac2 is not installed. Please install it manually."
log_error "See: https://codeberg.org/grunfink/snac2"
exit 1
else
log_info "snac2 found: $(command -v snac)"
fi
# 6. Install Caddy
if ! command -v caddy &> /dev/null; then
log_info "Installing Caddy..."
CADDY_VERSION="2.8.4"
curl -sL "https://github.com/caddyserver/caddy/releases/download/v${CADDY_VERSION}/caddy_${CADDY_VERSION}_linux_amd64.tar.gz" | tar -xz -C /usr/local/bin caddy
chmod +x /usr/local/bin/caddy
log_info "Caddy installed"
else
log_info "Caddy already installed: $(command -v caddy)"
fi
echo ""
log_info "Setup complete!"
echo ""
echo "You can now run the test:"
echo " cd ${SCRIPT_DIR}"
echo " ./run.sh"