| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Docker deployments were passing the host port as PORT to the container,
but the port mapping routes traffic to container port. This caused apps
that read PORT from env to listen on the wrong port inside the container.
|
| |
|
|
|
|
|
| |
- Collapse multi-line allocScript to single line (fixes SSH+sudo mangling)
- Scan /etc/ship/ports/* to find highest port in use
- Use max(next_port, highest_used + 1) to prevent collisions
- Fixes issue where stale/missing next_port caused port conflicts
|
| |
|
|
|
|
|
| |
Don't overwrite Caddyfile if it already exists. This preserves
manual customizations (NIP-05 routes, custom headers, etc.).
First deploy generates Caddyfile, subsequent deploys leave it alone.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Port allocation:
- Use atomic flock-based allocation via /etc/ship/next_port
- Prevents race conditions when multiple deploys run concurrently
- Each app still gets its port stored in /etc/ship/ports/<name>
Docker container port:
- Add --container-port flag (default 80)
- Template now uses {{.ContainerPort}} instead of hardcoded 80
- Supports containers that listen on 8080, 3000, etc.
|
| | |
|
| | |
|
|
|
- deploy_impl_v2.go: full implementations for static, docker, binary deploys
- Static: rsync + Caddyfile generation + reload
- Docker: rsync + build + systemd unit + env file + Caddyfile
- Binary: scp + systemd unit + service user + env file + Caddyfile
- Port allocation: server-side in /etc/ship/ports/
- TTL: server-side in /etc/ship/ttl/
- Health checks: HTTP GET with 30s retry loop
All deploy types now functional (pending Go compilation test)
|