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 |
# indiedesk
indiedesk adds pages from personal sites to a feed with no declared topic. Authors opt in. Delivery is Atom and JF2 Feed.
## Idea
This is an IndieWeb implementation of the mezzanine, conceived by [@moja.blue](https://tangled.org/moja.blue). [This is the interpretation this relay follows.](https://nawashiro.dev/posts/20261005-mezzanine)
- A feed has a shared topic that stays implicit. Readers may catch the mood, or ignore it.
- The space is small. A post is not thrown into an ocean like an SNS.
- Anyone can start. The identifier is only a random string.
## Posting
Read the [guide for users](internal/relay/landing.md). `/` means the server root URL. Example: `/webmention` → `https://example.com/webmention`
## Startup
### 1. Publication
The default Compose file uses a Cloudflare Tunnel.
1. On the Cloudflare side, set the public hostname origin to `http://relay:8080`.
2. Publish the public Webmention receiver and the Atom and JF2 subscriptions.
- Open `Cloudflare > Security > Security rules > Custom rules`.
- Select the hostname and GET and POST, and skip the WAF, browser integrity check, and similar checks.
### 2. Environment variables
[.env.example](.env.example) is the settings example. Copy it and use the copy.
`PUBLIC_URL` is the public HTTP(S) root URL. The relay treats a trailing `/` as the same URL. Do not include credentials, a query, a non-empty fragment, or a path other than the root.
```sh
cp .env.example .env
```
### 3. Persistence directory
Create a storage directory owned by UID/GID `65532` with mode `0750`.
```sh
sudo install -d -o 65532 -g 65532 -m 0750 ./data
```
### 4. Docker containers
That is the last step.
```sh
docker compose config --quiet # check the configuration
docker compose up -d --build # start
docker compose exec relay /indiedesk healthcheck # check relay HTTP, storage, and workers
```
## Backup
- Stop with `docker compose stop relay`, copy the whole storage directory, then resume with `docker compose start relay`.
- Recreate containers with `docker compose up -d --force-recreate`. When the same storage directory is reused, posts and accepted mentions remain.
## License
- The program is under the [MIT License](LICENSE).
- Notices for dependencies are in the [third-party notices](docs/THIRD_PARTY_NOTICES.txt).
- OS assets in the container keep their original license terms.
|