Hosting Discourse on a Raspberry Pi?

개인적 의견으로는 결국 나올 Raspberry Pi 5를 기다리는 편이 나을 것 같습니다. 2세대, 3세대, 4세대로 이어지는 Pi의 성능 향상 추세를 그래프로 앞으로 외삽해 보면, Discourse를 돌릴 만큼 충분한 성능을 갖추고 있을 것이기 때문입니다.

또한 x86(x64?) 의존성을 현재로서는 극복하기 어려울 수도 있지만, 장기적인 관점에서 살펴보는 것도 나쁜 아이디어는 아닙니다.

64비트 쿼드코어 1.5GHz 프로세서를 탑재한 Pi 4 클러스터에 USB3 디스크(약 300MB/s)를 저장용으로 사용하거나, 외부 Blob 저장소(S3 또는 GCP)를 활용하고 그 앞에 CDN을 배치하는 방식은 익명 사용자를 위한 플랫폼 대안으로 충분히 가능할 것입니다 :slight_smile: 앞으로가 중요하겠죠!

숫자 자체만으로는 큰 의미가 없습니다.

어떤 microSD 카드를 사용했는지 명시하지 않으셨지만, 이는 Lexar Professional 1800x와 같은 수준의 성능입니다. 이 카드는 순차 읽기 속도가 약 300MB/s, 쓰기 속도가 250MB/s에 근접하는 지속적 성능을 보여줍니다. microSD의 문제는 순차 읽기/쓰기 속도가 아닙니다. 여러 사용자가 데이터베이스와 로컬 자원에 동시에 접근할 때 실제로 어떤 일이 일어나는지 파악하려면 랜덤 읽기/쓰기 성능을 확인해야 합니다.

현대적인 SSD는 일반적으로 순차 읽기 500MB/s 이상, 순차 쓰기 475MB/s 이상의 성능을 내며, 이는 위의 수치와 크게 다르지 않습니다. 하지만 랜덤 읽기/쓰기 성능 차이는 매우 큽니다. 동일한 SSD는 4KiB Q8T8 테스트에서 최대 400MB/s의 성능을 발휘하는 반면, Lexar 카드는 15MB/s 수준인 두 자릿수 초반까지 떨어집니다. 랜덤 쓰기는 더욱 심각하여, SSD가 여전히 최대 300MB/s의 성능을 유지하는 동안 microSD 카드는 2MB/s 수준인 한 자릿수 초반까지 급격히 저하됩니다.

저는 라즈베리파이(rPi)를 매우 좋아하며 여러 곳에서 사용하고 있지만, 여전히 우리가 원하는 수준에는 크게 못 미칩니다.

스웨덴에서 USD 20에 산 SanDisk 64GB 카드인데, A2 등급인 것 같습니다. 순수 순차 읽기/쓰기 속도가 여러분이 말씀하신 것처럼 그렇게 나쁘지 않다는 걸 보여주고 싶었을 뿐입니다 :slight_smile:

외장 SSD를 USB3 포트에 연결해도 rPi에서 작동하지 않는다면, 데이터베이스를 외부에서 실행하는 것이 해당 병목 현상을 해결할 수 있을 것 같습니다. 다만 Pi 4의 이제야 제대로 된 1Gbps NIC를 활용하여 ARM 클러스터를 구축하고 싶은 마음이 있어서 편향된 의견일 수 있습니다. 또한 일반적으로 "동작하지 않는다"는 식의 태도에도 도전하고 싶거든요 :wink:

충분한 시간, 돈, 자원을 쏟아부으면 무엇이든 작동하게 만들 수 있습니다.

지난 몇 년간 라즈베리 파이에서 Discourse를 실행해 달라는 요청은 보통 라즈베리 파이를 가지고 있지만, 그 이상은 돈을 쓰고 싶지 않은 사용자들로부터 나왔습니다. 여기에서 우리가 탐구하고 있는 것은 바로 그 것입니다.

외부 SSD를 붙이거나 데이터베이스를 다른 시스템으로 오프로딩하기 시작하면, 그것은 더 이상 라즈베리 파이에서 Discourse를 호스팅하는 것에 대해 이야기하는 것이 아닙니다. :wink:

맞아요. 보통 돈을 얼마나 쓰느냐에 따라 그에 맞는 결과를 얻는다는 데 동의합니다 :slightly_smiling_face:

라즈베리파이 4 RAM 4GB 또는 8GB 모델을 하나 준비하세요. :wink: 그리고 아마존… 이베이… 등에서 산업용 MicroSD 카드 하나를 구매하세요.

Docker 이미지를 아래 사이트에서 작성하세요: https://blog.hypriot.com/ :smiling_face_with_three_hearts: :slightly_smiling_face: 정확히 ‘Download’ 섹션의 최신 버전으로 이동하세요.

이미지가 SD 카드로 작성되면, 라즈베리파이에 삽입하고 SSH로 연결하세요. (Docker SSH 로그인용 사용자 이름과 비밀번호는: “pirate” “hypriot” → (사용자: pirate) (비밀번호: hypriot)입니다.) 당연히 SSH로 연결한 후에는 → sudo raspi-config를 통해 자격 증명을 원하는 대로 변경하고 라즈베리파이를 재시작하세요.

재시작 후 SSH로 다시 연결하여 다음 가이드를 따라 "Discourse"를 설치하세요: https://linoxide.com/how-tos/install-discourse-docker-container/ :wink: 당연히 Docker는 처음부터 설치했으므로 2)번 단계부터 시작하시면 됩니다.

즐거운 시간 되세요.

Massym님,

말씀하신 대로 hypriot 등을 설치했는데, 다음과 같은 오류가 발생했습니다:

  $ ./launcher bootstrap app
  standard_init_linux.go:211: exec user process caused "exec format error"
  Your Docker installation is not working correctly

  참고: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam

어떤 생각이 있으신가요?

감사합니다.

빠른 답변에 진심으로 감사드립니다, Rafael.

Massym이 Raspberry Pi 4에서 Discourse를 성공적으로 구동했다는 점을 추측했는데, 그의 게시글을 다시 읽어보니 실제로 그렇게 명시적으로 주장하고 있지는 않더군요. 제 시간 낭비였지만, 적어도 배움이 된 점은 있습니다.

Discourse 내에서 정확히 어떤 구성 요소가 지원되지 않는 건가요? 저를 비롯한 많은 분들이 이를 구동할 수 있게 되는 것을 간절히 원하고 있을 것입니다.

감사합니다.

Discourse가 Redis, Ruby, PostgreSQL을 위해 x86_64용으로 빌드된 이미지를 사용한다고 추측해 볼 수 있습니다.

서버에서 JavaScript를 실행하는 V8/MiniRacer 라이브러리입니다.

Apple이 M1 프로세서 family를 도입했으므로, ARM에서 이를 곧 작동하게 할 수 있을 것으로 생각합니다.

그것이 실제로 작동하는 모습을 기대하고 있습니다. 제 포럼 중 하나가 Discourse로 구동되고 있으며, 인텔 기반 서버보다 전력 소비가 훨씬 적은 RPi4 클러스터로 이전하는 작업에서 남은 마지막 항목입니다.

업데이트가 있나요? ARM용 v8 gem에 진전이 있었나요? 이미지를 컴파일해 봤는데, 항상 해당 gem에서 막혔습니다. 이 작업은 다소 복잡하며, 대부분 빌드 스크립트가 X86_64 도구를 다운로드하여 ARM에서 실행하려다 실패하기 때문입니다…

참고:

서버(그리고 Ruby)에서 ARM이 Apple의 놀라운 M1 칩이 마침내 실제 노트북에 등장하면서 곧 상당한 진전을 이룰 것입니다.

하지만 라즈베리파이 자체 – 훨씬 개선된 4 모델조차도 – 서버로 사용하기에는 성능이 심각하게 부족합니다. 이 게시물과 Speedometer 2.0 결과에 따르면…

3B+ Buster 32비트 커널
9.49/9.66/9.46 = 9.54 Chromium

4B4 Buster 64비트 커널 (32비트도 동일한 결과)
17.2/17.0/17.1 = 17.1 Chromium

OnePlus 7 Pro 스마트폰 (Snapdragon 855, 8GB RAM, Android/Oxygen OS 10)
36.3/35.9/36.8 = 36.3 Chrome

HP Chromebook x2 (듀얼 코어 M3-7Y30)
68.2/68.6/68.0 = 68.3 Chrome OS 78

Legion Y520 보급형 게이밍 노트북 (i7-7700HQ Win10x64)
87.4/86.8/87.3 = 87.2 Chrome

이 수치들을 바탕으로, 가상의 미래 라즈베리파이 5가 다음과 같은 조건을 충족한다면…

  • Pi 4 대비 성능이 최소 2배는 향상되어야 하며
  • SD 카드가 아닌某种 종류의 미니 M.2 SSD를 스토리지로 사용해야 한다

…매우 낮은 트래픽의 Discourse 포럼을 위한 적절한 Discourse 서버가 될 수 있을지도 모른다는 가설을 세울 수 있습니다.

곧 공개될 예정이며, 저는 RPi4에서 다른 Rails 애플리케이션을 실행해 왔고 성능에 만족했습니다. 하지만 솔직히 말씀드리자면, 그 애플리케이션들은 Discourse보다 훨씬 단순했습니다.

이제 지원됩니다