Size: 3895
Comment:
|
Size: 3708
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 2: | Line 2: |
'''Sourcehut''' is a software system providing [[Git|git]] and [[Mercurial|mercurial]] version control hosts, a bug tracker, and a simple web UI. |
|
Line 11: | Line 13: |
Upstream only officially supports [[Linux/Alpine|Alpine Linux 3.15 through 3.17]]. To enable the package repository, add the following line to `/etc/apk/repositories`. It '''must''' be the '''first''' repository checked. {{{ https://mirror.sr.ht/alpine/v3.15/sr.ht }}} The community package repository must be enabled. See [[Linux/Alpine/Apk|here]] for more details. Install the packager's key and update the package index. {{{ wget -q -O /etc/apk/keys/[email protected] https://mirror.sr.ht/alpine/[email protected] apk update }}} Sourcehut is a modular ecosystem, with `meta.sr.ht` being the only mandatory package (as it handles authentication and authorization). For example, to run the [[Git|git]] and [[Mercurial|mercurial]] services, use `git.sr.ht` and `hg.sr.ht`, respectively. Installation and configuration of these modular services is detailed in a corresponding section under Administration. Install the `meta.sr.ht` package. Start and enable three services: `meta.sr.ht`, `meta.sr.ht-api`, and `meta.sr.ht-webhooks`. Finally enable the `metasrht-daily` cronjob and set it to run daily. |
Upstream only officially supports [[Linux/Alpine|Alpine Linux]] on AMD64 (a.k.a. x86_64) hardware. The software is made available through [[Linux/Alpine/Apk#Repositories|custom package repositories]]. Enable the community repository and `https://mirror.sr.ht/alpine/v3.17/sr.ht` (matching the Alpine Linux version of the host). Also install the [[Linux/Alpine/Apk#Signing_Keys|packaging key]] from `https://mirror.sr.ht/alpine/[email protected]`. |
Line 36: | Line 19: |
Eli Schwartz maintains a set of packages for [[Linux/Arch|Arch Linux]]. Add the mirror to `/etc/pacman.conf`: {{{ [sr.ht] Server = https://mirror.sr.ht/archlinux/sr.ht }}} Then install the packagers' keys: {{{ sudo pacman-key --recv-keys C0AAFC1676BD998617C94C42DC59670F1EB0A189 sudo pacman-key --lsign-key C0AAFC1676BD998617C94C42DC59670F1EB0A189 }}} === Development Setup === TODO: copy from [[https://emersion.fr/blog/2021/setting-up-sr.ht-for-local-development/]] |
Eli Schwartz maintains a set of packages for [[Linux/Arch|Arch Linux]]. Add `https://mirror.sr.ht/archlinux/sr.ht` as a [[Linux/Arch/Pacman#Repositories|custom repository]] and [[Linux/Arch/Pacman#Signing_Keys|import Eli's key]] (at time of writing: `C0AAFC1676BD998617C94C42DC59670F1EB0A189`). |
Line 62: | Line 25: |
== Configuration == | == Setup and Configuration == |
Line 64: | Line 27: |
Several Sourcehut services depend on additional local services. | Sourcehut is a modular system, with `meta.sr.ht` being the only mandatory package. Start and enable three services: `meta.sr.ht`, `meta.sr.ht-api`, and `meta.sr.ht-webhooks`. Finally enable the `metasrht-daily` cronjob and set it to run daily. |
Line 70: | Line 35: |
Sourcehut depends on a reverse proxy to dispatch between services. Furthermore, HTTP(S) cloning is not supported for git repositories, so an external web server is required. See [[Sourcehut/WebServer#Configuration|Web Server]] for configuration information. |
A reverse proxy is needed to dispatch between services; to serve static content; and to serve the HTTP [[Git|git]] frontend. See [[Sourcehut/WebServer|Web Server]] for configuration information. |
Line 78: | Line 41: |
See [[Sourcehut/Mail#Configuration|Mail]] for configuration information. | See [[Sourcehut/Mail|Mail]] for configuration information. |
Line 80: | Line 43: |
To test the configuration, add an SSH key to the admin user. An automatic notification email will be generated by that trigger. | A test email can be sent from `https://meta.example.com/privacy`. |
Line 86: | Line 49: |
[[Redis]] will work out of the box. Configure Sourcehut with the database URI. | The pools of web workers are managed through [[Redis]] queues. The connection string needs to be set in several parts of the configuration file. |
Line 90: | Line 53: |
... | |
Line 93: | Line 55: |
[git.sr.ht] ... |
[meta.sr.ht] |
Line 97: | Line 58: |
[meta.sr.ht] ... webhooks=redis://localhost:6379/1 [todo.sr.ht] ... |
[git.sr.ht] |
Line 106: | Line 62: |
Note that each service ''can'' use an independent database if desired. | ''(And so on.)'' Note that each service ''can'' use an independent database if desired. |
Line 112: | Line 68: |
Each services is backed by a [[PostgreSQL]] database. The connection string needs to be set in several parts of the configuration file. {{{ [git.sr.ht] connection-string=postgresql://postgres@localhost:5432/git.sr.ht?sslmode=disable migrate-on-upgrade=yes [meta.sr.ht] connection-string=postgresql://postgres@localhost:5432/meta.sr.ht?sslmode=disable migrate-on-upgrade=yes }}} Note that each service ''can'' use an independent database instance if desired. |
|
Line 116: | Line 86: |
See [[Sourcehut/SSH#Setup|SSH]] for setup information. | See [[Sourcehut/SSH#Setup|SSH]] for configuration information. |
Sourcehut
Sourcehut is a software system providing git and mercurial version control hosts, a bug tracker, and a simple web UI.
Contents
Installation
Upstream only officially supports Alpine Linux on AMD64 (a.k.a. x86_64) hardware. The software is made available through custom package repositories. Enable the community repository and https://mirror.sr.ht/alpine/v3.17/sr.ht (matching the Alpine Linux version of the host). Also install the packaging key from https://mirror.sr.ht/alpine/[email protected].
Community Packages
Eli Schwartz maintains a set of packages for Arch Linux. Add https://mirror.sr.ht/archlinux/sr.ht as a custom repository and import Eli's key (at time of writing: C0AAFC1676BD998617C94C42DC59670F1EB0A189).
Setup and Configuration
Sourcehut is a modular system, with meta.sr.ht being the only mandatory package.
Start and enable three services: meta.sr.ht, meta.sr.ht-api, and meta.sr.ht-webhooks. Finally enable the metasrht-daily cronjob and set it to run daily.
Web Server
A reverse proxy is needed to dispatch between services; to serve static content; and to serve the HTTP git frontend. See Web Server for configuration information.
Mail Server
See Mail for configuration information.
A test email can be sent from https://meta.example.com/privacy.
Redis
The pools of web workers are managed through Redis queues. The connection string needs to be set in several parts of the configuration file.
[sr.ht] redis-host=redis://localhost [meta.sr.ht] webhooks=redis://localhost:6379/1 [git.sr.ht] webhooks=redis://localhost:6379/1
(And so on.) Note that each service can use an independent database if desired.
PostgreSQL
Each services is backed by a PostgreSQL database. The connection string needs to be set in several parts of the configuration file.
[git.sr.ht] connection-string=postgresql://postgres@localhost:5432/git.sr.ht?sslmode=disable migrate-on-upgrade=yes [meta.sr.ht] connection-string=postgresql://postgres@localhost:5432/meta.sr.ht?sslmode=disable migrate-on-upgrade=yes
Note that each service can use an independent database instance if desired.
SSH
See SSH for configuration information.
Administration
Users
To create an admin user, try:
metasrht-manageuser -t admin -e <email> <username>
Note that admin users will permanently see a 'PRODUCTION ENVIRONMENT' banner on all pages.
With an existing admin user, users can be managed in the web UI.
Individual users then need to upload their own SSH and PGP keys, also through the web UI.
Git
Mercurial
Bug Tracker
Page Hosting
Mail Lists
Automated Builds
Anecdotally the build service is the most unreliable component of the Sourcehut ecosystem.
The master server runs the builds.sr.ht package and service. Each runner corresponds to a builds.sr.ht-worker service, which depends on the builds.sr.ht-worker and builds.sr.ht-images packages.
Upstream's production architecture thoroughly encapsulates the runners.