soatok/faq-off

挑战-响应自动化

安装: 1

依赖: 0

建议者: 0

安全性: 0

星标: 33

监视者: 4

分支: 1

开放问题: 1

类型:项目

v0.4.0 2020-04-18 05:24 UTC

This package is auto-updated.

Last update: 2024-09-10 18:10:19 UTC


README

Support on Patreon Linux Build Status Latest Stable Version Latest Unstable Version License

FAQ Off 允许您构建游戏手册风格的 FAQ 网站,以对抗社交媒体上的 海狮行为 和群体骚扰。

FAQ Off 是一个基于 Slim Framework 3 和 AnthroKit 的自托管微服务,由 Soatok 开发,并在他的 Twitch.tv 频道 上实时展示。

公共演示: https://faq.dhol.es

邀请链接提供给达到 卓越 级别的 Patreon 支持者。

想了解更多,请参阅介绍 FAQ Off 的 Patreon 文章

FAQ Off 特点一览

  • 交互式问答网站:
    • 引导您的读者找到他们问题的答案。
    • 短路常见的破坏性对话。
      写一次,回答无数次!
  • 支持 HTML 和 Markdown
  • 垃圾邮件和垃圾信息防御:
    • 管理员可以启用“仅限邀请”模式,这需要现有用户的邀请码才能注册。
    • 邀请树:管理员可以看到谁邀请了谁,以确定不端用户的常见入口点,以管理自己的社区。
  • 协作:
    • 用户可以与同事共享一个 作者 个人资料并作为团队发布。
    • 用户可以属于无限数量的 作者
    • 作者可以与无限数量的用户共享访问权限,或仅共享一个。
  • 安全性:
    • 条目以 HTML / Markdown 编写,并通过 HTML Purifier 处理,以防止跨站脚本攻击。
    • 密码以 安全方式存储,或您可以使用 Twitter。
    • 您的用户名或 Twitter 处理方式仅由 管理员 知道。提供一个随机生成的 公共 ID,以保持您的登录处理方式和/或 Twitter 处理方式对其他人匿名。

安装

获取代码和依赖项

首先,克隆 git 仓库。

git clone https://github.com/soatok/faq-off target-dir-name

然后,在目标目录中运行 composer install --no-dev

数据库设置

运行 bin/create-config.php 以创建本地配置文件。在此阶段,您应该有有效的 PostgreSQL 数据库凭证。

接下来,运行 bin/install 以完成数据库表的安装。

Web 服务器配置

确保您已配置虚拟主机以使用 public 目录作为其文档根。

  • 错误: /var/www/faq-off
  • 正确: /var/www/faq-off/public

一般规则:如果您的用户可以阅读此 README.md 文件,则您已错误地配置了您的服务器,需要再向下层。

强烈建议您使用 HTTPS (TLSv1.3, TLSv1.2)。如果您无法承担 TLS 证书的费用,Let's Encrypt 提供免费证书和自动续订(通过 certbot)。

例如,nginx 配置可能如下所示

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    ssl_certificate /etc/letsencrypt/live/faq.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/faq.example.com/privkey.pem;

    include snippets/ssl-params.conf;

    root /var/www/faq-off/public;

    server_name faq.example.com;

    index index.php index.html index.htm;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    }
    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ /.well-known {
        allow all;
    }
}

server {
    listen 80;
    listen [::]:80;

    root /var/www/faq-off/public;
    index index.html index.htm;

    server_name faq.example.com;

    location ~ /.well-known {
        allow all;
    }

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }

    # Redirect to HTTPS
    return 301 https://faq.example.com$request_uri;
}