Commit Graph

20 Commits

Author SHA1 Message Date
Alex Palaistras fe30677a46 Deprecate generic container volume backup/restore
Previously, all container volumes initialized via the `container-volume`
service would have local rotating backups performed by pushing `tar`
archives to the `/var/lib/backups/coreos-home-server` directory.

This proved to be a simple and effective mechanism for storing historic
volume state locally; however, the use-case for historic backup is
usually data loss, either partial (e.g. by deleting files inadvertently)
or complete (e.g. by loss of disk), which is likely better mitigated by
more concrete mechanisms of retention.

In addition, this need to store historic volume state locally, in its
totality, proved to be a barrier for performing partial backups, which
is an issue especially for larger volumes.

This commit deprecates this simple, generic volume backup/restore
mechanism, and instead has us rely directly on Rclone reading from the
volume in question.
2024-04-01 13:41:32 +01:00
Alex Palaistras 3cdf8b8c98 Remove hard-coded Podman auto-update schedule
This should be controlled by hosts, not by the framework itself.
2024-04-01 12:34:32 +01:00
Alex Palaistras 6dcbba7aa2 container-network: Update path conditional
Conditional for network path needed to be updated after upgrade to
Netavark.
2024-03-29 19:19:31 +00:00
Alex Palaistras b6f0880445 container-build: Use latest ID in previous tag
Using the name itself has the tag point to the name, which defeats the
purpose of tagging with the `previous` tag.
2024-01-03 18:19:25 +00:00
Alex Palaistras 2a8d56e17e container-build: Use `bash` for `ExecCondition`
Since `sh` may point to a POSIX shell, and brace expansion is undefined there.
2023-12-30 18:39:26 +00:00
Alex Palaistras ab12d60d31 Tag existing images with `previous` on re-build
Container builds using the `container-build@` systemd service will
generally tag any container image built with the `latest` tag, which is
then referred to pervasively in container executions.

However, this tag is overwritten when building new images, and, combined
with how `podman auto-update` will prune old image digests, may cause us
to lack the ability to roll back, automatically or otherwise.

This commit sets a `previous` tag on container re-builds, which should
only generally happen when source files change (due to the `ExecCondition`)
present on the service, which in turn should ensure that images are not
spuriously tagged as such.
2023-12-22 19:27:40 +00:00
Alex Palaistras d8a4b7874f Skip container builds unless local files changed
This commit adds an `ExecCondition` directive on the `container-build@`
service, used as a pre-requisite for all other Podman-based services,
skipping `podman build` invocations unless local `Containerfile` or any
files in the `container` sub-directories have changed.

Container builds are responsible for the majority of time taken during
boot, even with cache in place; this will help alleviate pressure and
hopefully speed up boot considerably.
2023-12-20 19:50:39 +00:00
Alex Palaistras 36e1e3039e coturn: Enable and startup on health-checks 2023-10-29 15:56:02 +00:00
Alex Palaistras fcf9175060 Enable Podman auto-updates for Redis and MariaDB
Container auto-updates are scheduled for 30 minutes past every hour, or
approximately 30 minutes after `coreos-home-server-update` runs, in
order to give enough time for container builds to complete; only
containers with auto-updates enabled are eligible, however.

This also enables health-checks for Redis, and updates the version to
7.2.
2023-10-29 13:31:27 +00:00
Alex Palaistras 3943c51181 Remove concrete unit files for generated ones
Podman-generated systemd unit files aren't usually generated into
`/etc/systemd/system`, and this directory is preferred for any
pre-existing unit files.
2023-08-12 13:21:31 +01:00
Alex Palaistras 8daef2903a Generate services with Quadlet after CoreOS update
This is to work around issues where generators don't seem to run on
`daemon-reload` as they should, and may be reverted some time in the
future.
2023-08-11 20:58:44 +01:00
Alex Palaistras c5a6208e6a redis: Move to container unit, Debian Bookworm
The container file is now directly based on Debian Bookworm, and uses
official Debian packages.
2023-08-11 20:12:23 +01:00
Alex Palaistras 48abe1c3db Improve virtual environment
Virtual environments now re-use names, to prevent accumulation of older
environments when updating versions.
2022-10-13 18:59:57 +01:00
Alex Palaistras bafdb80fa2 rss2email: Add custom CSS template 2022-10-04 12:27:30 +01:00
Alex Palaistras 84a17f6df3 Support same-name directories in CoreOS update
This commit extends our `coreos-home-server-update` script with support
for updating host directories with configuration collected across
multiple remote directories of the same name. This will, essentially,
allow for extending systemd services with custom configuration, as
sometimes required of base systemd service files.
2022-09-19 13:02:29 +01:00
Alex Palaistras dad3d1c12c Improve backups, introduce remote restore
Container volume backup logic has been moved to a (largely equivalent)
external script, allowing for future expansion of functionality. In
addition, a `rclone-pull@` service has been added and set up as a default
dependency for the `container-volume-restore@` service, allowing for
automatic set up of servers based on latest remote backups.
2022-07-17 19:38:10 +01:00
Alex Palaistras 4fc786219a container-volume-backup: Use symlink to latest file
Pointers to the latest backup are useful for restore operations, but
should be ignored in all other cases, and thus are more appropriately
handled as symbolic links.
2022-02-07 11:10:38 +00:00
Alex Palaistras 0fbbc39e27 base: Only copy service directories if used
We no longer copy service directories into `/etc/coreos-home-server` if
these have not had their respective `spec.bu` files included; these
directories are not needed in these cases, and would be erroneously
considered as eligible in subsequent `coreos-home-server-update`
invocations.
2022-02-05 16:05:00 +00:00
Alex Palaistras 4636730d32 Implement minor improvements for volume backups
Container volume backups will now be skipped if no changes have been
made in source files against the latest backup. In addition the default
timer has been changed for performing backups once a day, at 02:00,
likely a time where there's less traffic on the server.
2022-02-05 16:01:22 +00:00
Alex Palaistras f877a72e83 Flatten directory structures
This commit contains a fairly large diff for a fairly small change:
moving the `config/common` directory to `host/base` to better reflect
its intended use, and promoting `config/service` to the root directory.

These changes unlock some improvements in `coreos-home-server-update`
processes, which will (assuming `/etc/coreos-home-server/base` exists)
keep host-wide systemd services in sync in addition to service-specific
ones.

Changes have been make to the `Makefile` and a few other places where
`config/common` was referenced, but most of this work is renames that
are not intended to break compatibility with new or running servers.
2022-01-15 11:43:33 +00:00