使用 Stikked 運行您自己的 Pastebin
如果您是任何類型的開發人員,您可能聽說過 Pastebin.com,這是使用最廣泛的用於粘貼和共享文本片段的 Web 應用程序。Pastebin.com 很棒,但它並不是唯一的 Pastebin 工具。
事實上,網站託管自己的 Pastebin 已經變得越來越普遍。它給你更多的自由。有許多開源的 Pastebin 實現,Stikked 是其中最有用的實現之一,具有先進的功能和簡化的用戶界面。
Stikked使用 PHP 和 jQuery 構建,並使用 CodeIgniter 框架。
安裝Sticked
Stikked 要求您的服務器正在運行:
- git
- nginx
- Docker 和 Docker 組合
- 要下載最新版本的 Stikked,請訪問 Stikked GitHub 頁面或轉到命令行並運行:
git clone https://github.com/claudehohl/Stikked.git
- 轉到 Stikked 文件夾:
cd. /Stikked
- 使用您喜歡的文本編輯器打開其中的“docker-compose.yml”文件。
- 滾動到“services:”類別下的“ports:”變量,並將其值更改為以下內容:
ports:
- 8080:80/tcp
- 滾動到“mysql:”類別並將“command:”子類別替換為以下代碼:
command: mysqld
- 打開 Stikked 主配置文件:
nano ~/Stikked/docker/stikked.php
- 轉到包含該變量的行
$config['base_url']
,並將“localhost”替換為系統的完全限定域名。保存並退出文件。
- 打開 Stikked 容器內的“nginx.conf”文件:
nano ~/Stikked/docker/nginx.conf
- 刪除“僅允許向我們的主機發出請求”下方的三行。
- 通過運行以下命令構建 Docker 容器:
docker compose up -d
創建 SSL Nginx 反向代理
此時,您現在已經在端口 8080 上運行了 Stikked 安裝。雖然您可以按原樣使用它,但基本的 Stikked 容器可能不安全,因為它默認不加密其連接。要解決此問題,您需要創建一個反向代理來偵聽傳入連接,然後通過 SSL 對其進行加密。
- 在“/etc/nginx/sites-available/”下創建一個新的站點配置文件
sudo nano /etc/nginx/sites-available/stikked
- 將以下代碼粘貼到新站點文件中。這是一個簡單的反向代理,它偵聽端口 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 http://localhost:8080;
}}
- 在“/etc/nginx/sites-enabled”中為站點文件創建一個符號鏈接,並刪除其中的默認站點文件:
sudo ln -s /etc/nginx/sites-available/stikked /etc/nginx/sites-enabled/
- 測試您的 Nginx 配置是否有任何錯誤,然後通過以下方式啟用 Nginx 服務
systemctl
:
sudo nginx -tsudo systemctl reload nginx.service
安裝 SSL 證書
反向代理啟動並運行後,您現在可以為 Stikked 實例請求 SSL 證書。最簡單的選擇是安裝來自 Electronic Frontier Foundation 的 certbot snap 包。
- 確保您的核心快照二進製文件是最新的並且正在運行:
sudo snap install core
sudo snap refresh core
- 使用 Stikked 機器的 snap 二進製文件安裝 certbot:
sudo snap install certbot --classic
- 通過將您的電子郵件地址鏈接到 certbot 來測試程序是否正常運行:
sudo certbot register --agree-tos -m ramces@email.invalid
- 再次運行 certbot 為您的 Stikked 實例創建 SSL 證書:
sudo certbot --nginx -d my-stikked-installation.com
- 打開 Web 瀏覽器並檢查您的 Stikked 實例是否在 SSL 下運行。
設計您的固定安裝
所有樣式數據都存在於 Git 存儲庫的“htdocs”目錄下名為“themes”的目錄中。如果想要刺激一下,請查看子目錄內部以查看一些有趣的選擇。
- 進入 Stikked Git 存儲庫並導航到“htdocs/themes”目錄。
cd ~/Stikked/htdocs/themes
- 大多數樣式選擇都是在每個主題文件夾內進行的。例如,geocities 主題將您的 Stikked 看起來就像 20 世紀 90 年代的網站。
- 為了修改實例的外觀,您需要首先關閉 Docker 容器:
docker compose down
- 使用您喜歡的文本編輯器打開實例的主配置文件:
nano ~/Stikked/docker/stikked.php
- 向下滾動到包含該
$config['theme']
變量的行並將其值更改為“cleanwhite”。
- 保存主配置文件並重新加載 Docker 容器:
docker compose up -d
- 打開網絡瀏覽器並加載新網頁。這是加載 cleanwhite 主題後的“創建”頁面。
特徵
Stikked 具有許多有趣的功能,使其從眾多其他 Pastebin 腳本中脫穎而出。
首先,它在語法突出顯示方面表現出色。Stikked 支持大量編程和腳本語言,從 C 到 Bash。無論您使用什麼編碼,Stikked 安裝都能滿足您的需求。
每個片段的語言顯示在“最近”頁面上的表格中;如果發帖者沒有指定粘貼的語言,則它會被標記為“文本”。該表還顯示標題、發帖人姓名、新近度以及 RSS 圖標。RSS 源位於 your-stikked-installation.com/lists/rss。
“趨勢”頁面幾乎相同,但增加了“點擊”欄並且沒有 RSS 提要。點擊數似乎是根據唯一 IP 地址的訪問來計算的。
創建粘貼時,您可以選擇設置到期日期、使用 bit.ly 的服務創建短 URL 和/或將帖子設置為私有。請注意,“私人”粘貼並不是真正的私人;任何擁有粘貼 URL 的用戶都可以看到它,除非您啟用了 LDAP 身份驗證 – 在這種情況下,每個擁有該 URL 的註冊用戶都可以看到它。“私人”僅意味著該帖子不會顯示在“最近”或“趨勢”頁面上。
除了安全性之外,Stikked 還提供了一些用於查看粘貼的簡潔實用程序。我對嵌入代碼特別滿意。
您還可以回复粘貼並從原始粘貼下方的表單添加您自己的編輯。唯一的缺點是回復不會鏈接回原始帖子;如果您的 Pastebin 有許多不同的帖子和在不同時間做出的回复,則很容易忘記它們的結構。我只能希望開發人員能夠在某個時候引入線程回复。
最後一項功能是垃圾郵件控制,Stikked 將其稱為“spamadmin”。通過在第 79 行和第 80 行的“docker/stikked.php”中輸入憑據來進行設置:
$config['spamadmin_user'] = 'stikked';
$config['spamadmin_pass'] = 'stikked';
前往 your-stikked-installation.com/spamadmin 登錄。您可以在其中查看哪些粘貼來自哪些 IP 地址、刪除粘貼以及阻止 IP 範圍。
應用程序編程接口
Stikked 的 API 允許您從 Pastebin 客戶端粘貼到它。在客戶端中使用的 API URL 是 your-stikked-installation.com/api/create。
一個基本示例是使用 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。
如果您想要一種簡單的方法來在自己的網站上收集和共享文本片段,我建議您嘗試一下 Stikked。
在這一點上,快速獲取一些文本片段進行分享的一種方法是學習一門新的編程語言。通過閱讀我們的簡單初學者指南,了解如何編寫 Bash 腳本。您還可以通過閱讀我們對 Bash 變量及其用途的深入研究來擴展這些知識。
圖片來源:Christopher Gower,來自 Unsplash。所有修改和屏幕截圖均由 Ramces Red 進行。
發佈留言