Files
57_Wolve c00ca055f2 feat(copyparty): add file-server deployment with SFTP/FTPS + security-notices updater
New deployments/copyparty/: copyparty (copyparty/ac) behind Caddy/LE for the
web UI/WebDAV, plus its own SFTP (password auth) and FTPS listeners published
directly. Ships update.sh, which drives container updates off copyparty's
security-advisories API (api.copyparty.eu/advisories) -- policies latest|security|off.

- Real client IP end-to-end: Caddy XFF/X-Real-IP + copyparty xff-src: lan.
- SFTP host key + self-signed FTPS cert generated/persisted in /cfg; admin
  password generated on first deploy; conf auto-included via the image's % /cfg.
- Firewall opens 80/443 + SFTP/FTPS + passive range (colon form for ports.d).
- Wired into automations.sh, README, .gitignore; cloud-init for fresh VMs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 15:56:24 -05:00

43 lines
1.3 KiB
Caddyfile

# Caddyfile for the copyparty stack.
#
# Auto-issues a Let's Encrypt cert for $COPYPARTY_DOMAIN and reverse-proxies the
# web UI / WebDAV to copyparty on :3923. SFTP and FTPS do NOT pass through here
# -- they are published straight from the copyparty container.
{
email {$ACME_EMAIL}
}
{$COPYPARTY_DOMAIN} {
encode zstd gzip
reverse_proxy copyparty:3923 {
# Real client IP: Caddy already appends the genuine remote address to
# X-Forwarded-For (it is the internet edge); copyparty trusts it via
# `xff-src` in copyparty.conf. X-Real-IP is set too for good measure.
header_up X-Real-IP {http.request.remote.host}
# Stream uploads/downloads (no buffering) and allow long-lived large
# transfers -- copyparty resumable uploads can run for a long time.
# Caddy imposes no request-body size limit by default, so big uploads
# stream straight through.
flush_interval -1
transport http {
read_timeout 1h
write_timeout 1h
}
}
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains"
X-Content-Type-Options "nosniff"
Referrer-Policy "strict-origin-when-cross-origin"
-Server
}
log {
output stdout
format console
}
}