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 171895f548
client: higher wasm-opt level
1 day ago
assets assets: Port to v7 7 months ago
auth websockets: post parser and differ 1 month ago
cache websockets: post insertion framework backend 1 month ago
client client: higher wasm-opt level 1 day ago
common websockets: post parser and differ 1 month ago
config websockets: post insertion framework backend 1 month ago
db imager: require target post number on upload 5 days ago
docker docker: better dep caching and make compilation lowest priority 1 month ago
docs docs: update sample nginx config 1 month ago
imager imager: require target post number on upload 5 days ago
lang client: more work on navigation and subscription framework 3 months ago
less less: fix postform colours on some themes 1 day ago
log Restore legacy server code 8 months ago
protocol rust: update deps 2 days ago
scripts websockets: post insertion framework backend 1 month ago
server websockets: post parser and differ 1 month ago
static db: fix constraint 1 month ago
templates client: thumbnail rendering 4 months ago
test websockets: post insertion framework backend 1 month ago
util util: don't leak goroutines on error 1 month ago
websockets rust: update deps 2 days ago
www assets: Remove mobile app assets 6 months ago
.clang-format Restore legacy server code 8 months ago
.dockerignore docker: better dep caching and make compilation lowest priority 1 month ago
.gitignore docker: better dep caching and make compilation lowest priority 1 month ago
.npmignore Restore legacy server code 8 months ago
.rustfmt.toml Bootstrap Rust rewrite 8 months ago
.travis.yml Restore legacy server code 8 months ago
COC.md Restore legacy server code 8 months ago
Cargo.lock rust: update deps 2 days ago
Cargo.toml websockets: post insertion framework backend 1 month ago
Dockerfile docker: upgrade FFmpeg version 2 days ago
LICENSE Restore legacy server code 8 months ago
Makefile make: make client_watch use DEBUG mode and install deps on first run 1 day ago
README.md make: upgrade to Rust 1.41 5 months ago
docker-compose.yml docker: lock postgres version 2 months ago
go.mod imager: require target post number on upload 5 days ago
go.sum imager: require target post number on upload 5 days ago
main.go Restore legacy server code 8 months ago
package-lock.json client: Localization framework 6 months ago
package.json client: Localization framework 6 months 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

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.

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

Grab a coffee. This will take a while.

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 >=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
  • 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

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 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,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