Danbooru风格图片分享平台szurubooru

在这里插入图片描述

什么是 Danbooru ?

Danbooru 是一种流行的图片分享网站,以其独特的图片标签系统和搜索功能而闻名。"Danbooru风格"通常指的是模仿 Danbooru 网站的图片论坛或图片分享平台所具有的特定特征,如:

  1. 标签系统:用户可以给图片添加标签,便于分类和搜索。
  2. 搜索功能:强大的搜索工具,允许用户根据标签、上传日期等条件搜索图片。
  3. 用户交互:用户可以对图片进行评分、评论和收藏。
  4. 社区驱动:内容通常由用户上传和维护,形成一个社区。
  5. 图像板布局:图片以网格形式展示,用户可以浏览和选择感兴趣的图片。

什么是 szurubooru ?

Szurubooru 是一款图像板引擎,其灵感来自 DanbooruGelbooruMoebooru 等专为中小型社区提供的服务。它的名字源于波兰语,具有刮擦或擦洗的拟声意义。它的发音为shoorubooru

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 szurubooru

  • 服务端选择第一个 szurubooru/server,版本选择 latest

本文写作时, latest 版本对应为 2.5

  • 客户端选择第三个 szurubooru/client,版本选择 latest

本文写作时, latest 版本对应为 2.5

env.txt

命名为 env.txt 而不是默认的 .env ,是为了在 FileStation 中编辑方便

参照了官方的 example.env,地址:https://github.com/rr-/szurubooru/blob/master/doc/example.env

相比 example.env,只修改了本机端口,以及图片和数据库的存储目录,改用了相对路径

# Database credentials
POSTGRES_USER=szuru
POSTGRES_PASSWORD=changeme

# This shows up on the homescreen, indicating build information
BUILD_INFO=latest

# Port to expose HTTP service
# Set to 127.0.0.1:8080 if you wish to reverse-proxy the docker's port,
# otherwise the port specified here will be publicly accessible
PORT=7420

# How many waitress threads to start
# 4 is the default amount of threads. If you experience performance
# degradation with a large number of posts, increasing this may
# improve performance, since waitress is most likely clogging up with Tasks.
THREADS=4

# URL base to run szurubooru under
# See "Additional Features" section in INSTALL.md
BASE_URL=/

# Directory to store image data
MOUNT_DATA=./data

# Directory to store database files
MOUNT_SQL=./sql

config.yaml

参照了官方的 config.yaml.dist,地址:https://github.com/rr-/szurubooru/blob/master/server/config.yaml.dist

config.yaml 直接采用了原版 config.yaml.dist 的内容,未做任何修改

# rather than editing this file, it is strongly suggested to create config.yaml
# and override only what you need.

# shown in the website title and on the front page
name: szurubooru
# full url to the homepage of this szurubooru site, with no trailing slash
domain: # example: http://example.com
# used to salt the users' password hashes and generate filenames for static content
secret: change

# Delete thumbnails and source files on post delete
# Original functionality is no, to mitigate the impacts of admins going
# on unchecked post purges.
delete_source_files: no

thumbnails:
    avatar_width: 300
    avatar_height: 300
    post_width: 300
    post_height: 300

# settings used to download files from the web on behalf of the api users
user_agent:
max_dl_filesize: 25.0E+6 # maximum filesize limit in bytes

# automatically convert animated GIF uploads to video formats
convert:
   gif:
     to_webm: false
     to_mp4: false

# allow posts to be uploaded even if some image processing errors occur
allow_broken_uploads: false

# used to send password reset e-mails
smtp:
    host: # example: localhost
    port: # example: 25
    user: # example: bot
    pass: # example: groovy123
    from: # example: noreply@example.com
    # if host is left empty the password reset feature will be disabled,
    # in which case it is recommended to fill contactEmail so that users
    # know who to contact when they want to reset their password

contact_email: # example: bob@example.com. Meant for manual password reset procedures

enable_safety: yes

tag_name_regex: ^\S+$
tag_category_name_regex: ^[^\s%+#/]+$

pool_name_regex: ^\S+$
pool_category_name_regex: ^[^\s%+#/]+$

# don't make these more restrictive unless you want to annoy people; if you do
# customize them, make sure to update the instructions in the registration form
# template as well.
password_regex: '^.{5,}$'
user_name_regex: '^[a-zA-Z0-9_-]{1,32}$'

# webhooks to call when events occur (such as post/tag/user/etc. changes)
# the listed urls will be called with a HTTP POST request with a payload
# containing a snapshot resource as JSON. See doc/API.md for details
webhooks:
    # - https://api.example.com/webhooks/

default_rank: regular

privileges:
    'users:create:self':            anonymous # Registration permission
    'users:create:any':             administrator
    'users:list':                   regular
    'users:view':                   regular
    'users:edit:any:name':          moderator
    'users:edit:any:pass':          moderator
    'users:edit:any:email':         moderator
    'users:edit:any:avatar':        moderator
    'users:edit:any:rank':          moderator
    'users:edit:self:name':         regular
    'users:edit:self:pass':         regular
    'users:edit:self:email':        regular
    'users:edit:self:avatar':       regular
    'users:edit:self:rank':         moderator # one can't promote themselves or anyone to upper rank than their own.
    'users:delete:any':             administrator
    'users:delete:self':            regular

    'user_tokens:list:any':         administrator
    'user_tokens:list:self':        regular
    'user_tokens:create:any':       administrator
    'user_tokens:create:self':      regular
    'user_tokens:edit:any':         administrator
    'user_tokens:edit:self':        regular
    'user_tokens:delete:any':       administrator
    'user_tokens:delete:self':      regular

    'posts:create:anonymous':       regular
    'posts:create:identified':      regular
    'posts:list':                   anonymous
    'posts:reverse_search':         regular
    'posts:view':                   anonymous
    'posts:view:featured':          anonymous
    'posts:edit:content':           power
    'posts:edit:flags':             regular
    'posts:edit:notes':             regular
    'posts:edit:relations':         regular
    'posts:edit:safety':            power
    'posts:edit:source':            regular
    'posts:edit:tags':              regular
    'posts:edit:thumbnail':         power
    'posts:feature':                moderator
    'posts:delete':                 moderator
    'posts:score':                  regular
    'posts:merge':                  moderator
    'posts:favorite':               regular
    'posts:bulk-edit:tags':         power
    'posts:bulk-edit:safety':       power
    'posts:bulk-edit:delete':       power

    'tags:create':                  regular
    'tags:edit:names':              power
    'tags:edit:category':           power
    'tags:edit:description':        power
    'tags:edit:implications':       power
    'tags:edit:suggestions':        power
    'tags:list':                    regular
    'tags:view':                    anonymous
    'tags:merge':                   moderator
    'tags:delete':                  moderator

    'tag_categories:create':        moderator
    'tag_categories:edit:name':     moderator
    'tag_categories:edit:color':    moderator
    'tag_categories:edit:order':    moderator
    'tag_categories:list':          anonymous
    'tag_categories:view':          anonymous
    'tag_categories:delete':        moderator
    'tag_categories:set_default':   moderator

    'pools:create':                 regular
    'pools:edit:names':             power
    'pools:edit:category':          power
    'pools:edit:description':       power
    'pools:edit:posts':             power
    'pools:list':                   regular
    'pools:view':                   anonymous
    'pools:merge':                  moderator
    'pools:delete':                 moderator

    'pool_categories:create':       moderator
    'pool_categories:edit:name':    moderator
    'pool_categories:edit:color':   moderator
    'pool_categories:list':         anonymous
    'pool_categories:view':         anonymous
    'pool_categories:delete':       moderator
    'pool_categories:set_default':  moderator

    'comments:create':              regular
    'comments:delete:any':          moderator
    'comments:delete:own':          regular
    'comments:edit:any':            moderator
    'comments:edit:own':            regular
    'comments:list':                regular
    'comments:view':                regular
    'comments:score':               regular

    'snapshots:list':               power

    'uploads:create':               regular
    'uploads:use_downloader':       power

## ONLY SET THESE IF DEPLOYING OUTSIDE OF DOCKER
#debug: 0 # generate server logs?
#show_sql: 0 # show sql in server logs?
#data_url: /data/
#data_dir: /var/www/data
## usage: schema://user:password@host:port/database_name
## example: postgres://szuru:dog@localhost:5432/szuru_test
#database:

docker-compose.yml

参照了官方的 docker-compose.yml,地址:https://github.com/rr-/szurubooru/blob/master/docker-compose.yml

version: '2'

services:
  server:
    image: szurubooru/server:latest
    container_name: szuru-server
    depends_on:
      - sql
    environment:
      ## These should be the names of the dependent containers listed below,
      ## or FQDNs/IP addresses if these services are running outside of Docker
      POSTGRES_HOST: sql
      ## Credentials for database:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      ## Commented Values are Default:
      #POSTGRES_DB: defaults to same as POSTGRES_USER
      #POSTGRES_PORT: 5432
      #LOG_SQL: 0 (1 for verbose SQL logs)
      THREADS: ${THREADS}
    volumes:
      - "${MOUNT_DATA}:/data"
      - "./config.yaml:/opt/app/config.yaml"

  client:
    image: szurubooru/client:latest
    container_name: szuru-client
    depends_on:
      - server
    environment:
      BACKEND_HOST: server
      BASE_URL: ${BASE_URL}
    volumes:
      - "${MOUNT_DATA}:/data:ro"
    ports:
      - "${PORT}:80"

  sql:
    image: postgres:14-alpine
    container_name: szuru-db
    restart: unless-stopped
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - "${MOUNT_SQL}:/var/lib/postgresql/data""

然后执行下面的命令

# 新建文件夹 szurubooru 和 子目录
mkdir -p /volume1/docker/szurubooru/{data,sql}

# 进入 szurubooru 目录
cd /volume1/docker/szurubooru

# 修改目录权限
chmod a+rw data

# 将 env.txt、config.yaml、docker-compose.yml 放入当前目录

# 一键启动
docker-compose --env-file env.txt up -d

运行

在浏览器中输入 http://群晖IP:7420 ,如果看到👇这个提示,表示还未完成初始化设置

稍等一会儿

点顶部的 Register 菜单注册账号

主界面上多了一些菜单

现在可以 Upload 图片了,支持直接上传图片,也可以粘贴图片的 URL 地址

拖入一张图片

Upload all 上传

点击图片,开始写评论,还可以添加 tags

参考文档

rr-/szurubooru: Image board engine, Danbooru-style.
地址:https://github.com/rr-/szurubooru

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨浦老苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值