Alles auf einem Server - heute ein Stikked Installation
Moin moin,
So langsam komme ich an mein Ziel alles auf meinem eigenen Server zu betreiben.
Gestern kam, eigentlich als Docker Variante geplant, ein neues Projekt dazu und es läuft. Diesmal ist es eine Stikked Installation.
Neu dabei ist ein eigenes Pastebin, so bin ich nicht mehr auf die Webseite (Pastebin.com) angewiesen. Unter https://paste.dasnetzundich.de ist diese Seite zukünftig zu finden und werde auch Content daraus in meine Beiträge einbinden. Kann gerne genutzt werden.
Beispielsweise Konfigurationen für Docker-compose.yml Dateien usw.
Mit Stikked kann man Codezeilen, mir anderen Teilen ohne auf Webdienste anderer Anbieter ausweichen zu müssen. Geht komplett anonym und ohne eingerichtetem Konto.
Nur einen Namen eintragen und schon kann es los gehen. Voreingestelllt ist eine Stunde Aufbewahrung, danach wird es gelöscht. Man kann es aber individuell anpassen für seinen Post.
Auf Stikked kam ich auf einen User in einem Nextcloud Chat bei Telegram. Dieser hatte das bereits. Stikked kann hier heruntergeladen werden. Github
Installation
MYSQL Datenbank erstellen
Damit wir Stikked auch nutzen können muss zuerst eine Datebank samt User angelegt werden. User und Passwort merken wir uns, diese Daten brauchen wir später.
sudo mysql -uroot -p
CREATE DATABASE stikked,
CREATE USER 'stikked'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON stikked. * TO 'stikked'@'localhost';
FLUSH PRIVILEGES;
Herunterladen von Stikked und einrichten
Nach dem herunterladen der Zip Datei, diese in /var/www entpacken. Nun die stikked.php anpassen.
sudo vi /var/www/stikked/htdocs/application/config/stikked.php
$config['site_name'] = 'meine Paste Seite';
/**
* Base URL
*
* Set the base URL of Stikked. WITH trailing slash!
*
*/
$config['base_url'] = 'https://paste.domain.tld/';
/**
* Database connection
*
* Credentials for your database
* The database structure will be created automatically
*
*/
$config['db_hostname'] = '127.0.0.1';
$config['db_database'] = 'stikked';
$config['db_username'] = 'stikked';
$config['db_password'] = 'supersecret';
// If you are using sqlite:
// uncomment the configuration lines below.
//$config['db_database'] = 'db/stikked'; // you need to create a directory "db" and give the webserver write access. sqlite needs a writable folder to work properly!
//$config['db_driver'] = 'sqlite';
/**
* Table prefix
* Generate table prefix for stikked db, commonly used if the webhoster only has one db.
* Use underscore as suffix to easily see the tables.
* example: $config['db_prefix'] = 'stikked_';
* use $config['db_prefix'] = ''; if you don't want to use table prefix.
*/
$config['db_prefix'] = '';
in dieser Datei werden der Seitenname, die URL sowie die Daten zur MYSQL Datenbank hinterlegt. Hier sind auch andere Einstellungen möglich wie Theme anpassen, die Standardsprache ändern. Aber dazu später mehr.
Nginx einrichten
Wenn diese Daten hinterlegt wurden, fehlt nur noch eine Nginx Konfiguration. Meine sieht folgendermaßen aus.
sudo vi /etc/nginx/sites-available/paste.domain.tld.conf
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name paste.domain.tld;
set $base /var/www/stikked/htdocs;
root $base/;
# SSL
ssl_certificate /etc/letsencrypt/live/paste.domain.tlde/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/paste.domain.tld/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/paste.domain.tld/chain.pem;
# security headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# . files
location ~ /.(?!well-known) {
deny all;
}
# index.php
index index.php;
# index.php fallback
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# 404
try_files $fastcgi_script_name =404;
# default fastcgi_params
include fastcgi_params;
# fastcgi settings
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
# fastcgi params
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$base/:/usr/lib/php/:/tmp/";
}
# subdomains redirect
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name *.paste.domain.tld;
# SSL
ssl_certificate /etc/letsencrypt/live/paste.domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/paste.domain.tld/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/paste.domain.tld/chain.pem;
return 301 https://paste.domain.tld$request_uri;
}
# HTTP redirect
server {
listen 80;
listen [::]:80;
server_name .paste.domain.tld;
# ACME-challenge
location ^~ /.well-known/acme-challenge/ {
root /var/www/_letsencrypt;
}
location / {
return 301 https://paste.domain.tld$request_uri;
}
}
Anschliessend Nginx neu starten
sudo ln -s /etc/nginx/sites-available/paste.domain.tld.conf /etc/nginx/sites-enabled/paste.domain.tld.conf
sudo nginx -t
sudo service nginx restart