All checks were successful
Test and Publish Templates / test-and-publish (push) Successful in 7s
49 lines
1.8 KiB
Bash
Executable File
49 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
source "${AGENT_PATH}/common.sh"
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
_check_required_env_vars "CONTAINER_NAME" "DATA_PATH" "MYSQL_ROOT_PASSWORD" "SEAFILE_ADMIN_EMAIL" "SEAFILE_ADMIN_PASSWORD" "SEAFILE_SERVER_HOSTNAME" "JWT_PRIVATE_KEY"
|
|
|
|
_check_docker_installed || _die "Docker test failed, aborting installation..."
|
|
|
|
# Create data directories
|
|
mkdir -p "${DATA_PATH}/mariadb" "${DATA_PATH}/seafile-data"
|
|
|
|
# Export variables for docker compose
|
|
export CONTAINER_NAME DATA_PATH HTTP_PORT IMAGE_REGISTRY IMAGE_REPO IMAGE_TAG
|
|
export MYSQL_ROOT_PASSWORD DB_PASSWORD SEAFILE_ADMIN_EMAIL SEAFILE_ADMIN_PASSWORD
|
|
export SEAFILE_SERVER_HOSTNAME SEAFILE_SERVER_PROTOCOL JWT_PRIVATE_KEY TZ
|
|
|
|
cd "$SCRIPT_DIR" || _die "Failed to change to script directory"
|
|
|
|
# Stop existing containers
|
|
docker compose -p "${CONTAINER_NAME}" down 2>/dev/null || true
|
|
|
|
# Start containers (only pull if image missing locally)
|
|
docker compose -p "${CONTAINER_NAME}" up -d --pull missing || _die "Failed to start containers"
|
|
|
|
echo "Waiting for Seafile to initialize..."
|
|
|
|
# Wait for Seafile to be fully ready (check for seahub process)
|
|
# shellcheck disable=SC2034
|
|
for i in {1..60}; do
|
|
if docker exec "${CONTAINER_NAME}" pgrep -f "seahub" &>/dev/null; then
|
|
echo "Seafile is ready"
|
|
break
|
|
fi
|
|
sleep 3
|
|
done
|
|
|
|
# Give it a moment to fully initialize
|
|
sleep 5
|
|
|
|
# Always update admin credentials using Seafile's reset-admin script
|
|
echo "Setting admin credentials..."
|
|
docker exec "${CONTAINER_NAME}" bash -c "
|
|
cd /opt/seafile/seafile-server-latest
|
|
echo -e '${SEAFILE_ADMIN_EMAIL}\n${SEAFILE_ADMIN_PASSWORD}\n${SEAFILE_ADMIN_PASSWORD}' | ./reset-admin.sh
|
|
" 2>&1
|
|
|
|
echo "Installation of ${CONTAINER_NAME} complete"
|
|
echo "Access Seafile at ${SEAFILE_SERVER_PROTOCOL}://${SEAFILE_SERVER_HOSTNAME}:${HTTP_PORT}"
|
|
echo "Login with: ${SEAFILE_ADMIN_EMAIL}"
|