Install plugins on a self-hosted site

:warning: This guide assumes that you have a self-hosted standard installation. We only support the standard method of install here, so these instructions assume you have a standard install.

:warning: This guide only applies to self-hosted Discourse instances. If you are using a managed hosting service, the available plugins are controlled by your hosting provider. For example, on our hosting these specific plugins are available by hosting tier.

:information_source: As of mid-2025, many popular official plugins have been bundled into Discourse core. These plugins (including Solved, Data Explorer, AI, Assign, Reactions, and many more) no longer need to be installed separately — they ship with Discourse and can be enabled via site settings. If you try to rebuild with a bundled plugin still in your app.yml, you’ll see a HINT message telling you to remove it. This guide is for plugins that are not bundled with core.

In this tutorial, we’ll install the Discourse Shared Edits plugin.

This tutorial requires an understanding of how to use GitHub repos, specifically, how to get or copy the git clone URL and how to edit YAML (*.yml) files via the terminal using nano, specifically how to save and exit on nano. YAML files strongly follow indentations, so be sure to respect these as you copy and paste and edit the necessary *.yml for your Discourse instance. Always use spaces to indent in .yml files, not tabs.

  • Copy the plugin’s GitHub git clone url.

  • Access your container’s app.yml file (present in /var/discourse/containers/)

    cd /var/discourse
    nano containers/app.yml
    
  • Add the plugin’s repository URL to your container’s app.yml file:

    hooks:
      after_code:
        - exec:
            cd: $home/plugins
            cmd:
              - git clone https://github.com/discourse/docker_manager.git
              - git clone https://github.com/discourse/discourse-shared-edits.git
    

    Add the plugin’s git clone url just below the line containing git clone https://github.com/discourse/docker_manager.git)

    Follow the existing format of the docker_manager.git line; if it contains sudo -E -u discourse then include that prefix in your new line too.

  • Rebuild the container:

    cd /var/discourse
    ./launcher rebuild app
    

    That’s it, you’ve successfully installed the Discourse Shared Edits plugin on your Discourse instance!


If your plugin is hosted in a private repository

You must use an OAuth token:

With the OAuth token, you can install your plugin in the same way as a public repo, and you don’t need to create a SSH key.

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
              - git clone https://<token>@github.com/owner/repo.git

We strongly advise you to use OAuth tokens for plugins in private repositories. However, if you cannot, see below.

SSH Key Private Install Steps
run:
  - exec: echo "Beginning of custom commands"
  
  - exec: cd /var/www/discourse && sudo -u discourse bundle install --deployment --without test --without development
  - exec: echo "Host github.com\n\tStrictHostKeyChecking no\n" >> /user/.ssh/config
  - file:
      path: /user/.ssh/id_rsa
      chmod: 600
      contents: |
        -----BEGIN RSA PRIVATE KEY-----
        MIIEogIBAAKCAQEArCQG213utzqE5YVjTVF5exGRCkE9OuM7LCp/FOuPdoHrFUXk
           .... etc ....
        -----END RSA PRIVATE KEY-----
  - file:
      path: /user/.ssh/id_rsa.pub
      chmod: 600
      contents: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tj .... etc .... user@discourse
  - exec: cd $home/plugins && git clone git@github.com:SecretOrg/secret-plugin.git
  - exec: cd $home && sudo -E -u discourse bundle exec rake db:migrate
  - exec: cd $home && rm -fr tmp/cache
  - exec: cd $home &&  sudo -E -u discourse bundle exec rake assets:precompile
  - exec: rm /user/.ssh/id_rsa
  - exec: rm /user/.ssh/id_rsa.pub

  - exec: echo "End of custom commands"
  • Rebuild the container:
cd /var/discourse
./launcher rebuild app

Your private plugin should be installed on your Discourse instance.

How to uninstall a plugin

To remove a plugin, simply remove the - git clone https://github.com/... line from your app.yml file and rebuild your site via

cd /var/discourse
./launcher rebuild app

Last edited by @sam 2026-03-18T03:38:49Z

Check documentPerform check on document:
173개의 좋아요
Discourse Slackdoor Plugin
How to create a new plugins?
Site maintenance mode during rebuilds?
Discourse Version 1.2
Embed Etherpad Lite pads into Discourse
Discourse Shared Edits
Solved Button Plugin
LDAP Setup for Discourse
Wild Apricot login plugin
About the Plugin category
Formatting toolbar
Quick Messages Plugin
Can Plugins Be Added To Basic Docker Install
Discourse Mark Plugin
How do i install plugins after doing a fork?
Installing Plugins with Git
Discourse Category Home :house:
Does this software allow admin to put Adsense ads in?
Generating lots of Invite Tokens
Tickets Plugin :tickets:
"Onebox Assistant", crawl for those previews reliably!
Daemonite Material Theme
News Plugin :newspaper:
Installing new plugins
Application Files after Digital Ocean Setup
How to ad banners?
Install plugins in your non-Docker development environment
How do you add plugins?
Watching Categories based on on group in discourse
Category Page Plugin
Community Network Visualisation
Topic Ratings Plugin
Bump Reset plugin - Annotated to help new devs
User feedback plugin
Update private plugin without rebuilding the application
Admin Statistics Report
Discord-rolesync plugin
Sign-In with Ethereum plugin
Discourse BBCode
Introducing Discourse Chat (BETA)
Projects management plugin
LDAP Auth Missing from Plugins
Collude - a collaborative text editor for Discourse
Turn Based Board Game
Can I access Discourse forum Database to use for PowerBI reporting?
Discourse Code Review
Discourse Poison Fountain
Custom Trust Level
Discourse Doc Categories
Advanced Google Analytics (v4)
Fatal: Not a git repository (or any parent up to mount point /discourse)
Fatal: Not a git repository (or any parent up to mount point /discourse)
Meta Pixel & Conversions API
How to add a Leaderboard link to the hamburger menu?
I need someone who can install a voting plugin
Custom Wizard Plugin :mage:
Introducing Font Awesome 5 and SVG icons
What should appear on /admin/update page?
Click To Edit
Legal Compliance Plugin
Triggering account creation/login on external service when a user logs in on discourse
Are plugins free using the open-source, self-host option?
ListenBrainz
Subscription Plugin not working (Error)
Discourse-a2a-bbcode
Error using discourse-oauth2-basic plugin with NeonCRM
Question Answer Plugin
How might we better structure #howto?
How might we better structure #howto?
Discourse Posthog Plugin
Cannot install new plugins: structure needs cleaning
Calendar Core - Needs any special theme?
Discourse Notifier
Discourse CommonMark text highlighting?
Mumble -- VOIP Plugin for Discourse
Advice on Installing Plugins
Smallcaps formatting
Cannot install plugin - nothing happens
What else do I need to take care of when self hosting?
Humanmark for Discourse - Hardware-Backed Humanity Verification
Topic Ratings Plugin
Verifiable Credentials Plugin
Installing discourse-math.git
Discourse Image Filter
Discourse Linkify Google Sheets
Discourse Voting missing table on postgresql
Discourse Signatures
Discourse BBCode Color
Discourse Post Sorting Customizer
Unikname Connect plugin
Discourse Video Upload Plugin with YouTube and Vimeo
Quoting not working
User profile by ID instead of username
"Onebox Assistant", crawl for those previews reliably!
Error after update failed today: [rake themes:update assets:precompile]
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' failed with return
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' failed with return
Votes don't Merge when we combine posts
Discourse Video Inline
Discourse User Feedback
LDAP Setup for Discourse
I need someone who can install a voting plugin
Availability of OpenID Connect in hosted plans
Codebytes Plugin
Multiple Users posting under same User or Group name?
What makes a successful volunteer Discourse sysadmin?
Not able to install any Discourse plugins
How to install the lazy-yt plugin
Issue With Sitemap
Discourse Private Replies
Google One Tap Login/Signup
Landing Pages Blog :small_airplane:
Search Thumbnails
Group Invitation Plugin
Discourse Mailgun Routes
Word Cloud plugin
Geo Blocking plugin
Post folding
Signed Google Cloud CDN URLs
Google Groups Link Plugin
Discourse LinkedIn Authentication
Discourse VK Authentication (vkontakte)
Discourse OneDrive Picker
Discourse BCC
Discourse Prometheus
Discourse Dictionary Plugin :ab:
Category Restrictor plugin
Dumbcourse – Old-browser friendly UI at /dumb (D-pad + small screens)
Slack Bot Construction Kit :robot:
Discourse Authorship Plugin
Discourse Livestream
Locked out from WinSCP and can't Install Plugins!
Create custom Automations
Affiliate link functions - rewrite
Editing a table whose some rows don't start with a pipe duplicate these rows
How to: discourse-sitemap is deprecated and merged into Discourse's core. Please remove it from your app.yml file.?
How to update plugins manually from the command line?
Landing Pages Blog :small_airplane:
Discourse Restricted Replies
Discourse Yearly Review
Discourse Saved Searches
Discourse Intercom (Advanced)
Discourse Salesforce
Discourse GitHub Verification
Discourse Algolia Search
Discourse Characters Required
Discourse No Bump
Discourse Teambuild
Installing Plugins in Discourse 101 for super-super dummies
Discourse Tooltips
Discourse Steam Login
Should I update my app.yml file?
Discourse Reach and Rights
Not enough space to rebuild
Landing Pages Plugin :small_airplane:
Configure OneLogin's SAML for Discourse
Plugin to Post Anonymous Thread via PN or give anonymous Feedback
Migrate a phpBB3 forum to Discourse
Discourse Codeberg Login
Mentionables
Discourse hosting on Linode?
Can I use the Subscriptions plugin on my own server?
Embed comments from Discourse in your single page app
Discourse Confused About the Number of Posts in a Topic?
How to show Full Name in Embeds
Restrict users to post certain words per category
Microsoft Graph Mail Poller
Allow-pm-to-staff
Snapblocks
Discourse AI Topic Summary :robot:
Animated Avatar
Discourse Who's Online
Discourse Google Perspective API
Discourse Newsletter Integration
Discourse Docs
Gitcoin Passport Plugin
Discourse Math Editor
Rebuilding the container is constantly failing after following the standard instructions on plugin install
ActivityPub Plugin
Developing Discourse Plugins - Part 6 - Add acceptance tests
Modal Window
Silenced Avatar Flair
Discourse Staff Alias
Discourse GCS Helper
Discourse Another SMTP
Can more than one post be selected as the solution?
Can more than one post be selected as the solution?
I need help on installing a plugin
Discourse Follow
Custom Topic Button (group)
Discourse FontAwesome Pro
Discourse Zoom
Rocket.Chat SSO + embed plugin
Discourse blog (article and comments)
Stop Forum Spam Plugin
Email Extension
NFT avatar
Discourse Mingle
How can I install my own plugin written in Ruby?
Discourse MusicBrainz Onebox
Custom Topic Button
No editor preview while editing after upgrading to 3.x
Better-Anonymous
Error during upgrading from Beta 3.1.x to latest
Signatures plugin not in the /admin/plugins page
Category Moderators Enhancer
Monero Subscriptions Plugin
:cn: Discourse Math 插件
Discourse Signatures
Discourse Audio Message
Discourse Jira
Randomized Banner
🏆 Discourse Rich JSON-LD Microdata Plugin
Private Topics Plugin
Install discourse doc plugin from Git is failed
Discourse Restrict PMs to certain Groups
Discourse Chatbot :robot:
🖼️ Topic Gallery
Data Explorer Tutorial - Part 1 - Writing Your First Query
Option for scheduled replies
Discourse Disable Browser History Experiment
Publish Direct Messages
Discourse Authentication Validations
Discourse Provide Full Name in Mentions
Disable Email Verification for Discourse Plugin
Discourse send PDF inline
Discourse Anonymous Post
Indisposable Email - block disposable email domains
Discourse-embed-bilibili(在discourse中插入哔哩哔哩视频)
Set user registration IP address API endpoint
Installing discourse follow plugin in development (boot_dev) setup — no app.yml file
User Response Times
Babble Chat
Discourse mail daily summary plugin
Discourse Preset Topic Composer
Discourse Custom Topic Lists
Highest-Post Excerpts in Topic List
What to Expect When Rebuilding Discourse
Discourse Points Mall (Check-in, Shop, Orders, Makeup Cards, Ledger)
Seen lots of threads asking if Discourse is free when self hosted but nothing about the plugins
Rebuilding Forum (Restoring back-up works, rebuilding does not)
Discourse Surveys
Login Helper Plugin
Can't install reaction plugin
Error when installing Advertising
Globally replace translations
Discourse Retort
Discourse Translator
Discourse Category Experts
Discourse Chat Bridge (Telegram)
Trading Buttons
Discourse Disorder
Hubot Adapter for Discourse
Discourse No Bump
CJK Formatter Plugin
Self-hosting Index
SCIM Plugin
Journal Plugin
Problem installing docs
How to install and configure AI features step by step
Discourse Encrypt (deprecated)
Discourse Open Graph
Turbowarp plugin
Question about Docker Manager?
Moderation API Plugin
Discourse OpenID Connect (OIDC)
Dark Visitors
Discourse Dynamic Groups
Custom Summary Gist
Created as Default Sort Order
Truncate Digest
Topic List Previews (TLP)
Allow Title-Only Onebox
How to install the plugin on bitnami's repository
Discourse BBCode Tabs Plugin
Tag Intersection Navigator
📞 diskuz Call – Voice and video calls inside Discourse (P2P, no external apps)
I broke my site while updating it
I broke my site while updating it
Collections
Can Discourse ship frequent Docker images that do not need to be bootstrapped?
Push notifications for iPhone and Android apps
Highest-Post Excerpts in Topic List
Automation script: Move topic on close
Error installing theme from Github
Discourse Amazon SNS notifications
Best practices of keeping track of feature requests
Contact Form
No Bump First Post Plugin
How to Install Discourse Plugins Hosted in Private Repositories Using SSH Key?
How to Install Discourse Plugins Hosted in Private Repositories Using SSH Key?
Unable to rebuild app - failed with exit code 1
National Flags (fork)
What's yall's work-flow like?
Discourse Suggested Edits
VK ID OAuth 2.1 Authentication for Discourse
🔐 Yandex ID OAuth2 Authentication for Discourse
Discourse Daily Challenges
Discourse Bilibili Onebox
Buffer -- streamline sharing topics on social media
Discourse Member Application
Time Registration plugin
Plugin Cleaner
Communiteq Power Tools plugin
Category Event Policy
Calendar RSVP Posts
Contact Form
Workspace groups
Topic List Previews (TLP)
ProxyTracer: VPN & Proxy Blocker
Discourse Ko-fi integration
ReplyGif
Telegram Auth Plugin (work with latest discourse version)
Discourse User Location
什么时候可以在管理后台直接安装插件?
Process Manager :left_right_arrow: - formerly "Discourse Workflow"
Gitee 码云登录插件
Upgrading Mathjax to version 4
Updates no longer in the Admin UI?
Group User Status
Discourse AI plugin with self hosted discourse site
Angus' Events Plugin :calendar:
Install Discourse for development using Docker
Slow Discourse Rebuild on a VM with slow disks
Trading Buttons
Topic List Previews (TLP)
Why can't I install plugins locally?
MODELOC OneBox Plugin
How to install plugins without using a third-party host?
Event Duplicator: duplicate calendar events/topics into a new time period
How to Install Discourse Plugins Hosted in Private Repositories Using SSH Key?
How to make a discourse forum look like forum.glamour.de
Bookmark Notes
Discourse-Telegram chat bridge
[Solved] Admin-upgrade page not showing up
Synchronizer-base for any backup provider
"Your Docker installation is not using a supported storage driver."
Formatting issues adding plugins to app.yml
Solution icon does not show in posts
Custom Splash HTML Builder
Fixing problems with rebuild app
Auto Bookmarks plugin
Force specific users through moderation
Homepage Filter plugin
Voice recording plugin
How to hook up JWT Single Sign On to Discourse
Should all plugins be cloned as the `discourse` user?
How I can add plugin to my discourse
OAuth2 integration with Drupal
Discord Sync: sync a Discourse forum with a Discord server
No option appears to choose better answer
See TL3 Progress
Automatic Sitemap Linking
Discourse Avatar name_first_letter
Auto-suspend inactive users
Algolia plugin indexation
Telegram Notifications Plugin (discourse-telegram-notifications)
Trying to install plugin (But not working)
How to break 99k char limit?
How to edit plugins code?
I want to install a plugin for development, what should I do?
News Plugin :newspaper:
Locations Plugin :earth_africa:
Azure Blob Storage Plugin
./launcher rebuild app error './launcher: No such file or directory'
Discourse Wikilinks Plugin
Discourse-indexnow — Instantly notify Bing & Yandex when topics are created or edited
SSO for College Account
Should all plugins be cloned as the `discourse` user?
Favorites - select your favorite categories
Why do I need a block storage?
Plugin for Preventing Malicious Linking
Discourse Fingerprint - Browser Fingerprinting Plugin
Solved Reminders Plugin
Sidebar with categories
Merge Users Plugin
Discourse Bounce Guard plugin
Unable to find /plugins dir
Pwned Passwords Validator
Launcher rebuild app does nothing
Business plugins and install on-premise
Private repo on Github
Discourse Dice Roller (RogerBW)
Any options for over-riding the username restrictions?

바보 같은 질문을 해서 죄송하지만, git clone 명령에 sudo -E -u discourse를 포함해야 하는지 어떻게 알 수 있을까요?

3개의 좋아요

여러분의 docker_manager 줄은 어떻게 생겼나요?

5개의 좋아요

app.yml의 다른 항목들에는 sudo 부분이 없었기 때문에 그 부분을 생략했는데, 지금까지는 문제없이 잘 작동하고 있습니다.

5개의 좋아요
- exec: echo "Host github.com\n\tStrictHostKeyChecking no\n" >> /user/.ssh/config

이 방법은 더 이상 작동하지 않는 것 같습니다.

sh: 1: cannot create /user/.ssh/config: Directory nonexistent

자체 호스팅된 GIT 저장소를 사용 중인데, 정말로 SSH 키를 사용하고 싶습니다.

3개의 좋아요

컨테이너에 SSH 키가 필요하지 않습니다. 다음 내용을 삭제하십시오:

1개의 좋아요

죄송합니다, 잘 이해가 되지 않습니다.

저의 저장소는 SSH로 접근할 수 있습니다. SSH 키 없이 플러그인을 클론하는 방법은 무엇인가요?

1개의 좋아요

아. 내가 틀렸을 수도 있겠네요. 그렇다면 해당 디렉토리를 올바른 권한으로 생성해야 할지도 모르겠네요.

1개의 좋아요

혼란스러운 점은 예시 명령어 중 일부는 root로 실행해야 하고, 일부는 discourse 사용자로 실행해야 한다는 것입니다. 일관성이 떨어지는 것 같습니다.

  - exec: cd $home/plugins && git clone git@github.com:SecretOrg/secret-plugin.git

다음과 대비되는 경우입니다.

  - exec: cd $home && sudo -E -u discourse bundle exec rake db:migrate
 

실행 중인 컨테이너 셸에서 좀 더 자세히 조사해 보겠습니다.

이 플러그인 설치가 다소 복잡합니다. 테마 설치와 같은 방식으로 만들 수 있다면 좋겠습니다.

2개의 좋아요

Dashboard.literatecomputing.com은 몇 번의 클릭으로 플러그인을 설치할 수 있습니다. 무료 체험 그룹에 가입하면 무료로 사용할 수 있습니다.

4개의 좋아요

@Discourse, 가이드를 업데이트하시려면 아래에 작동하는 코드를 첨부합니다:

프라이빗 저장소에 액세스하기 위해 자체 SSH 키를 사용하려면 다음 단계를 따르세요:

  1. 프라이빗 SSH 키를 /var/discourse/shared/standalone/identity/id_rsa (또는 컨테이너에서 액세스할 수 있는 다른 위치)에 배치하세요. 다른 위치를 선택한 경우, 아래 템플릿의 경로를 이에 맞게 업데이트하는 것을 잊지 마세요.

  2. 다음 템플릿을 사용하여 플러그인을 추가하세요:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          # 프라이빗 저장소 액세스 설정
          - chown $(whoami) /shared/identity/id_rsa && chmod 600 /shared/identity/id_rsa
          - git config --global core.sshCommand "ssh -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -i /shared/identity/id_rsa"

          # 제 프라이빗 플러그인
          - git clone git@example.com:repo/private-discourse-plugin.git

          # 액세스 해제
          - git config --global --unset core.sshCommand
5개의 좋아요

필요 없는 건데 감사드립니다. 저는 원래 있던 간단한 것을 그대로 사용하고 있습니다.

예를 들어야 하는 이유를 설명해 주시겠어요? 이 때문인가요:

비공개 저장소에 액세스할 때 자체 SSH 키를 사용하세요

1개의 좋아요

URL에 토큰을 사용하는 것이 왜 나쁜가요?

1개의 좋아요

음, 이 수수께끼를 풀기 위한 도구를 가지고 있습니다 :winking_face_with_tongue:

컨테이너 구성 스니펫의 유용성 이해하기 AI

Jagster:

왜 누군가가 container/app.ym에서 그 스니펫을 사용하려 할까요?

gpt-4o:

질문에 효과적으로 답하기 위해서는 container/app.yml의 특정 스니펫에 대한 맥락을 이해해야 합니다. 더 자세한 내용이나 언급하신 실제 스니펫을 제공해 주시겠어요? 그러면 정확하고 도움이 되는 설명을 드릴 수 있습니다.

Jagster:

죄송합니다, 하지만 저에게는 이 컴포저가 필요했어요.

이것이 그 스니펫입니다:

”””

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          # Set private repo access
          - chown $(whoami) /shared/identity/id_rsa && chmod 600 /shared/identity/id_rsa
          - git config --global core.sshCommand "ssh -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -i /shared/identity/id_rsa"

          # My private plugins
          - git clone git@example.com:repo/private-discourse-plugin.git

          # Unset access
          - git config --global --unset core.sshCommand

”””

gpt-4o:

스니펫을 제공해 주셔서 감사합니다. 이 YAML 스니펫은 Discourse 인스턴스의 container/app.yml 구성 파일에 포함되도록 의도된 것입니다. 각 부분이 어떤 일을 하는지 살펴봅시다:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          # Set private repo access
          - chown $(whoami) /shared/identity/id_rsa && chmod 600 /shared/identity/id_rsa
          - git config --global core.sshCommand "ssh -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -i /shared/identity/id_rsa"

          # My private plugins
          - git clone git@example.com:repo/private-discourse-plugin.git

          # Unset access
          - git config --global --unset core.sshCommand

설명

  1. 디렉터리 설정:

    cd: $home/plugins
    

    작업 디렉터리를 플러그인이 위치한 곳($home/plugins)으로 변경합니다.

  2. 비공개 저장소 접근 설정:

    - chown $(whoami) /shared/identity/id_rsa && chmod 600 /shared/identity/id_rsa
    - git config --global core.sshCommand "ssh -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -i /shared/identity/id_rsa"
    
    • SSH 개인 키(id_rsa)의 소유자를 현재 사용자로 변경하고 권한을 600으로 설정합니다.
    • 지정된 개인 키를 사용하고 엄격한 호스트 키 검증을 비활성화하는 사용자 지정 SSH 명령을 Git에 구성합니다.
  3. 비공개 저장소 클론:

    - git clone git@example.com:repo/private-discourse-plugin.git
    

    Discourse 플러그인을 포함하는 비공개 Git 저장소를 클론합니다.

  4. SSH 명령 해제:

    - git config --global --unset core.sshCommand
    

    Git SSH 명령 구성을 기본 상태로 초기화합니다.

이 스니펫을 사용해야 하는 시기와 이유

  1. 비공개 저장소: 공개적으로 접근할 수 없으며 SSH 키 기반 인증이 필요한 비공개 Discourse 플러그인 저장소가 있는 경우.

  2. 자동화: 이 스크립트는 비공개 저장소에 대한 접근을 설정하고, 클론한 후 환경을 재설정하는 과정을 자동화하는 데 도움이 됩니다. 이는 지속적 배포(CI/CD) 설정이나 자동화된 서버 프로비저닝에 유용합니다.

  3. 보안 관리: SSH 키를 안전하게 처리합니다(파일 권한 설정 및 사용자 지정 SSH 명령 해제). 이는 자동화된 배포 동안 보안 포즈를 유지하는 데 중요합니다.

중요한 고려 사항

  • 개인 SSH 키(id_rsa)가 안전하게 관리되고 노출되지 않도록 하세요.
  • 보안 정책에 따라 소유자와 권한이 올바르게 설정되었는지 확인하세요.

Discourse의 app.yml 및 훅에 대한 더 자세한 정보와 맥락은 관련 Discourse 문서를 참조할 수 있습니다.

추가 질문이 있거나 구성에 대해 더 자세한 정보가 필요하시면 언제든지 질문해 주세요!

3개의 좋아요

안녕하세요! 정말 멋진 것 같습니다! 하지만 무료 트라이얼 그룹에 가입한 후 어떻게 진행해야 할지 모르겠습니다. @pfaffman 님, 도와주실 수 있을까요? SAML 플러그인을 설치하려고 합니다. Literate Computing을 테스트하여 설치하고 실행해 볼 수 있다면 정말 좋겠습니다!

감사합니다!

2개의 좋아요

제 템플릿 스니펫은 SSH 키를 제외하고 Git 저장소에 액세스할 다른 수단이 없는 경우(예: SSH 뒤의 자체 호스팅 Git 저장소)를 위해 준비된 것입니다.

5개의 좋아요

저에게 도움이 되었을 것은 이런 식의 설명이었을 겁니다. “어이 바보야! 셸에서 git clone 명령을 실행하지 마. 그냥 예시처럼 app.yml 파일에 명령을 추가하고, 들여쓰기가 올바른지 확인한 뒤 저장하고, 그 다음 재빌드 명령을 실행해.”

이 지침은 -E -u가 필요한 경우와 그렇지 않은 경우를 더 명확하게 설명할 수도 있습니다.

성공하기 전에 저는 다른 멍청한 실수도 몇 가지 저질렀습니다. 지금 지침을 다시 보면 거의 완벽하게 이해가 됩니다. 하지만 저 같은 초보자가 따라 할 것이라고 생각하고 지침이 작성되었다면, 여러 함정에 빠지는 것을 피할 수 있었을 겁니다.

6개의 좋아요

전문가는 아니니 좀 이해해 주세요…
어제 Discourse를 설치했고, 이제 플러그인을 설치하려고 하고 있습니다.
./launcher rebuild app을 실행해야 하나요?

아니면 그냥
./launcher destroy app
을 실행한 다음
./launcher start app
을 실행하면 되나요?

./launcher rebuild app을 실행하면 시간이 오래 걸리고, 웹사이트가 작동이 중단되거나 매우 느려집니다.

플러그인을 설치하는 유일한 방법은 리빌드입니다. 파괴하고 시작을 사용하면 기존 설정만 사용됩니다.

리빌드 전에 아무것도 파괴하지 마세요. 리빌드에 실패하면 start 명령을 사용하여 기존 컨테이너를 다시 온라인으로 전환할 수 있기 때문입니다.

현재 컨테이너가 하나만 설정되어 있죠? 그렇다면 리빌드 시 컨테이너가 먼저 중지되므로 해당 포럼이 오프라인 상태가 됩니다. 그리고 리빌드는 시간이 오래 걸립니다.

컨테이너를 두 개로 설정하면 오프라인 시간이 몇 분으로 줄어듭니다. 하지만 이러한 기본 작업에 익숙해지기 전까지는 설정을 변경하지 마세요.

3개의 좋아요