Core workflows 2 min read

Operating day to day

Everything below runs on the host as root over SSH — the admin plane never touches the browser surfaces.

Users

provision-user.sh maya                    # add a user (container + routes + ssh port)
deprovision-user.sh maya                  # remove — keeps her home directory
deprovision-user.sh maya --purge-home     # remove + delete home (irreversible)

Support a user without disturbing anyone else:

podman exec -it comcon-maya bash          # inside her container
ssh -p 2200 dev@<host>                    # her remote-attach port
podman exec comcon-maya comcon-cdp list   # her open browser tabs

Agent bricked its own environment? Recreate the container — the home volume survives, so projects, dotfiles, and sessions persist while the OS layer resets to the image.

Sharing between users

Shared directories live in /srv/workspace/shares/<name> and mount into each member's container — declared in shares.tsv as ro or rw. Use a live share for pair-working and assets; use git remotes for real code collaboration.

Upgrading the image

  1. Edit the Containerfile per the generation spec.
  2. podman build -t comcon:latest — tag the old one as comcon:prev first.
  3. Recreate each container (podman rm -f comcon-<u> + provision-user.sh <u>). Same ports, home survives, downtime is seconds.
  4. On DigitalOcean, the next hibernate bakes the new image into the snapshot automatically.

Park and resume

hibernate.sh --yes    # do: stop -> poweroff -> snapshot -> destroy
                      # other targets: rclone /srv -> stop containers
warmup.sh             # do: droplet from snapshot -> DNS -> byte-identical
                      # other targets: pull /srv -> recreate containers

A routine reboot is always safe — containers carry --restart always and /srv is the local source of truth. But a powered-off droplet still bills; never leave one off. Hibernate instead.

For an off-site copy on DigitalOcean too, hibernate.sh --archive also syncs /srv to object storage. Scheduled backups run every few hours while the host is active.

Tearing down

teardown.sh --yes

Destroys droplet, snapshots, and remote state. Irreversible — hibernate first if unsure.

Deploy now