~dricottone/huttese

ref: 5ed93cbaa88262498220562cb4be640cf7d72617 huttese/README.md -rw-r--r-- 2.3 KiB
5ed93cbaDominic Ricottone Version 1.0 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# huttese

Sourcehut is only officially supported on x86 Alpine Linux.

I say **challenge accepted**.
This repo walks through the process of running Sourcehut within containers (either `docker` or `podman`, possibly other runtimes as well) and even on ARM processors.
See the [huttese-apk project](https://git.dominic-ricottone.com/~dricottone/huttese-apk).


## Usage

Locate all the `*.changeme` files and add your own information in place of my redacted information.

Select the recipes for your container runtime: `Makefile.docker` or `Makefile.podman`.
`ln -s Makefile.selection Makefile` to get going from there.

Select the image for your architecture: `Dockerfile.x86` or `dockerfile.aarch64`.
`ln -s Dockerfile.selection Dockerfile` to proceed.

Note that hosting on an ARM machine will additionally require building the APKs.
See huttese-apk for more information.

Run `make setup && make image && make dbinit && make start`.
Then `USER_NAME=admin USER_EMAIL=admin@example.com make addadmin` to setup an admin account.
Consider also `USER_NAME=me USER_EMAIL=me@example.com make adduser` to setup non-admin accounts.
Then `make shell` and `passwd git` to enable SSH access to git.

For subsequent use, run `make image && make dbmigrate && make start`.

Or to just restart the service if stopped (as by `make stop`), try `make restart`.

To clean up the main container, use `make clean`.

To clean up all containers, use `make clean && make cleanup`.
If you even want to throw out the postgres database, try `sudo rm -f pg/datadir`.


## To-Do

There are cron jobs involved with administration:
 + `gitsrht-periodic` runs `git gc` to save storage
   + it also syncs S3 storage, which does not matter here
 + `metasrht-daily` expires audit logs to save storage
   + it also processes payments for billing, which does not matter here
I should look into options for running these from the host system.

`lists.sr.ht` will require handling inbound mail, which seems like a whole lot of not fun, but could be managed.

`builds.sr.ht` requires virtualization by way of qemu running inside a Docker container. Not really within scope of this project.


## License

I am supporting this infrastructure only to the ends of maintaining my own deployment.
Good luck.
I license everything under BSD 0 clause, except for subrepositories where a different license is specified.