blob: 6b41d98a2136b1187f8cef27ec526077d6d3ffca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# Ship TODO
## Known Limitations
### Docker Container Port Assumption
**Current behavior:** Ship assumes Docker containers listen on port 80 internally.
**In:** `internal/templates/templates.go`:
```
-p 127.0.0.1:{{.Port}}:80
```
**Problem:** Containers that expose other ports (e.g., 8080, 3000) will not work.
**Workaround:** Ensure your Docker container listens on port 80, or manually edit the systemd unit after deployment.
**Potential fixes:**
1. Add `--container-port` flag to specify internal port
2. Auto-detect from Dockerfile `EXPOSE` directive
3. Support `PORT` env var in Docker containers (like binary deploys)
---
## Other TODOs
### Support custom Caddyfile in repo
**Problem:** v2 always generates Caddyfiles from templates, ignoring any custom config in the repo.
**v1 behavior:** Checked for `.ship/Caddyfile` and used it if present.
**Proposed:** If `Caddyfile` exists in repo root, use it instead of generating. Support variable substitution:
- `{{.RootDir}}` → `/var/www/<name>`
- `{{.Port}}` → allocated port
- `{{.Domain}}` → site domain
This allows custom routes (NIP-05, LNURL, rewrites, etc.) while still letting ship manage deployment.
---
### ship list should show custom domains
**Problem:** `ship list` shows internal names (e.g., `ship-593a3d`) but not the actual custom domain mappings (e.g., `checkyourinfo.com`).
**Desired:** Show the actual domain in the URL column when `--domain` was used.
### Port allocation collision bug
**Problem:** Ship can allocate the same port to multiple deployments, causing containers to fail with exit code 125.
**Example:** Both len.to and checkyourinfo.com were assigned port 9000.
**Fix:** Check if port is actually in use before allocating.
---
### ~~ship host init doesn't create local state.json~~ ✅ FIXED
**Fixed in:** commit 6b2c047
- Removed all v1 code (-2837 lines)
- Simplified `internal/state/state.go` to just `default_host` + `base_domain`
- `host init` now creates minimal state.json
- Ports/deploys tracked on server at `/etc/ship/ports/`
|