Readme
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. This is the interpretation this relay follows.
- 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. / means the server root URL. Example: /webmention → https://example.com/webmention
Startup
1. Publication
The default Compose file uses a Cloudflare Tunnel.
- On the Cloudflare side, set the public hostname origin to
http://relay:8080. - 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.
- Open
2. Environment variables
.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.
cp .env.example .env
3. Persistence directory
Create a storage directory owned by UID/GID 65532 with mode 0750.
sudo install -d -o 65532 -g 65532 -m 0750 ./data
4. Docker containers
That is the last step.
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 withdocker 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.
- Notices for dependencies are in the third-party notices.
- OS assets in the container keep their original license terms.