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
- 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
- Scrol naar de categorie “mysql:” en vervang de subcategorie “command:” door de volgende code:
command: mysqld
- 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.
- 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’.
- 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;
}}
- 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
- 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.
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.
- 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’.
- 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.
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.
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.
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.
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.
Afgezien van de beveiliging biedt Stikked een aantal handige hulpprogramma’s voor het bekijken van een pasta. Ik ben vooral blij met de insluitcode.
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.
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.
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