使用 Stikked 运行您自己的 Pastebin

如果您是任何类型的开发人员,您可能听说过 Pastebin.com,这是使用最广泛的用于粘贴和共享文本片段的 Web 应用程序。 Pastebin.com 很棒,但它并不是市场上唯一的 Pastebin 工具。

事实上,网站托管自己的 Pastebin 已经变得越来越普遍。 它给你更多的自由。 有许多开源的 Pastebin 实现,Stikked 是其中比较有用的实现之一,具有先进的功能和简化的界面。

内容

胶合 使用 PHP 和 jQuery 构建,并使用 CodeIgniter 框架。

安装Sticked

Stikked 要求您的服务器正在运行:

  • git
  • Nginx
  • Docker 和 Docker 组合
  1. 要下载最新版本的 Stikked,请访问 Stikked GitHub 页面或转到命令行并运行:
git clone https://github.com/claudehohl/Stikked.git
  1. 转到 Stikked 文件夹:
cd ./Stikked
  1. 使用您喜欢的文本编辑器打开附带的 docker-compose.yml 文件。
  2. 滚动到“services:”类别下的“ports:”变量并更改其值,如下所示:
ports:
    - 8080:80/tcp
  1. 滚动到“mysql:”类别并将“command:”子类别替换为以下代码:
command: mysqld
  1. 打开Stikked的主配置文件:
nano ~/Stikked/docker/stikked.php
  1. 转到包含变量的行 $config['base_url'] 并将“localhost”替换为系统的完全限定域名。 保存并退出文件。
  1. 打开 Stikked 容器中的 nginx.conf 文件:
nano ~/Stikked/docker/nginx.conf
  1. 删除“仅允许向我们的主机发出请求”下的三行。
突出显示 Docker 部分内容的终端 Nginx 要删除的配置。
  1. 通过运行以下命令构建 Docker 容器:
docker compose up -d

供你参考: 了解如何托管您自己的看板 Linux 使用 Docker 和 Kanboard。

创建 SSL Nginx 反向代理

此时,您现在已经在端口 8080 上运行了 Stikked 安装。虽然您可以按原样使用它,但基本的 Stikked 容器可能不安全,因为它默认不加密其连接。 要解决此问题,您需要创建一个反向代理来侦听传入连接,然后通过 SSL 对其进行加密。

  1. 在“/etc/nginx/sites-available/”创建一个新的站点配置文件
sudo nano /etc/nginx/sites-available/stikked
  1. 将以下代码粘贴到您的新站点文件中。 这是一个简单的反向代理,它侦听端口 80 上传入的未加密连接,并将所有请求重定向到端口 8080。
server {
    listen 80;
    listen [::]:80;
 
    root                    /var/www/html;
    server_name             my-stikked-installation.com;
 
    location / {
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_set_header    Host $http_host;
        proxy_pass          https://localhost:8080;
    }
}
终端带有 example Nginx    反向代理配置。
  1. 在 /etc/nginx/sites-enabled 中为站点文件创建符号链接并删除其中的默认站点文件:
sudo ln -s /etc/nginx/sites-available/stikked /etc/nginx/sites-enabled/
  1. 测试你的 Nginx 检查配置是否有错误,然后启用 Nginx 服务通过 systemctl:
sudo nginx -t
sudo systemctl reload nginx.service

安装 SSL 证书

反向代理启动并运行后,您现在可以为 Stikked 实例请求 SSL 证书。 最简单的方法是安装 Electronic Frontier Foundation 的 Certbot snap 包。

  1. 确保您的核心快照二进制文件是最新的并且正在运行:
sudo snap install core
sudo snap refresh core
  1. 使用 Stikked 计算机的 Snap 二进制文件安装 certbot:
sudo snap install certbot --classic
显示 Certbot 安装过程的终端。
  1. 通过将您的电子邮件地址链接到 certbot 来测试程序是否正常运行:
sudo certbot register --agree-tos -m ramces@email.invalid
  1. 再次运行 certbot 为您的 Stikked 实例创建 SSL 证书:
sudo certbot --nginx -d my-stikked-installation.com
  1. 打开 Web 浏览器并检查您的 Stikked 实例是否在 SSL 下运行。
显示正在运行的 Stikked 实例的屏幕截图。

很高兴知道: 通过 OpenSSL 颁发您自己的 SSL 证书,了解加密如何在 Internet 上工作。

设计您的 Stikked 安装

所有样式数据都位于 Git 存储库的 htdocs 目录中的主题目录中。 如需更改,请查看子目录以查看一些有趣的选择。

  1. 转到 Stikked Git 存储库并导航到 htdocs/themes 目录。
cd ~/Stikked/htdocs/themes
  1. 大多数样式决策都是在每个主题文件夹中做出的。 例如,Geocities 主题将您的 Stikked 看起来像 20 世纪 90 年代的网站。
显示 Stikked 复古主题的屏幕截图。
  1. 要更改实例的外观,您必须首先关闭 Docker 容器:
docker compose down
  1. 使用您喜欢的文本编辑器打开实例的主配置文件:
nano ~/Stikked/docker/stikked.php
  1. 向下滚动到包含该内容的行 $config['theme'] 变量并将其值更改为“cleanwhite”。
显示当前实例的主题变量的终端。
  1. 保存主配置文件并重新加载 Docker 容器:
docker compose up -d
  1. 打开网络浏览器并加载您的新网站。 这是加载 Cleanwhite 主题后的“创建”页面。
显示 Stikked 具有 Cleanwhite 主题的屏幕截图。

特征

Stikked 具有许多有趣的功能,使其从众多其他 Pastebin 脚本中脱颖而出。

首先,它涵盖了语法突出显示的所有可能性。 Stikked 支持大量编程和脚本语言,从 C 到 Bash。 无论您编程什么,Stikked 安装都能满足您的需求。

显示 Stikked 语法突出显示功能的屏幕截图。

每个片段的语言显示在“最近”页面上的表格中。 如果发帖者未指定插入语言,则会被标记为“文本”。 该表还显示标题、海报名称和新近度,以及 RSS 图标。 RSS 源位于下面 your-stikked-installation.com/lists/rss

显示 Stikked 实例的纯 RSS 源的屏幕截图。

“趋势”页面几乎相同,但也包含“点击”列,并且没有 RSS 提要。 点击数似乎是根据唯一 IP 地址的访问来计算的。

显示当前实例中趋势插入列表的屏幕截图。

创建粘贴时,您可以选择设置到期日期、使用 bit.ly 服务创建短 URL 和/或将帖子设置为私有。 请注意,“私有”粘贴实际上并不是私有的。 任何拥有粘贴 URL 的用户都可以看到它,除非您启用了 LDAP 身份验证 – 在这种情况下,任何拥有该 URL 的注册用户都可以看到它。 “私人”只是意味着该帖子不会出现在“最近”或“热门”页面上。

显示私人粘贴的屏幕截图。

除了安全性之外,Stikked 还提供了一些不错的实用程序来查看粘贴。 我对嵌入代码特别满意。

屏幕截图显示了一个 example 嵌入当前插入的片段。

您还可以使用原始插入内容下方的表格来响应插入内容并添加您自己的更改。 唯一的缺点是答案不会链接回原始帖子。 如果您的 Pastebin 包含许多不同的帖子和不同时间的回复,则很容易忘记它们的结构。 我只能希望开发人员在某个时候引入线索答案。

最后一项功能是垃圾邮件控制,Stikked 称之为“Spamadmin”。 通过在 docker/stikked.php 的第 79 行和第 80 行输入凭据来进行设置:

$config['spamadmin_user'] = 'stikked';
$config['spamadmin_pass'] = 'stikked';

your-stikked-installation.com/spamadmin 登录。 您可以在其中查看哪些插入来自哪些 IP 地址、删除插入以及阻止 IP 范围。

显示 Stikked 的 Spamadmin 控制面板的屏幕截图。

应用程序编程接口

Stikked 的 API 允许您从 Pastebin 客户端粘贴内容。 在您的客户端中使用的 API URL 是 your-stikked-installation.com/api/create

一个基本的 example 就是使用cURL命令上传一个名为smalltalk.st的文件,指定标题、名称、隐私、语言和过期时间(以分钟为单位):

curl -d title='cURL test' -d name='Ramces' -d private=1 -d lang=c -d expire=45 --data-urlencode text@count.c https://my-stikked-installation.com/api/create

这将返回粘贴的 URL。

屏幕截图显示了一个 example 使用 Stikked API 创建的粘贴。

如果您正在寻找一种在自己的网站上收集和共享文本片段的简单方法,我建议您尝试一下 Stikked。

考虑到这一点,快速分享一些文本片段的一种方法是学习一门新的编程语言。 通过阅读我们的简单初学者指南,了解如何编写 Bash 脚本。 您还可以通过阅读我们对 Bash 变量及其用法的深入研究来扩展这方面的知识。

照片来源: 克里斯托弗·高尔 (Christopher Gower) 在 Unsplash 上。 所有更改和屏幕截图均来自 Ramces Red。

订阅我们的新闻!

我们的最新教程直接发送到您的收件箱

订阅所有时事通讯。

注册即表示您同意我们的隐私政策,并且欧洲用户同意数据传输政策。 我们不会分享您的信息,您可以随时取消订阅。

订阅