shamichan

匿名实时图像板,专注于高性能、free speech 和透明管理。「anonymous realtime imageboard focused on high performance, free speech and transparent moderation」

Github星跟踪图

Build

shamichan

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

Platforms: Linux, Docker

License: GNU GPLv3

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

Runtime dependencies

Docker

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

Simply run

docker run --restart unless-stopped -d --network host --mount type=bind,source=$image_dir,destination=/shamichan/images ghcr.io/bakape/shamichan -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 shamichan 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

shamichan can be started in debug mode simply with ./shamichan.
Configurations are split between shamichan instance configurations
and server instance configurations, which are required to start
the server and connect to the database.
The shamichan 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 shamichan 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

TODO: note about compile-time query checking and how to support it

  • 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

主要指标

概览
名称与所有者bakape/shamichan
主编程语言Rust
编程语言JavaScript (语言数: 9)
平台
许可证Other
所有者活动
创建于2014-06-19 12:38:04
推送于2023-03-27 23:24:55
最后一次提交2022-07-24 02:19:47
发布数142
最新版本名称v6.9.1 (发布于 )
第一版名称0.0.1 (发布于 )
用户参与
星数444
关注者数24
派生数74
提交数7k
已启用问题?
问题数1015
打开的问题数99
拉请求数238
打开的拉请求数2
关闭的拉请求数57
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?