{"version":"1.0","provider_name":"Thegreydiamond","provider_url":"https:\/\/thegreydiamond.de\/blog","author_name":"TheGreydiamond","author_url":"https:\/\/thegreydiamond.de\/blog\/author\/thegreydiamond\/","title":"Enabling \"hosted\" features in outline &#8211; Thegreydiamond","type":"rich","width":600,"height":338,"html":"<blockquote class=\"wp-embedded-content\" data-secret=\"gIIlNx26zG\"><a href=\"https:\/\/thegreydiamond.de\/blog\/2023\/06\/23\/enabling-hosted-features-in-outline\/\">Enabling &#8220;hosted&#8221; features in outline<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/thegreydiamond.de\/blog\/2023\/06\/23\/enabling-hosted-features-in-outline\/embed\/#?secret=gIIlNx26zG\" width=\"600\" height=\"338\" title=\"&#8220;Enabling &#8220;hosted&#8221; features in outline&#8221; &#8212; Thegreydiamond\" data-secret=\"gIIlNx26zG\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\"><\/iframe><script type=\"text\/javascript\">\n\/* <![CDATA[ *\/\n\/*! This file is auto-generated *\/\n!function(d,l){\"use strict\";l.querySelector&&d.addEventListener&&\"undefined\"!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!\/[^a-zA-Z0-9]\/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret=\"'+t.secret+'\"]'),o=l.querySelectorAll('blockquote[data-secret=\"'+t.secret+'\"]'),c=new RegExp(\"^https?:$\",\"i\"),i=0;i<o.length;i++)o[i].style.display=\"none\";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute(\"style\"),\"height\"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):\"link\"===t.message&&(r=new URL(s.getAttribute(\"src\")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener(\"message\",d.wp.receiveEmbedMessage,!1),l.addEventListener(\"DOMContentLoaded\",function(){for(var e,t,s=l.querySelectorAll(\"iframe.wp-embedded-content\"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute(\"data-secret\"))||(t=Math.random().toString(36).substring(2,12),e.src+=\"#?secret=\"+t,e.setAttribute(\"data-secret\",t)),e.contentWindow.postMessage({message:\"ready\",secret:t},\"*\")},!1)))}(window,document);\n\/\/# sourceURL=https:\/\/thegreydiamond.de\/blog\/wp-includes\/js\/wp-embed.min.js\n\/* ]]> *\/\n<\/script>\n","description":"A few days ago I discovered a nice Notion alternative called &#8220;Outline&#8220;. It seemed to provide a nice feature set while also being self-hosted. The setup was somewhat cumbersome, as it needs an S3 Object storage, auth provider, postgres DB and Redis server. After setting up Keycloak for auth and MinIO for S3 Object storage [&hellip;]","thumbnail_url":"https:\/\/cdn.thegreydiamond.de\/img\/2023\/06\/27\/2023-06-27_18-25-19-6567ba8f-f345-482e-a3cb-dd16dc6508d9.png"}