mirror of
https://github.com/10h30/kazewp.git
synced 2026-05-12 23:31:27 +09:00
108 lines
2.8 KiB
Bash
108 lines
2.8 KiB
Bash
#!/bin/bash
|
|
|
|
reload_caddy() {
|
|
echo "Reloading Caddy configuration..."
|
|
cd "$CADDY_DIR" && docker compose restart
|
|
}
|
|
|
|
create_caddy_config() {
|
|
export DOMAIN=$1
|
|
export CONFIG_FILE="${CADDY_DIR}/sites/${DOMAIN}.caddy"
|
|
|
|
mkdir -p "${CADDY_DIR}/sites"
|
|
|
|
envsubst < "${SCRIPT_DIR}/templates/caddy.template" > "$CONFIG_FILE"
|
|
|
|
if ! grep -q "import sites/\*.caddy" "${CADDY_DIR}/Caddyfile"; then
|
|
echo 'import sites/*.caddy' >> "${CADDY_DIR}/Caddyfile"
|
|
fi
|
|
}
|
|
|
|
create_caddy_docker_compose() {
|
|
mkdir -p "${CADDY_DIR}"
|
|
|
|
# Create necessary directories
|
|
mkdir -p "${CADDY_DIR}/sites"
|
|
mkdir -p "${CADDY_DIR}/caddy_data"
|
|
mkdir -p "${CADDY_DIR}/caddy_config"
|
|
|
|
# Create initial Caddyfile
|
|
cat > "${CADDY_DIR}/Caddyfile" <<EOL
|
|
{
|
|
# Global options
|
|
admin off
|
|
persist_config off
|
|
}
|
|
(wordpress) {
|
|
|
|
# Some static files Cache-Control.
|
|
@static {
|
|
path *.ico *.css *.js *.gif *.jpg *.jpeg *.png *.svg *.woff *.json
|
|
}
|
|
header @static Cache-Control max-age=2592000
|
|
|
|
# Security
|
|
@forbidden {
|
|
not path /wp-includes/ms-files.php
|
|
path /wp-admin/includes/*.php
|
|
path /wp-includes/*.php
|
|
path /wp-config.php
|
|
path /wp-content/uploads/*.php
|
|
path /.user.ini
|
|
path /wp-content/debug.log
|
|
}
|
|
respond @forbidden "Access denied" 403
|
|
|
|
# Cache Enabler
|
|
@cache_enabler {
|
|
not header_regexp Cookie "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in"
|
|
not path_regexp "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(index)?.xml|[a-z0-9-]+-sitemap([0-9]+)?.xml)"
|
|
not method POST
|
|
not expression {query} != ''
|
|
}
|
|
|
|
route @cache_enabler {
|
|
try_files /wp-content/cache/cache-enabler/{host}{uri}/https-index.html /wp-content/cache/cache-enabler/{host}{uri}/index.html {path} {path}/index.php?{query}
|
|
}
|
|
}
|
|
|
|
# Site configurations will be imported below
|
|
import sites/*.caddy
|
|
EOL
|
|
|
|
# Create docker-compose.yaml
|
|
cat > "${CADDY_DIR}/compose.yaml" <<EOL
|
|
services:
|
|
caddy:
|
|
container_name: caddy
|
|
image: caddy:latest
|
|
restart: always
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- ./Caddyfile:/etc/caddy/Caddyfile
|
|
- ./sites:/etc/caddy/sites
|
|
- ./caddy_data:/data
|
|
- ./caddy_config:/config
|
|
- ../wordpress:/var/www
|
|
networks:
|
|
- caddy_net
|
|
|
|
networks:
|
|
caddy_net:
|
|
name: caddy_net
|
|
EOL
|
|
}
|
|
|
|
setup_directories() {
|
|
mkdir -p "${WORDPRESS_DIR}"
|
|
mkdir -p "${CADDY_DIR}/sites"
|
|
mkdir -p "${CADDY_DIR}/caddy_data"
|
|
mkdir -p "${CADDY_DIR}/caddy_config"
|
|
|
|
if [ ! -f "${CADDY_DIR}/Caddyfile" ]; then
|
|
#echo "Creating initial Caddy configuration..."
|
|
create_caddy_docker_compose
|
|
fi
|
|
} |