diff options
| author | t <t@tjp.lol> | 2026-07-13 08:45:34 -0600 |
|---|---|---|
| committer | t <t@tjp.lol> | 2026-07-13 09:06:25 -0600 |
| commit | 86abe0f77d48c67afdd98b5f9d880ed2696c03c3 (patch) | |
| tree | ccd51be83548e01e530ad5b98c8b12649d87b1c5 | |
| parent | b3d5e1ac33ff929727cffc2b3025def9884566fe (diff) | |
image management outside the repo
the strategy for image management is to push them up to the production
server early (they don't hurt anything sitting there with no <image>
tags pointing at them) to use the server itself as image storage.
a new mise tasks manages the upload, moving the image into place and
setting permissions on the server. the /images/ directory in the repo is
git-ignored for the server's checkout, and the local dev server is
switched to caddy with a reverse proxy on images paths to serve
local-dev image links straight from prod.
| -rw-r--r-- | .air.toml | 2 | ||||
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | Caddyfile.dev | 11 | ||||
| -rw-r--r-- | mise.toml | 17 |
4 files changed, 30 insertions, 1 deletions
@@ -11,7 +11,7 @@ exclude_file = [] exclude_regex = [] exclude_unchanged = true follow_symlink = true -full_bin = "python3 -m http.server 8000 --bind 127.0.0.1" +full_bin = "caddy run --config Caddyfile.dev" include_dir = [] include_ext = ["css", "md", "tmpl"] include_file = [] @@ -2,6 +2,7 @@ /.weft-generated.json /.weft-txn-* /.air/ +/images/ # BEGIN weft generated outputs /about/index.html /feed.xml diff --git a/Caddyfile.dev b/Caddyfile.dev new file mode 100644 index 0000000..958ce0d --- /dev/null +++ b/Caddyfile.dev @@ -0,0 +1,11 @@ +http://localhost:8000 { + handle /images/* { + reverse_proxy https://tjp.lol { + header_up Host tjp.lol + } + } + handle { + root * . + file_server + } +} @@ -1,3 +1,6 @@ +[tools] +caddy = "latest" + [tasks.gen] run = "weft -gitignore . https://tjp.lol" @@ -35,3 +38,17 @@ run = "jj git push -b main" [tasks.deploy] description = "Push the 'main' bookmark and update weft on the server" depends = ["deploy:weft", "deploy:site"] + +[tasks."upload:image"] +description = "Upload an image to the production server" +usage = 'arg "file" "path"' +run = ''' +set -euo pipefail + +fname=`basename $usage_file` +dirpath=`dirname $usage_path` +site_imgs=/jail/volumes/web/https/images + +scp $usage_file t@tjp.lol:/tmp/$fname +ssh t@tjp.lol "doas sh -c 'mkdir -p ${site_imgs}/${dirpath} && mv /tmp/${fname} ${site_imgs}/${usage_path} && chown root:wheel ${site_imgs}/${usage_path}'" +''' |
