Disco - Telegram 알림이 포함된 인터랙티브 셸 Discourse 관리 도구

disco - 인터랙티브 셸 Discourse 관리 도구 (Telegram 알림 지원)

:information_source: 요약 유지보수 작업에 대한 자동 Telegram 알림과 인터랙티브 메뉴 인터페이스를 갖춘 Discourse 관리용 커맨드라인 래퍼
:hammer_and_wrench: 리포지토리 링크 GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub
:open_book: 문서 설치 가이드 · 빠른 시작 · 예시

:wave: 소개

안녕하세요 여러분!

커뮤니티 포럼을 관리하면서 만든 솔루션을 공유하고자 합니다. 여러분과 마찬가지로 저도 커뮤니티용 Telegram 그룹을 운영하고 있는데, Discourse를 업데이트하거나 재시작할 때마다 “포럼이 다운됐나요?” 또는 “유지보수는 언제 끝나나요?” 라는 질문을 끊임없이 받곤 했습니다.

이 문제를 해결하기(그리고 제 일을 좀 더 쉽게 하기) 위해 disco를 만들었습니다. 자동 Telegram 알림인터랙티브 메뉴 인터페이스를 포함한 Discourse 관리용 커맨드라인 래퍼입니다.


:dart: 해결하는 문제

  • 더 이상 “포럼이 다운됐나요?” 질문 없음 - Telegram 그룹으로 자동 알림 전송
  • 간소화된 관리 - 런처 명령어를 외울 필요 없이 인터랙티브 메뉴 사용
  • 안전 최우선 - 위험한 작업(재빌드, 정지, 정리)에 대한 확인 절차
  • 더 나은 가시성 - 실시간 상태, 로그 및 리소스 모니터링
  • 더 빠른 문제 해결 - 명확한 출력을 통해 모든 작업을 한 곳에서 수행

:sparkles: 기능

:video_game: 인터랙티브 메뉴 인터페이스

인수 없이 disco를 실행하면 아름다운 번호 매겨진 메뉴가 표시됩니다:

╔════════════════════════════════════════════════════════════╗
║  🚀 Discourse Manager v1.2.0                        ║
║  📦 Container: app | Status: 🟢 Running          ║
╚════════════════════════════════════════════════════════════╝

 1.  📊 Show Status
 2.  🔄 Restart Container
 3.  📝 View Logs (last 100 lines)
 4.  📺 Live Monitor
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 5.  🔧 Full Rebuild (with updates) ⚠
 6.  ⚡ Fast Rebuild
 7.  💾 Create Backup
 8.  🧹 Cleanup Docker Resources ⚠
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 9.  ▶️  Start Container
10.  ⏸️  Stop Container ⚠
11.  🐚 Enter Container Shell
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
12.  📥 Update Launcher
13.  📱 Test Telegram Notifications
14.  ⚙️  Show Configuration
15.  🔄 Update disco
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 0.  ❌ Exit

기능:

  • 번호(1-15)만 입력하면 작업을 선택할 수 있습니다
  • 헤더에 실시간 컨테이너 상태 표시
  • 중요한 작업에 대한 시각적 경고(:warning:)
  • 안전 확인 - 위험한 작업을 확인하려면 "yes"를 입력해야 합니다
  • 스마트 sudo 감지 - 루트 권한이 필요할 때 경고

:iphone: Telegram 알림

자동 알림이 커뮤니티를 최신 상태로 유지합니다:

재빌드 시작 시:

🔧 Forum is going into maintenance

⏱ Expected time: ~10 minutes

We apologize for the temporary inconvenience.

완료 시:

✅ Forum is back online!

⏱ Maintenance time: 7m 57s
🔖 Version: 3.2.0.beta4

Thank you for your patience! 🚀

오류 발생 시:

❌ Forum update failed

⏱ Attempt duration: 3m 12s

⚠️ Administrator attention required!
Check logs: disco logs

:bar_chart: 모니터링 및 진단

상태 개요:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Discourse Status
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📦 Container: app
🟢 Status: Running
⏱  Uptime: Up 3 days
🔖 Version: 3.2.0.beta4
💻 CPU: 2.5%
🧠 Memory: 1.2GB / 4GB

기능:

  • 실시간 CPU 및 메모리 사용량
  • 컨테이너 가동 시간 추적
  • API를 통한 자동 버전 감지
  • 팔로우 모드를 지원하는 라이브 로그 모니터링
  • 리소스 모니터링 대시보드

:shield: 안전 기능

  • 중요한 작업(재빌드, 정지, 정리)에 대한 확인 프롬프트
  • Sudo 감지 - 권한이 필요할 때 경고
  • 버전 표시 - 실행 중인 버전을 항상 파악할 수 있음
  • 상세한 경고 - 각 중요한 작업이 정확히 무엇을 할지 설명

:zap: 빠른 작업

모든 표준 Discourse 작업 사용 가능:

  • 컨테이너 관리 - 시작, 정지, 재시작, 셸 진입
  • 유지보수 - 재빌드(전체/빠름), 백업, 정리
  • 모니터링 - 상태, 로그, 라이브 리소스 모니터
  • 업데이트 - 한 번의 명령으로 런처 업데이트

:inbox_tray: 설치

빠른 설치

# 다운로드 및 설치
curl -o disco https://raw.githubusercontent.com/DigneZzZ/discourse-cli/main/disco
chmod +x disco
sudo mv disco /usr/local/bin/

# 설치 확인
disco version

# 인터랙티브 메뉴 실행
disco

:gear: 설정

기본 설정

다음 위치 중 하나에 설정 파일을 생성하세요:

  • ~/.disco.env (권장)
  • /etc/disco/.env
  • 스크립트 옆
# 예제 설정 복사
curl -o ~/.disco.env https://raw.githubusercontent.com/DigneZzZ/discourse-cli/main/.env.example

# 설정 편집
nano ~/.disco.env

설정 예시

# 기본 설정
DISCOURSE_PATH=/var/discourse
CONFIG_NAME=app

# Telegram 알림 (선택 사항)
TELEGRAM_BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
TELEGRAM_CHAT_ID=-1001234567890
TELEGRAM_THREAD_ID=1

Telegram 알림 설정

1. 봇 생성:

  • Telegram에서 @BotFather에게 메시지 보내기
  • /newbot 명령어 전송
  • 지시 사항 따르기
  • 봇 토큰 저장

2. 채팅 ID 가져오기:

  • 봇에게 아무 메시지나 전송
  • 방문: https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates
  • 응답에서 "chat":{"id":...} 찾기

3. 스레드 ID 가져오기 (토픽이 있는 그룹의 경우):

  • 그룹의 원하는 토픽에 메시지 전송
  • getUpdates 응답에서 message_thread_id 찾기

4. 알림 테스트:

disco test-telegram

:rocket: 사용법

인터랙티브 메뉴 (권장)

# 인터랙티브 메뉴 실행
disco

# 관리 작업용 sudo와 함께
disco

수행하려는 작업의 번호만 입력하면 됩니다!

커맨드라인 모드

자동화 또는 빠른 작업을 위해:

# 상태 및 모니터링
disco status                    # 컨테이너 상태 표시
disco logs                      # 마지막 100줄 보기
disco logs 500                  # 마지막 500줄 보기
disco monitor                   # 실시간 리소스 모니터링

# 컨테이너 관리
sudo disco start                # 컨테이너 시작
sudo disco stop                 # 컨테이너 정지
sudo disco restart              # 컨테이너 재시작
disco enter                     # 컨테이너 셸 진입

# 유지보수
sudo disco rebuild              # 업데이트 포함 전체 재빌드
sudo disco fast-rebuild         # 빠른 재빌드 (런처 업데이트 없음)
sudo disco backup               # 백업 생성 (자동 이름)
sudo disco backup my-name       # 백업 생성 (사용자 지정 이름)
sudo disco cleanup              # Docker 리소스 정리

# 유틸리티
sudo disco update-launcher      # Discourse 런처 업데이트
disco test-telegram             # Telegram 알림 테스트
disco show-config               # disco 설정 표시
disco version                   # 버전 표시
disco help                      # 도움말 표시

:page_facing_up: 설정값

이름 설명 기본값 필수
DISCOURSE_PATH Discourse 설치 디렉터리 경로 /var/discourse 아니요
CONFIG_NAME 컨테이너 구성 이름 app 아니요
TELEGRAM_BOT_TOKEN @BotFather에서 발급받은 Telegram 봇 토큰 - 아니요 (알림용)
TELEGRAM_CHAT_ID 알림용 Telegram 채팅 또는 그룹 ID - 아니요 (알림용)
TELEGRAM_THREAD_ID 토픽이 있는 그룹의 스레드 ID - 아니요 (선택 사항)

:bulb: 사용 사례

커뮤니티 관리자

  • 유지보수 중에 커뮤니티를 자동으로 최신 상태로 유지
  • 더 이상 “포럼이 다운됐나요?” 질문 없음
  • 전문적인 유지보수 알림

시스템 관리자

  • 간헐적인 관리 작업을 위한 인터랙티브 메뉴
  • 사고를 방지하는 안전 확인
  • 로그 및 상태에 대한 빠른 접근

DevOps 팀

  • 자동화 및 스크립트를 위한 CLI 모드
  • 팀원 간의 일관된 작업
  • 모니터링 시스템과의 쉬운 통합

:chart_with_upwards_trend: 실제 영향

이 도구를 배포한 이후:

  • :white_check_mark: Telegram 그룹에서 “포럼이 다운됐나요?” 질문 제로
  • :white_check_mark: 더 빠른 유지보수 작업 - 터미널과 메시징 앱 간 컨텍스트 전환 없음
  • :white_check_mark: 업데이트 중 실수 감소 - 안전 확인이 작동합니다!
  • :white_check_mark: 더 나은 모니터링 - 로그 및 리소스 사용량에 대한 빠른 접근

:books: 문서


:heart: 이 도구를 만든 이유

표준 런처를 통해 Discourse를 관리하는 것은 강력하지만:

  • 명령어가 기억하기 어렵습니다
  • 커뮤니티를 위한 내장 알림 시스템이 없습니다
  • 중요한 작업에서 실수를 하기 쉽습니다
  • 커뮤니티 멤버들이 항상 다운타임을 물어봅니다

disco는 런처를 사용자 친화적인 인터페이스로 감싸고 자동으로 모든 사람에게 정보를 제공합니다.


:handshake: 기여

기여를 환영합니다! 아이디어나 제안이 있다면:

  1. 리포지토리 포크
  2. 기능 브랜치 생성
  3. 변경 사항 수행
  4. Pull Request 제출

또는 피드백과 함께 이슈를 열기만 하셔도 됩니다!


:page_with_curl: 라이선스

MIT 라이선스 - 사용 및 수정이 완전히 무료입니다.



GitHub 리포지토리: GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub

2개의 좋아요