LICENSE (MIT), installed as /usr/share/doc/terraria-server-manager/copyright
in both packages and with %license in the RPM. README gains a License
section and an up-to-date repository layout and build section.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- packaging/rpm/terraria-server-manager.spec.in: installs via make
install, plain scriptlets (no Fedora-only macros) mirroring the deb
maintainer scripts; removal stops servers, disables boot/backups/
daemon and removes only terractl's own drop-ins.
- make rpm (rpmbuild --nodeps, works on Debian/Ubuntu); make check
parses the spec when rpmspec is installed.
- Release workflow builds deb and rpm, attaches both, publishes the rpm
to Gitea's RPM registry. Job renamed to 'packages'.
- pkg_install: install hints use dnf or apt with the right package
names (doctor, fetch, python3/openssl checks).
- firewalld: new prints the firewall-cmd command for its port; doctor
lists instance and daemon ports firewalld doesn't allow.
- Docs, README, AGENTS.md and changelog; VERSION 0.0.13.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Guidance for agents working on the repo: layout, build and checks, the
invariants (ownership, permissions, sandbox, data safety), code
conventions, a checklist for adding commands, testing without root,
docs style, the changelog, releases and git.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- doctor [<name>] [--fix]: checks the system (user, programs, folders,
zips, units and leftover copies in /etc, sandbox access to moved
folders, journal, polkit, daemon, orphaned boot links and schedules)
and each instance (ownership, server zip, config paths, mods, ports,
failed starts/backups), with a fix for each. --fix applies the safe
ones and re-checks them.
- backup enable|disable|now|list: a systemd timer per instance
(terraria-backup@.timer, Persistent=), saving the world first, into
/var/lib/terraria/backups/<name>/ (group-readable), pruning only
scheduled backups. rename carries the schedule, delete removes it.
upgrade's backups move there too.
- fetch vanilla|tmodloader [<version>] [--list] [--upgrade <name>]:
downloads from terraria.org / tModLoader's GitHub releases, checks
GitHub's sha256 and the zip, names it with its version.
- terractld may write /etc/systemd/system, for backup enable and
doctor --fix over --host.
- Units, tmpfiles, packaging, completion, docs and changelog.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
upgrade (before stopping anything) and prepare/run started as root now
refuse with an explanation when terractl is somewhere the terraria user
can't open, such as a copy under /root, instead of failing with
"env: Permission denied". upgrade also says when it started the server
again after a failure.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- list, new, import and enable check TERRARIA_BASE and TERRARIA_DIST
against the units' ProtectSystem/ProtectHome/ReadWritePaths
(terraria@ always, terractld when it's on) and print the drop-in
to add. prepare explains why it can't create an instance folder.
- Guide: bind mounts and drop-ins under "Changing locations", and a
new section for instances or zips under /home.
- journal-access in tab completion and the command reference.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- terractl upgrade <name> lists the zips an instance can use; with a zip
or 'latest' it checks the zip, stops the server, backs up worlds and
configs to instances/.backups/, pins ZIP=, unpacks right away and
starts the server again. Downgrades need --downgrade.
- reinstall pins the installed zip when ZIP= is blank, so it never
changes version, and keeps server/.installed (uses a .reinstall flag).
- Resolve terractl's own path before cd /, so a relative $0 works.
- Docs, completion and the daemon's command list; version 0.0.12.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>