lainchan / Ω
So I made a reasonably-secure Tor-friendly forum system
John Titor · 2021-01-10 23:46
I've been working on it for about half a year. It's called Alice. I was hoping to have it done by this past fall, but various real-life covid-related wackiness caused delays. But now she's ready. Linux x64 binary and source available at https://eatshitfascists.org/. Full readme is at https://eatshitfascists.org/alice/README.md.
A few features:
- NO DAMN JAVASCRIPT WHATSOEVER. NOT ONE DAMN LINE.
- Minimized network transfer sizes.
- Layout is designed to fit the default width of a Tor browser under standard settings.
(The above three features boil down to "it's laser-focused on being 100% out-of-the-box functional on Tor").
- Private forums and private profiles, only logged-in users can see any contents.
- Signups use one-time-use codes handed out by admins (or their trusted intermediaries). Fun for covert cell groups of all flavours!
- AGPLv3, the One True License.
- Super-easy to install. You just need a Postgres server. Run the binary once in its own directory, it creates default config files and directories. Edit the database user/login/dbname in the DB config file and run it again, and it'll create its own DB tables and the admin user (with the password and TOTP tokens in the ./security directory) and start running.
- One of the created config files is the CSS colour theming, for easy customization.
- Aims for security with TOTP used everywhere. TOTP 2FA logins, TOTP password resets, TOTP emergency account lockdowns.
- Usual forum functionality. Categories of forums, threads in forums, posts in threads. Threads/posts can be pinned, reported, marked NSFW/SFW. Threads can be set as "watched" so new posts show up on user's personal front page.
- Categories can be repositioned, renamed.
- Forums can be moved between categories, repositioned, renamed.
- Threads can be moved between forums.
- Posts can be edited, including adding or removing attachments. Image attachments have thumbnails. Posts can be written in markdown.
- Mods and admins can delete posts or mark them NSFW.
- All site config, aside from setting up DB info and web port, is done on the site itself or in the postgres DB.
- Basic messaging functionality, basic file storage functionality (NEITHER OF WHICH IS HIDDEN FROM ADMINS, pre-encrypt your messages/files if you want true privacy.)
I think I've worked out the major bugs. v1 is always going to have full database compatibility, but I've got some tidying to do under the hood, and some potentially DB-breaking ideas for v2. Some code I'm really not proud of. And I'm still tweaking the overall layout, and working to shrink the CSS file size. But I think Alice v1 is ready for daily use.
H.R. Giger · 2021-01-11 00:10
(you) sir, win teh internet
Aristóteles Amadópulus · 2021-01-11 00:15
not sure why I should trust this program written by a random online
Splicer · 2021-01-11 00:29
>>39909
Replying to myself. Forgot to add some signup codes for the test instance I'm running at alice.eatshitfascists.org. Feel free to use one, please leave others for others. Signup link is under the "Session" menu.
9ca9ff0c
95784806
d2bc406a
3b7bc4b3
95c407ac
8373163d
f3dee046
524d2435
5d5190b1
110caa3f
da573751
c95103bd
10298de2
2346b699
fde38c41
8eac775b
c696c542
6bcf9149
50c23394
ad07890f
dc7957bd
5b52146f
56e83c98
79d79203
a9625f42
e4e2d95f
09ae020c
5f0b5590
b5aaa06f
3f9c9679
15a971a5
dabbd136
11fc3881
d0fcefd2
535d96ee
0ea94936
27d063d1
c0f0bf1f
2e1082ef
e1d2f822
>>39915
You shouldn't. This is more of a "made it for myself, but might as well release it" thing.
Agent Jones · 2021-01-11 00:46
I like it a lot, actually. Very aesthetically pleasing. There should be a nuclear option that's even harsher than the lockdown one that deletes everything and can be triggered in various ways.
Demeere · 2021-01-11 00:51
Vary nice piece of software Oh Pee
Nameless · 2021-01-11 01:13
>>39922
>I like it a lot, actually. Very aesthetically pleasing. There should be a nuclear option that's even harsher than the lockdown one that deletes everything and can be triggered in various ways.
Thanks! I like the idea of a full-nuke option. Could be something as simple as yet another TOTP token that starts a wipe. That'd be pretty easy to add actually.
Hong, Guil Dong · 2021-01-11 03:03
getting a form error trying to register with the hidden service link
Neuromancer · 2021-01-11 03:23
>>39931
The "form error" is actually a generic error, intended to minimize info that an outsider can glean. This is basically the only error message that anyone who's not logged in will see. There's three things that can cause this error in this situation:
1. Username isn't purely alphanumeric (A-Z, a-z, 0-9)
2. Passwords don't match
3. Signup code is invalid
I've just tested signups on both the open web and over Tor, and it worked for me both times on the first try, so I'm guessing one of the above is the case. The good news here is that until an account is fully created with a signup code, you can keep re-trying with that code.
By default error logging is off, and I keep it off for the test instance, so I'm not sure what happened in your particular situation. I only have error logging on during development, running locally on my home machine.
I actually debated with myself for awhile about more descriptive error messages or enabling error logging by default. But in the end I decided on a "minimal retained/displayed information" approach.
藤原純一 · 2021-01-11 15:40
No lurking?
I also don't trust anything made by radicals.
Tank · 2021-01-11 17:16
>>39973
>No lurking?
Nope. My "target market" is small activist groups planning real-world direct actions, who want to stay off the radar while doing their planning. There's plenty of forum software out there for people who want to create a lurk-able server.
One of my priorities now is code tidying, to make it a lot easier to audit.
Debbie Charteris · 2021-01-11 17:25
>>39976
>My "target market" is small activist groups planning real-world direct actions, who want to stay off the radar while doing their planning.
THE CIA HATES HIM!
Local Lain figures out how to alert government web crawlers with this ONE EASY TRICK!
Neuromancer · 2021-01-11 18:18
>>39976
>My "target market" is small activist groups planning real-world direct actions, who want to stay off the radar while doing their planning.
Why not just plan in person, is this just a temporary measure due to the plague? Technology could be useful for coordinating a large group (even then you would likely some sort of “need-to-know” basis for intellegence and democratic-centralist distribution of commands, sort of unrelated but I've never seen a flat distribution model acheive anything beyond symbolic concessions), but I fail to see the point if everyone could fit in a room.
Case · 2021-01-11 18:54
>>39973
basically this; looks really nice, always interested in platforms that can be used securely over TOR, but the fact that
a.) you're a rando on the internet (very likely to be a glowie honeypot)
b.) this has a political-fueled platform
c.) you can't really lurk without being logged in
makes me weary, OP
makes
An unironic fascist · 2021-01-11 19:07
>>39909
Thank you very much. I will be repurposing this.
John Titor · 2021-01-11 19:27
>>39984
>you can't really lurk without being logged in
makes me weary
Not op, but why does this make you weary? I imagine the logic behind doing it is preventing uninvited people from accessing information, including preventing search engines and generic web crawlers from archiving the data.
John Rain · 2021-01-11 21:16
>>39984
These are all very sensible points. I fully understand where you're coming from. Indeed, these are the same reasons I decided to roll my own instead of using someone else's forum software. :)
But I should note that the instance I have running is just intended as a live test / demo / feature-showcase. It's not even the instance that me and some friends are using for our own political-activist purposes. It may break, or be wiped clean for a fresh start for testing, etc. I hope no-one reading this thinks that I'm trying to build some mass-userbase site. Trust me, that's my nightmare scenario. I've done my public-site-admin prison time. Cold day in hell before I go back to that! I'd rather just make the software and let some other masochist be the admin.
My next plan is fix a few outstanding bugs, and then get the code nice and clean to the point where it's easy to audit so that others can feel comfortable running their own totally independent sites - hence the AGPLv3 license. That's also one of the reasons I'd focused so much on the ease of setup. One of the things I'm growing increasingly angry about with other self-hosted software is how installation processes have become either (a) just running someone else's docker image, or (b) having to jump through the hoops of some complex setup process using some wacky obscure build system for a niche barely-used language (coughpleromacough). I wanted mine to be as easy to set up as Wordpress, so that my real-life non-programmer friends could install and run it if they wanted to.
Dr. X · 2021-01-11 21:21
>>39986
That's why it's AGPLv3. :) Have fun! Feel free to email if you need anything clarified.
Also, I'll have a v1.1 out before the weekend is over. There's a handful of bugs in the admin interface that I want to squash. Nothing site-breaking, but a few minor things like updating a forum's details returns one to the first category page, instead of the proper category page containing the forum. There's also a few layout tweaks to do. But none of the fixes require database table changes or involve major visual changes, so the new version will be a simple drop-in replacement.
Yamaoto Toshi · 2021-01-11 22:33
>>39994
You got me! Although, I was joking anyways. Good on you for sticking to your guns.
I'm checking it out though, it's atleast a neat project. I look forward to checking out the new version, too. I'll setup a local copy on my offline/pirate network to see how it works and how normal person friendly this can be.
Dujour · 2021-01-12 01:02
derezzed already. It seems the administration doesn't like cute (2D) shotas. ;_;
Joe Bloggs · 2021-01-12 11:59
>>39999
Sounds great, feedback is appreciated! It should work fine as an offline thing. There's no third-party resources pulled in.
I tried to make the interface kinda-sorta traditional-forum-ish. The real trick has been sticking to the 1000px width of a default Tor browser. Keeping everything within that width, while having fonts both big enough to be readable and small enough to have a decent amount of info density, has been a bit of a challenge.
I'll also need to slightly tweak the displayed-post layout. Right now, long username spill out into the subject line. Looks untidy and should be fixed.
Unnamed · 2021-01-12 12:26
>>40005
Hmm, wasn't a ban, the bananas are still there. Could be something technical. I think I may turn on logging on the test site to see if there's a bug at work. If there is I want to squash it.
Jet Black · 2021-01-12 12:27
>>39993
>I've done my public-access-site prison time
space_? ;)
shitpost · 2021-01-12 12:28
>>40019
Alice took the porn all for themself! fuarrrk you, Alice!
Nanashi No Gombe · 2021-01-13 01:34
I'd join or take a look at but not letting me sign up.
Molly Millions · 2021-01-13 07:28
There are alot of issues with this, which I wont go over since other anons have already done so. But the most pressing thing to me is using *any* software from extreme political LARPers or extremists on either side.
Why you felt the need to tell everyone your political beliefs is beyond me, but the software is mediocre nonetheless.
John Rain · 2021-01-13 08:24
>>40065
>telling fascists to eat soykaf is "extreme"
hi American
anyway. The code itself is pretty simple, from what I've seen, should not be hard to audit personally. It is certainly less of a confusing mess than vichan and any vichan derivative. Such a small-codebase website with secure defaults is eminently useful for *tons* of organizations/groups/activities.
Nameless · 2021-01-13 13:36
>>40066
I am not american.
Tomohisa "Tom" Kanezaki · 2021-01-13 13:50
>>39983
Because people are still going to plan online. You can say "only do it in person" as much as you want and people will still end up communicating online. Its better to have a safer platform than having them fall back to messenger or something.
Theres also certain groups that actually will want to do the majority of planning online or may not wish to actually know each in real life.
Undisclosed · 2021-01-13 15:32
>>40086
I've spoilered this post since it's fairly off topic, I'd suggest not reading it if you're only interested in the platform.
>You can say "only do it in person" as much as you want and people will still end up communicating online.
If you lack enough party discipline to follow a simple directive like don't talk about our upcoming direct action outside of these premises you've got bigger problems than the security of the digital communications protocols. Deep Green Resistance has in my mind a good approach to this: https://deepgreenresistance.org/security-culture/ (they have some good lectures on related topics as well iirc)
>Theres also certain groups that actually will want to do the majority of planning online or may not wish to actually know each in real life.
The problem with planning online is that it will almost always be more secure to plan in person (if you're actually a threat even Tor has zero days like those that brought down the Silkroad, and encryption at any level requires massive amounts of non-whitening entropy which nodes do not have, (in fact even the encryption libraries are backdoored) a local government can even simply shutdown the internet like they did in Egypt during their western backed regime change movement (aka color revolution)). Maintaining anonymity is fine so long as you maintain a way to remove problematic elements, especially those involved directly in the planning of operations and who are given information on this. That being said even the Zapatistas plan with their masks off iirc, and I'm not aware of any successful group who does otherwise.
Overall you're probably right, I doubt planning over the internet matters overall, and you probably are better off not using consumer communications systems.
Aristóteles Amadópulus · 2021-01-13 19:25
>>40090
Imagine a geographically dispersed organization. You need a convenient place to store OTP-encrypted messages between agents. This software is perfect for that.
Gyula Kovacs · 2021-01-13 21:48
>>40100
>Imagine a geographically dispersed organization. You need a convenient place to store OTP-encrypted messages between agents. This software is perfect for that.
You'd still need to distribute keys, if you reuse keys with OTP your message can be cracked, also ideally you would not store any ciphertext, but it would rather be a read, remember, destroy situation. Further you'd want the distribution to be hierarchical so that people who don't need to know don't even know there is communication occurring. Physical distribution of cipherkeys is really the only way to do this effectively, and is how it works in any real application (i.e. military, diplomacy, etc.).
Imagine the following structure. You have many cells which are geographically dispersed, but each cell is local to an area. Each cell elects a single member to lead them and to represent them at a regional meeting, the regional meeting then selects a single member of themselves to lead and represent them at a higher level and so on until the commanding body is sufficiently small to make long-term plans, coordinated actions, and coordinate negotiation of demands. Each member then only knows those individuals who have selected them at each level, along with everyone at their position in the hierarchy within their section.
To use OTP the leaders of each group would pre-assign OTP cipherkeys to each member they directly represent of some fixed length. Now say command would like to instruct action in a certain region without informing many irrelevant people. The central committee would then give to the member who oversees the given region a message. They would then encrypt the message and assign a new cipherkey for the member below them which oversees the region of the target message. This would then continue until the message reaches its target recipient. I suspect this is irrelevant for a group of your size however.
Gyula Kovacs · 2021-01-13 22:02
>>40066
>anyway. The code itself is pretty simple, from what I've seen, should not be hard to audit personally. It is certainly less of a confusing mess than vichan and any vichan derivative. Such a small-codebase website with secure defaults is eminently useful for *tons* of organizations/groups/activities.
OP here. Thanks, that's exactly what I've been aiming for, both in terms of code complexity and "target market".
Of course there's a lot of code cleanup to do. There's some things I'm not at all proud of, like the excessive memory usage during encryption of attachments for at-rest storage. Also, the dreadfully rudimentary search functionality. Nothing clever at all going on there; it's just a straight-up-noobish postgres ILIKE query.
I am quite sure that this won't scale either. It's really for small communities, perhaps a few hundred people, with maybe a few dozen simultaneously using it at most. I'm relying heavily on Go's built-in concurrency (which is pretty darn good, it must be said) and doing nothing extra with channels and goroutines. I'm largely self-taught and learned a lot in the course of this project. If I had to start from scratch with what I know now it'd be a lot cleaner and more performant. (Currently debating a full rewrite with code clarity as the priority for v2. Assuming life allows!)
I've got another project in mind that's a little more ambitious and which is probably the very definition of "biting off more than I can chew": a performant activitypub server like Mastodon or Pleroma, but far easier to install. It's my firm belief that one of the main reasons more people don't self-host their microblogging is because the available software is a total pain in the ass to install and maintain. Lots of people ran their own Identica servers back in the day, because it was as easy to install as Wordpress. It was impossible to screw up. I think we need to get back that sort of ease-of-installation to avoid the censorship issues of centralized microblogging services.
But first, Alice has bugs to squash.
Lord Nikon · 2021-01-14 02:12
>>40117
yes I know how OTP works.
>ideally you would not store any ciphertext
ideally you would have a direct unhackable brain link too. Storing the ciphertext, even just temporarily, is necessary.
Your strange heirarchal structure is far beyond the scope of necessity.
Arisu Mizuki · 2021-01-14 02:20
>>40118
honestly, depending on how much it writes to the database and how it handles session cookies, the fastest way to scale it might be to run it in multiple distinct processes all linked to the same db
Fred Nurk · 2021-01-14 03:36
>>40128
>yes I know how OTP works.
Point was that it doesn't make sense to store cipher texts on a server if you're just going to be manually distributing cipher keys every time you send a message anyway. No point not just distributing messages by hand at that point. I guess it could still have some utility though. Public key cryptography could work though, like with anything you've just got to be careful to do it right. You could also always change systems later, no need for everything to be perfect from the beginning.
>ideally you would not store any ciphertext
By store I meant a permanent store. Read, remember, destroy is fairly standard practice in covert operations for intelligence agencies, I'm not sure about activist groups.
>Your strange heirarchal structure is far beyond the scope of necessity.
It's a pretty standard structure historically. If you replace the word “cell” with “workplace” you've got exactly worker's councils.
Anyway I'll stop bothering you now, sorry about the harassment. Hopefully the thread can return to a more informed discussion about the platform its self rather than any ideas related to the platform etc.
Tank · 2021-01-14 04:34
tl;dr how is this better than picochan, the most based piece of imageboard software that allows up to 4 files per post and shows answers without javascript?
Nemissa · 2021-01-14 04:52
>>40144
No OP, but because imageboards are for fucking faggot degenerates shitposting and forums only sometimes are.
John Titor · 2021-01-14 05:45
>>40140
>Point was that it doesn't make sense to store cipher texts on a server if you're just going to be manually distributing cipher keys every time you send a message anyway.
typically you send a very large pad and send multiple messages with it.
Jet Black · 2021-01-14 12:56
>>40129
>honestly, depending on how much it writes to the database and how it handles session cookies, the fastest way to scale it might be to run it in multiple distinct processes all linked to the same db
Fortunately that's how Go's standard-library http server does things automatically. Every client request goes into its own pseudothread called a goroutine. It's nothing at all like a Node.js event loop.
One of the reasons I enjoy working in Go is because of this automatic concurrency throughout the standard library, and the easy way to manually add concurency where needed. If anyone is still fighting with Node event loops and wants something much easier, read up on Go's goroutines and channels. It's seriously cool stuff.
>>40144
>tl;dr how is this better than picochan, the most based piece of imageboard software that allows up to 4 files per post and shows answers without javascript?
Different target audience. Alice is for small-to-mid sized groups of people who want a traditional forum, and where nothing is exposed to the public except for a login page and a brief site description. I can't find anything about Picochan, but I'm guessing it's the usual open-to-the-public image board system.
I made Alice for some friends involved in unionization and unsafe-work-practices whistleblowing efforts. They needed a closed forum that could run on Tor, where they could keep registration closed yet legitimately claim not to know the exact identity of others on the forum if asked by their employer's lawyer goons in court. It also needed to not record email addresses and other personal info in case the hosting machine was stolen/lost/etc. I couldn't find any forum software that quite fit the bill, so I decided to try making it myself. I'm not looking to defeat the CIA, I'm just looking to lock out some scumbag management types.
BloodCat · 2021-01-14 17:37
>>40167
goroutines are pretty different from seperate processes. For one, afaik a panic in a goroutine panics the whole program. For another separate programs have separate sockets (which you can put behind a load balancer) making them potentially more parallel.
Yu-ichi · 2021-01-14 20:44
>>40177
This is all very true. I just wanted to simplify it for people not familiar with Go. Goroutines certainly aren't separate processes, but they do help accomplish many of the goals of people who have traditionally opted for multiple processes and/or separate load-balance daemons for network services, with a decent level of performance. And they do it with a tiny fraction of the implementation/maintenance/debugging complexity that classic true parallel processing requires in other languages.
Acid Burn · 2021-01-14 21:58
Sorry to ask, but how do I generate the Two-factor auth code?
The Oracle · 2021-01-14 22:13
>>40167
>I can't find anything about Picochan
maybe this?? https://github.com/anonim-legivon/picoboard idk couldn't find anything else.
also are you a glitterboy or something?
fasfasfsa · 2021-01-14 22:58
fgfhfhf
Anonymous · 2021-01-15 03:28
hey op i posted a few bugs and suggestions on your forum. It's a cool project.
>>40186
>Sorry to ask, but how do I generate the Two-factor auth code?
The sign up page has some apps but you can use oathtool.
This is a script I threw together to take the json files provided on the website to generate the key.
#!/bin/sh
# Assumes jq and oathtool are installed
if [ $# -ne 1 ]
then
echo "usage: $0 keyFile"
exit 1
fi
KEY=`jq '.parameters.key' "$1"| tr -d '"' `
TOTP=`jq '.parameters.algorithm' "$1"| tr -d '"' `
oathtool --totp="$TOTP" --base32 "$KEY"
Mitnick · 2021-01-15 04:14
>>40189
Damn, I remember that.
Vasya Pupkin · 2021-01-15 05:16
>>40200
Op here, thanks for the feedback! Always some damn bug unfixed. :)
Project 2501 · 2021-01-15 13:35
Hey my account got locked out, what gives?
Elliot Alderson · 2021-01-15 13:36
OP here, a bunch more signup codes for the demo site (alice.eatshitfascists.org) in case anyone needs them or wants to spread them around.
Also to make it clear, it really is just a demo site. It may break, it may go down, etc. Please don't think that I'm in any way interested in admin-ing a big forum. I'm not. I just wanna make the software. :)
cf484313
deaa81dd
8d50e2e3
909fa897
66a22e1b
bbd11f74
ed6cc709
345bbb01
c9cf9f21
62015260
df8633bb
e3d5b569
8023e70e
825044f9
1f6480cf
e0a9242d
81a950ad
8d5309c4
239fa2c8
a88d1525
4254c22b
16f71ad5
b7fef551
aee7c1dd
f143db53
76d0ffa8
df2ef018
19d01bfe
220ead40
db1c9b75
cef1277c
f73998e0
fa6f22b9
3602a4fd
2ca00b53
df64f3de
e22a55a1
650bc137
304979cd
b3e4b878
Linda Lee · 2021-01-15 13:43
>>40221
It could be mistyped password or wrong TOTP code. The "lock" error message is actually a generic error for any login failure. I wanted to phrase it in such a way that if someone is in a jurisdiction where they can be legally coerced into giving up login credentials (like the UK), the login failure message puts the blame on the mystery unknown admin instead of the sitting-in-a-jail-cell user.
I also wanted it to not give away the existence of any particular username. Minimal-info-to-outsiders is one of the guiding principles.
Hagbard Celine · 2021-01-15 13:50
very nice project i like it
however i dont have a phone and this 2fa token thing seems silly to me
Pulse · 2021-01-15 14:19
2FA seems stupid having to use a 3rd party program
Anonymous · 2021-01-15 19:02
>>40228
>>40224
do you uh
not know what is meant by "2FA" here?
it's literally just a one-time password.