anonymous realtime imageboard focused on high performance, free speech and transparent moderation
bakape 66edc80eab
docs: Specify broken Ubuntu versions
2 days ago
assets Migrate to Go 1.11 modules 6 months ago
auth http: Revert to domain-less cookies 1 month ago
cache cache: Fix race conditions in tests 4 months ago
client youtube: Revert to noembed 2 weeks ago
clientScripts client: Fix mature content propmt popping up with mature content disabled 2 weeks ago
common imager: Don't log some more thumbnailer errors 1 month ago
config imager: JPEG thumbnail config 2 weeks ago
db youtube: Revert to noembed 2 weeks ago
docker/postgres docker: Run tests using docker-compose 2 months ago
docs docs: Correct nginx cache headers 1 month ago
geoip server: Use system-wide geoip database 5 months ago
imager imager: JPEG thumbnail config 2 weeks ago
lang Migrate to Go 1.11 modules 6 months ago
less client/posts: Audio recording support 1 month ago
log log: Shorter error mail subject 5 months ago
parser cli: Remove inbuilt daemonization and config CLI 4 months ago
scripts docker: Run tests using docker-compose 2 months ago
server youtube: Revert to noembed 2 weeks ago
static youtube: Revert to noembed 2 weeks ago
templates imager: JPEG thumbnail config 2 weeks ago
test test: Fix import cycle 4 months ago
util Migrate to Go 1.11 modules 6 months ago
websockets websockets: Sanitize UTF-8 in image name 2 weeks ago
www *: Replace illyadance with customizable video background 8 months ago
.clang-format wasm: Basic DOM mutation stack 2 years ago
.gitignore Migrate to Go 1.11 modules 6 months ago
.npmignore package.json: 1.1.5 -> 1.1.6 3 weeks ago
.travis.yml make: rule for dockerised testing 7 months ago
COC.md *: Add COC 3 months ago
Dockerfile docker: Fix client building 1 month ago
LICENSE LICENSE: Update copyright year 1 year ago
Makefile client: Update deps 1 month ago
README.md docs: Specify broken Ubuntu versions 2 days ago
docker-compose.yml client/posts: Audio recording support 1 month ago
go.mod go: Tidy up dep list 2 weeks ago
go.sum go: Tidy up dep list 2 weeks ago
gulpfile.js client: Revert service worker split 1 year ago
main.go Migrate to Go 1.11 modules 6 months ago
package-lock.json package.json: 1.1.5 -> 1.1.6 3 weeks ago
package.json package.json: 1.1.5 -> 1.1.6 3 weeks ago

README.md

GoDoc Build Status

meguca

anonymous realtime imageboard with user-created boards focused on high performance, free speech and transparent moderation

Platforms: Linux, Docker

License: GNU AGPL

Runtime dependencies

Docker

Meguca can be deployed in a self-contained Docker container.

First, run

git clone git://github.com/bakape/meguca.git

Second, navigate to the folder that was just created with

cd meguca

Then, install Docker and Docker Compose and run

docker-compose build
docker-compose up -d

For more information refer to the Docker Compose docs.

Update

If you ever want to update meguca to the newest version, stop the container with

docker-compose down

Then, pull the changes with

git pull origin

Finally, rebuild and start the container with

docker-compose build
docker-compose up -d

Building from source

Native installation.

For installing meguca directly onto a server follow the steps bellow. A reference list of commands can be found in ./docs/installation.md

Build dependencies

  • Go >=1.13 (for building server)
  • Node.js >=5.0 (for building client)
  • C11 compiler
  • make
  • pkg-config
  • pthread
  • ffmpeg 3.2+ libraries (libavcodec, libavutil, libavformat, libswscale) compiled with:
    • libvpx
    • libvorbis
    • libopus
    • libtheora
    • libx264
    • libmp3lame
  • OpenCV >= 2
  • libgeoip
  • git

NB: Ubuntu patches to ffmpeg on some Ubuntu versions <19.10 break image processing. In that case please compile from unmodified ffmpeg sources using:

sudo apt build-dep ffmpeg
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
git checkout n4.1
./configure
make -j`nproc`
sudo make install

Linux and OSX

  • Run make

Setup

Deployment

meguca can be started in debug mode simply with ./meguca. Configurations are split between meguca instance configurations and server instance configurations, which are required to start the server and connect to the database. The meguca instance configurations are stored in the database, but server instance configurations are optionally loaded from a config.json file on server start. A sample configuration file can be found under docs/config.json. Documentation for this file is available under docs/config.jsonc.

It is recommended to serve meguca behind a reverse proxy like NGINX or Apache with properly configured TLS settings. A sample NGINX configuration file can be found in docs/.

Initial instance configuration

  • Login into the “admin” account via the infinity symbol in the top banner with the password “password”
  • Change the default password
  • Create a board from the administration panel
  • Configure server from the administration panel

Development

  • See ./docs for more documentation
  • make server and make client build the server and client separately
  • make watch watches the file system for changes and incrementally rebuilds the client
  • make clean removes files from the previous compilation
  • make {test,test_no_race,test_docker} run regular, without data race detection and Dockerized test suites, respectively
  • To run server unit tests (unless Dockerized) add database creation rights to your PostgreSQL role