Skip to content
anonymous realtime imageboard with user-created boards focused on high performance, free speech and transparent moderation
Go Rust CSS PLpgSQL JavaScript Makefile Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets assets: Port to v7 Nov 17, 2019
auth imager: core file processing pipeline Feb 1, 2020
cache server: cached thread index endpoint Feb 15, 2020
client client: page selection widget Feb 20, 2020
common imager: core file processing pipeline Feb 1, 2020
config config: Remove feedback email Dec 23, 2019
db client: partial post headers Feb 16, 2020
docs travis: fix dockerized testing Feb 1, 2020
imager imager: fix UTF-8 sanitization Feb 17, 2020
lang client: generic time view Feb 16, 2020
less client: page selection widget Feb 20, 2020
log Restore legacy server code Nov 9, 2019
protocol client: generic time view Feb 16, 2020
scripts script: Update language migrations script Dec 23, 2019
server server: cached thread index endpoint Feb 15, 2020
static db: thread read function Feb 8, 2020
templates client: port to yew Feb 6, 2020
test imager: core file processing pipeline Feb 1, 2020
util util: Remove unused functions Jan 18, 2020
websockets websockets: fix linking on Ubuntu Feb 17, 2020
www assets: Remove mobile app assets Jan 5, 2020
.clang-format Restore legacy server code Nov 9, 2019
.gitignore server: cached thread index endpoint Feb 15, 2020
.npmignore Restore legacy server code Nov 9, 2019
.rustfmt.toml Bootstrap Rust rewrite Nov 7, 2019
.travis.yml Restore legacy server code Nov 9, 2019
COC.md Restore legacy server code Nov 9, 2019
Cargo.lock client: centralized timer scheduler Feb 17, 2020
Cargo.toml client: centralized timer scheduler Feb 17, 2020
Dockerfile travis: fix dockerized testing Feb 1, 2020
LICENSE Restore legacy server code Nov 9, 2019
Makefile Merge branch 'dev/tmp' Feb 17, 2020
README.md make: upgrade to Rust 1.41 Feb 2, 2020
docker-compose.yml docker: Bump postgres version Dec 7, 2019
go.mod imager: fix UTF-8 sanitization Feb 17, 2020
go.sum imager: fix UTF-8 sanitization Feb 17, 2020
main.go Restore legacy server code Nov 9, 2019
package-lock.json client: Localization framework Dec 23, 2019
package.json client: Localization framework Dec 23, 2019

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
You can’t perform that action at this time.