5.0 KiB
title |
---|
Configuration |
This document provides general information about the configuration process of sr.ht services.
Similar to the installation process, configuring sr.ht services typically involves steps that are specific each service. That being said, they all share certain aspects which are described below. Be sure to take a look at each service's configuration page for more details:
- builds.sr.ht
- dispatch.sr.ht
- git.sr.ht
- hg.sr.ht
- lists.sr.ht
- man.sr.ht
- meta.sr.ht
- paste.sr.ht
- todo.sr.ht
Prerequisites
Before configuring any sr.ht service, ensure that you have the following services installed. Every sr.ht service makes use of them, so your deployment will likely not work as expected if they are missing.
-
core.sr.ht - Provides functionality used by all sr.ht services.
-
For users installing from packages, this package is automatically pulled in as a dependency.
-
For users installing from source, this package must be built first.
Note: The dependencies insetup.py
may not be up-to-date. For an up-to-date list of dependencies, consult the latest Alpine package.
-
-
meta.sr.ht - Performs various administrative tasks (e.g., storing account details, handling logins, SSH and PGP key storage).
Files
config.ini
sr.ht services all use a shared configuration file, located at
/etc/sr.ht/config.ini
. The specific options you will configure will depend on
the subset of and configuration of sr.ht services you choose to run.
Each service provides an example configuration file, called
config.example.ini
, in their source code repository, with annotations
explaining each configuration option. You should consult these when creating
your unified config.ini
.
Service Files
Service files for daemons are pre-configured by their distribution packages.
Thus, after setting up your config.ini
appropriately, you may start them
using your distribution's service manager (e.g., service git.sr.ht start
).
Databases
Each service requires its own database. It is recommended to give each service its own database login, with full permissions for its database so that it may manage its own schema migrations.
Once you populate the connection-string
field in your config.ini
, you may
use the <module>-initdb
script to populate the schema and stamp the latest
revision for migrations (e.g., metasrht-initdb
to set up meta.sr.ht's
database). Note that if you have not configured SSL for your PostgreSQL server,
you may have to append ?sslmode=disable
to your connection string for some
services to work.
Schema Upgrades
We use alembic to manage schema
migrations. We use custom scripts to automatically retrieve database
credentials from your config.ini
. If you have installed from distribution
packages, set [<service>] migrate-on-upgrade=yes
to have migrations
automatically performed during normal service upgrades (e.g., [meta.sr.ht] migrate-on-upgrade=yes
).
Otherwise, you may use srht-migrate <service> upgrade head
to run updates for
core.sr.ht migrations, and <service>-migrate upgrade head
to run
service-specific upgrades. For example, to upgrade the database schema for
git.sr.ht, run srht-migrate git.sr.ht upgrade head
, then gitsrht-migrate upgrade head
. Other alembic commands are available, use gitsrht-migrate --help
for more information.
Upgrade Procedure
- Stop all services.
- Update and upgrade your packages (e.g.
apk update && apk upgrade
). - Resume all services.
If you have high availability requirements, the web services may be load-balanced to avoid an outage.
Database migrations will be performed automatically during upgrades. We source
your alembic config from your main config.ini
, so there's no need to write an
alembic.ini
file.
Run srht-migrate <service> stamp head && <service>-migrate stamp head
once to
tell alembic the schema is up-to-date (e.g. srht-migrate man.sr.ht stamp head && mansrht-migrate stamp head
). Future upgrades will be managed automatically
by the package, or if you're using the source code you can run srht-migrate <service> upgrade head && <service>-migrate upgrade head
when you pull the
latest version down.
Integrations
Many sr.ht services are able to integrate with third-party tools, such as:
- Prometheus for monitoring.
- Any S3-compatible object storage (e.g., Minio, Ceph).