Brings across everything an operator needs to run Idunn without reference to Odin. deploy/ carries the worked systemd installation -- unit, operator wrapper, and the narrow sudoers grant. docs/ carries the four documents that were scattered across Odin's tree. The README is new and is the public entry point the repo lacked: what Idunn decides, how to build and run it, the authority model in the form doctrine asks for, how to install it as a service, and where the deeper documents are. Two corrections made while moving: Requires=docker.service becomes Wants=. Deployment runners use Docker; continuity actuation does not. A hard requirement lets a Docker outage stop Idunn itself and take daemon survival down with it, which is precisely the invariant Idunn exists to hold. This is live on yggdrasil today and should be changed there too. The guide still told operators to run from E:\Projects\Odin -- a drive that no longer exists -- via npm wrappers that belonged to Odin. Paths generalised, commands moved to direct cargo invocations, and a note added that the document predates the extraction. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
30 lines
1.8 KiB
Desktop File
30 lines
1.8 KiB
Desktop File
[Unit]
|
|
Description=Idunn Yggdrasil-local lifecycle coordinator
|
|
After=network-online.target docker.service
|
|
Wants=network-online.target
|
|
# Deployment runners use Docker, but continuity actuation does not. A hard
|
|
# Requires= would let a Docker outage stop Idunn itself, killing daemon
|
|
# survival for every target. Want it, order after it, and let individual
|
|
# container-backed deploys fail on their own if it is absent.
|
|
Wants=docker.service
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=idunn
|
|
Group=idunn
|
|
# Operational cancellation ceiling only. Target daemons own readiness through
|
|
# typed health; this duration must never be interpreted as deployment success.
|
|
ExecStart=/usr/local/bin/idunn --swarm-profile yggdrasil-local --repo-root /var/lib/gamecult/idunn --store /var/lib/gamecult/idunn/yggdrasil.keepalive.cc --release-authority-store /srv/bifrost/state/repository-release-authority.cc --deployment-brake-store /var/lib/gamecult/idunn-authority/deployment-brake.cc --deployment-brake-operator-anchor /etc/gamecult/idunn/deployment-brake-operator-anchor.cc --daemon-health-trust-store /etc/gamecult/idunn/daemon-health-trust.cc --rudp-health-bind 10.77.0.1:17870 --service-identity-store /var/lib/gamecult/idunn/idunn-service-identity.cc --public-health-store /var/lib/gamecult/idunn/authenticated-provider-health.cc --public-health-query-bind 127.0.0.1:17871 --command-timeout-seconds 21600 --execute
|
|
Restart=always
|
|
RestartSec=5
|
|
TimeoutStopSec=20
|
|
KillSignal=SIGINT
|
|
UMask=027
|
|
PrivateTmp=yes
|
|
ProtectHome=yes
|
|
ProtectSystem=full
|
|
ReadWritePaths=/etc/gamecult/idunn /etc/gamecult/codex-connector /etc/gamecult/ghostlight-dungeon /etc/systemd/system/codex-connector.service /etc/systemd/system/epiphany-swarm.service /etc/systemd/system/ghostlight-dungeon.service /var/lib/gamecult/idunn /srv/build /srv/voidbot
|
|
ReadOnlyPaths=/var/lib/gamecult/idunn-authority
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|