{"id":7113,"date":"2012-05-01T05:20:09","date_gmt":"2012-05-01T03:20:09","guid":{"rendered":"https:\/\/www.gambaru.de\/blog\/?p=7113"},"modified":"2019-10-09T01:30:31","modified_gmt":"2019-10-08T23:30:31","slug":"lighttpd-webserver-konfiguration-mit-ssl-und-authentifizierung","status":"publish","type":"post","link":"https:\/\/gambaru.de\/blog\/2012\/05\/01\/lighttpd-webserver-konfiguration-mit-ssl-und-authentifizierung\/","title":{"rendered":"Lighttpd: Webserver-Konfiguration mit SSL und Authentifizierung"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"lazy\" class=\"alignleft size-full wp-image-7176\" title=\"light_logo_170px\" src=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/04\/light_logo_170px1-1-1.png\" alt=\"\" width=\"170\" height=\"168\" \/><br \/>\nIm folgenden Beitrag geht es mal nicht um die St\u00e4rken und Schw\u00e4chen verschiedener Webserver, sondern um die Konfiguration des Webservers f\u00fcr mein Spieleserver-Projekt <a href=\"http:\/\/linuxiuvat.de\">linuxiuvat.de<\/a>, das weiter in der Entstehung ist und bei dem ich fast ausschlie\u00dflich auf statische Inhalte setze. Wer selbst am \u00fcberlegen ist, ob er einen Ubuntu-LTS- oder Debian-Server in Zukunft aufsetzen und einen Webserver betreiben m\u00f6chte, findet hier vielleicht die richtigen Informationen.<br \/>\nDer Artikel kann nicht die gesamte Dokumentation zu <a href=\"http:\/\/lighttpd.net\">Lighttpd<\/a> ersetzen. Wer aber meine kommentierte Konfigurationsdatei liest und die Abschnitte zu den verschiedenen Modulen dazu in Beziehung setzt, sollte einen guten \u00dcberblick bekommen, wie man mit ein paar Handgriffen einen ressourcenschonenden Webserver mit SSL und Authentifizierung f\u00fcr einen eigenen Webauftritt gestalten kann.<\/p>\n<h2>Warum Lighttpd?<\/h2>\n<p>F\u00fcr ein privates Projekt mit fast ausschlie\u00dflich statischen Inhalten ist Lighttpd bestens geeignet. Sein Speicherverbrauch ist \u00e4u\u00dferst gering, was ihn ideal f\u00fcr eine vServer-Umgebung macht. Im Regelfall zeigt mir htop nach einer Basisinstallation an, dass Lighty ungef\u00e4hr 1% von den verf\u00fcgbaren 225 MB des vServers f\u00fcr sich beansprucht und auch mit ein paar zus\u00e4tzlichen Modulen steigt dieser Wert kaum an.<br \/>\nLighttpd hat in der Vergangenheit bei <a href=\"http:\/\/blog.lighttpd.net\/articles\/2006\/12\/28\/lighttpd-powers-5-alexa-top-250-sites\">viel gr\u00f6\u00dferen Projekten<\/a> bewiesen, dass er sich ideal zum Ausliefern von statischen Inhalten eignet. Au\u00dferdem ist die <a href=\"http:\/\/redmine.lighttpd.net\/projects\/lighttpd\/wiki\">Dokumentation<\/a> ausgezeichnet und die bedingte Konfiguration empfand ich als \u00fcbersichtlich und logisch.<br \/>\nDas weitere Angebot an freien Webservern ist wirklich gro\u00df. Einen guten \u00dcberblick verschafft z.B.<\/p>\n<p><code>aptitude search '~shttpd'<\/code><\/p>\n<p><code><\/code><br \/>\n<a href=\"http:\/\/nginx.org\/\">Nginx<\/a> ragt hier als weitere sehr gute Alternative heraus. Doch alle m\u00fcssen sich mit der Referenz, <a href=\"http:\/\/httpd.apache.org\/\">Apache<\/a>, messen lassen. Die Wahl h\u00e4ngt wie immer von den eigenen Anspr\u00fcchen ab, weswegen man nicht pauschal einen Webserver zum Non plus ultra erkl\u00e4ren kann.<br \/>\nWer es wirklich gen\u00fcgsam haben m\u00f6chte, sollte sich <a href=\"http:\/\/www.busybox.net\/\">Busybox<\/a> merken, denn das bringt neben vielen UNIX-Werkzeugen auch einen eigenen Webserver mit! \ud83d\ude42<\/p>\n<h2>Installation<\/h2>\n<p><code>aptitude install lighttpd<\/code><\/p>\n<h2>Wichtige Fakten<\/h2>\n<ul>\n<li><strong>Zentrale Konfigurationsdatei<\/strong>: \/etc\/lighttpd\/lighttpd.conf<\/li>\n<li><strong>Zus\u00e4tzliche Konfiguration<\/strong>: \/etc\/lighttpd\/conf-available\/<\/li>\n<li><strong>Aktivieren bzw. Deaktivieren von Modulen<\/strong>: lighty-enable-mod <em>Name_des_Moduls<\/em> bzw. lighty-disable-mod <em>Name_des_Moduls<\/em>. Konfigurationsdateien werden von \/conf-available\/ nach \/conf-enabled\/ verlinkt und somit aktiviert.<\/li>\n<li><strong>Einziger Benutzer<\/strong>: linuxiuvat<\/li>\n<li><strong>Standard-Webserver-Root<\/strong>: \/var\/www\/server<\/li>\n<li><strong>Ohne SSL<\/strong>: Symlink von \/var\/www\/linuxiuvat.de -&gt; \/home\/linuxiuvat\/linuxiuvat.de<\/li>\n<li><strong>Mit SSL<\/strong>: Zwei Subdomains munin.linuxiuvat.de und stats.linuxiuvat.de<\/li>\n<li><strong>Standardmodule<\/strong>: mod_access, mod_alias, mod_compress, mod_redirect, mod_expire<\/li>\n<li><strong>Zus\u00e4tzliche Module<\/strong>: mod_ssl, mod_cgi, mod_auth, mod_status, mod_accesslog<\/li>\n<\/ul>\n<h2>Meine lighttpd.conf<\/h2>\n<p>Meine eigene lighttpd.conf in kommentierter Fassung. Fragen, Anregungen oder Kritik bitte jederzeit in die Kommentare posten.<\/p>\n<h3><a href=\"https:\/\/www.gambaru.de\/blog\/wp-content\/uploads\/2012\/05\/lighttpd.txt\">lighttpd.conf<\/a><\/h3>\n<h2>Konfiguration<\/h2>\n<h3>Virtuelle Hosts<\/h3>\n<p>Um virtuelle Hosts zu verwalten, bietet Lighttpd verschiedene M\u00f6glichkeiten an. F\u00fcr gr\u00f6\u00dfere Projekte empfiehlt sich das schlichte und effektive <a href=\"http:\/\/redmine.lighttpd.net\/projects\/lighttpd\/wiki\/Docs:ModSimpleVhost\">mod_simple_vhost<\/a> oder das verbesserte <a href=\"http:\/\/redmine.lighttpd.net\/projects\/lighttpd\/wiki\/Docs:ModEVhost\">mod_evhost<\/a>. Wer selbst zum Webhoster werden m\u00f6chte und zahlreiche Domains verwalten muss, sollte sich die datenbankgest\u00fctzte und programmierbare L\u00f6sung namens <a href=\"http:\/\/redmine.lighttpd.net\/projects\/lighttpd\/wiki\/Docs:ModMySQLVhost\">mod_mysql_vhost<\/a> genauer anschauen.<br \/>\nF\u00fcr kleine Projekte mit einer \u00fcberschaubaren Anzahl von Domains und Subdomains ist aber Lightys bedingte Konfiguration vollkommen ausreichend.<\/p>\n<h3>Hauptseite ohne SSL<\/h3>\n<p>Die Inhalte werden auf der Hauptseite unverschl\u00fcsselt ausgeliefert, wozu die $SERVER[\"socket\"]-Bedingung Anwendung findet. Das Dokumenten-Wurzelverzeichnis wird in das Home-Verzeichnis des Benutzers linuxiuvat verlinkt. Neue Inhalte werden dort eingestellt. Die Host-Bedingung pr\u00fcft, ob entweder <em>www.linuxiuvat.de<\/em> oder nur <em>linuxiuvat.de<\/em> aufgerufen wurde und f\u00fchrt danach alle Anweisungen im Konfigurationsblock aus. Zus\u00e4tzlich zur Datei access.log, die sp\u00e4ter noch vorgestellt wird, ist hier noch der Pfad zu einer angepassten 404-Fehlerseite zu sehen, sowie der Pfad zur error.log.<\/p>\n<pre class=\"brush:plain\">$SERVER[\"socket\"] == \"134.0.24.218:80\" {\n\t$HTTP[\"host\"] =~ \"^(www.)?linuxiuvat.de$\" {\n\t\tserver.document-root = \"\/var\/www\/linuxiuvat.de\"\n\t\tserver.error-handler-404 = \"\/e404.htm\"\n\t\taccesslog.filename = \"\/var\/log\/lighttpd\/linuxiuvat.de\/access.log\"\n\t\tserver.errorlog = \"\/var\/log\/lighttpd\/linuxiuvat.de\/error.log\"\n    }\n}\n<\/pre>\n<p>Mit der folgenden Bedingung l\u00e4sst sich verhindern, dass die Webseite direkt \u00fcber die Eingabe der IP-Adresse aufgerufen werden kann, wobei das Modul <a href=\"http:\/\/redmine.lighttpd.net\/projects\/lighttpd\/wiki\/Docs:ModAccess\">mod_access<\/a> Anwendung findet.<\/p>\n<pre class=\"brush:plain\">$HTTP[\"host\"] =~ \"134.0.24.218\" {\n\turl.access-deny = ( \"\" )\n}\n<\/pre>\n<h3>mod_cgi<\/h3>\n<p>Die einzige CGI-Datei, die ich z.Z. benutze, befindet sich im Verzeichnis \/cgi-bin\/. Sie kommt zum Einsatz, wenn jemand einen Kommentar in meinem mit <a href=\"https:\/\/www.gambaru.de\/blog\/2012\/04\/21\/chronicle-bloggen-mit-dem-blogkompilierer\/\">Chronicle erzeugten Newsblog<\/a> hinterlassen m\u00f6chte.<br \/>\nDas Modul wird mit<\/p>\n<p><code>lighty-enable-mod cgi<\/code><\/p>\n<p><code><\/code><br \/>\naktiviert.<\/p>\n<pre class=\"brush:plain\">$HTTP[\"url\"] =~ \"^\/cgi-bin\/\" {\n\tcgi.assign = ( \"\" =&gt; \"\/usr\/bin\/perl\" )\n}\n<\/pre>\n<h3>mod_accesslog<\/h3>\n<p>Mit dem Modul <a href=\"http:\/\/redmine.lighttpd.net\/projects\/lighttpd\/wiki\/Docs:ModAccessLog\">mod_accesslog<\/a> werden alle Anfragen an den Webserver mitgeloggt. Aktiviert wird es mit<\/p>\n<p><code>lighty-enable-mod accesslog<\/code><\/p>\n<p><code><\/code><br \/>\n<strong>1.<\/strong> <em>\/etc\/lighttpd\/conf-available\/10-accesslog<\/em><\/p>\n<pre class=\"brush:plain\">server.modules += ( \"mod_accesslog\" )\naccesslog.filename = \"\/var\/log\/lighttpd\/access.log\"\n<\/pre>\n<p>Damit die Datei access.log f\u00fcr jeden Host einzeln angelegt wird, kann man sie wie bei Lighttpd \u00fcblich in eine bedingte Konfiguration einbinden.<\/p>\n<blockquote><p>accesslog.filename = \"\/var\/log\/lighttpd\/linuxiuvat.de\/access.log\"<\/p><\/blockquote>\n<h3>mod_expire<\/h3>\n<p>Das Modul <a href=\"http:\/\/redmine.lighttpd.net\/projects\/lighttpd\/wiki\/Docs:ModExpire\">mod_expire<\/a> hilft dabei statische Inhalte aggressiv zu cachen, d.h. Bilder, CSS- und Javascriptdateien erhalten bei der \u00dcbertragung an den Webbrowser ein Verfallsdatum bis zu dem der Browser die Dateien aus seinem Cache l\u00e4dt anstatt sie neu vom Server anzufordern. Das spart Bandbreite und f\u00fchrt zu schnelleren Ladezeiten.<br \/>\nAktivieren mit<\/p>\n<p><code>lighty-enable-mod expire<\/code><\/p>\n<p><code><\/code><br \/>\nDie Bedingung l\u00e4sst sich z.B. so schreiben, dass nur Dateien mit einer bestimmten Dateiendung zwischengespeichert werden sollen. In diesem Fall betr\u00e4gt die Verfallszeit sieben Tage vom ersten Aufruf an.<\/p>\n<pre class=\"brush:plain\">\t$HTTP[\"url\"] =~ \".(jpg|gif|png|css|js)$\" {\n\t     expire.url = ( \"\" =&gt; \"access 7 days\" )\n\t}\n<\/pre>\n<p>Nat\u00fcrlich kann man die Bedingung auch so schreiben, dass die Dateien nur aus zwei verschiedenen Verzeichnissen gecached werden sollen.<\/p>\n<pre class=\"brush:plain\">\t$HTTP[\"url\"] =~ \"^\/img\/|\/stats\/oa\/icons\/\" {\n\t     expire.url = (\"\" =&gt; \"access 7 days\")\n\t}\n<\/pre>\n<p>Mit Hilfe des Firefox-Plugins <a href=\"https:\/\/addons.mozilla.org\/de\/firefox\/addon\/live-http-headers\/\">Live-HTTP-Headers<\/a> oder mit <a href=\"http:\/\/packages.debian.org\/curl\">curl<\/a> kann man schnell feststellen, ob tats\u00e4chlich der richtige HTTP-Header verschickt wird.<\/p>\n<p><code>curl -I http:\/\/linuxiuvat.de\/img\/openarena.jpg<\/code><\/p>\n<p><code><\/code><br \/>\nQuelle: Forum von nixcraft.com.<\/p>\n<h3>mod_ssl<\/h3>\n<p>Zum Aktivieren einer verschl\u00fcsselten SSL-Verbindung per HTTPS gen\u00fcgt wieder ein<br \/>\n<code>lighty-enable-mod ssl<\/code><br \/>\nDas SSL-Zertifikat habe ich mir selbst ausgestellt, was ich f\u00fcr kleine Projekte, bei denen man der einzige Betrachter der verschl\u00fcsselten Seite ist auch empfehlen kann. Wer jedoch eine Shop-Seite zusammenzimmert sollte seine Kunden wenn m\u00f6glich nicht mit einer Warnmeldung im Browser verschrecken und ein \"richtiges\" Zertifikat kaufen. \ud83d\ude42<\/p>\n<p><strong>Als Superuser<\/strong>:<\/p>\n<p><code>openssl req -new -x509 -keyout linuxiuvat.de.pem -out linuxiuvat.de.pem -days 365 -nodes<\/code><\/p>\n<p><code><\/code><br \/>\nDie Pem-Datei wurde nach <em>\/etc\/lighttpd\/ssl\/linuxiuvat.de\/linuxiuvat.de.pem<\/em> kopiert und die Dateirechte aus Sicherheitsgr\u00fcnden mit <strong>chmod 400<\/strong> eingeschr\u00e4nkt.<\/p>\n<p><strong>1.<\/strong> <em>\/etc\/lighttpd\/conf-available\/10-ssl.conf<\/em><br \/>\nIch habe die Konfiguration getrennt und den Teil, der sich um die SSL-Engine selbst dreht in der 10-ssl.conf belassen. Wichtig ist hier nur die richtige Adresse f\u00fcr den Socket einzutragen, also eure IP-Adresse und den Port des Webservers. Alternativ kann man auch <em>:443<\/em> oder <em>0.0.0.0:443<\/em> schreiben, wenn man m\u00f6chte, dass der Webserver auf allen Interfaces Anfragen entgegennimmt. Die Schreibweise muss aber \u00fcberall die gleiche sein.<\/p>\n<pre class=\"brush:plain\">$SERVER[\"socket\"] == \"134.0.24.218:443\" {\n     ssl.engine = \"enable\"\n     ssl.pemfile = \"\/etc\/lighttpd\/ssl\/linuxiuvat.de\/linuxiuvat.de.pem\"\n     ssl.cipher-list = \"ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM\"\n     ssl.honor-cipher-order = \"enable\"\n}<\/pre>\n<p><strong>2.<\/strong> <em>\/etc\/lighttpd\/lighttpd.conf<\/em><br \/>\nDurch die bedingte Konfiguration sind die beiden Subdomains <em>munin.linuxiuvat.de<\/em> und <em>stats.linuxiuvat.de<\/em> nur \u00fcber HTTPS zu erreichen. Es wurde jeweils das Dokumenten-Wurzelverzeichnis ge\u00e4ndert, so dass es auf den Standardausgabepfad von Munin und Awffull zeigt. Die Statusseite ist \u00fcber https:\/\/munin.linuxiuvat.de\/status zu erreichen und wird durch das Modul mod_status aktiviert.<\/p>\n<pre class=\"brush:plain\">$SERVER[\"socket\"] == \"134.0.24.218:443\" {\n\t\t$HTTP[\"host\"] =~ \"(^|.)munin.linuxiuvat.de$\" {\n\t\t\tserver.document-root = \"\/var\/cache\/munin\/www\"\n\t\t\tstatus.status-url = \"\/status\"\n\t\t}\n\t\t$HTTP[\"host\"] =~ \"(^|.)stats.linuxiuvat.de$\" {\n\t\t\tserver.document-root = \"\/var\/www\/awffull\/\"\n\t\t}\n}<\/pre>\n<h3>mod_auth<\/h3>\n<p>Das Authentifizierungsmodul ist notwendig, um den Zugriff auf einzelne Verzeichnisse einzuschr\u00e4nken. In meinem Fall gen\u00fcgt es, dass ich die Munin- und Awffull-Statistiken anschauen kann. Das Modul <a href=\"http:\/\/redmine.lighttpd.net\/projects\/lighttpd\/wiki\/Docs:ModAuth\">mod_auth<\/a> wird mit<\/p>\n<p><code>lighty-enable-mod auth<\/code><\/p>\n<p><code><\/code><br \/>\naktiviert. Es gibt zwei verschiedene Methoden sich zu authentifizieren - Basic und Digest. Je nach Methode existieren unterschiedliche Backends, wie die Passw\u00f6rter aufgebaut und gespeichert werden. Ich habe mich f\u00fcr Digest und htdigest entschieden, wodurch das Passwort nicht in Klartext \u00fcbertragen wird und als MD5-Hash abgespeichert wird. Alle Methoden sind dennoch nur dann wirklich sicher, wenn das Passwort \u00fcber eine verschl\u00fcsselte Verbindung \u00fcbertragen wird.<br \/>\n<strong>1.<\/strong> <em>\/etc\/lighttpd\/conf-available\/10-auth.conf<\/em><\/p>\n<pre class=\"brush:plain\">server.modules += ( \"mod_auth\" )\nauth.backend = \"htdigest\"\nauth.backend.htdigest.userfile = \"\/etc\/lighttpd\/.passwd\"\nauth.debug = 2\n$HTTP[\"host\"] =~ \"(^|.)munin.linuxiuvat.de$\" {\n auth.require = ( \"\" =&gt;\n    (\n    \"method\" =&gt; \"digest\",\n    \"realm\" =&gt; \"privat\",\n    \"require\" =&gt; \"valid-user\"\n    ),\n )\n}<\/pre>\n<p>Auth.debug=2 ist sehr gespr\u00e4chig, aber hilfreich, wenn man mehr \u00fcber erfolgreiche und nicht erfolgreiche Loginversuche wissen m\u00f6chte. Die versteckte Passwortdatei <em>.passwd<\/em> mit den ben\u00f6tigten Inhalten l\u00e4sst sich wie folgt erstellen. Der \"Realm\" kann beliebig gew\u00e4hlt werden.<\/p>\n<p><code>htdigest -c \/etc\/lighttpd\/.passwd 'privat' Bob<\/code><\/p>\n<p><code><\/code><br \/>\nDas Programm htdigest befindet sich im Paket <a href=\"http:\/\/packages.debian.org\/apache2-utils\">apache2-utils<\/a> und wird nur f\u00fcr diese eine Aufgabe ben\u00f6tigt. Danach hat nur noch der Benutzer Bob mit dem zuvor eingegebenen Passwort Zugriff auf das Verzeichnis, wobei die gesamte Verbindung gegen\u00fcber Dritten per SSL abgesichert ist.<\/p>\n<h3>mod_status<\/h3>\n<p>Mit <a href=\"http:\/\/redmine.lighttpd.net\/projects\/lighttpd\/wiki\/Docs:ModStatus\">mod_status<\/a> gibt es Auskunft \u00fcber Uptime, Anfragen pro Sekunde und aktive Verbindungen, kurz zusammengefasst also \u00fcber den Status des Webservers. Die HTML-Seite ist schlicht und \u00fcbersichtlich. Um die Daten per Munin mit einem Graphen zu visualisieren kann man noch ein <em>?auto<\/em> an die URL anh\u00e4ngen, wodurch die Ausgabe als Text dargestellt wird. Hierzu in einem anderen Artikel mehr.<br \/>\nDas Modul wird mit<br \/>\n<code>lighty-enable-mod status<\/code><br \/>\naktiviert. Die Zeile<\/p>\n<blockquote><p>status.status-url = \"\/status\"<\/p><\/blockquote>\n<p>muss wie in der Konfiguration gezeigt innerhalb der bedingten Host-Konfiguration eingef\u00fcgt werden.<\/p>\n<h2>Was sonst noch?<\/h2>\n<p>Lighttpd bietet noch weit mehr M\u00f6glichkeiten und Module. Das sind zur Zeit aber alle, die ich f\u00fcr mein Projekt und dieses Beispiel verwende. Man sollte im Hinterkopf noch <a href=\"http:\/\/redmine.lighttpd.net\/projects\/lighttpd\/wiki\/Docs:ModEvasive\">mod_evasive<\/a> und die Variablen<\/p>\n<blockquote><p>server.kbytes-per-second<br \/>\nconnection.kbytes-per-second<\/p><\/blockquote>\n<p>behalten, wenn man den Traffic auf dem Webserver besser steuern m\u00f6chte.<br \/>\nF\u00fcr Lighttpd gilt: Fast jedes Problem l\u00e4sst sich mit der bedingten Konfiguration l\u00f6sen.<\/p>\n<h2>Links<\/h2>\n<ul>\n<li><a href=\"http:\/\/redmine.lighttpd.net\/projects\/lighttpd\/wiki\/\">Dokumentation und Wiki von Lighttpd<\/a><\/li>\n<li><a href=\"http:\/\/www.howtoforge.com\/sitemap\/web-server\/lighttpd\">howtoforge.com<\/a><\/li>\n<li><a href=\"https:\/\/calomel.org\/lighttpd.html\">calomel.org<\/a><\/li>\n<li><a href=\"http:\/\/www.cyberciti.biz\/tips\/category\/lighttpd\">Nixcraft - cybercity.biz<\/a><\/li>\n<li><a href=\"http:\/\/library.linode.com\/web-servers\/lighttpd\/debian-5-lenny\">library.linode.com<\/a><\/li>\n<li><a href=\"http:\/\/wiki.ubuntuusers.de\/lighttpd\">wiki.ubuntuusers.de<\/a><\/li>\n<li><a href=\"http:\/\/developer.yahoo.com\/performance\/rules.html\">Best Practices for speeding up your web site<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Im folgenden Beitrag geht es mal nicht um die St\u00e4rken und Schw\u00e4chen verschiedener Webserver, sondern um die Konfiguration des Webservers f\u00fcr mein Spieleserver-Projekt linuxiuvat.de, das weiter in der Entstehung ist und bei dem ich fast ausschlie\u00dflich auf statische Inhalte setze. Wer selbst am \u00fcberlegen ist, ob er einen Ubuntu-LTS- oder Debian-Server in Zukunft aufsetzen und &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/gambaru.de\/blog\/2012\/05\/01\/lighttpd-webserver-konfiguration-mit-ssl-und-authentifizierung\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eLighttpd: Webserver-Konfiguration mit SSL und Authentifizierung\u201c<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[53,107,108,202,204],"_links":{"self":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/7113"}],"collection":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/comments?post=7113"}],"version-history":[{"count":2,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/7113\/revisions"}],"predecessor-version":[{"id":10700,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/7113\/revisions\/10700"}],"wp:attachment":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/media?parent=7113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/categories?post=7113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/tags?post=7113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}