selfhostable, read-only reddit client
1### lurker
2
3lurker is a selfhostable, read-only reddit client. it is
4better than old-reddit because:
5
6- it renders well on mobile
7- it respects `prefers-color-scheme`
8- no account necessary to subscribe to subreddits
9- no account necessary for over-18 content
10
11i host a version for myself and a few friends. reach out to
12me if you would like an invite.
13
14### features
15
16- minimal use of client-side javascript
17- account-based subscription system
18- pagination
19- invite-only user management
20- comment collapsing, jump-to-next/prev comment
21- "search on undelete" url for deleted comments
22- over-18, spoiler images are hidden by default
23
24i use lurker daily, and above features are pretty good for
25my use. i do not intend to add much more, i don't like
26writing js.
27
28### gallery
29
30|  |  |  |
31| ------------------------- | -------------------------------- | --------------------------------- |
32| login | search | subreddit view |
33
34|  |  |  |
35| ------------------------- | -------------------------------- | --------------------------------- |
36| subscriptions page | inline post thumbnail expand | comments view |
37
38|  |  |  |  |
39| ------------------------------- | -------------------------------- | -------------------------- | --------------------------- |
40| collapse comments | admin dashboard & invites table | light mode | mobile optimized page |
41
42### setup
43
44you can run lurker as a systemd service on nixos:
45
46```nix
47inputs.lurker.url= "git+https://git.peppe.rs/web/lurker";
48 .
49 .
50 .
51services.lurker = {
52 enable = true;
53 port = 9495;
54};
55```
56
57or with the docker image:
58
59```bash
60# pull the latest image from gh container registry
61$ docker pull ghcr.io/oppiliappan/lurker:latest
62
63# the image will be marked as created on 1970, this is a
64# quirk of using nix, it should not affect usage
65$ docker image ls
66REPOSITORY TAG IMAGE ID CREATED SIZE
67ghcr.io/oppiliappan/lurker latest ba3733164889 54 years ago 186MB
68
69# start lurker in a container
70#
71# lurker stores data in /data,
72# so create a volume on the host accordingly:
73$ docker run -v /your/host/lurker-data:/data ghcr.io/oppiliappan/lurker:latest
74```
75
76or with just [bun](https://bun.sh/):
77
78```bash
79bun run src/index.js
80```
81
82### usage
83
84the instance is open to registrations when first started.
85you can head to /register and create an account. this
86account will be an admin account. you can click on your
87username at the top-right to view the dashboard and to
88invite other users to your instance. copy the link and send
89it to your friends!
90
91### technical
92
93lurker uses an sqlite db to store accounts, invites and
94subscriptions. it creates `lurker.db` in the current
95directory. there is no way to configure this right now.
96
97to hack on lurker:
98
99```bash
100nix shell .# # get a devshell
101nix build .#lurker # build the thing
102```
103
104### todo
105
106- [ ] avoid js to toggle details in views/index.pug
107- [ ] highlights for op, sticky etc.
108- [ ] open in reddit/reply in reddit link
109- [ ] subscription manager: reorder, mass add
110- [ ] support crossposts
111- [x] collapse even singular comments
112- [x] details tag on safari
113- [x] expand/collapse comments
114- [x] fix gallery thumbnails
115- [x] fix spacing between comments
116- [x] fix title rendering in views/comments.pug
117- [x] pass query params into templates, add into pagination
118- [x] placeholder for unresolvable thumbnails
119- [x] set home to sum of subs
120- [x] styles for info-containers
121- [x] support 'more comments'