~/selfhut

selfhut/README.md -rw-r--r-- 2.71 kB
5c44f94c — Arthur Melton rename to selfhut 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# [Selfhut](https://git.arthurmelton.com)

This is my git site, it took insperation from [Sourcehut](https://sourcehut.org/).
Its not a fork but its practecly a remake, just for my use case. Please support
Drew DeVault at [https://sourcehut.org/pricing/](https://sourcehut.org/pricing/).
If you are going to run this yourself. I really recommend supporting Drew DeVault
because without him this would not exist!

## Install

To install you will need:

- git
- rust
- libgit2

Once you have these just run these steps.

```sh
git clone https://git.arthurmelton.com/selfhut
cd selfhut
cargo build --release
```

The binary executable will be at `./target/release/selfhut`, you can just run this
and your server should stort working!

## Hosting

Simpily run the binary and a website is going to be hosted at port 8000. I would
also recoment using something like nginx to change the port and to do caching. If 
you want to change the config (this would make sense because at default it only
has a example user), edit the file in `$(XDG_CONFIG_HOME)/selfhut/selfhut.toml`
to your liking. To add a `favicon.ico` you need to add it to 
`$(XDG_CONFIG_HOME)/selfhut/favicon.ico`. 

## Config

This would be a server config that has every atibue set.
```toml
name = "Billy Bob Jr"
description = "I am supper cool and think that [This](https://exmaple.com) is really cool!"
git_location = "/var/git"
domain = "https://billyscoolwebsite.com"
payment_link = "https://paypal.me/billy" # this is optinal, if you dont want to take donations then just remove the line dont set it to ""

[mailing_list] # This whole section is optinal, just remove it if you dont want email support
password = "********"
imap_url = "imap.billyscoolwebsite.com"
port = 993
```

## Repo Config

A repo config is a file called `repo.toml` in the `HEAD` of your git repo. This
controlls some things like like the repo description and website. A example
would be this.
```toml
description="A really cool program I made"
website="https://cool-program.com"
```

## Making a new git

To make a new git repo you need to run 
```sh
git init --bare my-repo.git
```
After you do this you will need to cd into the directory and make a file at the 
path `hooks/post-update` and set its contents to
```sh
#!/bin/sh

exec git update-server-info
```
This should create the git and make it so that people can actually clone it!

## Email

This can also run on any email server though a open imap connection. The actual
mailing list and creation of accounts are handled through different programs.
For every repo you need to make a email for it (ex. if I have a repo called
"My-Cool-Program" you need to make an email for it called 
"My-Cool-Program@example.com").