Fix AI tools and My Library, add U2net background removal
- Fix My Library: Add CSS styling for library browser, items now visible - Integrate My Library into Shapes tool with tabbed interface - Improve AI Inpaint: Add transform mode for scaling/sizing selections - Add helpful guidance explaining inpaint vs transform modes - Add U2net as alternative background removal (avoids rembg issues) - Create U2net model definition and download script - Improve Caddyfile with multiple options and troubleshooting guide Note: Brush Select (AI Paint) tool was already implemented and working. https://claude.ai/code/session_01CLedz6CanT9t46KBvng3vz
This commit is contained in:
@@ -1,15 +1,122 @@
|
||||
# Caddy 2 Configuration for AI Photo Edit
|
||||
# Simple version - frontend nginx handles API routing internally
|
||||
# Caddy 2 Configuration for EditmaskwithAI
|
||||
# ==========================================
|
||||
#
|
||||
# SETUP INSTRUCTIONS:
|
||||
# 1. Replace 'your-subdomain.yourdomain.com' with your actual domain
|
||||
# 2. Make sure DNS CNAME record points to your server
|
||||
# 3. Ensure ports 80 and 443 are open (Caddy handles SSL automatically)
|
||||
# 4. The frontend runs on port 3080 by default (docker-compose)
|
||||
#
|
||||
# Common Issues:
|
||||
# - "Connection refused": Check if the frontend container is running
|
||||
# - "Bad gateway": Check if localhost:3080 is accessible
|
||||
# - "SSL error": Make sure ports 80/443 are open for Let's Encrypt
|
||||
|
||||
# Option 1: With domain name
|
||||
ai-photo-edit.yourdomain.com {
|
||||
reverse_proxy localhost:3080
|
||||
# ============================================
|
||||
# OPTION 1: Domain with automatic HTTPS (recommended)
|
||||
# ============================================
|
||||
# Replace with your actual domain
|
||||
your-subdomain.yourdomain.com {
|
||||
# Reverse proxy to frontend (nginx serves both frontend and proxies API)
|
||||
reverse_proxy localhost:3080 {
|
||||
# Health checks
|
||||
health_uri /health
|
||||
health_interval 30s
|
||||
health_timeout 10s
|
||||
|
||||
# Headers for proper proxying
|
||||
header_up Host {upstream_hostport}
|
||||
header_up X-Real-IP {remote_host}
|
||||
header_up X-Forwarded-For {remote_host}
|
||||
header_up X-Forwarded-Proto {scheme}
|
||||
}
|
||||
|
||||
# Enable compression
|
||||
encode gzip zstd
|
||||
|
||||
# Logging (optional - uncomment for debugging)
|
||||
# log {
|
||||
# output file /var/log/caddy/access.log
|
||||
# format json
|
||||
# }
|
||||
}
|
||||
|
||||
# Option 2: IP:Port (comment out option 1 if using this)
|
||||
# ============================================
|
||||
# OPTION 2: IP address or localhost (no HTTPS)
|
||||
# ============================================
|
||||
# Uncomment this block and comment out Option 1 if you don't have a domain
|
||||
# or want to test locally
|
||||
|
||||
# :8080 {
|
||||
# reverse_proxy localhost:3080
|
||||
# reverse_proxy localhost:3080 {
|
||||
# header_up Host {upstream_hostport}
|
||||
# header_up X-Real-IP {remote_host}
|
||||
# header_up X-Forwarded-For {remote_host}
|
||||
# }
|
||||
# encode gzip zstd
|
||||
# }
|
||||
|
||||
# Note: You don't need to specify /projects, /edits, etc.
|
||||
# The frontend's nginx is already configured to proxy those to the backend internally.
|
||||
# ============================================
|
||||
# OPTION 3: Multiple subdomains
|
||||
# ============================================
|
||||
# If you want both www and non-www versions
|
||||
|
||||
# yourdomain.com, www.yourdomain.com {
|
||||
# reverse_proxy localhost:3080 {
|
||||
# header_up Host {upstream_hostport}
|
||||
# header_up X-Real-IP {remote_host}
|
||||
# header_up X-Forwarded-For {remote_host}
|
||||
# header_up X-Forwarded-Proto {scheme}
|
||||
# }
|
||||
# encode gzip zstd
|
||||
# }
|
||||
|
||||
# ============================================
|
||||
# OPTION 4: Behind another reverse proxy (Cloudflare, etc.)
|
||||
# ============================================
|
||||
# Use this if Caddy is behind Cloudflare or another proxy
|
||||
|
||||
# your-subdomain.yourdomain.com {
|
||||
# # Trust proxy headers from upstream
|
||||
# servers {
|
||||
# trusted_proxies static 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22
|
||||
# }
|
||||
#
|
||||
# reverse_proxy localhost:3080 {
|
||||
# header_up Host {upstream_hostport}
|
||||
# header_up X-Real-IP {http.request.header.CF-Connecting-IP}
|
||||
# header_up X-Forwarded-For {http.request.header.CF-Connecting-IP}
|
||||
# header_up X-Forwarded-Proto {scheme}
|
||||
# }
|
||||
# encode gzip zstd
|
||||
# }
|
||||
|
||||
# ============================================
|
||||
# TROUBLESHOOTING
|
||||
# ============================================
|
||||
#
|
||||
# 1. Check Caddy logs:
|
||||
# docker logs caddy
|
||||
# OR: journalctl -u caddy -f
|
||||
#
|
||||
# 2. Test backend connectivity:
|
||||
# curl -I http://localhost:3080
|
||||
#
|
||||
# 3. Check DNS resolution:
|
||||
# dig your-subdomain.yourdomain.com
|
||||
# nslookup your-subdomain.yourdomain.com
|
||||
#
|
||||
# 4. Verify ports are open:
|
||||
# sudo netstat -tlnp | grep -E ':(80|443|3080)'
|
||||
#
|
||||
# 5. Check firewall:
|
||||
# sudo ufw status
|
||||
# sudo iptables -L -n
|
||||
#
|
||||
# 6. For Let's Encrypt issues:
|
||||
# - Ensure ports 80 and 443 are accessible from internet
|
||||
# - Check if domain resolves to your server's IP
|
||||
# - Try: caddy validate --config /path/to/Caddyfile
|
||||
#
|
||||
# 7. Force reload Caddy config:
|
||||
# caddy reload --config /path/to/Caddyfile
|
||||
|
||||
Reference in New Issue
Block a user