Commit Graph

39 Commits

Author SHA1 Message Date
Alex Palaistras 6e2e0037e4 Push misc fixes to documentation and virtual env 2024-04-01 13:46:46 +01:00
Alex Palaistras e72f1bc607 Move to `skx/rss2email` for RSS-to-email transport
This allows us to move to a more configurable base, driven by service
configuration files (which can be extended by private configuration)
rather than systemd-driven configuration, which wasn't ever as robust as
it should've been.
2024-03-10 15:11:39 +00:00
Alex Palaistras 96a1e177e3 rclone: Add WebDAV volume share service
This allows for serving any Podman volume over WebDAV, with the ability
to serve a dedicated subdirectory per user. Authentication is provided
by LDAP, and users are expected to be in the `rclone_user` group.
2024-02-04 12:01:03 +00:00
Alex Palaistras 90c57f3aee Add configuration for Shiori, bookmark manager
This is, apparently, the easiest solution to set up, while still being
as featureful as required for simple use (readable and PDF archive of
bookmarks).
2024-01-14 17:07:04 +00:00
Alex Palaistras 7606e87a4c Correctly load certificates from /etc/ssl/private 2024-01-13 23:28:01 +00:00
Alex Palaistras 83bea27cd4 Move to dedicated Let's Encrypt certificate volume
We would previously use the `letsencrypt` volume used as state by Lego
itself, which contains a number of private files not intended to be
accessed widely; the `letsencrypt-certificates` volume used now contains
only certificate chains and private keys, under dedicated folders.
2024-01-12 14:59:04 +00:00
Alex Palaistras 36e1e3039e coturn: Enable and startup on health-checks 2023-10-29 15:56:02 +00:00
Alex Palaistras 3465082806 letsencrypt: Update Lego to version 4.13.3 2023-08-12 16:31:56 +01:00
Alex Palaistras 15b41eee1a nginx: Update to version 1.25, move to Quadlet 2023-08-12 16:31:31 +01:00
Alex Palaistras efff72baa8 nginx: Update configuration, remove static serve
Services will now have an additional set of security-oriented response
headers attached, and cache times re-jigged.

In addition, the `nginx-serve-static@` service has been removed in
favour of `nginx-serve-volume@`, which is simpler to set up and use.
2023-03-25 13:21:47 +00:00
Alex Palaistras 4bc17662bd Remove Spectrum in favour of Slidge
Slidge replaces Spectrum with immense improvement to bridging
capabilities, albeit with only experimental MUC support. Nevertheless,
the current state is sufficiently stable for a complete replacement.
2022-12-13 15:37:42 +00:00
Alex Palaistras 1b71debe96 Add configuration for GoToSocial
This adds a basic GoToSocial setup with a default configured
administrator, to be used as a small environment for trusted users.
2022-11-27 16:25:53 +00:00
Alex Palaistras eda658f99d nginx: Move back to separate UPSTREAM variables
This commit moves the `nginx-proxy-http` service back to separate
`UPSTREAM_HOST`, `UPSTREAM_PORT`, and `UPSTREAM_PATH` variables, which
allows for more granular configuration, e.g. `proxy_redirect` patterns.
2022-10-29 17:24:58 +01:00
Alex Palaistras e637394c12 nginx: Use unified UPSTREAM_ENDPOINT environment
This commit unifies the `UPSTREAM_HOST` and `UPSTREAM_PORT` environment
variables to a new `UPSTREAM_ENDPOINT` variable, making additional
customizations (such as a `proxy_pass` to a sub-path) possible.
2022-10-28 17:44:26 +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 3bb5d70100 Move deprecated services to attic 2022-09-22 18:25:14 +01:00
Alex Palaistras 4294f1ec9c Add LDAP support with LLDAP
This sets the stage for moving common authentication from IMAP/Dovecot
to LDAP, which allows for more control over user information, as well as
a basic form of RBAC.

No services are currently set up to support LDAP -- support will follow
soon after this commit.
2022-09-19 13:00:31 +01:00
Alex Palaistras e467b89e7f Add Gitea for managed code hosting
This commit adds a new service for Gitea, exposing HTTP and SSH ports by
default (SSH over 7920), and accepting authentication via the local SMTP
server. No users are otherwise created by default, and administration is
expected to happen either via CLI, or via a custom admin user.
2022-07-23 17:01:27 +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 011650105b Implement metrics with Grafana and Prometheus
This commit adds two services, `grafana` and `prometheus`, and sets up
some existing services (`dovecot` and `prosody`) to expose metrics into
Grafana. In addition, systemd services have been added to facilitate
registering metrics for services into Prometheus, as well as
automatically provisioning Grafana dashboards based on static JSON
representations.

This work will continue to evolve as more services gain proper Grafana
dashboards, and Loki is also integrated for access to the systemd
journal.
2022-04-25 20:12:06 +01:00
Alex Palaistras 3aea8f42d9 hugo: Add service for building Hugo-based sites
By default, a `[email protected]` systemd service is included,
for building Hugo-based sites as stored in a local Git repository (as
served by the `git` service), and into a volume (which is intended to be
served by the `nginx-serve-volume` service).
2022-04-18 18:19:14 +01:00
Alex Palaistras 38ded924a9 Update Prosody to version 0.12
This brings a number of changes and improvements, and moves from MariaDB
to SQLite for storage, which requires manual migration for pre-existing
deployments using `prosody-migrator`.
2022-03-22 20:23:07 +00:00
Alex Palaistras 9dad5ad2c4 rclone: Add systemd service for transparent backup
This commit adds a new systemd service, `[email protected]`,
templated against the absolute path of a directory to keep in sync with
a (presumably) remote store.

Support for Backblaze B2 endpoints has been set up by default, but the
specific remote type can be configured via the `RCLONE_REMOTE_TYPE` host
variable. In addition, a default-passthrough remote that encrypts data
against a static password and salt has been defined under the `crypt`
name, and can also be used as the `RCLONE_DEST` of choice.
2022-02-06 20:39:14 +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
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 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 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 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 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 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 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 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
Alex Palaistras b832deddfe Makefile: Update to latest CoreOS version 2021-08-14 22:30:13 +01:00
Alex Palaistras 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
Alex Palaistras 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
Alex Palaistras 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
Alex Palaistras 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
Alex Palaistras 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