Run je eigen Pastebin met Stikked

Run je eigen Pastebin met Stikked

Als je een soort ontwikkelaar bent, heb je waarschijnlijk wel eens gehoord van Pastebin.com, de meest gebruikte webtoepassing voor het plakken en delen van tekstfragmenten. Pastebin.com is geweldig, maar het is niet de enige pastebin-tool die er is.

Sterker nog, het komt steeds vaker voor dat websites hun eigen pastebins hosten. Het geeft je meer vrijheid. Er zijn veel open-source pastebin-implementaties en Stikked is een van de handigste met zijn geavanceerde functies en gestroomlijnde gebruikersinterface.

Stikked is gebouwd met PHP en jQuery en maakt gebruik van het CodeIgniter-framework.

Stikked installeren

Stikked vereist dat uw server actief is:

  • Git
  • Nginx
  • Docker en Docker Compose
  • Om de nieuwste versie van Stikked te downloaden, gaat u naar de Stikked GitHub-pagina of gaat u naar uw opdrachtregel en voert u het volgende uit:

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

  • Ga naar de map Stikked:

cd. /Stikked

Een terminal die het git-kloonproces voor de Stikked-repository laat zien.
  • Open het bestand “docker-compose.yml” binnenin met uw favoriete teksteditor.
  • Blader naar de variabele “ports:” onder de categorie “services:” en wijzig de waarde in het volgende:

ports:
- 8080:80/tcp

Een terminal die de ports-variabele toont voor de Stikked docker-container.
  • Scrol naar de categorie “mysql:” en vervang de subcategorie “command:” door de volgende code:

command: mysqld

Een terminal met de nieuwe mysql-opdracht voor de docker-container.
  • Open het hoofdconfiguratiebestand van Stikked:

nano ~/Stikked/docker/stikked.php

  • Ga naar de regel die de variabele bevat $config['base_url']en vervang “localhost” door de volledig gekwalificeerde domeinnaam van uw systeem. Sla het bestand op en sluit het af.
Een terminal met een voorbeeld van een basis-URL voor de instantie.
  • Open het bestand “nginx.conf” in de Stikked-container:

nano ~/Stikked/docker/nginx.conf

  • Verwijder de drie regels onder ‘Alleen verzoeken aan onze host zijn toegestaan’.
Een terminal die een deel van de docker Nginx-configuratie markeert om te verwijderen.
  • Bouw uw Docker-container door de volgende opdracht uit te voeren:

docker compose up -d

Een SSL Nginx Reverse Proxy maken

Op dit moment heb je nu een Stikked-installatie die draait op poort 8080. Hoewel je dit kunt gebruiken zoals het is, kan de standaard Stikked-container onveilig zijn omdat deze zijn verbinding niet standaard versleutelt. Om dit op te lossen, moet u een reverse proxy maken die kan luisteren naar inkomende verbindingen die vervolgens worden gecodeerd via SSL.

  • Maak een nieuw siteconfiguratiebestand onder “/etc/nginx/sites-available/”

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

  • Plak de volgende code in uw nieuwe sitebestand. Dit is een eenvoudige reverse proxy die luistert naar inkomende niet-versleutelde verbindingen op poort 80 en alle vragen omleidt naar poort 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;
}}

Een terminal met een voorbeeld van een Nginx reverse proxy-configuratie.
  • Maak een symbolische link voor uw sitebestand in “/etc/nginx/sites-enabled” en verwijder het standaard sitebestand erin:

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

  • Test uw Nginx-configuratie op eventuele fouten en schakel vervolgens de Nginx-service in via systemctl:

sudo nginx -tsudo systemctl reload nginx.service

Een SSL Certificaat installeren

Nu uw reverse proxy actief is, kunt u nu een SSL-certificaat aanvragen voor uw Stikked-instantie. De eenvoudigste optie is om het certbot snap-pakket van de Electronic Frontier Foundation te installeren.

  • Zorg ervoor dat uw kern-snap-binaries up-to-date zijn en actief zijn:

sudo snap install core
sudo snap refresh core

  • Installeer certbot met behulp van het snap-binaire bestand van uw Stikked-machine:

sudo snap install certbot --classic

Een terminal die het installatieproces voor certbot laat zien.
  • Test of het programma goed werkt door je e-mailadres aan certbot te koppelen:

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

  • Voer certbot opnieuw uit om een ​​SSL-certificaat voor uw Stikked-instantie te maken:

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

  • Open een webbrowser en controleer of uw Stikked-instantie onder SSL draait.
Een screenshot van een werkende Stikked-instantie.

Styling van uw Stikked-installatie

Alle stijlgegevens bevinden zich in de map genaamd “themes” onder de map “htdocs” van uw Git-repository. Neem voor de kicks een kijkje in de submap om enkele interessante keuzes te zien.

  • Ga naar de Stikked Git-repository en navigeer naar de map “htdocs/themes”.

cd ~/Stikked/htdocs/themes

  • De meeste stijlkeuzes worden gemaakt in elke themamap. Het geocities-thema transformeert uw Stikked bijvoorbeeld zodat het eruitziet als een website in de jaren negentig.
Een screenshot met een retro-thema voor Stikked.
  • Om het uiterlijk van uw instantie te wijzigen, moet u eerst uw Docker-container afsluiten:

docker compose down

  • Open het hoofdconfiguratiebestand van uw instantie met uw favoriete teksteditor:

nano ~/Stikked/docker/stikked.php

  • Scrol omlaag naar de regel die de $config['theme']variabele bevat en wijzig de waarde in ‘cleanwhite’.
Een terminal die de themavariabele voor de huidige instantie weergeeft.
  • Sla uw hoofdconfiguratiebestand op en laad uw Docker-container opnieuw:

docker compose up -d

  • Open een webbrowser en laad uw nieuwe webpagina. Hier is mijn “Create” -pagina na het laden van het cleanwhite-thema.
Een screenshot waarop Stikked te zien is met een cleanwhite-thema.

Functies

Stikked heeft een aantal interessante functies waardoor het zich onderscheidt van de massa andere pastebin-scripts.

Ten eerste loopt het hele gamma als het gaat om syntaxisaccentuering. Stikked ondersteunt een enorme lijst met programmeer- en scripttalen, van C tot Bash. Waar je ook in codeert, je Stikked-installatie heeft je gedekt.

Een screenshot met de functies voor syntaxisaccentuering van Stikked.

De taal van elk fragment wordt weergegeven in een tabel op de pagina ‘Recent’; als de poster geen taal heeft opgegeven voor een pasta, dan is het gelabeld als ’tekst’. De tabel geeft ook de titel, de naam van de poster en de recentheid weer, samen met een RSS-pictogram. De RSS-feed bevindt zich op your-stikked-installation.com/lists/rss.

Een screenshot met een kale RSS-feed voor de Stikked-instantie.

De pagina “Trending” is bijna identiek, maar met de toevoeging van een kolom “hits” en geen RSS-feed. Hits lijken te worden berekend op basis van bezoeken van unieke IP-adressen.

Een schermafbeelding met de lijst met trending-pasta's in de huidige instantie.

Wanneer je een pasta maakt, heb je de mogelijkheid om een ​​vervaldatum in te stellen, een korte URL te maken met behulp van de service op bit.ly en/of de post privé te maken. Merk op dat een “private” pasta niet echt privé is; elke gebruiker die de URL van de pasta heeft, kan deze zien, tenzij u LDAP-authenticatie hebt ingeschakeld – in dat geval kan elke geregistreerde gebruiker met de URL deze zien. ‘Privé’ betekent alleen dat het bericht niet wordt weergegeven op de pagina’s Recent of Trending.

Een screenshot met een privépasta.

Afgezien van de beveiliging biedt Stikked een aantal handige hulpprogramma’s voor het bekijken van een pasta. Ik ben vooral blij met de insluitcode.

Een screenshot met een voorbeeld van een insluitfragment voor de huidige pasta.

U kunt ook reageren op plakken en uw eigen bewerkingen toevoegen vanuit een formulier onder de originele plak. Het enige nadeel hiervan is dat antwoorden niet teruglinken naar het oorspronkelijke bericht; als je pastebin veel verschillende berichten en antwoorden heeft die op verschillende tijdstippen zijn gemaakt, is het gemakkelijk om hun structuur uit het oog te verliezen. Ik kan alleen maar hopen dat de ontwikkelaar op een gegeven moment antwoorden met threads zal introduceren.

Een laatste functie is spamcontrole, waarnaar Stikked verwijst als ‘spamadmin’. Stel het in door inloggegevens in te voeren in “docker/stikked.php” op regel 79 en 80:

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

Ga naar uw-stikked-installatie.com/spamadmin om in te loggen. Daar kunt u zien welke pasta’s van welke IP-adressen komen, pasta’s verwijderen en IP-reeksen blokkeren.

Een screenshot van het spamadmin-configuratiescherm voor Stikked.

API

Met de API van Stikked kunt u ernaar plakken vanuit pastebin-clients. De API-URL die u in uw client moet gebruiken, is your-stikked-installation.com/api/create.

Een eenvoudig voorbeeld is om de cURL-opdracht te gebruiken om een ​​bestand met de naam “smalltalk.st” te uploaden, waarbij de titel, naam, privacy, taal en vervaltijd in minuten worden ingesteld:

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

Hiermee wordt de URL van de pasta geretourneerd.

Een screenshot met een voorbeeldpasta gemaakt met behulp van de Stikked API.

Als je op een gemakkelijke manier tekstfragmenten op je eigen website wilt verzamelen en delen, raad ik je aan om Stikked eens te proberen.

Een manier om snel wat tekstfragmenten te delen, is door een nieuwe programmeertaal te leren. Leer hoe u Bash-scripts kunt schrijven door onze eenvoudige gids voor beginners door te nemen . Je kunt deze kennis ook uitbreiden door onze deep dive over Bash-variabelen en hun gebruik te lezen .

Afbeelding tegoed: Christopher Gower via Unsplash . Alle wijzigingen en screenshots door Ramces Red.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *