{"users":[{"id":191411,"username":"Lxk520","name":"Lxk520","avatar_template":"/user_avatar/meta.discourse.org/lxk520/{size}/550353_2.png","trust_level":1},{"id":115923,"username":"Discourse","name":null,"avatar_template":"/user_avatar/meta.discourse.org/discourse/{size}/148734_2.png","admin":true,"trust_level":4},{"id":138497,"username":"ToddZ","name":"","avatar_template":"/user_avatar/meta.discourse.org/toddz/{size}/328350_2.png","trust_level":4},{"id":135392,"username":"NateDhaliwal","name":"Nate Dhaliwal","avatar_template":"/user_avatar/meta.discourse.org/natedhaliwal/{size}/313494_2.png","flair_name":"theme_authors","flair_url":"paintbrush","flair_bg_color":"ddd","flair_color":"111","flair_group_id":73,"trust_level":3},{"id":135971,"username":"microhit","name":"","avatar_template":"/user_avatar/meta.discourse.org/microhit/{size}/447960_2.png","trust_level":2},{"id":95552,"username":"Moin","name":"","avatar_template":"/user_avatar/meta.discourse.org/moin/{size}/523407_2.png","trust_level":3},{"id":7229,"username":"DavidGNavas","name":"David García-Navas","avatar_template":"/user_avatar/meta.discourse.org/davidgnavas/{size}/68313_2.png","trust_level":2},{"id":8571,"username":"tobiaseigen","name":"Tobias Eigen","avatar_template":"/user_avatar/meta.discourse.org/tobiaseigen/{size}/539204_2.png","trust_level":3},{"id":6626,"username":"riking","name":"Kane York","avatar_template":"/user_avatar/meta.discourse.org/riking/{size}/170938_2.png","trust_level":2},{"id":21555,"username":"BenLeong","name":"Ben Leong","avatar_template":"/user_avatar/meta.discourse.org/benleong/{size}/60951_2.png","trust_level":2},{"id":27384,"username":"merefield","name":"Robert","avatar_template":"/user_avatar/meta.discourse.org/merefield/{size}/176214_2.png","trust_level":3},{"id":13093,"username":"pacharanero","name":"Marcus Baw","avatar_template":"/user_avatar/meta.discourse.org/pacharanero/{size}/500583_2.png","trust_level":4},{"id":24426,"username":"enigmaty","name":"","avatar_template":"/user_avatar/meta.discourse.org/enigmaty/{size}/65626_2.png","trust_level":2},{"id":60917,"username":"mesatenista","name":"Edmar Holanda","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/m/5f9b8f/{size}.png","trust_level":1},{"id":84520,"username":"OdysLam","name":"Odysseas Lamtzidis","avatar_template":"/user_avatar/meta.discourse.org/odyslam/{size}/194433_2.png","trust_level":2},{"id":15209,"username":"pfaffman","name":"Jay Pfaffman","avatar_template":"/user_avatar/meta.discourse.org/pfaffman/{size}/120154_2.png","flair_name":"support-experts","flair_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/e/2/e250ec403580530d19e6a9ed42d0d525a51a9dbe.svg","flair_bg_color":"FFFFFF","flair_group_id":142,"trust_level":4},{"id":145010,"username":"Twissell","name":"","avatar_template":"/user_avatar/meta.discourse.org/twissell/{size}/366765_2.png","trust_level":1},{"id":129914,"username":"dlambert","name":"Derek","avatar_template":"/user_avatar/meta.discourse.org/dlambert/{size}/295355_2.png","trust_level":1},{"id":12454,"username":"Richie","name":"Richie Rich","avatar_template":"/user_avatar/meta.discourse.org/richie/{size}/115110_2.png","trust_level":2},{"id":89208,"username":"kynic","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/k/b487fb/{size}.png","trust_level":2},{"id":37716,"username":"Mr.X_Mr.X","name":"","avatar_template":"/user_avatar/meta.discourse.org/mr.x_mr.x/{size}/126610_2.png","trust_level":2},{"id":189531,"username":"jesse_c","name":"Jesse","avatar_template":"/user_avatar/meta.discourse.org/jesse_c/{size}/545099_2.png","trust_level":0},{"id":181081,"username":"stephtara","name":"Stephanie Booth","avatar_template":"/user_avatar/meta.discourse.org/stephtara/{size}/517827_2.png","trust_level":3},{"id":15019,"username":"5minpause","name":"5minpause","avatar_template":"/user_avatar/meta.discourse.org/5minpause/{size}/116074_2.png","trust_level":1},{"id":75906,"username":"neounix","name":"Dark Matter","avatar_template":"/user_avatar/meta.discourse.org/neounix/{size}/215617_2.png","trust_level":2},{"id":35474,"username":"Canapin","name":"Coin-coin le Canapin","avatar_template":"/user_avatar/meta.discourse.org/canapin/{size}/119591_2.png","trust_level":3},{"id":2377,"username":"mcdanlj","name":"Michael K Johnson","avatar_template":"/user_avatar/meta.discourse.org/mcdanlj/{size}/131829_2.png","trust_level":2},{"id":7720,"username":"rahim123","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/r/df705f/{size}.png","trust_level":2},{"id":63143,"username":"Ed_S","name":"Ed S","avatar_template":"/user_avatar/meta.discourse.org/ed_s/{size}/134015_2.png","trust_level":3},{"id":13375,"username":"markersocial","name":"","avatar_template":"/user_avatar/meta.discourse.org/markersocial/{size}/170136_2.png","trust_level":2},{"id":16697,"username":"mpalmer","name":"Matt Palmer","avatar_template":"/user_avatar/meta.discourse.org/mpalmer/{size}/45740_2.png","trust_level":2},{"id":108275,"username":"markcoley","name":"Mark Coley","avatar_template":"/user_avatar/meta.discourse.org/markcoley/{size}/242366_2.png","trust_level":1},{"id":109684,"username":"f1r4s","name":"Eddie","avatar_template":"/user_avatar/meta.discourse.org/f1r4s/{size}/245347_2.png","trust_level":2},{"id":32726,"username":"gwmngilfen","name":"Greg","avatar_template":"/user_avatar/meta.discourse.org/gwmngilfen/{size}/302925_2.png","trust_level":2},{"id":8722,"username":"Falco","name":"Falco","avatar_template":"/user_avatar/meta.discourse.org/falco/{size}/179432_2.png","primary_group_name":"team","flair_name":"team","flair_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":4},{"id":109156,"username":"Stigin","name":"Stigin","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/s/49beb7/{size}.png","trust_level":1},{"id":16290,"username":"bekircem","name":"","avatar_template":"/user_avatar/meta.discourse.org/bekircem/{size}/44582_2.png","trust_level":2},{"id":117867,"username":"Fabrice","name":"","avatar_template":"/user_avatar/meta.discourse.org/fabrice/{size}/265087_2.png","trust_level":2},{"id":129813,"username":"shyguy","name":"","avatar_template":"/user_avatar/meta.discourse.org/shyguy/{size}/295079_2.png","trust_level":2},{"id":15568,"username":"fefrei","name":"Felix Freiberger","avatar_template":"/user_avatar/meta.discourse.org/fefrei/{size}/119538_2.png","trust_level":2},{"id":24453,"username":"ewanly","name":"EW 👌","avatar_template":"/user_avatar/meta.discourse.org/ewanly/{size}/62854_2.png","trust_level":2},{"id":32,"username":"codinghorror","name":"Jeff Atwood","avatar_template":"/user_avatar/meta.discourse.org/codinghorror/{size}/110067_2.png","admin":true,"trust_level":2},{"id":17621,"username":"jomaxro","name":"Joshua Rosenfeld","avatar_template":"/user_avatar/meta.discourse.org/jomaxro/{size}/126216_2.png","primary_group_name":"team","flair_name":"team","flair_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":2},{"id":15291,"username":"philh","name":"","avatar_template":"/user_avatar/meta.discourse.org/philh/{size}/532740_2.png","trust_level":2},{"id":20815,"username":"marcospreviato","name":"Marcos P","avatar_template":"/user_avatar/meta.discourse.org/marcospreviato/{size}/54766_2.png","trust_level":2},{"id":17969,"username":"Pad_Pors","name":"Pad Pors","avatar_template":"/user_avatar/meta.discourse.org/pad_pors/{size}/52016_2.png","trust_level":2},{"id":72263,"username":"denvergeeks","name":"","avatar_template":"/user_avatar/meta.discourse.org/denvergeeks/{size}/327671_2.png","trust_level":2},{"id":135057,"username":"fokx","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/f/958977/{size}.png","trust_level":2},{"id":182632,"username":"dodger","name":"dodger","avatar_template":"/user_avatar/meta.discourse.org/dodger/{size}/522280_2.png","trust_level":1},{"id":182437,"username":"lion","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/l/57b2e6/{size}.png","trust_level":1},{"id":63814,"username":"ondrej","name":"","avatar_template":"/user_avatar/meta.discourse.org/ondrej/{size}/198804_2.png","trust_level":3},{"id":43913,"username":"ganncamp","name":"G  Ann Campbell","avatar_template":"/user_avatar/meta.discourse.org/ganncamp/{size}/106199_2.png","trust_level":2},{"id":4263,"username":"mcwumbly","name":"Dave McClure","avatar_template":"/user_avatar/meta.discourse.org/mcwumbly/{size}/103861_2.png","primary_group_name":"team","flair_name":"team","flair_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":113000,"username":"chapoi","name":"","avatar_template":"/user_avatar/meta.discourse.org/chapoi/{size}/537252_2.png","flair_name":"team","flair_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":27495,"username":"thaidb","name":"thaidb","avatar_template":"/user_avatar/meta.discourse.org/thaidb/{size}/68488_2.png","trust_level":2},{"id":4457,"username":"Lee_Ars","name":"Lee_Ars","avatar_template":"/user_avatar/meta.discourse.org/lee_ars/{size}/1597_2.png","trust_level":2},{"id":10365,"username":"brahn","name":"Brahn","avatar_template":"/user_avatar/meta.discourse.org/brahn/{size}/109267_2.png","trust_level":2},{"id":141713,"username":"jayme","name":"Jayme ","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/j/b38774/{size}.png","trust_level":2},{"id":57788,"username":"nathank","name":"Nathan Kershaw","avatar_template":"/user_avatar/meta.discourse.org/nathank/{size}/290039_2.png","flair_name":"support-advocates","flair_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/e/4/e4038d4d9848de2eabab38e17b8bdb69da154024.svg","flair_bg_color":"FFFFFF","flair_group_id":148,"trust_level":4},{"id":12933,"username":"gdpelican","name":"James Kiesel","avatar_template":"/user_avatar/meta.discourse.org/gdpelican/{size}/81308_2.png","trust_level":2},{"id":66606,"username":"spirobel","name":"","avatar_template":"/user_avatar/meta.discourse.org/spirobel/{size}/170908_2.png","flair_name":"plugin_authors","flair_url":"plug","flair_bg_color":"dddddd","flair_color":"111111","flair_group_id":48,"trust_level":2},{"id":13378,"username":"angus","name":"Angus McLeod","avatar_template":"/user_avatar/meta.discourse.org/angus/{size}/341715_2.png","flair_name":"support-experts","flair_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/e/2/e250ec403580530d19e6a9ed42d0d525a51a9dbe.svg","flair_bg_color":"FFFFFF","flair_group_id":142,"trust_level":4},{"id":88244,"username":"frank.manuel","name":"Frank Manuel","avatar_template":"/user_avatar/meta.discourse.org/frank.manuel/{size}/203348_2.png","trust_level":2},{"id":185178,"username":"TimFelix","name":null,"avatar_template":"https://avatars.discourse-cdn.com/v4/letter/t/919ad9/{size}.png","trust_level":1},{"id":183536,"username":"DevTeVe","name":"DevTek Ve","avatar_template":"/user_avatar/meta.discourse.org/devteve/{size}/487601_2.png","trust_level":3},{"id":82960,"username":"manuel","name":"Manuel Kostka","avatar_template":"/user_avatar/meta.discourse.org/manuel/{size}/468169_2.png","primary_group_name":"team","flair_name":"team","flair_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":2},{"id":149251,"username":"LosHunterros","name":null,"avatar_template":"https://avatars.discourse-cdn.com/v4/letter/l/c6cbf5/{size}.png","trust_level":1},{"id":185381,"username":"MikeP","name":"Michael Pearce","avatar_template":"/user_avatar/meta.discourse.org/mikep/{size}/530282_2.png","trust_level":1},{"id":143698,"username":"Shauny","name":"Shaun Robinson","avatar_template":"/user_avatar/meta.discourse.org/shauny/{size}/362012_2.png","trust_level":2},{"id":94563,"username":"shuaiZend","name":"Shuai Zend","avatar_template":"/user_avatar/meta.discourse.org/shuaizend/{size}/215714_2.png","trust_level":1},{"id":83631,"username":"Jagster","name":"Jakke Flemming","avatar_template":"/user_avatar/meta.discourse.org/jagster/{size}/192154_2.png","trust_level":2},{"id":16295,"username":"cogdog","name":"Alan Levine","avatar_template":"/user_avatar/meta.discourse.org/cogdog/{size}/116536_2.png","trust_level":2},{"id":183669,"username":"Yan_Rudenko","name":"Yan Rudenko","avatar_template":"/user_avatar/meta.discourse.org/yan_rudenko/{size}/493431_2.png","trust_level":1}],"primary_groups":[{"id":47,"name":"team"}],"flair_groups":[{"id":73,"name":"theme_authors","flair_url":"paintbrush","flair_bg_color":"ddd","flair_color":"111"},{"id":142,"name":"support-experts","flair_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/e/2/e250ec403580530d19e6a9ed42d0d525a51a9dbe.svg","flair_bg_color":"FFFFFF","flair_color":""},{"id":47,"name":"team","flair_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_bg_color":"","flair_color":"111"},{"id":148,"name":"support-advocates","flair_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/e/4/e4038d4d9848de2eabab38e17b8bdb69da154024.svg","flair_bg_color":"FFFFFF","flair_color":""},{"id":48,"name":"plugin_authors","flair_url":"plug","flair_bg_color":"dddddd","flair_color":"111111"}],"topic_list":{"can_create_topic":false,"more_topics_url":"/c/wiki/177?page=1","per_page":30,"top_tags":[{"id":478,"name":"how-to","slug":"how-to"},{"id":297,"name":"chinese-translation","slug":"chinese-translation"},{"id":66,"name":"wordpress","slug":"wordpress"},{"id":824,"name":"install","slug":"install"},{"id":199,"name":"video","slug":"video"},{"id":482,"name":"reference","slug":"reference"},{"id":479,"name":"explanation","slug":"explanation"},{"id":60,"name":"sso","slug":"sso"},{"id":481,"name":"advanced-setup","slug":"advanced-setup"},{"id":24,"name":"docker","slug":"docker"},{"id":65,"name":"migrations","slug":"migrations"},{"id":39,"name":"email","slug":"email"},{"id":274,"name":"plugin-guides","slug":"plugin-guides"},{"id":803,"name":"activitypub","slug":"activitypub"},{"id":543,"name":"ai","slug":"ai"},{"id":55,"name":"backups","slug":"backups"},{"id":230,"name":"chat-integration","slug":"chat-integration"},{"id":330,"name":"rest-api","slug":"rest-api"},{"id":72,"name":"s3","slug":"s3"},{"id":814,"name":"customization","slug":"customization"},{"id":150,"name":"dev-install","slug":"dev-install"},{"id":263,"name":"discourseconnect","slug":"discourseconnect"},{"id":825,"name":"domains","slug":"domains"},{"id":817,"name":"tasks","slug":"tasks"},{"id":16,"name":"translation","slug":"translation"},{"id":484,"name":"tutorial","slug":"tutorial"},{"id":5,"name":"unsupported-install","slug":"unsupported-install"},{"id":107,"name":"webhooks","slug":"webhooks"},{"id":46,"name":"cdn","slug":"cdn"},{"id":827,"name":"cloudflare","slug":"cloudflare"},{"id":813,"name":"content","slug":"content"}],"topics":[{"fancy_title":"Any random subdomain redirects to www","fancy_title_localized":true,"locale":"zh_CN","id":400584,"title":"任何随机子域名重定向到www","slug":"www","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2026-04-14T06:58:50.366Z","last_posted_at":"2026-04-14T06:58:50.572Z","bumped":true,"bumped_at":"2026-04-14T06:58:50.572Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Redirect Random Subdomains to www\n\nObtain an Alibaba Cloud AccessKey (using Alibaba Cloud as an example; apply for your own key).\n\nAccessKey ID: LTAI5tQCfDcVcghn5\nAccessKey Secret: J8ZayXB44MIWa1Mfnj\n\n\nInstall acme.sh\n\ncd ~\ncurl https://get.acme.sh | sh\n\n\nSwitch the default CA to Let's Encrypt, then reapply for the certificate:\n\n# Switch the default CA to Let's ...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":10,"like_count":0,"has_summary":false,"last_poster_username":"Lxk520","category_id":180,"op_like_count":0,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user provides a step-by-step guide to configure wildcard SSL certificates via acme.sh and set up Nginx rules to redirect any random subdomain to the www version of a Discourse site.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":191411,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Administrators Index","fancy_title_localized":false,"locale":"en","id":322712,"title":"Administrators Index","slug":"administrators-index","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2024-08-21T13:33:48.536Z","last_posted_at":"2024-08-21T13:33:48.621Z","bumped":true,"bumped_at":"2026-04-02T23:13:19.128Z","archetype":"regular","unseen":false,"pinned":true,"unpinned":null,"excerpt":"General guides\n\nRe-creating the Lounge: Re-creating the automatic Lounge category\nCustomizing Terms of Service: Some notes on customizing the default Terms of Service\nCustom email notification footer: Customize email not&hellip;","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":499,"like_count":8,"has_summary":false,"last_poster_username":"Discourse","category_id":178,"op_like_count":8,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"General guides and translations for Discourse administrators, including customization, plugins, and integrations, with links to resources on topics such as gamification, webhooks, and Chinese language support.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":115923,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Re-creating the automatic Lounge category","fancy_title_localized":false,"locale":"en","id":397689,"title":"Re-creating the automatic Lounge category","slug":"re-creating-the-automatic-lounge-category","posts_count":3,"reply_count":1,"highest_post_number":3,"image_url":null,"created_at":"2026-03-05T03:37:24.474Z","last_posted_at":"2026-03-05T05:57:33.937Z","bumped":true,"bumped_at":"2026-04-02T23:05:53.554Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":":bookmark: This guide provides two methods for re-creating the Lounge category functionality formerly offered by default and still seen in some Discourse installations. \n:person_raising_hand: Required user level: Admini&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":113,"like_count":10,"has_summary":false,"last_poster_username":"ToddZ","category_id":178,"op_like_count":6,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A guide proposes two methods to recreate the Lounge category for Trust Level 3 users, with the author noting minor formatting habits regarding lowercase sub-headers.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":138497,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Customizing subcategory boxes in Discourse","fancy_title_localized":false,"locale":"en","id":239691,"title":"Customizing subcategory boxes in Discourse","slug":"customizing-subcategory-boxes-in-discourse","posts_count":3,"reply_count":1,"highest_post_number":6,"image_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/6/f/6f81f6c65323d8d5c2beb14c5458b3d8ee3f5e37.png","created_at":"2022-09-21T19:19:52.577Z","last_posted_at":"2026-04-02T21:45:10.074Z","bumped":true,"bumped_at":"2026-04-02T21:45:10.074Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":":bookmark: This guide explains how to customize the appearance of subcategory boxes in Discourse, including adjusting styles for featured topics, modifying the “Boxes” style, and managing category description truncation&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1021,"height":257,"url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/6/f/6f81f6c65323d8d5c2beb14c5458b3d8ee3f5e37.png"},{"max_width":800,"max_height":800,"width":800,"height":201,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/6/f/6f81f6c65323d8d5c2beb14c5458b3d8ee3f5e37_2_800x201.png"},{"max_width":600,"max_height":600,"width":600,"height":151,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/6/f/6f81f6c65323d8d5c2beb14c5458b3d8ee3f5e37_2_600x151.png"},{"max_width":400,"max_height":400,"width":400,"height":100,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/6/f/6f81f6c65323d8d5c2beb14c5458b3d8ee3f5e37_2_400x100.png"},{"max_width":300,"max_height":300,"width":300,"height":75,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/6/f/6f81f6c65323d8d5c2beb14c5458b3d8ee3f5e37_2_300x75.png"},{"max_width":200,"max_height":200,"width":200,"height":50,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/6/f/6f81f6c65323d8d5c2beb14c5458b3d8ee3f5e37_2_200x50.png"}],"tags":[{"id":478,"name":"how-to","slug":"how-to"},{"id":814,"name":"customization","slug":"customization"}],"tags_descriptions":{"how-to":"How to guides contain steps to follow to solve a specific problem"},"views":1397,"like_count":1,"has_summary":false,"last_poster_username":"Moin","category_id":179,"op_like_count":0,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user questions why topics remain visible on mobile despite desktop customizations, to which another member responds that separate mobile-specific settings likely control this behavior.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":135971,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":95552,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Create a Network chart of your forum - data visualization","fancy_title_localized":false,"locale":"en","id":37426,"title":"Create a Network chart of your forum - data visualization","slug":"create-a-network-chart-of-your-forum-data-visualization","posts_count":5,"reply_count":1,"highest_post_number":5,"image_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/3/9/39b31332ba376814335437f8ca011aad6ecc4995.png","created_at":"2016-01-04T17:13:02.758Z","last_posted_at":"2026-03-26T19:49:25.668Z","bumped":true,"bumped_at":"2026-03-26T19:49:25.668Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Thanks to the Data Explorer Plugin and the query that @riking created, we have a great visualization of the interaction in our :discourse: instance. \n \nYou can also play with it. \nIt’s easy to do it: \n1 - Install Data Ex&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":661,"height":518,"url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/3/9/39b31332ba376814335437f8ca011aad6ecc4995.png"},{"max_width":600,"max_height":600,"width":600,"height":470,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/3/9/39b31332ba376814335437f8ca011aad6ecc4995_2_600x470.png"},{"max_width":400,"max_height":400,"width":400,"height":313,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/3/9/39b31332ba376814335437f8ca011aad6ecc4995_2_400x313.png"},{"max_width":300,"max_height":300,"width":300,"height":235,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/3/9/39b31332ba376814335437f8ca011aad6ecc4995_2_300x235.png"},{"max_width":200,"max_height":200,"width":200,"height":156,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/3/9/39b31332ba376814335437f8ca011aad6ecc4995_2_200x156.png"}],"tags":[{"id":478,"name":"how-to","slug":"how-to"},{"id":821,"name":"reporting","slug":"reporting"}],"tags_descriptions":{"how-to":"How to guides contain steps to follow to solve a specific problem"},"views":6707,"like_count":27,"has_summary":false,"last_poster_username":"merefield","category_id":178,"op_like_count":19,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user shares a method to visualize forum interactions using the Data Explorer plugin and Google Fusion Tables, while another participant references a related community network visualization discussion.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":7229,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":8571,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":6626,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":21555,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":27384,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Discourse MCP Setup in OpenCode CLI","fancy_title_localized":false,"locale":"en","id":398378,"title":"Discourse MCP Setup in OpenCode CLI","slug":"discourse-mcp-setup-in-opencode-cli","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2026-03-13T14:33:29.472Z","last_posted_at":"2026-03-13T14:33:29.548Z","bumped":true,"bumped_at":"2026-03-13T16:09:31.736Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"This guide provides tested instructions for installing the Discourse MCP into OpenCode CLI. If you’re using a different MCP client, I have also written guides for Codex CLI. \n\nUSE YOUR LLM! LLMs are very good at followin&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":543,"name":"ai","slug":"ai"},{"id":1087,"name":"mcp","slug":"mcp"},{"id":968,"name":"user-api","slug":"user-api"}],"tags_descriptions":{},"views":360,"like_count":3,"has_summary":false,"last_poster_username":"pacharanero","category_id":181,"op_like_count":3,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user provides tested instructions for installing the Discourse MCP into OpenCode CLI, detailing prerequisites, the three-component architecture, API key generation, configuration file setup, and support for multiple forum instances.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":13093,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Migrate a NodeBB forum with MongoDB to Discourse","fancy_title_localized":false,"locale":"en","id":126553,"title":"Migrate a NodeBB forum with MongoDB to Discourse","slug":"migrate-a-nodebb-forum-with-mongodb-to-discourse","posts_count":19,"reply_count":11,"highest_post_number":23,"image_url":null,"created_at":"2019-08-22T17:33:06.337Z","last_posted_at":"2026-03-08T14:39:08.041Z","bumped":true,"bumped_at":"2026-03-08T14:39:08.041Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"As you properly know, NodeBB supports two DB backends, Redis and MongoDB. Discourse importer script supports them both. In this tutorial, we will learn how to migrate NodeBB with MongoDB as DB backend. We will be using N&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"how-to","slug":"how-to"}],"tags_descriptions":{"how-to":"How to guides contain steps to follow to solve a specific problem"},"views":5850,"like_count":29,"has_summary":false,"last_poster_username":"Twissell","category_id":180,"op_like_count":10,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user resolved a NodeBB to Discourse migration error by modifying the import script to handle missing posts and sort data chronologically, with community members suggesting added logging for better debugging.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":24426,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":60917,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":84520,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":15209,"primary_group_id":null,"flair_group_id":142},{"extras":"latest","description":"Most Recent Poster","user_id":145010,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Discourse MCP Setup in OpenAI Codex CLI","fancy_title_localized":false,"locale":"en","id":397662,"title":"Discourse MCP Setup in OpenAI Codex CLI","slug":"discourse-mcp-setup-in-openai-codex-cli","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2026-03-04T21:49:40.243Z","last_posted_at":"2026-03-04T21:49:40.379Z","bumped":true,"bumped_at":"2026-03-04T21:49:40.379Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I have been experimenting with Discourse MCP but found that the existing documentation in Meta for using it didn’t include anything for Codex CLI, and it was a little confusing working out which parts of the documentatio&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":543,"name":"ai","slug":"ai"},{"id":1087,"name":"mcp","slug":"mcp"},{"id":968,"name":"user-api","slug":"user-api"}],"tags_descriptions":{},"views":258,"like_count":4,"has_summary":false,"last_poster_username":"pacharanero","category_id":181,"op_like_count":4,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user shared a tested guide for integrating Discourse MCP with Codex CLI, detailing configuration steps and enabling write features, while another contributor provided an alternative configuration example for the Antigravity tool.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":13093,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Configuring AWS SES for outgoing, bounce, and incoming email","fancy_title_localized":false,"locale":"en","id":263604,"title":"Configuring AWS SES for outgoing, bounce, and incoming email","slug":"configuring-aws-ses-for-outgoing-bounce-and-incoming-email","posts_count":13,"reply_count":3,"highest_post_number":13,"image_url":null,"created_at":"2023-05-02T22:18:25.324Z","last_posted_at":"2026-02-26T03:11:21.833Z","bumped":true,"bumped_at":"2026-02-26T03:11:21.833Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I thought I’d share the configuration I came up with to use AWS SES for outgoing, bounce, and incoming email. There’s definitely some nuance to the SES service, and it took a good deal of trial and error to understand ex&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":39,"name":"email","slug":"email"},{"id":478,"name":"how-to","slug":"how-to"}],"tags_descriptions":{"how-to":"How to guides contain steps to follow to solve a specific problem"},"views":2871,"like_count":13,"has_summary":false,"last_poster_username":"jesse_c","category_id":180,"op_like_count":9,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users successfully implemented AWS SES for Discourse using Lambda, with one confirming compatibility with Python 3.14 and sharing updated layer build commands for deployment.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":129914,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":12454,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":89208,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":37716,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":189531,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Customizing themes without an Edit code button","fancy_title_localized":false,"locale":"en","id":329601,"title":"Customizing themes without an Edit code button","slug":"customizing-themes-without-an-edit-code-button","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":"https://d11a6trkgmumsb.cloudfront.net/original/4X/3/0/a/30a3bdd097573a7aea636864b876b095d364cc27.png","created_at":"2024-10-06T23:23:48.112Z","last_posted_at":"2026-02-25T10:48:12.767Z","bumped":true,"bumped_at":"2026-02-25T10:48:12.767Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Sometimes, you may want to customize a Discourse theme but find that there’s no “Custom code” section with an “Edit code” button available. This often happens with remote themes (themes installed from an external source)&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":741,"height":744,"url":"https://d11a6trkgmumsb.cloudfront.net/original/4X/3/0/a/30a3bdd097573a7aea636864b876b095d364cc27.png"},{"max_width":600,"max_height":600,"width":597,"height":600,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/3/0/a/30a3bdd097573a7aea636864b876b095d364cc27_2_597x600.png"},{"max_width":400,"max_height":400,"width":398,"height":400,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/3/0/a/30a3bdd097573a7aea636864b876b095d364cc27_2_398x400.png"},{"max_width":300,"max_height":300,"width":298,"height":300,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/3/0/a/30a3bdd097573a7aea636864b876b095d364cc27_2_298x300.png"},{"max_width":200,"max_height":200,"width":199,"height":200,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/3/0/a/30a3bdd097573a7aea636864b876b095d364cc27_2_199x200.png"}],"tags":[{"id":814,"name":"customization","slug":"customization"}],"tags_descriptions":{},"views":372,"like_count":15,"has_summary":false,"last_poster_username":"stephtara","category_id":178,"op_like_count":15,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"The discussion explains how to customize Discourse themes without an Edit code button by using custom components, and addresses a follow-up question about adding footer content to specific pages or categories using this method.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":95552,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":181081,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Move from standalone container to separate web and data containers","fancy_title_localized":false,"locale":"en","id":29413,"title":"Move from standalone container to separate web and data containers","slug":"move-from-standalone-container-to-separate-web-and-data-containers","posts_count":139,"reply_count":116,"highest_post_number":148,"image_url":null,"created_at":"2015-05-29T14:12:22.726Z","last_posted_at":"2026-02-24T00:32:38.549Z","bumped":true,"bumped_at":"2026-02-24T00:32:38.549Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":":warning: This is an advanced setup. Don’t follow this unless you are experienced with Linux server administration and Docker. You also need to pay close attention to commits to discourse_docker to make sure you notice &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"how-to","slug":"how-to"},{"id":24,"name":"docker","slug":"docker"},{"id":492,"name":"two-container","slug":"two-container"},{"id":481,"name":"advanced-setup","slug":"advanced-setup"}],"tags_descriptions":{"how-to":"How to guides contain steps to follow to solve a specific problem"},"views":25878,"like_count":254,"has_summary":true,"last_poster_username":"Canapin","category_id":180,"op_like_count":43,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"The discussion centers on the removal of the --two-container option from the discourse-install script, sparking debate over reduced convenience for advanced users, concerns about support burden, and perceived unequal treatment between paid and self-hosting users, while acknowledging that two-container setups remain technically supported.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":15019,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":75906,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":15209,"primary_group_id":null,"flair_group_id":142},{"extras":null,"description":"Frequent Poster","user_id":27384,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":35474,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"MKJ&rsquo;s Opinionated Discourse Deployment Configuration","fancy_title_localized":false,"locale":"en","id":193355,"title":"MKJ's Opinionated Discourse Deployment Configuration","slug":"mkjs-opinionated-discourse-deployment-configuration","posts_count":40,"reply_count":28,"highest_post_number":40,"image_url":null,"created_at":"2021-06-09T23:34:00.917Z","last_posted_at":"2026-02-16T19:56:58.881Z","bumped":true,"bumped_at":"2026-02-16T19:56:58.881Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I have been running a Discourse forum with a substantial amount of content and plenty of images over the past few years. Maker Forums has over 100GB of images and over 400,000 posts, of which a substantial amount was imp&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":479,"name":"explanation","slug":"explanation"},{"id":824,"name":"install","slug":"install"}],"tags_descriptions":{},"views":7032,"like_count":108,"has_summary":false,"last_poster_username":"mcdanlj","category_id":180,"op_like_count":54,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users are troubleshooting Transparent Huge Pages (THP) configuration on Linux systems for Discourse, confirming that sysctl settings may not persist without proper priority or overrides, despite no apparent conflicting files.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":2377,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":15209,"primary_group_id":null,"flair_group_id":142},{"extras":null,"description":"Frequent Poster","user_id":7720,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":63143,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":13375,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Customize direct-delivery Postfix configuration","fancy_title_localized":false,"locale":"en","id":118759,"title":"Customize direct-delivery Postfix configuration","slug":"customize-direct-delivery-postfix-configuration","posts_count":20,"reply_count":8,"highest_post_number":20,"image_url":null,"created_at":"2019-05-27T04:32:28.414Z","last_posted_at":"2026-02-14T23:28:15.998Z","bumped":true,"bumped_at":"2026-02-14T23:28:15.998Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"If you have a mail receiver container which requires customised Postfix configuration, this is the topic for you.  Herein are described the steps required to set Postfix main.cf configuration variables to whatever your h&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"how-to","slug":"how-to"},{"id":481,"name":"advanced-setup","slug":"advanced-setup"}],"tags_descriptions":{"how-to":"How to guides contain steps to follow to solve a specific problem"},"views":5013,"like_count":20,"has_summary":false,"last_poster_username":"gwmngilfen","category_id":180,"op_like_count":10,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user asks if the mail-receiver container can support multiple domains for incoming mail and Let's Encrypt certificates, seeking clarification on configuration flexibility beyond the default setup.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":16697,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":108275,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":109684,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":15209,"primary_group_id":null,"flair_group_id":142},{"extras":"latest","description":"Most Recent Poster","user_id":32726,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Install Discourse on a residential internet with Cloudflare Tunnel","fancy_title_localized":false,"locale":"en","id":211297,"title":"Install Discourse on a residential internet with Cloudflare Tunnel","slug":"install-discourse-on-a-residential-internet-with-cloudflare-tunnel","posts_count":69,"reply_count":43,"highest_post_number":72,"image_url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/b/3/f/b3f0eb49548dfd0986084517deeb172c3dbecd40_2_1024x512.png","created_at":"2021-12-07T14:02:07.164Z","last_posted_at":"2026-02-06T15:27:59.821Z","bumped":true,"bumped_at":"2026-02-06T15:27:59.821Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Since Discourse now has support for running on a Raspberry Pi, running a small instance in your home lab will become a common use case. However, many residential ISPs block incoming traffic to the ports 80/443 that Disco&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1200,"height":600,"url":"https://d11a6trkgmumsb.cloudfront.net/original/4X/b/3/f/b3f0eb49548dfd0986084517deeb172c3dbecd40.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":512,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/b/3/f/b3f0eb49548dfd0986084517deeb172c3dbecd40_2_1024x512.png"},{"max_width":800,"max_height":800,"width":800,"height":400,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/b/3/f/b3f0eb49548dfd0986084517deeb172c3dbecd40_2_800x400.png"},{"max_width":600,"max_height":600,"width":600,"height":300,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/b/3/f/b3f0eb49548dfd0986084517deeb172c3dbecd40_2_600x300.png"},{"max_width":400,"max_height":400,"width":400,"height":200,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/b/3/f/b3f0eb49548dfd0986084517deeb172c3dbecd40_2_400x200.png"},{"max_width":300,"max_height":300,"width":300,"height":150,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/b/3/f/b3f0eb49548dfd0986084517deeb172c3dbecd40_2_300x150.png"},{"max_width":200,"max_height":200,"width":200,"height":100,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/b/3/f/b3f0eb49548dfd0986084517deeb172c3dbecd40_2_200x100.png"}],"tags":[{"id":478,"name":"how-to","slug":"how-to"},{"id":824,"name":"install","slug":"install"},{"id":318,"name":"arm","slug":"arm"},{"id":739,"name":"raspberry-pi","slug":"raspberry-pi"}],"tags_descriptions":{"how-to":"How to guides contain steps to follow to solve a specific problem"},"views":8605,"like_count":163,"has_summary":true,"last_poster_username":"Falco","category_id":180,"op_like_count":38,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"The discussion addresses setting up Discourse on a Raspberry Pi using Cloudflare Tunnel to bypass ISP port restrictions, with a focus on resolving 443 errors by disabling email setup via DISCOURSE_SKIP_EMAIL_SETUP if not needed.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":8722,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Frequent Poster","user_id":109156,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":16290,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":117867,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":129813,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Add an offline page to display when Discourse is rebuilding or starting up","fancy_title_localized":false,"locale":"en","id":45238,"title":"Add an offline page to display when Discourse is rebuilding or starting up","slug":"add-an-offline-page-to-display-when-discourse-is-rebuilding-or-starting-up","posts_count":143,"reply_count":119,"highest_post_number":163,"image_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/9/0/9065d42ce76d3b600e84f1c694f932a9a1938b75.png","created_at":"2016-06-04T08:41:48.125Z","last_posted_at":"2026-02-03T11:01:35.205Z","bumped":true,"bumped_at":"2026-02-03T11:01:35.205Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":":warning: This guide is intended for advanced users, who are already using nginx outside the docker container. By following this guide you make your setup more complicated and will lose some speed benefits like HTTP2 if&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":317,"height":328,"url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/9/0/9065d42ce76d3b600e84f1c694f932a9a1938b75.png"},{"max_width":300,"max_height":300,"width":289,"height":300,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/9/0/9065d42ce76d3b600e84f1c694f932a9a1938b75_2_289x300.png"},{"max_width":200,"max_height":200,"width":193,"height":200,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/9/0/9065d42ce76d3b600e84f1c694f932a9a1938b75_2_193x200.png"}],"tags":[{"id":478,"name":"how-to","slug":"how-to"},{"id":481,"name":"advanced-setup","slug":"advanced-setup"},{"id":271,"name":"configuring","slug":"configuring"}],"tags_descriptions":{"how-to":"How to guides contain steps to follow to solve a specific problem"},"views":244739,"like_count":340,"has_summary":true,"last_poster_username":"merefield","category_id":180,"op_like_count":100,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users discuss alternative, simpler methods to handle offline pages during Discourse rebuilds, such as using plugins or container bootstrapping to reduce downtime and complexity.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":15568,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":24453,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":32,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":17621,"primary_group_id":47,"flair_group_id":47},{"extras":"latest","description":"Most Recent Poster","user_id":27384,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Configuring the default sidebar for your users","fancy_title_localized":false,"locale":"en","id":347764,"title":"Configuring the default sidebar for your users","slug":"configuring-the-default-sidebar-for-your-users","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":"https://d11a6trkgmumsb.cloudfront.net/original/4X/7/f/4/7f4ed72896403abf8b7670f46a655ea316b0e802.png","created_at":"2025-01-17T23:01:22.584Z","last_posted_at":"2025-01-18T01:59:06.495Z","bumped":true,"bumped_at":"2026-01-29T14:47:30.573Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"The sidebar provides quick access to important sections of your Discourse site. While users can customize their own sidebar to suit their preferences, providing a thoughtful default setup helps especially new users and v&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":266,"height":445,"url":"https://d11a6trkgmumsb.cloudfront.net/original/4X/7/f/4/7f4ed72896403abf8b7670f46a655ea316b0e802.png"},{"max_width":400,"max_height":400,"width":239,"height":400,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/7/f/4/7f4ed72896403abf8b7670f46a655ea316b0e802_2_239x400.png"},{"max_width":300,"max_height":300,"width":179,"height":300,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/7/f/4/7f4ed72896403abf8b7670f46a655ea316b0e802_2_179x300.png"},{"max_width":200,"max_height":200,"width":119,"height":200,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/7/f/4/7f4ed72896403abf8b7670f46a655ea316b0e802_2_119x200.png"}],"tags":[{"id":483,"name":"sidebar","slug":"sidebar"}],"tags_descriptions":{},"views":604,"like_count":16,"has_summary":false,"last_poster_username":"NateDhaliwal","category_id":178,"op_like_count":11,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"NateDhaliwal expresses appreciation for the new documentation on admin sidebar customization, noting it addresses long-sought guidance for managing default sidebar configurations for users.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":95552,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Configuring AWS&rsquo;s Amazon S3 for storage and Cloudfront for CDNs","fancy_title_localized":false,"locale":"en","id":392369,"title":"Configuring AWS's Amazon S3 for storage and Cloudfront for CDNs","slug":"configuring-awss-amazon-s3-for-storage-and-cloudfront-for-cdns","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2025-12-30T03:58:29.998Z","last_posted_at":"2026-01-13T17:22:50.447Z","bumped":true,"bumped_at":"2026-01-13T17:56:03.694Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Getting Started\nYou will need: \n\nA Discourse instance with app.yml access\nAWS account\n\nNaming Strategy\nThere are many places to make mistakes. Using a naming convention strategy that makes sense to you and perhaps others&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":72,"name":"s3","slug":"s3"},{"id":46,"name":"cdn","slug":"cdn"}],"tags_descriptions":{},"views":158,"like_count":1,"has_summary":false,"last_poster_username":"philh","category_id":180,"op_like_count":1,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Philh revised the CloudFront setup by using a custom origin with subdomain.yourdomain.tld instead of a temporary S3 bucket, simplifying distribution configuration while maintaining caching and security settings.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":15291,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Setup a ToolTip in your Forum","fancy_title_localized":false,"locale":"en","id":45792,"title":"Setup a ToolTip in your Forum","slug":"setup-a-tooltip-in-your-forum","posts_count":5,"reply_count":1,"highest_post_number":5,"image_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/2/9/29795cb79a11f5b947ca4b83334a38eee138cc01.png","created_at":"2016-06-16T23:09:01.116Z","last_posted_at":"2026-01-12T16:59:30.521Z","bumped":true,"bumped_at":"2026-01-12T16:59:30.521Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi, this is my first post sharing a resource to help this wonderful community. \nI want to help them create simple forms a tooltip for your forum making it modern and clean, ok lets do it! \nFirst what is tooltip? A toolti&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":377,"height":418,"url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/2/9/29795cb79a11f5b947ca4b83334a38eee138cc01.png"},{"max_width":400,"max_height":400,"width":360,"height":400,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/2/9/29795cb79a11f5b947ca4b83334a38eee138cc01_2_360x400.png"},{"max_width":300,"max_height":300,"width":270,"height":300,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/2/9/29795cb79a11f5b947ca4b83334a38eee138cc01_2_270x300.png"},{"max_width":200,"max_height":200,"width":180,"height":200,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/2/9/29795cb79a11f5b947ca4b83334a38eee138cc01_2_180x200.png"}],"tags":[{"id":478,"name":"how-to","slug":"how-to"}],"tags_descriptions":{"how-to":"How to guides contain steps to follow to solve a specific problem"},"views":3178,"like_count":23,"has_summary":false,"last_poster_username":"denvergeeks","category_id":179,"op_like_count":11,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user shares CSS code to create tooltips for forums, while another suggests using a theme component instead, noting hover-based tooltips don’t work well on mobile devices.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":20815,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":32,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":17969,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":72263,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Deploy Discourse without Docker","fancy_title_localized":false,"locale":"en","id":351194,"title":"Deploy Discourse without Docker","slug":"deploy-discourse-without-docker","posts_count":34,"reply_count":19,"highest_post_number":36,"image_url":null,"created_at":"2025-02-08T03:56:12.775Z","last_posted_at":"2026-01-08T17:05:01.166Z","bumped":true,"bumped_at":"2026-01-08T17:05:01.166Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Though it is more convenient and safer to deploy Discourse following the official install guide, I want to dive deeper into the container and see how it can be deployed in Linux without Docker. I want to share the step&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":5,"name":"unsupported-install","slug":"unsupported-install"},{"id":481,"name":"advanced-setup","slug":"advanced-setup"}],"tags_descriptions":{},"views":1521,"like_count":17,"has_summary":false,"last_poster_username":"lion","category_id":180,"op_like_count":8,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user shares a detailed guide on deploying Discourse on Linux without Docker, including system setup, dependencies, configuration, and a script for installation, emphasizing manual steps and potential risks.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":135057,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":null,"description":"Frequent Poster","user_id":15209,"primary_group_id":null,"flair_group_id":142},{"extras":null,"description":"Frequent Poster","user_id":182632,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":182437,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Writing an effective feature request, a step by step guide","fancy_title_localized":false,"locale":"en","id":327385,"title":"Writing an effective feature request, a step by step guide","slug":"writing-an-effective-feature-request-a-step-by-step-guide","posts_count":4,"reply_count":2,"highest_post_number":6,"image_url":"https://d11a6trkgmumsb.cloudfront.net/original/4X/8/9/8/898f1e84b2954e2445a84e543c97c9737351ac2e.png","created_at":"2024-09-20T08:52:16.199Z","last_posted_at":"2024-10-01T19:12:29.950Z","bumped":true,"bumped_at":"2026-01-05T10:06:08.645Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Summary\nThis documentation topic covers writing a feature request in Discourse: A Step-by-Step Guide. \nStep 1: Before You Start\nSo, you have great idea for a Discourse feature? That’s fantastic! Here’s how you can share &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":775,"height":163,"url":"https://d11a6trkgmumsb.cloudfront.net/original/4X/8/9/8/898f1e84b2954e2445a84e543c97c9737351ac2e.png"},{"max_width":600,"max_height":600,"width":600,"height":126,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/8/9/8/898f1e84b2954e2445a84e543c97c9737351ac2e_2_600x126.png"},{"max_width":400,"max_height":400,"width":400,"height":84,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/8/9/8/898f1e84b2954e2445a84e543c97c9737351ac2e_2_400x84.png"},{"max_width":300,"max_height":300,"width":300,"height":63,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/8/9/8/898f1e84b2954e2445a84e543c97c9737351ac2e_2_300x63.png"},{"max_width":200,"max_height":200,"width":200,"height":42,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/8/9/8/898f1e84b2954e2445a84e543c97c9737351ac2e_2_200x42.png"}],"tags":[],"tags_descriptions":{},"views":649,"like_count":28,"has_summary":false,"last_poster_username":"mcwumbly","category_id":181,"op_like_count":17,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Writing effective feature requests involves searching existing discussions, creating informative titles, and tagging topics to help the Discourse team identify areas for improvement.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":63814,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":43913,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":4263,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"Common list of imports for Theme Components/plugins (JS)","fancy_title_localized":false,"locale":"en","id":382493,"title":"Common list of imports for Theme Components/plugins (JS)","slug":"common-list-of-imports-for-theme-components-plugins-js","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2025-09-13T03:13:05.568Z","last_posted_at":"2025-12-26T12:19:50.196Z","bumped":true,"bumped_at":"2025-12-26T12:19:50.196Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I usually find myself digging around to get imports for different things when I make a Theme Component, so I decided to compile a bunch of them and put them here. \nEmber-related\n\n\n\n\nName\nImport\nUsage\n\n\n\n\nComponent\nimport&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":171,"like_count":12,"has_summary":false,"last_poster_username":"chapoi","category_id":179,"op_like_count":11,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users appreciate the compiled list of Ember and Discourse imports for theme components, noting VS Code's autocomplete often suggests incorrect paths, making such references helpful.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":"latest","description":"Most Recent Poster","user_id":113000,"primary_group_id":null,"flair_group_id":47}]},{"fancy_title":"Running Discourse with WordPress (Docker) on a single VPS using Nginx Reverse Proxy","fancy_title_localized":false,"locale":"en","id":392094,"title":"Running Discourse with WordPress (Docker) on a single VPS using Nginx Reverse Proxy","slug":"running-discourse-with-wordpress-docker-on-a-single-vps-using-nginx-reverse-proxy","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2025-12-24T16:14:24.554Z","last_posted_at":"2025-12-24T16:14:24.630Z","bumped":true,"bumped_at":"2025-12-24T16:14:24.630Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Introduction\nBy default, a Discourse “standalone” installation binds to ports 80 and 443. To host another application like WordPress on the same server, you must reconfigure Discourse to listen on an internal port and us&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":66,"name":"wordpress","slug":"wordpress"}],"tags_descriptions":{},"views":92,"like_count":2,"has_summary":false,"last_poster_username":"thaidb","category_id":180,"op_like_count":2,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Discourse must be reconfigured to use internal ports with Nginx reverse proxy to coexist with WordPress on a single VPS, enabling shared SSL and centralized traffic management.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":27495,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Some wp-discourse + cloudflare lessons learned","fancy_title_localized":false,"locale":"en","id":391942,"title":"Some wp-discourse + cloudflare lessons learned","slug":"some-wp-discourse-cloudflare-lessons-learned","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/0/d/2/0d2c8d563a23447e3f6175e1073d52f614b627eb_2_1024x567.png","created_at":"2025-12-22T18:06:12.689Z","last_posted_at":"2025-12-22T18:06:12.802Z","bumped":true,"bumped_at":"2025-12-22T18:06:12.802Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Some personal setup-specific lessons I’ve learned in the last few months with Discourse, wp-discourse, and Cloudflare. Sharing in case any of this is useful to anyone. \nEnvironment: \n\nDiscourse &amp; Wordpress hosted on sepa&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":2190,"height":1214,"url":"https://d11a6trkgmumsb.cloudfront.net/original/4X/0/d/2/0d2c8d563a23447e3f6175e1073d52f614b627eb.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":567,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/0/d/2/0d2c8d563a23447e3f6175e1073d52f614b627eb_2_1024x567.png"},{"max_width":800,"max_height":800,"width":800,"height":443,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/0/d/2/0d2c8d563a23447e3f6175e1073d52f614b627eb_2_800x443.png"},{"max_width":600,"max_height":600,"width":600,"height":332,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/0/d/2/0d2c8d563a23447e3f6175e1073d52f614b627eb_2_600x332.png"},{"max_width":400,"max_height":400,"width":400,"height":221,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/0/d/2/0d2c8d563a23447e3f6175e1073d52f614b627eb_2_400x221.png"},{"max_width":300,"max_height":300,"width":300,"height":166,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/0/d/2/0d2c8d563a23447e3f6175e1073d52f614b627eb_2_300x166.png"},{"max_width":200,"max_height":200,"width":200,"height":110,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/0/d/2/0d2c8d563a23447e3f6175e1073d52f614b627eb_2_200x110.png"}],"tags":[{"id":252,"name":"wp-discourse","slug":"wp-discourse"}],"tags_descriptions":{},"views":95,"like_count":2,"has_summary":false,"last_poster_username":"Lee_Ars","category_id":180,"op_like_count":2,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user shares lessons learned from integrating Discourse with WordPress using wp-discourse, Cloudflare, and AWS, focusing on solving API rate-limiting issues via VPC host file adjustments and resolving comment display race conditions with a custom mu-plugin and cache-clearing strategy.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":4457,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Set up Let’s Encrypt with multiple domains / redirects","fancy_title_localized":false,"locale":"en","id":56685,"title":"Set up Let’s Encrypt with multiple domains / redirects","slug":"set-up-let-s-encrypt-with-multiple-domains-redirects","posts_count":113,"reply_count":142,"highest_post_number":188,"image_url":null,"created_at":"2017-02-01T02:21:03.592Z","last_posted_at":"2025-12-16T02:52:10.263Z","bumped":true,"bumped_at":"2025-12-16T02:52:10.263Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"NOTE: @pfaffman says: This page needs to be cleaned up. There is now a new ENV setting that will let you add more hostnames. In your app.yml under your DISCOURSE_HOSTNAME line (it can go many places but that one makes se&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"how-to","slug":"how-to"},{"id":709,"name":"letsencrypt","slug":"letsencrypt"}],"tags_descriptions":{"how-to":"How to guides contain steps to follow to solve a specific problem"},"views":19951,"like_count":214,"has_summary":true,"last_poster_username":"philh","category_id":180,"op_like_count":48,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users discuss using DISCOURSE_HOSTNAME_ALIASES in app.yml to add multiple domains for Let's Encrypt certificates, confirming it resolves redirect and certificate errors, with clarification on correct usage and issues related to AWS CDN and rate limiting.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":10365,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":27384,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":141713,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":57788,"primary_group_id":null,"flair_group_id":148},{"extras":"latest","description":"Most Recent Poster","user_id":15291,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Override existing Discourse methods in plugins","fancy_title_localized":false,"locale":"en","id":83389,"title":"Override existing Discourse methods in plugins","slug":"override-existing-discourse-methods-in-plugins","posts_count":9,"reply_count":5,"highest_post_number":13,"image_url":null,"created_at":"2018-03-20T11:37:16.168Z","last_posted_at":"2025-12-10T17:36:56.810Z","bumped":true,"bumped_at":"2025-12-10T17:36:56.810Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I’ve been running into a bunch of instances recently of needing to override existing ruby methods from plugins, and thought I’d share my best practices here. \nOverriding an instance method\nclass ::TopicQuery\n  module Bab&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"how-to","slug":"how-to"},{"id":274,"name":"plugin-guides","slug":"plugin-guides"}],"tags_descriptions":{"how-to":"How to guides contain steps to follow to solve a specific problem"},"views":4871,"like_count":65,"has_summary":false,"last_poster_username":"TimFelix","category_id":179,"op_like_count":35,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A discussion on overriding existing Discourse methods in plugins, focusing on techniques for instance methods, class methods, and scopes, with a recent example showing how to override a singleton class method using prepend in a module.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":12933,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":66606,"primary_group_id":null,"flair_group_id":48},{"extras":null,"description":"Frequent Poster","user_id":13378,"primary_group_id":null,"flair_group_id":142},{"extras":null,"description":"Frequent Poster","user_id":88244,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":185178,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Discourse AI: Discord Bot Integration Guide","fancy_title_localized":false,"locale":"en","id":390391,"title":"Discourse AI: Discord Bot Integration Guide","slug":"discourse-ai-discord-bot-integration-guide","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/4/8/1/481cdd154f62f2998b6f48618d71c6e0d1b1d002_2_1024x472.png","created_at":"2025-12-04T10:07:23.079Z","last_posted_at":"2025-12-04T10:07:23.174Z","bumped":true,"bumped_at":"2025-12-04T10:28:33.211Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Disclaimer: \nI am not the creator of the integration, I can’t provide support for it beyond a best-effort friendly community help, I am just another user that wanted this setup on their site and didn’t find a clear wa&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":3452,"height":1594,"url":"https://d11a6trkgmumsb.cloudfront.net/original/4X/4/8/1/481cdd154f62f2998b6f48618d71c6e0d1b1d002.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":472,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/4/8/1/481cdd154f62f2998b6f48618d71c6e0d1b1d002_2_1024x472.png"},{"max_width":800,"max_height":800,"width":800,"height":369,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/4/8/1/481cdd154f62f2998b6f48618d71c6e0d1b1d002_2_800x369.png"},{"max_width":600,"max_height":600,"width":600,"height":277,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/4/8/1/481cdd154f62f2998b6f48618d71c6e0d1b1d002_2_600x277.png"},{"max_width":400,"max_height":400,"width":400,"height":184,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/4/8/1/481cdd154f62f2998b6f48618d71c6e0d1b1d002_2_400x184.png"},{"max_width":300,"max_height":300,"width":300,"height":138,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/4/8/1/481cdd154f62f2998b6f48618d71c6e0d1b1d002_2_300x138.png"},{"max_width":200,"max_height":200,"width":200,"height":92,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/4/8/1/481cdd154f62f2998b6f48618d71c6e0d1b1d002_2_200x92.png"}],"tags":[],"tags_descriptions":{},"views":766,"like_count":2,"has_summary":false,"last_poster_username":"DevTeVe","category_id":180,"op_like_count":2,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Discourse AI integrates with Discord via webhooks and progressive edits to simulate live streaming responses without hosting a separate bot, using slash commands registered manually via API.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":183536,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Set up a staging server","fancy_title_localized":false,"locale":"en","id":225951,"title":"Set up a staging server","slug":"set-up-a-staging-server","posts_count":33,"reply_count":32,"highest_post_number":35,"image_url":"https://d11a6trkgmumsb.cloudfront.net/original/4X/0/a/2/0a2d344e0af5be55626a4a442ebbb8ea02d85b0c.png","created_at":"2022-05-03T05:24:53.285Z","last_posted_at":"2024-11-30T11:12:02.918Z","bumped":true,"bumped_at":"2025-12-01T19:58:33.852Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"There are several tricks that can help when you are setting up a staging server. \nWhat is a staging server?\nA staging server is essentially a clone of a production site. It also resides on a server, and functions identic&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":852,"height":556,"url":"https://d11a6trkgmumsb.cloudfront.net/original/4X/0/a/2/0a2d344e0af5be55626a4a442ebbb8ea02d85b0c.png"},{"max_width":800,"max_height":800,"width":800,"height":522,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/0/a/2/0a2d344e0af5be55626a4a442ebbb8ea02d85b0c_2_800x522.png"},{"max_width":600,"max_height":600,"width":600,"height":391,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/0/a/2/0a2d344e0af5be55626a4a442ebbb8ea02d85b0c_2_600x391.png"},{"max_width":400,"max_height":400,"width":400,"height":261,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/0/a/2/0a2d344e0af5be55626a4a442ebbb8ea02d85b0c_2_400x261.png"},{"max_width":300,"max_height":300,"width":300,"height":195,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/0/a/2/0a2d344e0af5be55626a4a442ebbb8ea02d85b0c_2_300x195.png"},{"max_width":200,"max_height":200,"width":200,"height":130,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/4X/0/a/2/0a2d344e0af5be55626a4a442ebbb8ea02d85b0c_2_200x130.png"}],"tags":[{"id":478,"name":"how-to","slug":"how-to"}],"tags_descriptions":{"how-to":"How to guides contain steps to follow to solve a specific problem"},"views":6101,"like_count":98,"has_summary":false,"last_poster_username":"manuel","category_id":180,"op_like_count":32,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users encounter issues while seeding test data on a staging server, with errors related to environment restrictions, and seek solutions to resolve database command limitations in a multisite setup.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":57788,"primary_group_id":null,"flair_group_id":148},{"extras":null,"description":"Frequent Poster","user_id":27384,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":12454,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":72263,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":82960,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"Configure single sign-on (SSO) with WP Discourse and DiscourseConnect","fancy_title_localized":false,"locale":"en","id":223494,"title":"Configure single sign-on (SSO) with WP Discourse and DiscourseConnect","slug":"configure-single-sign-on-sso-with-wp-discourse-and-discourseconnect","posts_count":20,"reply_count":17,"highest_post_number":22,"image_url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/8/2/82659d0e798ad365af992d79e897a33aa8a5eda0.png","created_at":"2022-04-06T13:15:15.387Z","last_posted_at":"2025-11-24T11:46:16.942Z","bumped":true,"bumped_at":"2025-11-24T11:46:16.942Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"The WP Discourse plugin lets you set up DiscourseConnect in Wordpress so your users can use their Wordpress account to log into Discourse, or their Discourse account to log into Wordpress. Before you can set up Discourse&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":705,"height":138,"url":"https://d11a6trkgmumsb.cloudfront.net/original/3X/8/2/82659d0e798ad365af992d79e897a33aa8a5eda0.png"},{"max_width":600,"max_height":600,"width":600,"height":117,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/8/2/82659d0e798ad365af992d79e897a33aa8a5eda0_2_600x117.png"},{"max_width":400,"max_height":400,"width":400,"height":78,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/8/2/82659d0e798ad365af992d79e897a33aa8a5eda0_2_400x78.png"},{"max_width":300,"max_height":300,"width":300,"height":58,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/8/2/82659d0e798ad365af992d79e897a33aa8a5eda0_2_300x58.png"},{"max_width":200,"max_height":200,"width":200,"height":39,"url":"https://d11a6trkgmumsb.cloudfront.net/optimized/3X/8/2/82659d0e798ad365af992d79e897a33aa8a5eda0_2_200x39.png"}],"tags":[{"id":478,"name":"how-to","slug":"how-to"},{"id":66,"name":"wordpress","slug":"wordpress"},{"id":263,"name":"discourseconnect","slug":"discourseconnect"},{"id":60,"name":"sso","slug":"sso"},{"id":199,"name":"video","slug":"video"}],"tags_descriptions":{"how-to":"How to guides contain steps to follow to solve a specific problem"},"views":6005,"like_count":21,"has_summary":false,"last_poster_username":"angus","category_id":178,"op_like_count":11,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users are troubleshooting SSO setup issues between WordPress and Discourse, including redirect problems and handling anonymized users that auto-recreate accounts, with recommendations to ban recreated accounts or adjust WordPress roles.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":13378,"primary_group_id":null,"flair_group_id":142},{"extras":null,"description":"Frequent Poster","user_id":149251,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":185381,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":143698,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":15209,"primary_group_id":null,"flair_group_id":142}]},{"fancy_title":"WP Discourse Comments Block","fancy_title_localized":false,"locale":"en","id":249790,"title":"WP Discourse Comments Block","slug":"wp-discourse-comments-block","posts_count":17,"reply_count":10,"highest_post_number":17,"image_url":null,"created_at":"2022-12-24T07:43:20.433Z","last_posted_at":"2025-11-13T19:03:41.941Z","bumped":true,"bumped_at":"2025-11-13T19:03:41.941Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"From version 2.4.7, the WP Discourse Plugin includes a Discourse Comments block for the Block Editor. The Discourse Comments block is primary way to add Discourse Comments to a block-enabled theme such as Twenty Twenty T&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":66,"name":"wordpress","slug":"wordpress"},{"id":199,"name":"video","slug":"video"}],"tags_descriptions":{},"views":1030,"like_count":12,"has_summary":false,"last_poster_username":"cogdog","category_id":178,"op_like_count":4,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user expresses surprise at discovering the Discourse Comments block feature in the WP Discourse Plugin, which was previously overlooked despite its inclusion in version 2.4.7 for use in block-enabled themes.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":13378,"primary_group_id":null,"flair_group_id":142},{"extras":null,"description":"Frequent Poster","user_id":94563,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":83631,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":16295,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"User custom fields validation implementation","fancy_title_localized":false,"locale":"en","id":388179,"title":"User custom fields validation implementation","slug":"user-custom-fields-validation-implementation","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2025-11-11T20:10:06.292Z","last_posted_at":"2025-11-11T20:10:06.361Z","bumped":true,"bumped_at":"2025-11-11T20:10:06.361Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"This is an article for future DEVs that might need this for creating custom Plugin specifically for validation User custom fields. \nWritten while having Discourse version 3.6.0.beta3-latest (current commit a7326abf15), s&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":618,"name":"user-custom-fields","slug":"user-custom-fields"},{"id":278,"name":"development","slug":"development"}],"tags_descriptions":{},"views":94,"like_count":1,"has_summary":false,"last_poster_username":"Yan_Rudenko","category_id":179,"op_like_count":1,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A developer shares a guide for implementing unique value validation on Discourse user custom fields via a custom plugin, addressing lack of documentation and core API usage.","is_nested_view":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":183669,"primary_group_id":null,"flair_group_id":null}]}]}}