anonymous realtime imageboard focused on high performance, free speech and transparent moderation
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
bakape da8a63fdd3
websockets: fix pulsar message propagation
1 day ago
.github/workflows ci: fix worklow name and badge 2 weeks ago
assets assets: Port to v7 10 months ago
auth websockets: post parser and differ 4 months ago
cache websockets: post insertion framework backend 3 months ago
client websockets: fix pulsar message propagation 1 day ago
common websockets: post parser and differ 4 months ago
config config: fix default setting 3 weeks ago
db client: post drag and drop 3 weeks ago
docker rust: fix doc strings 3 weeks ago
docs docker: don't use official Go image 2 weeks ago
imager imager: require target post number on upload 2 months ago
lang client: more work on navigation and subscription framework 5 months ago
less client: post drag and drop 3 weeks ago
log Restore legacy server code 10 months ago
protocol websockets: fix pulsar message propagation 1 day ago
scripts docker: pullable docker image 1 month ago
server config: fix default setting 3 weeks ago
static db: fix constraint 3 months ago
templates client: thumbnail rendering 6 months ago
test websockets: post insertion framework backend 3 months ago
util util: don't leak goroutines on error 3 months ago
websockets websockets: fix pulsar message propagation 1 day ago
www assets: Remove mobile app assets 8 months ago
.clang-format Restore legacy server code 10 months ago
.dockerignore ci: try to fix test action 2 weeks ago
.gitignore docker: better dep caching and make compilation lowest priority 3 months ago
.npmignore Restore legacy server code 10 months ago
.rustfmt.toml Bootstrap Rust rewrite 10 months ago
COC.md Restore legacy server code 10 months ago
Cargo.lock client: post drag and drop 3 weeks ago
Cargo.toml websockets: post insertion framework backend 3 months ago
Dockerfile ci: try to fix test action 2 weeks ago
Dockerfile.prod docker: leaner prod images 3 weeks ago
LICENSE Restore legacy server code 10 months ago
Makefile make: push to remote on release_dev 2 weeks ago
README.md README: link to build actions on badge click 1 day ago
go.mod deps: bump 1 month ago
go.sum ci: try to fix test action 2 weeks ago
main.go Restore legacy server code 10 months ago
package-lock.json npm: bump deps 3 weeks ago
package.json npm: bump deps 3 weeks ago

README.md

GoDoc Build

meguca

anonymous realtime imageboard focused on high performance, free speech and transparent moderation

Platforms: Linux, Docker

License: GNU AGPL

The master branch is currently undergoing active breaking changes towards meguca v7. If you intend to deploy meguca, please use the v6 branch.

Runtime dependencies

Docker

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

Simply run

docker run --network host --mount $image_dir:/meguca/images bakape/meguca -d $DB

where:

  • $image_dir is the directory to store uploaded images
  • $DB is the URL to a PostgreSQL database to use for data storage

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 >=12.0 (for building client)
  • Rust >= 1.41
  • C11 compiler
  • make
  • pkg-config
  • pthread
  • ffmpeg >= 4.1 libraries (libavcodec, libavutil, libavformat, libswscale) compiled with:
    • libvpx
    • libvorbis
    • libopus
    • libtheora
    • libx264
    • libmp3lame
  • OpenCV 2-3
  • libgeoip
  • OpenSSL
  • 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

Compilation

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

  • TODO: grant first user to go to a URL admin rights

Development

  • See ./docs for more documentation
  • make install_tools to install required build tools
  • make server and make client build the server and client separately
  • Pass DEBUG=1 before make command to build in debug mode
  • Pass NO_DEPS=1 before make command to not install dependencies with npm on each build
  • make clean removes files from the previous compilation
  • make {test,test_no_race} run regular test and tests without data race detection, respectively
  • To run server unit tests add database creation rights to your PostgreSQL role