Gestisci il tuo Pastebin con Stikked

Gestisci il tuo Pastebin con Stikked

Se sei uno sviluppatore di qualsiasi tipo, probabilmente hai sentito parlare di Pastebin.com, l’applicazione web più utilizzata per incollare e condividere frammenti di testo. Pastebin.com è fantastico, ma non è l’unico strumento pastebin là fuori.

In effetti, sta diventando sempre più comune per i siti Web ospitare i propri pastebin. Ti dà più libertà. Esistono molte implementazioni di pastebin open source e Stikked è una delle più utili con le sue funzionalità avanzate e l’interfaccia utente semplificata.

Stikked è costruito con PHP e jQuery e utilizza il framework CodeIgniter.

Installazione di Stikked

Stikked richiede che il tuo server sia in esecuzione:

  • Idiota
  • Nginx
  • Docker e Docker Compose
  • Per scaricare l’ultima versione di Stikked, visita la pagina Stikked GitHub o vai alla riga di comando ed esegui:

git clone https://github.com/claudehohl/Stikked.git

  • Vai alla cartella Stikked:

cd. /Stikked

Un terminale che mostra il processo clone git per il repository Stikked.
  • Apri il file “docker-compose.yml” all’interno utilizzando il tuo editor di testo preferito.
  • Scorri fino alla variabile “ports:” sotto la categoria “services:” e modifica il suo valore come segue:

ports:
- 8080:80/tcp

Un terminale che mostra la variabile delle porte per il contenitore docker Stikked.
  • Scorri fino alla categoria “mysql:” e sostituisci la sottocategoria “command:” con il seguente codice:

command: mysqld

Un terminale che mostra il nuovo comando mysql per il contenitore docker.
  • Apri il file di configurazione principale di Stikked:

nano ~/Stikked/docker/stikked.php

  • Vai alla riga che contiene la variabile $config['base_url']e sostituisci “localhost” con il nome di dominio completo del tuo sistema. Salva ed esci dal file.
Un terminale che mostra un URL di base di esempio per l'istanza.
  • Apri il file “nginx.conf” all’interno del contenitore Stikked:

nano ~/Stikked/docker/nginx.conf

  • Rimuovi le tre righe sotto “Sono consentite solo le richieste al nostro host”.
Un terminale che evidenzia una parte della configurazione Nginx docker da rimuovere.
  • Crea il tuo contenitore Docker eseguendo il seguente comando:

docker compose up -d

Creazione di un proxy inverso Nginx SSL

A questo punto, ora hai un’installazione Stikked in esecuzione sulla porta 8080. Anche se puoi usarlo così com’è, il contenitore Stikked di base può essere insicuro poiché non crittografa la sua connessione per impostazione predefinita. Per risolvere questo problema, è necessario creare un proxy inverso in grado di ascoltare le connessioni in entrata che poi crittografa tramite SSL.

  • Crea un nuovo file di configurazione del sito in “/etc/nginx/sites-available/”

sudo nano /etc/nginx/sites-available/stikked

  • Incolla il seguente codice all’interno del tuo nuovo file del sito. Questo è un semplice proxy inverso che ascolta le connessioni non crittografate in entrata sulla porta 80 e reindirizza tutte le query alla porta 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;
}}

Un terminale che mostra un esempio di configurazione del proxy inverso Nginx.
  • Crea un collegamento simbolico per il file del tuo sito all’interno di “/etc/nginx/sites-enabled” e rimuovi il file del sito predefinito al suo interno:

sudo ln -s /etc/nginx/sites-available/stikked /etc/nginx/sites-enabled/

  • Testa la tua configurazione Nginx per eventuali errori, quindi abilita il servizio Nginx tramite systemctl:

sudo nginx -tsudo systemctl reload nginx.service

Installazione di un certificato SSL

Con il tuo proxy inverso attivo e funzionante, ora puoi richiedere un certificato SSL per la tua istanza Stikked. L’opzione più semplice è installare il pacchetto snap certbot dalla Electronic Frontier Foundation.

  • Assicurati che i file binari dello snap principale siano aggiornati e in esecuzione:

sudo snap install core
sudo snap refresh core

  • Installa certbot usando il binario snap della tua macchina Stikked:

sudo snap install certbot --classic

Un terminale che mostra il processo di installazione di certbot.
  • Verifica se il programma funziona correttamente collegando il tuo indirizzo email a certbot:

sudo certbot register --agree-tos -m ramces@email.invalid

  • Esegui di nuovo certbot per creare un certificato SSL per la tua istanza Stikked:

sudo certbot --nginx -d my-stikked-installation.com

  • Apri un browser Web e controlla se la tua istanza Stikked è in esecuzione con SSL.
Uno screenshot che mostra un'istanza Stikked funzionante.

Disegna la tua installazione stikked

Tutti i dati di stile esistono nella directory chiamata “themes” sotto la directory “htdocs” del tuo repository Git. Per i calci, dai un’occhiata all’interno della sottodirectory per vedere alcune scelte interessanti.

  • Entra nel repository Stikked Git e vai alla directory “htdocs/themes”.

cd ~/Stikked/htdocs/themes

  • La maggior parte delle scelte stilistiche vengono effettuate all’interno di ogni cartella del tema. Ad esempio, il tema geocities trasforma il tuo Stikked in modo che sembri proprio un sito Web negli anni ’90.
Uno screenshot che mostra un tema retrò per Stikked.
  • Per modificare l’aspetto della tua istanza, devi prima chiudere il container Docker:

docker compose down

  • Apri il file di configurazione principale della tua istanza utilizzando il tuo editor di testo preferito:

nano ~/Stikked/docker/stikked.php

  • Scorri verso il basso fino alla riga che contiene la $config['theme']variabile e cambia il suo valore in “cleanwhite”.
Un terminale che mostra la variabile del tema per l'istanza corrente.
  • Salva il tuo file di configurazione principale e ricarica il tuo contenitore Docker:

docker compose up -d

  • Apri un browser web e carica la tua nuova pagina web. Ecco la mia pagina “Crea” dopo aver caricato il tema cleanwhite.
Uno screenshot che mostra Stikked in esecuzione con un tema bianco pulito.

Caratteristiche

Stikked ha una serie di caratteristiche interessanti che lo distinguono dalla massa di altri script pastebin.

Prima di tutto, esegue la gamma quando si tratta di evidenziare la sintassi. Stikked supporta un vasto elenco di linguaggi di programmazione e scripting, da C a Bash. Qualunque cosa tu stia codificando, la tua installazione Stikked ti ha coperto.

Uno screenshot che mostra le funzionalità di evidenziazione della sintassi di Stikked.

La lingua di ogni frammento viene visualizzata in una tabella nella pagina “Recenti”; se il poster non ha specificato una lingua per una pasta, viene etichettato come “testo”. La tabella mostra anche il titolo, il nome dell’autore e l’attualità, insieme a un’icona RSS. Il feed RSS si trova su your-stikked-installation.com/lists/rss.

Uno screenshot che mostra un semplice feed RSS per l'istanza Stikked.

La pagina “Trending” è quasi identica ma con l’aggiunta di una colonna “hit” e nessun feed RSS. Gli hit sembrano essere calcolati in base alle visite da indirizzi IP univoci.

Uno screenshot che mostra l'elenco delle paste di tendenza nell'istanza corrente.

Quando crei un incolla, hai la possibilità di impostare una data di scadenza, creare un breve URL utilizzando il servizio su bit.ly e/o rendere privato il post. Si noti che una pasta “privata” non è veramente privata; qualsiasi utente che ha l’URL dell’incolla può vederlo, a meno che tu non abbia abilitato l’autenticazione LDAP – in tal caso, ogni utente registrato con l’URL può vederlo. “Privato” significa solo che il post non verrà visualizzato nelle pagine recenti o di tendenza.

Uno screenshot che mostra una copia privata.

Sicurezza a parte, Stikked fornisce alcune utili utility per visualizzare una pasta. Sono particolarmente soddisfatto del codice di incorporamento.

Uno screenshot che mostra uno snippet di incorporamento di esempio per l'incolla corrente.

Puoi anche rispondere agli incolla e aggiungere le tue modifiche da un modulo sotto l’incolla originale. L’unico svantaggio di questo è che le risposte non rimandano al post originale; se il tuo pastebin ha molti post diversi e risposte fatte in momenti diversi, è facile perdere traccia della loro struttura. Posso solo sperare che lo sviluppatore a un certo punto introduca risposte in thread.

Un’ultima caratteristica è il controllo dello spam, che Stikked chiama “spamadmin”. Configuralo inserendo le credenziali in “docker/stikked.php” alle righe 79 e 80:

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

Vai su your-stikked-installation.com/spamadmin per accedere. Lì puoi vedere quali paste provengono da quali indirizzi IP, rimuovere le paste e bloccare gli intervalli IP.

Uno screenshot che mostra il pannello di controllo di spamadmin per Stikked.

API

L’API di Stikked ti consente di incollarlo dai client pastebin. L’URL dell’API da utilizzare nel tuo client è your-stikked-installation.com/api/create.

Un esempio di base consiste nell’utilizzare il comando cURL per caricare un file chiamato “smalltalk.st”, impostando titolo, nome, privacy, lingua e tempo di scadenza in minuti:

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

Questo restituirà l’URL della pasta.

Uno screenshot che mostra un esempio di incolla realizzato utilizzando l'API Stikked.

Se desideri un modo semplice per raccogliere e condividere frammenti di testo sul tuo sito web, ti consiglio di provare Stikked.

In quella nota, un modo per ottenere rapidamente alcuni frammenti di testo da condividere è imparare un nuovo linguaggio di programmazione. Scopri come scrivere script Bash consultando la nostra semplice guida per principianti . Puoi anche espandere questa conoscenza leggendo il nostro approfondimento sulle variabili Bash e sui loro usi .

Credito immagine: Christopher Gower tramite Unsplash . Tutte le modifiche e gli screenshot di Ramces Red.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *