Commit Graph

60 Commits

Author SHA1 Message Date
79e742d4b7 nginx: Actually set default server for port 80
Our previous setup did not ensure that the default server was actually
the default (though doing this for port 443 remains an open question).
In addition, we now have Nginx close the connection immediately rather
than respond with a 204.
2021-11-27 17:44:03 +00:00
290068e759 Misc fixes for Navidrome, RSS2Email
These fix issues with permissions and left-over Podman containers for
one-off invocations.
2021-11-27 17:43:22 +00:00
a6416f9ea6 Add service for WriteFreely
This commit integrates WriteFreely as a systemd service, set up as a
single-user instance by default (as is probably appropriate for a
home-server setup); a default administrator is set up, and whoever
is managing the home-server is expected to update the username and
password after first login.

Though WriteFreely expects to have a hostname set up for the instance,
we do not listen on any specific hostname by default. It is expected,
rather, that the `nginx-proxy-http` service is used with a drop-in for
using the correct `writefreely` upstream.

Configuration for this will continue to evolve as required.
2021-11-27 17:37:46 +00:00
e4e2fc1239 spectrum: Use specific protocol plugin versions 2021-11-20 16:40:41 +00:00
3905617c70 navidrome: Update to latest version 2021-11-20 15:25:14 +00:00
b31beff6f1 Add configuration for Navidrome
Navidrome is a Subsonic/Airsonic-compatible music server with a built-in
web interface, and can be used as a quasi-self-hosted-Spotify-alternative.

By default, music files are read from an empty `navidrome-music` volume,
which is expected to be populated via whatever external means are
available to the server. The workflow here might be improved in the
future.
2021-11-18 22:22:51 +00:00
aafd88dafb dovecot: Ensure scripts are executable 2021-11-13 13:28:49 +00:00
5367d2650e dovecot: Activate FTS, ManagedSieve plugins
This commit enables FTS via Xapian, and exposes the port required for
ManagedSieve integration with Dovecot; additionally, bugs in the
integration of LMTP with RSpamd have been fixed.

In support of these changes, configuration files that were previously
split into container-based and service-based are now consolidated, and
we now ensure that only our own container-based configuration is used
when running Dovecot.
2021-11-13 13:12:24 +00:00
18f067f50e prosody: Fix component registration
Components being registered typically require a full restart of the
service, as a simple configuration reload does not handle on-the-fly
activation of any new components or modules.

Fortunately, a separate method exists for doing so, and our
`prosody-component-register` will now use this method in registering
components without a full restart of the underlying service.
2021-11-11 20:41:16 +00:00
935239d0a7 Remove deprecated discord-ircd service
This has been replaced by the `spectrum@discord` service instead, which
confers slightly better XMPP integration.
2021-11-11 19:46:06 +00:00
eb74a95840 spectrum: Allow for overriding host and protocol
Environment variables in service drop-ins should be able to take effect
as easily as possible.
2021-10-26 14:17:03 +01:00
d83017d689 Make Prosody components configurable
This allows for registering external components for Prosody as needed,
and enables us to create templated Spectrum services for each supported
protocol.

Configuration has been updated for Biboumi to allow for automated
registration against Prosody as well.
2021-10-26 13:30:40 +01:00
5d7c183cf9 rss2email: Don't use SSL, use STARTTLS 2021-09-26 17:55:00 +01:00
14a53e567d rss2email: Add service for RSS feeds to email
This is a basic implementation on top of the venerable `rss2email`
script, and is intended to be driven by a timer and the
`rss2email-subscribe` service, which manages the subscribed feeds.
2021-09-26 17:30:37 +01:00
bb5482ed6d mariadb: Implement health-checks and ready notify
This integrates systemd ready notifications against native support
available in MariaDB, and integrates health-checks for good measure.
2021-09-25 16:53:33 +01:00
b3b2840c37 prosody: Use dedicated user for running Prosody 2021-09-22 23:23:13 +01:00
e0b5e9eeda prosody: Reload via TCP socket command
This is more robust than using a SIGHUP, as the command will block until
completion.
2021-09-22 23:20:17 +01:00
c67e9e06b6 letsencrypt: Use su-exec instead of gosu 2021-09-22 22:27:59 +01:00
8a95e57045 Don't clone with 'depth=1' in CoreOS update
Full git history is required for partial updates in the
`coreos-home-server-update` service.
2021-09-22 22:22:23 +01:00
9a0e6ba521 prosody: Run as dedicated user
This improves security (over running as `root`), and ensures that we
remain compatible with upstream guidance.
2021-09-22 21:26:30 +01:00
d5d75b3995 letsencrypt: Use dedicated user for ACME process
This improves security and ensures that files end up under a consistent
set of UID and GID values.
2021-09-22 21:21:21 +01:00
27201fd195 prosody: Enable additional push notification modules
This improves compatibility with Siskin on iOS, which uses certain
experimental extensions to related XEPs to provide full functionality.
2021-09-21 23:46:25 +01:00
b66fab57e5 discord-ircd: Use gosu instead of sudo 2021-09-19 17:43:17 +01:00
d6e9b9db4d Run Prosody, LetsEncrypt as root
This is until we figure out the permissions issues that are causing
service failures.
2021-09-19 17:34:30 +01:00
fa1b87af5a discord-ircd: Run container as root, daemon as user
This allows us to do some early setup tasks as root, which are then
required for the correct operation of the daemon.
2021-09-19 17:30:34 +01:00
c730ec37f0 postfix: Use strict encryption for SMTPS, Submission
The SMTPS (465) And Submission (587) ports expect encryption, either
implicitly (i.e. via direct TLS connection) or explicitly (i.e. via
STARTTLS), but this was not enforced previously. Port 25 remains
configured for opportunistic encryption, but will still not allow for
authentication over unencrypted transports.
2021-09-19 13:30:06 +01:00
16ddc3ab79 Use 'bullseye-slim' image for volume backup
This is more likely to be available when these services are called, and
does not need to be pulled opportunistically.
2021-09-18 19:48:56 +01:00
100951c118 Update to latest CoreOS version
This partially reverts default network configuration, which will now
implicitly create the specified network without the ability to set
default plugins.

Templated services are also no longer enabled by default, but expect to
be enabled as part of concrete patterns.
2021-09-08 18:45:04 +01:00
67e8a28b8f Correct issues with 'post-merge' hook
The use of 'rsync' is not compatible with the SELinux setup used in
CoreOS, and thus simple use of 'cp' and 'rm' is required.
2021-09-08 18:29:54 +01:00
231a6f529b Add automated update service, 'post-merge' hook
This allows for semi-unattended updates for home-server configuration
for managed systems, and is run once every hour by default.
2021-09-07 21:45:25 +01:00
79231c37f1 Set generic Podman defaults and per-service log IDs
Defaults for Podman that were previous applied as command-line arguments
to all `podman run` or `podman create` invocations are now specified in
a dedicated configuration file.

Services are also better identified against their name rather than the
generic `podman` ID derived from the `ExecStart` invocations.
2021-08-28 22:27:54 +01:00
132c804089 Fix title-casing for service descriptions 2021-08-28 12:51:11 +01:00
e971bb11cc Update images and applications to latest versions
This includes setting the Debian base image to a specific release rather
than the generic `stable` version, which can cause issues when assuming
package versions or external repository status.
2021-08-27 19:20:58 +01:00
896ba3f4c5 mariadb: Don't enable migration systemd service
This is intended to be defined as a dependency to other services, and
should not be run on its own by default.
2021-08-14 23:48:12 +01:00
55e8315dc7 service/prosody: Update to latest version 2021-08-14 22:38:24 +01:00
41328342b3 Implement basic volume backup and restore mechanism
This commit implements three new services, specifically:

  - The `container-volume` service, which applies to a specific volume
    name and ensures this exists. This is mainly useful as a dependency
    to other services, as Podman will create named volumes itself if
    needed.

  - The `container-volume-backup` service, which creates a `tar.gz`
    snapshot of the given volume's contents in `/var/lib/backups`.

  - The `container-volume-restore` service, which populates an empty
    volume from a pre-existing file in `/var/lib/backups`, presumably
    created by `container-volume-backup`.

These are then be used to automatically create volume snapshots every 12
hours, rolling over every 7 days.
2021-08-14 22:38:17 +01:00
a4580e1cae Improve service initialization, move system files
System files are moved to `/etc/coreos-home-server` to be unambiguous
in relation to other, pre-installed system files. Long-running services
are also now defined as `Type=notify`, which helps improve ordering and
dependencies.
2021-08-14 22:28:28 +01:00
ef7951dd72 container-build: Don't apply '--no-cache' option
This was changed recently to help with re-building container images with
side-effects, but causes other issues and delays.
2021-08-01 23:38:05 +01:00
010e9ba14c git: Verify SSH keys when added 2021-08-01 23:37:30 +01:00
75765576dc Fix various issues
The fixes here include typos, removals of deprecated paths, fixes for
first-boot-only systemd targets and related MariaDB migrate machinery,
better logging for Postfix, and an increase in the default request body
size for the default NGINX ingress.
2021-08-01 22:31:25 +01:00
7d9560cbdb Move 'host.env' file to '/etc/container-service'
This consolidates configuration specific to the CoreOS home-server
setup, and thus makes this easier to manage.
2021-08-01 22:28:22 +01:00
15315d34fe Add Spectrum2 IM transport for XMPP 2021-07-29 00:14:00 +01:00
950dd3a13c container-build: Don't re-use cached layer by default
This allows container builds to use latest remote state, if available,
without having to build versioning into the container files themselves.
2021-07-24 15:57:39 +01:00
6859168b8c Don't use PrivateTmp for Podman services
The various `Private` systemd options will conflict with namespacing
used by Podman, which in turn causes issues with other services.
2021-07-24 15:56:08 +01:00
1bc04af944 Implement reload targets for more services 2021-07-24 15:55:37 +01:00
176f65f998 nginx: Fix issues, consolidate naming
Naming for services has been consolidated to `nginx-proxy` and
`nginx-serve`, and issues with resolving underlying containers in the
case of restarts have been fixed by way of resolver configuration.
2021-07-24 14:52:27 +01:00
3ace3b517b git: Reuse host keys, add Github key authorization 2021-06-30 22:41:32 +01:00
3254ead3a7 Simplify systemd services, use volumes
This commit represents a large amount of work toward moving services to
a more standard approach to storing data, and a simplification in how
networks are managed.
2021-06-27 18:36:06 +01:00
318305be5b Move from FCCT to Butane
This reflects a change in the upstream project. A number of other fixes
have been made.
2021-05-09 13:05:34 +01:00
83fa08d4b7 Don't publish ports for Radicale
These will, in general, be proxied into by the HTTP ingress, and do not
need to be exposed on the host itself.
2021-04-03 16:16:11 +01:00