{"id":1606,"date":"2019-08-05T21:40:56","date_gmt":"2019-08-05T19:40:56","guid":{"rendered":"https:\/\/markus-blog.de\/?p=1606"},"modified":"2023-04-03T08:43:58","modified_gmt":"2023-04-03T06:43:58","slug":"how-to-install-mastodon-in-plesk-with-docker-compose","status":"publish","type":"post","link":"https:\/\/markus-blog.de\/index.php\/2019\/08\/05\/how-to-install-mastodon-in-plesk-with-docker-compose\/","title":{"rendered":"How to install Mastodon in Plesk with docker and docker-compose"},"content":{"rendered":"<h3>What is Mastodon?<\/h3>\n<p><a href=\"https:\/\/joinmastodon.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Mastodon<\/a> is a microblogging platform akin to others you may have seen, such as Twitter, but instead of being centralised it is a federated network which operates in a similar way to email.<\/p>\n<p>Like email, you choose your server and whether it\u2019s GMail, Outlook, iCloud, wherever you sign up you know you\u2019ll be able to email everyone you need to so long as you know their address.<\/p>\n<p>The word \u201cinstance\u201d is often used on Mastodon as a synonym of server.<\/p>\n<p>This means there\u2019s no big uncaring company running it all, no shareholders, no central control, none of the targeted advertising we\u2019re all fed up with, just a bunch of people sharing the things they want to share with each other.<\/p>\n<p>(from <a href=\"https:\/\/blog.joinmastodon.org\/2018\/08\/mastodon-quick-start-guide\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/blog.joinmastodon.org\/2018\/08\/mastodon-quick-start-guide\/<\/a>)<\/p>\n<h3>What is this Guide?<\/h3>\n<p>This Guide will create a Mastodon instance on an Ubuntu 16.04 Server managed by Plesk Onyx.<\/p>\n<p>If your Server is running an other linux distribution managed by Plesk, you can also use this guide for setting up your own instance.<\/p>\n<p>I will use a subdomain in this example, but you can use what ever you want.<\/p>\n<h4>Requirements:<\/h4>\n<ul>\n<li>root-access via ssh<\/li>\n<li>Docker extension installed and enabled in Plesk<\/li>\n<li>docker-compose installed<\/li>\n<li>an email-Account to send notifications from your Instance<\/li>\n<\/ul>\n<h4><\/h4>\n<h4>Use the commandline<\/h4>\n<p>These steps you have to do as root on your Plesk-Server.<\/p>\n<h5>Install docker-compose<\/h5>\n<p>Always check the latest release of docker-compose on <a href=\"https:\/\/github.com\/docker\/compose\/releases\" target=\"_blank\" rel=\"noopener noreferrer\">Github<\/a> before you run the commands.<br \/>\nIf you did not install <code>docker-compose<\/code> yet, then you can do this with the following commands:<\/p>\n<pre>curl -L https:\/\/github.com\/docker\/compose\/releases\/download\/1.24.1\/docker-compose-`uname -s`-`uname -m` -o \/usr\/local\/bin\/docker-compose\r\nchmod +x \/usr\/local\/bin\/docker-compose<\/pre>\n<h5>Download Mastodon<\/h5>\n<p>Clone the Mastodon Repository into local directory<\/p>\n<pre>cd ~\/\r\ngit clone https:\/\/github.com\/tootsuite\/mastodon\r\ncd mastodon<\/pre>\n<h5>Change exposed ports<\/h5>\n<p>1. Because the future version of Plesk (Obsidian) will have the option to install Grafana as an extension (for Advanced Monitoring) and Grafana uses the port 3000, we are avoiding a port conflict in this guide. That&#8217;s why we do not publish the port 3000 and 4000 and we customize in <code>docker-compose.yml<\/code>. I use the ports <code>3005<\/code> and <code>4005<\/code>.<\/p>\n<p>2. We will use the prebuilded Images of Mastodon, so we comment build step in <code>docker-compose.yml<\/code>.<\/p>\n<p>3. We will define the the tag for the prebuild Image (actually v2.9.2 -&gt; Check latest Version <a href=\"https:\/\/github.com\/tootsuite\/mastodon\/releases\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>)<\/p>\n<p>So open <code>docker-compose.yml<\/code> in a Text-Editor:<\/p>\n<pre>nano docker-compose.yml<\/pre>\n<p>and edit the port-entries, comment the build step and define the tag for Images:<\/p>\n<pre>web:\r\n#    build: .\r\n    image: tootsuite\/mastodon\r\n    restart: always\r\n    env_file: .env.production\r\n    command: bash -c \"rm -f \/mastodon\/tmp\/pids\/server.pid; bundle exec rails s -p 3000\"\r\n    networks:\r\n      - external_network\r\n      - internal_network\r\n    healthcheck:\r\n      test: [\"CMD-SHELL\", \"wget -q --spider --header 'x-forwarded-proto: https' --proxy=off localhost:3000\/api\/v1\/instance || exit 1\"]\r\n    ports:\r\n      - \"127.0.0.1:3005:3000\"\r\n    depends_on:\r\n      - db\r\n      - redis\r\n#      - es\r\n    volumes:\r\n      - .\/public\/system:\/mastodon\/public\/system\r\n\r\n  streaming:\r\n#    build: .\r\n    image: tootsuite\/mastodon\r\n    restart: always\r\n    env_file: .env.production\r\n    command: node .\/streaming\r\n    networks:\r\n      - external_network\r\n      - internal_network\r\n    healthcheck:\r\n      test: [\"CMD-SHELL\", \"wget -q --spider --header 'x-forwarded-proto: https' --proxy=off localhost:4000\/api\/v1\/streaming\/health || exit 1\"]\r\n    ports:\r\n      - \"127.0.0.1:4005:4000\"\r\n    depends_on:\r\n      - db\r\n      - redis\r\n\r\n  sidekiq:\r\n#    build: .\r\n    image: tootsuite\/mastodon\r\n    restart: always\r\n    env_file: .env.production\r\n    command: bundle exec sidekiq\r\n    depends_on:\r\n      - db\r\n      - redis\r\n    networks:\r\n      - external_network\r\n      - internal_network\r\n    volumes:\r\n      - .\/public\/system:\/mastodon\/public\/system<\/pre>\n<h5><\/h5>\n<h5>Create configuration file<\/h5>\n<p>Mastodon uses the file <code>.env.production<\/code> for configuration. The file exists as <code>.env.production.sample<\/code>, but we create a new one:<\/p>\n<pre>nano .env.production<\/pre>\n<p>copy, paste and change all domain-entries to the one you use:<\/p>\n<pre>LOCAL_DOMAIN=<strong>social.your-domain.tld<\/strong>\r\nSINGLE_USER_MODE=false\r\nSECRET_KEY_BASE=\r\nOTP_SECRET=\r\n\r\n# Database settings\r\nDB_HOST=db\r\nDB_PORT=5432\r\nDB_NAME=postgres\r\nDB_USER=postgres\r\nDB_PASS=\r\n\r\n# Redis settings\r\nREDIS_HOST=redis\r\nREDIS_PORT=6379\r\nREDIS_PASSWORD=\r\n\r\n# Mail settings - \r\nSMTP_SERVER=<strong>your_mail_server<\/strong>\r\nSMTP_PORT=587\r\nSMTP_LOGIN=<strong>notifications@your-domain.tld<\/strong>\r\nSMTP_PASSWORD=<strong>your_smtp_password<\/strong>\r\nSMTP_AUTH_METHOD=plain\r\nSMTP_OPENSSL_VERIFY_MODE=none\r\nSMTP_FROM_ADDRESS=<strong>Mastodon &lt;notifications@your-domain.tld&gt;<\/strong><\/pre>\n<p>Close file and create the secrets:<\/p>\n<p>1. SECRET_KEY_BASE:<\/p>\n<pre>sed -i \"s\/SECRET_KEY_BASE=$\/&amp;$(docker-compose run --rm web bundle exec rake secret)\/\" .env.production<\/pre>\n<p>2. OTP_SECRET:<\/p>\n<pre>sed -i \"s\/OTP_SECRET=$\/&amp;$(docker-compose run --rm web bundle exec rake secret)\/\" .env.production<\/pre>\n<p>3. vapid keys<\/p>\n<pre>docker-compose run --rm web bundle exec rake mastodon:webpush:generate_vapid_key<\/pre>\n<p>Copy the output from the previous command, open <code>.env.production<\/code> in a text editor, and paste the command output in the lines after <code>OTP_SECRET<\/code>.<\/p>\n<p>It should look like this:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1633\" src=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-05-Secrets-e1565033278190.png\" alt=\"\" width=\"591\" height=\"119\" srcset=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-05-Secrets-e1565033278190.png 591w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-05-Secrets-e1565033278190-300x60.png 300w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-05-Secrets-e1565033278190-230x46.png 230w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-05-Secrets-e1565033278190-350x70.png 350w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-05-Secrets-e1565033278190-480x97.png 480w\" sizes=\"auto, (max-width: 591px) 100vw, 591px\" \/><\/p>\n<h5>Change owner of Mastodon-Content:<\/h5>\n<p>The Mastodon-User in docker will use the UID 991, so we have to change the owner of the directory <code>public<\/code> to this:<\/p>\n<pre>sudo chown -R 991:991 public<\/pre>\n<h4><\/h4>\n<h5>Setup the database:<\/h5>\n<p>With the following command, the database will initialized:<\/p>\n<pre>docker-compose run --rm web bundle exec rake db:migrate<\/pre>\n<h4><\/h4>\n<h5>Pre-compile assets<\/h5>\n<p>Pre-compiling is not nessesary because we use prebuilded images of Mastodon, but you can check the pre-compile with:<\/p>\n<pre>docker-compose run --rm web bundle exec rake assets:precompile<\/pre>\n<p>Output:<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1635\" src=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-06-pre-compile.png\" alt=\"\" width=\"664\" height=\"131\" srcset=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-06-pre-compile.png 664w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-06-pre-compile-300x59.png 300w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-06-pre-compile-230x45.png 230w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-06-pre-compile-350x69.png 350w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-06-pre-compile-480x95.png 480w\" sizes=\"auto, (max-width: 664px) 100vw, 664px\" \/><\/p>\n<h4><\/h4>\n<h5>Start Mastodon-Instance<\/h5>\n<p>We use docker-compose to bring up the Instance:<\/p>\n<pre>docker-compose up -d<\/pre>\n<p>Check with docker ps if containers are running and healthy:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1636\" src=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-07-docker-ps-e1565033388837.png\" alt=\"\" width=\"890\" height=\"97\" srcset=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-07-docker-ps-e1565033388837.png 890w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-07-docker-ps-e1565033388837-300x33.png 300w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-07-docker-ps-e1565033388837-768x84.png 768w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-07-docker-ps-e1565033388837-830x90.png 830w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-07-docker-ps-e1565033388837-230x25.png 230w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-07-docker-ps-e1565033388837-350x38.png 350w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-07-docker-ps-e1565033388837-480x52.png 480w\" sizes=\"auto, (max-width: 890px) 100vw, 890px\" \/><\/p>\n<h5>Create Admin:<\/h5>\n<p>Now we will create the Admin of the Instance:<\/p>\n<pre>docker-compose run --rm web tootctl accounts create your-username --email your-email-address --confirmed --role admin<\/pre>\n<p>The password is displayed as output on the console, copy this for later use.<\/p>\n<p>If you do not have Plesk as Admin-Panel, you can follow the <a href=\"https:\/\/github.com\/tootsuite\/documentation\/blob\/master\/Running-Mastodon\/Production-guide.md#nginx-configuration\" target=\"_blank\" rel=\"noopener noreferrer\">Mastodon Production Guide<\/a> to point nginx to your instance.<\/p>\n<p>If you have Plesk then go ahead.<\/p>\n<h4><\/h4>\n<h4>Use Plesk<\/h4>\n<p>For these Steps you have to use the Plesk Administration Panel.<\/p>\n<h5>Create Subdomain<\/h5>\n<p>If you want to use an empty domain, you can skip this step. Otherwise create a subdomain in Plesk and secure it with LetsEncrypt:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1618\" src=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-01-Add-a-Subdomain.png\" alt=\"\" width=\"829\" height=\"650\" srcset=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-01-Add-a-Subdomain.png 829w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-01-Add-a-Subdomain-300x235.png 300w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-01-Add-a-Subdomain-768x602.png 768w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-01-Add-a-Subdomain-230x180.png 230w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-01-Add-a-Subdomain-350x274.png 350w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-01-Add-a-Subdomain-480x376.png 480w\" sizes=\"auto, (max-width: 829px) 100vw, 829px\" \/><\/p>\n<p>Press <code>OK<\/code><\/p>\n<h5>Check Hosting Settings<\/h5>\n<p>Check if php-handler is disabled in <code>Hosting Settings<\/code>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1614\" src=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-02-Hosting-Settings-e1565033693705.png\" alt=\"\" width=\"824\" height=\"391\" srcset=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-02-Hosting-Settings-e1565033693705.png 824w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-02-Hosting-Settings-e1565033693705-300x142.png 300w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-02-Hosting-Settings-e1565033693705-768x364.png 768w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-02-Hosting-Settings-e1565033693705-230x109.png 230w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-02-Hosting-Settings-e1565033693705-350x166.png 350w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-02-Hosting-Settings-e1565033693705-480x228.png 480w\" sizes=\"auto, (max-width: 824px) 100vw, 824px\" \/><\/p>\n<h5>Delete Webspace-Content<\/h5>\n<p>Then use the <code>File Manager<\/code> to delete the following Content of your Webspace:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1615\" src=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-03-File-Manager.png\" alt=\"\" width=\"1138\" height=\"513\" srcset=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-03-File-Manager.png 1138w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-03-File-Manager-300x135.png 300w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-03-File-Manager-768x346.png 768w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-03-File-Manager-1024x462.png 1024w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-03-File-Manager-830x374.png 830w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-03-File-Manager-230x104.png 230w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-03-File-Manager-350x158.png 350w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-03-File-Manager-480x216.png 480w\" sizes=\"auto, (max-width: 1138px) 100vw, 1138px\" \/><\/p>\n<h5>Apache &amp; nginx Setting<\/h5>\n<p>Disable <code>Proxy Mode<\/code> in <code>Apache &amp; nginx Settings<\/code> of your domain:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1616\" src=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-04-Apache-nginx-Settings.png\" alt=\"\" width=\"720\" height=\"468\" srcset=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-04-Apache-nginx-Settings.png 720w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-04-Apache-nginx-Settings-300x195.png 300w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-04-Apache-nginx-Settings-230x150.png 230w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-04-Apache-nginx-Settings-350x228.png 350w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-04-Apache-nginx-Settings-480x312.png 480w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/p>\n<p>It is very important to press <code>Apply<\/code> before you add the following content into <code>Additional nginx directives<\/code>. If you do not apply you will get an error of <code>duplicate entry for location \/<\/code> and nginx will not start.<\/p>\n<p>So, apply and then add this content (adjust ports, if you use other then 3005\/4005):<\/p>\n<pre>ssl_protocols TLSv1.2;\r\nssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;\r\nssl_prefer_server_ciphers on;\r\nssl_session_cache shared:SSL:10m;\r\n\r\nkeepalive_timeout    70;\r\nsendfile             on;\r\n\r\ngzip on;\r\ngzip_disable \"msie6\";\r\ngzip_vary on;\r\ngzip_proxied any;\r\ngzip_comp_level 6;\r\ngzip_buffers 16 8k;\r\ngzip_http_version 1.1;\r\ngzip_types text\/plain text\/css application\/json application\/javascript text\/xml application\/xml application\/xml+rss text\/javascript;\r\n\r\nadd_header Strict-Transport-Security \"max-age=31536000\";\r\n\r\nlocation \/ {\r\n\ttry_files $uri @proxy;\r\n}\r\n\r\nlocation ~ ^\/(emoji|packs) {\r\n\tadd_header Cache-Control \"public, max-age=31536000, immutable\";\r\n\ttry_files $uri @proxy;\r\n}\r\n\r\nlocation \/sw.js {\r\n\tadd_header Cache-Control \"public, max-age=0\";\r\n\ttry_files $uri @proxy;\r\n}\r\n\r\nlocation @proxy {\r\n\tproxy_set_header Host $host;\r\n\tproxy_set_header X-Real-IP $remote_addr;\r\n\tproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n\tproxy_set_header X-Forwarded-Proto https;\r\n\tproxy_set_header Proxy \"\";\r\n\tproxy_pass_header Server;\r\n\r\n\tproxy_pass http:\/\/127.0.0.1:3005;\r\n\tproxy_buffering off;\r\n\tproxy_redirect off;\r\n\tproxy_http_version 1.1;\r\n\tproxy_set_header Upgrade $http_upgrade;\r\n\tproxy_set_header Connection \"upgrade\";\r\n\ttcp_nodelay on;\r\n}\r\n\r\nlocation \/api\/v1\/streaming {\r\n\tproxy_set_header Host $host;\r\n\tproxy_set_header X-Real-IP $remote_addr;\r\n\tproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n\tproxy_set_header X-Forwarded-Proto https;\r\n\tproxy_set_header Proxy \"\";\r\n\r\n\tproxy_pass http:\/\/127.0.0.1:4005;\r\n\tproxy_buffering off;\r\n\tproxy_redirect off;\r\n\tproxy_http_version 1.1;\r\n\tproxy_set_header Upgrade $http_upgrade;\r\n\tproxy_set_header Connection \"upgrade\";\r\n\r\n\ttcp_nodelay on;\r\n}\r\n\r\nerror_page 500 501 502 503 504 \/500.html;<\/pre>\n<p>And press OK to accept the settings.<\/p>\n<h5>Login as Admin<\/h5>\n<p>Point to your domain\/subdomain with a browser of your choice and login to your instance with admin-user and password copied before.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1617\" src=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-10-Login.png\" alt=\"\" width=\"1278\" height=\"582\" srcset=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-10-Login.png 1278w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-10-Login-300x137.png 300w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-10-Login-768x350.png 768w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-10-Login-1024x466.png 1024w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-10-Login-830x378.png 830w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-10-Login-230x105.png 230w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-10-Login-350x159.png 350w, https:\/\/markus-blog.de\/wp-content\/uploads\/2019\/08\/Mastodon-10-Login-480x219.png 480w\" sizes=\"auto, (max-width: 1278px) 100vw, 1278px\" \/><\/p>\n<p>If you liked the guide, then share it or support me.<\/p>\n<p>If you want to try Mastodon without setting up an instance, just register to one of my two instances. You can always move your account to another server.<\/p>\n<p>If you want to run your own fully managed Instance hosted in Germany with 100% green Energy, look <a href=\"https:\/\/weingaertner-it.de\/\" target=\"_blank\" rel=\"nofollow noopener sponsored noreferrer\">here<\/a><\/p>\n<p>My running Mastodon Instances<\/p>\n<p><a href=\"https:\/\/mastodontech.de\/invite\/zTMx26FX\" target=\"_blank\" rel=\"noopener noreferrer\">MastodonTech.de<\/a><\/p>\n<p><a href=\"https:\/\/dresden.network\/invite\/KD8abS2R\" target=\"_blank\" rel=\"noopener noreferrer\">dresden.network<\/a><\/p>\n<p>Support me:<\/p>\n<p><a href=\"https:\/\/paypal.me\/markusblogde\" target=\"_blank\" rel=\"noopener noreferrer\">PayPal-Me<\/a><\/p>\n<p>Thx and feel free to contact me \ud83d\ude42<\/p>\n<p>&#8212;&#8212;&#8212;&#8211;<\/p>\n<blockquote><p>Sources:<br \/>\n<a href=\"https:\/\/docs.joinmastodon.org\/administration\/migrating\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/docs.joinmastodon.org<\/a><\/p>\n<p>More information about Mastodon:<\/p>\n<p><a href=\"https:\/\/joinmastodon.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">JoinMastodon.org<\/a><\/p><\/blockquote>\n<div class=\"shariff shariff-align-flex-start shariff-widget-align-flex-start\" data-services=\"facebook%7Creddit\" data-url=\"https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2019%2F08%2F05%2Fhow-to-install-mastodon-in-plesk-with-docker-compose%2F\" data-timestamp=\"1680511438\" data-hidezero=\"1\" data-backendurl=\"https:\/\/markus-blog.de\/wp-json\/shariff\/v1\/share_counts?\"><ul class=\"shariff-buttons theme-round orientation-horizontal buttonsize-medium\"><li class=\"shariff-button mastodon shariff-nocustomcolor\" style=\"background-color:#563ACC\"><a href=\"https:\/\/s2f.kytta.dev\/?text=How%20to%20install%20Mastodon%20in%20Plesk%20with%20docker%20and%20docker-compose https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2019%2F08%2F05%2Fhow-to-install-mastodon-in-plesk-with-docker-compose%2F\" title=\"Bei Mastodon teilen\" aria-label=\"Bei Mastodon teilen\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#6364FF; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"75\" height=\"79\" viewBox=\"0 0 75 79\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M37.813-.025C32.462-.058 27.114.13 21.79.598c-8.544.621-17.214 5.58-20.203 13.931C-1.12 23.318.408 32.622.465 41.65c.375 7.316.943 14.78 3.392 21.73 4.365 9.465 14.781 14.537 24.782 15.385 7.64.698 15.761-.213 22.517-4.026a54.1 54.1 0 0 0 .01-6.232c-6.855 1.316-14.101 2.609-21.049 1.074-3.883-.88-6.876-4.237-7.25-8.215-1.53-3.988 3.78-.43 5.584-.883 9.048 1.224 18.282.776 27.303-.462 7.044-.837 14.26-4.788 16.65-11.833 2.263-6.135 1.215-12.79 1.698-19.177.06-3.84.09-7.692-.262-11.52C72.596 7.844 63.223.981 53.834.684a219.453 219.453 0 0 0-16.022-.71zm11.294 12.882c5.5-.067 10.801 4.143 11.67 9.653.338 1.48.471 3 .471 4.515v21.088h-8.357c-.07-7.588.153-15.182-.131-22.765-.587-4.368-7.04-5.747-9.672-2.397-2.422 3.04-1.47 7.155-1.67 10.735v6.392h-8.307c-.146-4.996.359-10.045-.404-15.002-1.108-4.218-7.809-5.565-10.094-1.666-1.685 3.046-.712 6.634-.976 9.936v14.767h-8.354c.109-8.165-.238-16.344.215-24.5.674-5.346 5.095-10.389 10.676-10.627 4.902-.739 10.103 2.038 12.053 6.631.375 1.435 1.76 1.932 1.994.084 1.844-3.704 5.501-6.739 9.785-6.771.367-.044.735-.068 1.101-.073z\"\/><defs><linearGradient id=\"paint0_linear_549_34\" x1=\"37.0692\" y1=\"0\" x2=\"37.0692\" y2=\"79\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#6364FF\"\/><stop offset=\"1\" stop-color=\"#563ACC\"\/><\/linearGradient><\/defs><\/svg><\/span><\/a><\/li><li class=\"shariff-button facebook shariff-nocustomcolor\" style=\"background-color:#4273c8\"><a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2019%2F08%2F05%2Fhow-to-install-mastodon-in-plesk-with-docker-compose%2F\" title=\"Bei Facebook teilen\" aria-label=\"Bei Facebook teilen\" role=\"button\" rel=\"nofollow\" class=\"shariff-link\" style=\"; background-color:#3b5998; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 18 32\"><path fill=\"#3b5998\" d=\"M17.1 0.2v4.7h-2.8q-1.5 0-2.1 0.6t-0.5 1.9v3.4h5.2l-0.7 5.3h-4.5v13.6h-5.5v-13.6h-4.5v-5.3h4.5v-3.9q0-3.3 1.9-5.2t5-1.8q2.6 0 4.1 0.2z\"\/><\/svg><\/span><span data-service=\"facebook\" style=\"color:#3b5998\" class=\"shariff-count shariff-hidezero\"><\/span>&nbsp;<\/a><\/li><li class=\"shariff-button twitter shariff-nocustomcolor\" style=\"background-color:#595959\"><a href=\"https:\/\/twitter.com\/share?url=https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2019%2F08%2F05%2Fhow-to-install-mastodon-in-plesk-with-docker-compose%2F&text=How%20to%20install%20Mastodon%20in%20Plesk%20with%20docker%20and%20docker-compose&via=markusblogde\" title=\"Bei X teilen\" aria-label=\"Bei X teilen\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#000; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\"><path fill=\"#000\" d=\"M14.258 10.152L23.176 0h-2.113l-7.747 8.813L7.133 0H0l9.352 13.328L0 23.973h2.113l8.176-9.309 6.531 9.309h7.133zm-2.895 3.293l-.949-1.328L2.875 1.56h3.246l6.086 8.523.945 1.328 7.91 11.078h-3.246zm0 0\"\/><\/svg><\/span><\/a><\/li><li class=\"shariff-button whatsapp shariff-nocustomcolor\" style=\"background-color:#5cbe4a\"><a href=\"https:\/\/api.whatsapp.com\/send?text=https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2019%2F08%2F05%2Fhow-to-install-mastodon-in-plesk-with-docker-compose%2F%20How%20to%20install%20Mastodon%20in%20Plesk%20with%20docker%20and%20docker-compose\" title=\"Bei Whatsapp teilen\" aria-label=\"Bei Whatsapp teilen\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#34af23; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 32 32\"><path fill=\"#34af23\" d=\"M17.6 17.4q0.2 0 1.7 0.8t1.6 0.9q0 0.1 0 0.3 0 0.6-0.3 1.4-0.3 0.7-1.3 1.2t-1.8 0.5q-1 0-3.4-1.1-1.7-0.8-3-2.1t-2.6-3.3q-1.3-1.9-1.3-3.5v-0.1q0.1-1.6 1.3-2.8 0.4-0.4 0.9-0.4 0.1 0 0.3 0t0.3 0q0.3 0 0.5 0.1t0.3 0.5q0.1 0.4 0.6 1.6t0.4 1.3q0 0.4-0.6 1t-0.6 0.8q0 0.1 0.1 0.3 0.6 1.3 1.8 2.4 1 0.9 2.7 1.8 0.2 0.1 0.4 0.1 0.3 0 1-0.9t0.9-0.9zM14 26.9q2.3 0 4.3-0.9t3.6-2.4 2.4-3.6 0.9-4.3-0.9-4.3-2.4-3.6-3.6-2.4-4.3-0.9-4.3 0.9-3.6 2.4-2.4 3.6-0.9 4.3q0 3.6 2.1 6.6l-1.4 4.2 4.3-1.4q2.8 1.9 6.2 1.9zM14 2.2q2.7 0 5.2 1.1t4.3 2.9 2.9 4.3 1.1 5.2-1.1 5.2-2.9 4.3-4.3 2.9-5.2 1.1q-3.5 0-6.5-1.7l-7.4 2.4 2.4-7.2q-1.9-3.2-1.9-6.9 0-2.7 1.1-5.2t2.9-4.3 4.3-2.9 5.2-1.1z\"\/><\/svg><\/span><\/a><\/li><li class=\"shariff-button xing shariff-nocustomcolor\" style=\"background-color:#29888a\"><a href=\"https:\/\/www.xing.com\/spi\/shares\/new?url=https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2019%2F08%2F05%2Fhow-to-install-mastodon-in-plesk-with-docker-compose%2F\" title=\"Bei XING teilen\" aria-label=\"Bei XING teilen\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#126567; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 25 32\"><path fill=\"#126567\" d=\"M10.7 11.9q-0.2 0.3-4.6 8.2-0.5 0.8-1.2 0.8h-4.3q-0.4 0-0.5-0.3t0-0.6l4.5-8q0 0 0 0l-2.9-5q-0.2-0.4 0-0.7 0.2-0.3 0.5-0.3h4.3q0.7 0 1.2 0.8zM25.1 0.4q0.2 0.3 0 0.7l-9.4 16.7 6 11q0.2 0.4 0 0.6-0.2 0.3-0.6 0.3h-4.3q-0.7 0-1.2-0.8l-6-11.1q0.3-0.6 9.5-16.8 0.4-0.8 1.2-0.8h4.3q0.4 0 0.5 0.3z\"\/><\/svg><\/span><\/a><\/li><li class=\"shariff-button threema shariff-nocustomcolor shariff-mobile\" style=\"background-color:#4fbc24\"><a href=\"threema:\/\/compose?text=How%20to%20install%20Mastodon%20in%20Plesk%20with%20docker%20and%20docker-compose%20https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2019%2F08%2F05%2Fhow-to-install-mastodon-in-plesk-with-docker-compose%2F\" title=\"Bei Threema teilen\" aria-label=\"Bei Threema teilen\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#1f1f1f; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 32 32\"><path fill=\"#1f1f1f\" d=\"M30.8 10.9c-0.3-1.4-0.9-2.6-1.8-3.8-2-2.6-5.5-4.5-9.4-5.2-1.3-0.2-1.9-0.3-3.5-0.3s-2.2 0-3.5 0.3c-4 0.7-7.4 2.6-9.4 5.2-0.9 1.2-1.5 2.4-1.8 3.8-0.1 0.5-0.2 1.2-0.2 1.6 0 0.4 0.1 1.1 0.2 1.6 0.4 1.9 1.3 3.4 2.9 5 0.8 0.8 0.8 0.8 0.7 1.3 0 0.6-0.5 1.6-1.7 3.6-0.3 0.5-0.5 0.9-0.5 0.9 0 0.1 0.1 0.1 0.5 0 0.8-0.2 2.3-0.6 5.6-1.6 1.1-0.3 1.3-0.4 2.3-0.4 0.8 0 1.1 0 2.3 0.2 1.5 0.2 3.5 0.2 4.9 0 5.1-0.6 9.3-2.9 11.4-6.3 0.5-0.9 0.9-1.8 1.1-2.8 0.1-0.5 0.2-1.1 0.2-1.6 0-0.7-0.1-1.1-0.2-1.6-0.3-1.4 0.1 0.5 0 0zM20.6 17.3c0 0.4-0.4 0.8-0.8 0.8h-7.7c-0.4 0-0.8-0.4-0.8-0.8v-4.6c0-0.4 0.4-0.8 0.8-0.8h0.2l0-1.6c0-0.9 0-1.8 0.1-2 0.1-0.6 0.6-1.2 1.1-1.7s1.1-0.7 1.9-0.8c1.8-0.3 3.7 0.7 4.2 2.2 0.1 0.3 0.1 0.7 0.1 2.1v0 1.7h0.1c0.4 0 0.8 0.4 0.8 0.8v4.6zM15.6 7.3c-0.5 0.1-0.8 0.3-1.2 0.6s-0.6 0.8-0.7 1.3c0 0.2 0 0.8 0 1.5l0 1.2h4.6v-1.3c0-1 0-1.4-0.1-1.6-0.3-1.1-1.5-1.9-2.6-1.7zM25.8 28.2c0 1.2-1 2.2-2.1 2.2s-2.1-1-2.1-2.1c0-1.2 1-2.1 2.2-2.1s2.2 1 2.2 2.2zM18.1 28.2c0 1.2-1 2.2-2.1 2.2s-2.1-1-2.1-2.1c0-1.2 1-2.1 2.2-2.1s2.2 1 2.2 2.2zM10.4 28.2c0 1.2-1 2.2-2.1 2.2s-2.1-1-2.1-2.1c0-1.2 1-2.1 2.2-2.1s2.2 1 2.2 2.2z\"\/><\/svg><\/span><\/a><\/li><li class=\"shariff-button mailto shariff-nocustomcolor\" style=\"background-color:#a8a8a8\"><a href=\"mailto:?body=https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2019%2F08%2F05%2Fhow-to-install-mastodon-in-plesk-with-docker-compose%2F&subject=How%20to%20install%20Mastodon%20in%20Plesk%20with%20docker%20and%20docker-compose\" title=\"Per E-Mail versenden\" aria-label=\"Per E-Mail versenden\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#999; color:#fff\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 32 32\"><path fill=\"#999\" d=\"M32 12.7v14.2q0 1.2-0.8 2t-2 0.9h-26.3q-1.2 0-2-0.9t-0.8-2v-14.2q0.8 0.9 1.8 1.6 6.5 4.4 8.9 6.1 1 0.8 1.6 1.2t1.7 0.9 2 0.4h0.1q0.9 0 2-0.4t1.7-0.9 1.6-1.2q3-2.2 8.9-6.1 1-0.7 1.8-1.6zM32 7.4q0 1.4-0.9 2.7t-2.2 2.2q-6.7 4.7-8.4 5.8-0.2 0.1-0.7 0.5t-1 0.7-0.9 0.6-1.1 0.5-0.9 0.2h-0.1q-0.4 0-0.9-0.2t-1.1-0.5-0.9-0.6-1-0.7-0.7-0.5q-1.6-1.1-4.7-3.2t-3.6-2.6q-1.1-0.7-2.1-2t-1-2.5q0-1.4 0.7-2.3t2.1-0.9h26.3q1.2 0 2 0.8t0.9 2z\"\/><\/svg><\/span><\/a><\/li><li class=\"shariff-button printer shariff-nocustomcolor\" style=\"background-color:#a8a8a8\"><a href=\"javascript:window.print()\" title=\"drucken\" aria-label=\"drucken\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#999; color:#fff\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 30 32\"><path fill=\"#999\" d=\"M6.8 27.4h16v-4.6h-16v4.6zM6.8 16h16v-6.8h-2.8q-0.7 0-1.2-0.5t-0.5-1.2v-2.8h-11.4v11.4zM27.4 17.2q0-0.5-0.3-0.8t-0.8-0.4-0.8 0.4-0.3 0.8 0.3 0.8 0.8 0.3 0.8-0.3 0.3-0.8zM29.7 17.2v7.4q0 0.2-0.2 0.4t-0.4 0.2h-4v2.8q0 0.7-0.5 1.2t-1.2 0.5h-17.2q-0.7 0-1.2-0.5t-0.5-1.2v-2.8h-4q-0.2 0-0.4-0.2t-0.2-0.4v-7.4q0-1.4 1-2.4t2.4-1h1.2v-9.7q0-0.7 0.5-1.2t1.2-0.5h12q0.7 0 1.6 0.4t1.3 0.8l2.7 2.7q0.5 0.5 0.9 1.4t0.4 1.6v4.6h1.1q1.4 0 2.4 1t1 2.4z\"\/><\/svg><\/span><\/a><\/li><li class=\"shariff-button reddit shariff-nocustomcolor\" style=\"background-color:#ff5700\"><a href=\"https:\/\/www.reddit.com\/submit?url=https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2019%2F08%2F05%2Fhow-to-install-mastodon-in-plesk-with-docker-compose%2F\" title=\"Bei Reddit teilen\" aria-label=\"Bei Reddit teilen\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#ff4500; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\"><path fill=\"#ff4500\" d=\"M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z\"\/><\/svg><\/span><span data-service=\"reddit\" style=\"color:#ff4500\" class=\"shariff-count shariff-hidezero\"><\/span>&nbsp;<\/a><\/li><li class=\"shariff-button linkedin shariff-nocustomcolor\" style=\"background-color:#1488bf\"><a href=\"https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url=https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2019%2F08%2F05%2Fhow-to-install-mastodon-in-plesk-with-docker-compose%2F\" title=\"Bei LinkedIn teilen\" aria-label=\"Bei LinkedIn teilen\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#0077b5; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 27 32\"><path fill=\"#0077b5\" d=\"M6.2 11.2v17.7h-5.9v-17.7h5.9zM6.6 5.7q0 1.3-0.9 2.2t-2.4 0.9h0q-1.5 0-2.4-0.9t-0.9-2.2 0.9-2.2 2.4-0.9 2.4 0.9 0.9 2.2zM27.4 18.7v10.1h-5.9v-9.5q0-1.9-0.7-2.9t-2.3-1.1q-1.1 0-1.9 0.6t-1.2 1.5q-0.2 0.5-0.2 1.4v9.9h-5.9q0-7.1 0-11.6t0-5.3l0-0.9h5.9v2.6h0q0.4-0.6 0.7-1t1-0.9 1.6-0.8 2-0.3q3 0 4.9 2t1.9 6z\"\/><\/svg><\/span><\/a><\/li><\/ul><\/div>","protected":false},"excerpt":{"rendered":"<p>What is Mastodon? Mastodon is a microblogging platform akin to others you may have seen, such as Twitter, but instead of being centralised it is a federated network which operates [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1603,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[114,184,118],"tags":[60,59,185,161,156,48,64,61,134],"class_list":["post-1606","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-docker-en","category-mastodon","category-plesk-en","tag-container","tag-docker-io","tag-fediverse","tag-mastodon","tag-nginx","tag-plesk","tag-reverse-proxy","tag-ubuntu","tag-vps"],"_links":{"self":[{"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/posts\/1606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/comments?post=1606"}],"version-history":[{"count":0,"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/posts\/1606\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/media\/1603"}],"wp:attachment":[{"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/media?parent=1606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/categories?post=1606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/tags?post=1606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}