Commit Graph

101 Commits

Author SHA1 Message Date
Alex Palaistras 9dc5c6aaee LICENSE: Update copyright year 2022-01-15 10:21:43 +00:00
Alex Palaistras f497fb94fe Update to version 4.5.3 of Lego 2022-01-15 10:19:07 +00:00
Alex Palaistras b499b81c54 Add service for Coturn, a TURN/STUN server
Most importantly, this helps make WebRTC calls in XMPP more reliable
when either (or both) endpoints are behind NAT (as is the case with most
mobile devices), and avoids depending on a third-party service.

Default configuration has been applied in the virtual environment file;
this allows for setting up most host-dependent configuration easily.
2022-01-15 10:18:52 +00:00
Alex Palaistras a9e0e87465 prosody: Pin and fix module definitions
Community modules were not pinned, which could lead to breakage, and
enabled server modules have been cleaned up.
2022-01-14 22:44:37 +00:00
Alex Palaistras 110f313660 prosody: Update to version 0.11.12 2022-01-13 21:03:12 +00:00
Alex Palaistras 346f31c0b0 git: Fix issues with post-receive hook
And run any repo-local hooks.
2022-01-01 19:31:19 +00:00
Alex Palaistras df490a3a7e radicale: Update to version 3.1.0 2021-12-26 14:21:57 +00:00
Alex Palaistras 1ff1857515 Fix name expansion for container volume backups
This was previously not expanded correctly as per Bash rules.
2021-12-26 13:41:56 +00:00
Alex Palaistras 3137004bd7 rspamd: Update to version 3.1 2021-12-23 21:32:01 +00:00
Alex Palaistras 8dbee59007 prosody: Update to latest version 2021-12-23 21:02:35 +00:00
Alex Palaistras a85ead28b6 Add basic, initial documentation on services
This includes initial coverage for Redis and MariaDB, and establishes a
template for future work. There's a lot of ground left to cover, however.
2021-12-19 14:14:12 +00:00
Alex Palaistras 1effe81ec7 nginx: Add `nginx-serve-volume` service
This service allows for easy serving of static content in a volume,
typically HTML files in directory structures mapping to the navigation
structure for the content served.
2021-12-06 12:02:52 +00:00
Alex Palaistras 576ded0eee git: Add static site generation, read-only access
This commit extends the pre-existing `git` service with static HTML
generation for public repositories (i.e. repositories placed under the
`public` directory), which can then be served via existing mechanisms.

In support of these changes, public repositories can be made available
for cloning via the `git://` protocol, which listens on port 9418 by
default. Only public repositories will be considered, and user access
has been set up to ensure that private repositories are not made
accessible by accident.
2021-12-06 11:58:01 +00:00
Alex Palaistras 5e7dbcfca0 host/virtual: Proxy more services by default
Navidrome, Radicale, and WriteFreely will now also be exposed by
default, which makes for easier testing from outside the virtual host.
2021-11-27 17:47:18 +00:00
Alex Palaistras 85d4b221f4 nginx: Don't resolve with IPv6, only cache for 60s
This commit updates the default resolver configuration for Nginx servers
to not attempt to resolve IPv6 addresses, and only holds resolved IPs
for a maximum of 60 seconds, in order to avoid issues with stale cache.
2021-11-27 17:45:16 +00:00
Alex Palaistras 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
Alex Palaistras 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
Alex Palaistras d6201dbff0 Makefile: Update to latest CoreOS version 2021-11-27 17:43:02 +00:00
Alex Palaistras 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
Alex Palaistras e4e2fc1239 spectrum: Use specific protocol plugin versions 2021-11-20 16:40:41 +00:00
Alex Palaistras 3905617c70 navidrome: Update to latest version 2021-11-20 15:25:14 +00:00
Alex Palaistras 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
Alex Palaistras aafd88dafb dovecot: Ensure scripts are executable 2021-11-13 13:28:49 +00:00
Alex Palaistras bc7913540f post-merge: Fix minor formatting nits 2021-11-13 13:14:37 +00:00
Alex Palaistras 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
Alex Palaistras d2b2476cf6 Remove final references to `discord-ircd`
The `discord-ircd` service has been removed as of a few commits ago, but
references to this were not removed entirely. In addition, we now mask,
not disable, the `coreos-home-server-update` timer to ensure this cannot
be re-enabled spuriously.
2021-11-11 20:44:47 +00:00
Alex Palaistras 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
Alex Palaistras b9d349c516 Makefile: Update to latest CoreOS
This also updates the Ignition compilation dependency resolution to
ignore local file references that have been commented out, and masks the
timer for updating CoreOS configuration in virtual environments, to
avoid overriding any changes made locally.
2021-11-11 20:38:29 +00:00
Alex Palaistras 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
Alex Palaistras 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
Alex Palaistras 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
Alex Palaistras 0c79dec598 hooks/post-merge: Fix sparse updates for systemd
This fixes the fairly incomplete partial update detection for systemd
files and relies on `cp --update` mechanisms instead.
2021-09-26 20:15:59 +01:00
Alex Palaistras 5d7c183cf9 rss2email: Don't use SSL, use STARTTLS 2021-09-26 17:55:00 +01:00
Alex Palaistras 2648d7d8ef hooks/post-merge: Only update newer systemd files
This avoid issues where a single file is updated but the entire tree is
copied in.
2021-09-26 17:36:49 +01:00
Alex Palaistras b6b6e1a1cc virtual: Update `localhost` certificates
These had expired a while ago, and have been updated to 10-year
certificates generated with slightly stronger defaults.
2021-09-26 17:32:34 +01:00
Alex Palaistras 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
Alex Palaistras 1e1e16e421 Makefile: Update to latest version of CoreOS 2021-09-25 16:55:07 +01:00
Alex Palaistras 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
Alex Palaistras b3b2840c37 prosody: Use dedicated user for running Prosody 2021-09-22 23:23:13 +01:00
Alex Palaistras 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
Alex Palaistras 24a919aea1 hooks/post-merge: Use local time for `git log`
Otherwise, commit timestamps may end up being in the future from the
perspective of a server that runs on UTC.
2021-09-22 22:38:50 +01:00
Alex Palaistras c67e9e06b6 letsencrypt: Use `su-exec` instead of `gosu` 2021-09-22 22:27:59 +01:00
Alex Palaistras 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
Alex Palaistras 821c5e4625 hooks/post-merge: Ensure correct directory for git
Commands for updating timestamps of source files based on `git commit`
times need to run in the correct directory for the git repository in
question; this isn't always the same as the initially cloned repository.
2021-09-22 21:32:10 +01:00
Alex Palaistras 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
Alex Palaistras 78e9c26db5 hooks/post-merge: Use `touch -t`, not `--date`
The former is better supported and can be given a more constrained input.
2021-09-22 21:25:16 +01:00
Alex Palaistras 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
Alex Palaistras 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
Alex Palaistras b66fab57e5 discord-ircd: Use gosu instead of sudo 2021-09-19 17:43:17 +01:00
Alex Palaistras 692e74e329 hooks/post-merge: Skip time updates for directories
This will erroneously lead to synchronization for the entire tree.
2021-09-19 17:42:22 +01:00