This branch is considered a bad design and I will not develop it. If I ever have time to redo macaba, it will be mostly rewritten with static page generation, nginx and distribution in mind (to help board owner absorb DDOS using cloud resources).
Anonymous message board server made in Erlang, designed with high load, scalability and extensibility in mind. The forum layout concept is designed to be familiar for wakaba users:
- site → boards → threads → posts → images and text
- posts have monotonically increasing ids, one counter per board
- name field is optional, supports special hash tags for identifying without discovering the user's identity
- post body uses special markup which is processed to HTML
REST API: http://docs.macaba.apiary.io/
Project status - Alpha
You can download and run it. Production use is not recommended
Features and TODO list can be found here.
I have configured minimal free instance on Amazon EC2 and started a running copy of the board there. Board is in demo mode, i.e. resets database fully every 15 minutes. You can try it here: http://macaba.longcat.info admin login and password are "1"
Before you start
- Linux operating system (Ubuntu works, Debian and other should be easy), MacOSX may work, but you're on your own building dependencies!
- Erlang/OTP R15 or R16, get from https://www.erlang-solutions.com/downloads/download-erlang-otp - requires no additional configuration.
- RIAK database, get from http://docs.basho.com/riak/latest/downloads/ -
requires no configuration just install and ensure its started by doing
sudo /etc/init.d/riak restart
- Imagemagick for making thumbnails and image analysis,
apt-get install libmagickwand-devon Ubuntu)
- NOTE: this step is optional if you choose to not
install thumbnailer, disable it in the
board.thumbnaileralso you can comment out 'eim' dependency in
rm -rf deps/eimto get rid of build errors
- NOTE: this step is optional if you choose to not install thumbnailer, disable it in the
- A working C/C++ compiler to build dependencies
apt-get install build-essentialon Ubuntu)
- Checkout from github by using
git clone git://github.com/kvakvs/macaba.git
make runwill do full recompile and start (or
make runfto run without recompiling all deps)
- Open http://localhost:12000/ with your browser
This will download 'rebar', check out dependencies to 'deps/' subdirectory,
compile dependencies, compile macaba, and run locally on port 12000
Configuration tips & tricks
TODO: move this to a new file
Running on port 80 as a non-root
Run as root or under sudo:
setcap 'cap_net_bind_service=+ep' /path/to/program
And then anytime program is executed thereafter it will have the
CAP_NET_BIND_SERVICE capability. setcap is in the debian and ubuntu package