The hostnames are already declared, once, in the fabio route tags. A domains.txt would be a second source of truth free to disagree with what is actually served, so myos cert reads the tags instead and decides on its own which name needs a wildcard: one is asked for where a tag uses one, and it absorbs the concrete names it covers. A wildcard covers a single label, so a.b.example.org keeps its own certificate. dehydrated issues them: a shell script, no python, which fits a tool that has to install on any server. It answers http-01 itself on a port bound to the loopback and routed by fabio, and delegates dns-01 to a provider hook. The deploy hook writes the two file names fabio watches for, through a temporary name so fabio never reads half a certificate. Fixed on the way: the port parser wanted six spaces of indentation and the catalogue writes four, so every stack that binds its ports was reported unbound.
4.0 KiB
4.0 KiB
CHANGELOG
v2.0.0-dev - 2026-09-03
- new bash CLI (
bin/myos,lib/): one model for a project directory, a catalogue stack, a group and a host singleton - unknown command or unknown stack now fails, instead of succeeding silently
- default compose project is
<user>-<env>-<app>; setMYOS_PROJECT_FORMAT=user-app-envon deployments created before this myos ls,myos env,myos doctorto inspect an installationinstall.sh, and the catalogue is looked up beside the installation- agent skill in
skills/myos/, contributor notes inAGENTS.md - stacks carry their settings in
<name>.envand<name>.shhooks, so the catalogue no longer needs make to be installed - lazy defaults (
myos_default_<VAR>functions) give the recursive?=of make in pure shell: an explicit value wins, and the default is recomputed at each reference myos env-updategenerates a.envfrom the.env.disttemplates, expanding${VAR}and$(command), including forward references- the project
.envnow wins over/etc/conf.d/myos, as documented;MYOS_CONF_PRIORITY=systemrestores the previous order share/make/shim.mk: make as an optional front end over the same shell codemyos exposereports what each stack publishes and to whom, and--strictfails when a port faces the world without saying so.MYOS_BIND_PUBLIC,_PRIVATEand_MESHlet a stack bind its published ports, which replaces the linux-only ufw-docker patching with something that behaves the same on macOS and needs no privilege. The scope is read from the compose file rather than declared beside it, so it cannot disagree with what is publishedmyos certderives the certificates a server needs from the route tags its stacks publish, and asks dehydrated for them: a wildcard where a tag uses one, a certificate per name otherwise. Thehost/dehydratedstack answers http-01 itself and delegates dns-01 to a provider hook- commands chain:
myos build up logs host/fabio, as make targets did - the stack catalogue no longer needs make at all: its settings are hooks, and only six stacks keep a .mk, for targets
- a stack found in several directories of the stack path is merged, project last, so a project refines a catalogue stack instead of replacing it
--color always|never|auto, and no colour when the output is piped- verified under the /bin/sh of Alpine (busybox) and Debian (dash)
- the make engine still works and is still covered by the golden tests
v1.1 - 2026-09-03
- move the stack catalogue and the docker build contexts to the myos-stacks project
- keep the framework infra compose files in share/compose and the myos tool image in share/docker
- fix stack_path resolution: host/ stacks were only found when the project stack directory sorted first
- drop the docker/compose image fallback: docker compose >= 2.24.4 or docker-compose is required
- add a shellspec golden test harness (make test)
v1.0-beta - 2026-07-29
- split make files in
myosproject and docker files instackproject
v1.0-alpha - 2022-11-29
- node is host
v0.9.9 - 2022-11-22
- node name is
hostname
v0.9 - 2022-11-11
- split make files in
myosproject and install files inyaipproject
v0.1-beta - 2022-06-30
Beta release, welcome ipfs
- add arm64 support
- add ipfs stack
- add x2go with ssh ecryptfs homedir
- update docker-compose to v2.5.0
v0.1-alpha - 2021-07-14
Public release, code is doc
- update license to GPL as freedom should not allow evil to move faster than god
v0.0.1 - 2021-02-08
Initial import
- import previous
infraproject - rename project to myos - make your own stack
2020
- makefile can be included in any project
- multi user/environment
2018
The infra project
- ansible : deploy docker to production
- aws : upload alpine iso to s3 and create ami
- packer : build alpine iso with docker daemon
- stack/services : docker stack for shared services
- subrepo : sync all git repositories with monorepo
2017
Initial work
- makefile for a monorepo with many docker-compose projects