티스토리 뷰

언어 무관

[ArchLinux] Pleroma 설치

Ch. 2018. 3. 29. 01:21

(업데이트: 서버용으로 아치리눅스를 쓰는 저같은 실수를 하지 마세요.)

플레로마?

OStatus, ActivityPub 프로토콜을 구현하는 오픈소스 분산형 SNS에요. 트위터랑 유사한데, 이 분야의 대빵인 마스토돈과 100% 호환돼요 (설치해보니 프론트엔드는 기능이 누락된 게 좀 있네요…). 모바일 앱도요. 가장 좋은 점은 요구사항이 낮아서 (엘릭서!) 라즈베리 파이에도 설치해서 혼자 쓰기도 무난해요.

전 혼자쓰려고 설치해보려구요. 지금 있는 마스토돈 인스턴스에서 조금 불편한 점이 있어서요. 물론 정말 옮길지는 고민해봐야겠지만요.

이 글에서는

이 글에서는 가이드를 보고 설치를 해볼거에요. 저는 라즈베리파이 3에서 아치ARM을 쓰고 있어요.

업데이트

업데이트는 했나요?

sudo pacman -Syu --noconfirm

  • --noconfirm 을 쓰면 묻지 않고 해요.
  • tmux로 설치하면 ssh를 끄고도 계속 업데이트할 수 있어요. 나올때는 Ctrl+B D 에요.
    • tmux lstmux attach, tmux detach 정도만 알면 이 목적으로 쓸 수 있어요.

필요한 프로그램

일단 필요한 프로그램을 설치할거에요. 아치용 공식 설치 가이드는 없으니까 데비안용 설치 가이드를 보고 비슷한 패키지를 찾아보았어요.

sudo pacman -S --noconfirm --needed postgresql elixir erlang git base-devel openssh openssl nginx certbot

  • --needed 는 없는 거만 설치하는 옵션이에요. #
  • 귀찮으니까 이번에도 --noconfirm을 넣었어요.
    • 데비안 build-essential에 해당하는 base-devel의 내용이 꽤나 많은 거 같지만 선택하기 귀찮고 알아보려면 머리아파질 거 같아서 그만두고 그냥 모조리 설치해요.

기다려요

설치가 다 될 때까지 기다려요… 다른거 하다 오면 될 거에요.

빨래를 다 널고오니까 된 거에요.

postgreSQL 설치

위에서 같이 설치는 했는데 추가 설정이 필요한 모양이에요.

  1. sudo passwd postgres`
    • postgres라는 계정이 설치하면서 만들어졌는데, 암호를 먼저 설정해주래요.
  2. sudo -u postgres -i
    • 현재 계정을 postgres로 바꿔요.
  3. initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data'
    • DB 클러스터 초기화래요.
    • -E 인코딩
    • -D DB 클러스터가 저장될 기본 장소래요.
  4. su 본인계정명
    • sudo 권한이 있는 본인 계정으로 돌아가요.
    • 안 하면 뭐가 나오냐면요…

      무서워! 는 제가 주인이니까 괜찮아요.
  5. sudo systemctl enable postgresql.service && sudo systemctl start postgresql.service
    • systemctl로 서비스를 켜요. 이제 DB가 상시 돌아갈거에요.

플레로마 설치

이제 설치해요.

유저 추가

adduser AUR 스크립트를 쓰는 대신에 아치 위키를 참조해서 직접 유저를 추가할 거에요.

  1. sudo useradd -m -s /bin/bash pleroma
    • -m: 홈 디렉토리를 만들어요.
    • -s: 셸을 정해요.
    • pleroma: 유저 이름이에요. 그룹명을 생략하면 동일명으로 들어간대요.
  2. sudo passwd pleroma
    • 암호를 설정해요. 강력한걸로.
  3. sudo usermod -aG wheel pleroma
    • -aG: 추가 그룹(additional Group) sudo에 pleroma 유저를 넣어요.
    • wheel: 아무래도 아치의 sudo가 가능한 그룹은 sudo가 아니라 wheel이라는 모양이에요.
  4. su pleroma 하고나서 cd ~
    • pleroma 계정으로 현재 계정을 바꿔요. 그리고 새 홈으로 가는거에요.
  5. git clone https://git.pleroma.social/pleroma/pleroma
    • 코드를 복사해와요.
  6. cd pleroma
  7. mix deps.get 하고 Hex 설치할거냐고 물으면 yes 하기
    • 이제부터 엘릭서 부분인 것 같아요 (엘릭서 모름)
  8. mix generate_config 하고 rebar3 설치할거냐고 물으면 yes 하기
    • 설정파일을 만드는 작업이래요.
  9. 위 과정이 다 끝나면 설문조사 타임이래요.
    • 무슨 인스턴스인가요? 를 묻는다고 하네요.

미디어 프록시는 어차피 라즈베리 파이에서만 돌릴거니까 안 쓰기로 했어요.

다음으로 진행하기 전에 config/generated_config.exs를 열어서 조금 설정을 바꿨어요. 혼자 쓸 거니까 가입도 닫았구요. URL도 나중에 roma.sftblw.moe 로 바꿨어요.

설치하면서 무슨 일이 일어났나요?

아치잖아요. 엘릭서 버전이 앞서가있는 거에요. 플레로마 메인테이너가 무시해도 된대요. 어머나 감사해라…

이어서

  1. mv config/{generated_config.exs,prod.secret.exs}
    • 수정이 끝난 설정파일을 프로덕션 설정으로 옮겨버려요.
  2. sudo usermod -aG wheel postgres
    • postgres 계정이 sudo 명령어를 쓸 수 있게 wheel 그룹에 넣어요.
    • 이래도 보안상 안전할지 모르겠네요… 일단 아래아래 명령어를 실행하려면 필요해서 하긴 했는데요.
  3. sudo chown pleroma:wheel /home/pleroma && sudo chmod g+rx /home/pleroma
    • /home/pleroma 의 읽기/쓰기 권한을 줘야 계정 postgres가 해당 디렉토리로 cd해서 들어가서 읽을 수 있어요.
    • wheel 그룹에 추가(첫 번째 명령어)했다는 점을 활용해서 pleroma 계정의 홈폴더를 wheel 그룹 소유로 바꿔버렸어요. 보안상 괜찮으려나요?
    • 신… 신나는 트러블 슈팅…
  4. sudo su postgres -c 'psql -f config/setup_db.psql'
    • db 설치를 해요. 내용을 읽어봤는데 별 거 없고 유저만 만드는 거 같아요.
    • 어서와 서버 관리자는 처음이지?
    • 사실 아까 DB 만들면서 보셨을 거에요. 그 부분을 나중에 작성했거든요…
  5. MIX_ENV=prod mix ecto.migrate
  6. MIX_ENV=prod mix phx.server
    • 플레로마를 드디어 시작해요.
    • 이건 진짜 실행이니까 차라리 서비스로 시작하려면 지금 안 하고 나중에 해도 돼요.

설치 마무리

아직 바로 쓸 순 없죠. ssh로 라즈베리파이에 외부에서 접근하고 있으니까요…

nginx

아직 웹서버/프록시는 없잖아요? 앞에 nginx를 세워서 서브도메인 안에 집어넣을 거에요. 그래야 밖에서 접근할 수 있겠죠?

  1. sudo pacman -S nginx
    • nginx를 설치해요.
    • nginx는 설치되어있나요? 전 되어있는데… 제 홈페이지가 nginx로 돌아가거든요. 설치되어있다면 넘어가도 돼요.
  2. sudo cp /home/pleroma/pleroma/installation/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx
    • 예제 systemd 서비스를 복사해서 옮겨요.
  3. sudo nano /etc/nginx/sites-enabled/pleroma.nginx 해서 입맛에 맞게 편집하세요.
    • 저는 vim을 켜서 :%s/example.tld/roma.sftblw.moe/g 로 주소를 싹 바꾸고 주소 부분만 조금 더 손봤어요.
    • 편집하시고 sudo cp /etc/nginx/sites-enabled/pleroma.nginx /etc/nginx/sites-available/ 해서 백업?을 만들어두시는 게 마음이 편하실 거에요.[각주:1]
    • 안타깝게도 letsencrypt 를 통한 SSL은 별개의 문제에요… 저는 wildcard cert로 바꿔서 홈페이지랑 같은 인증서를 쓰려구요.
      • 기존 cert를 확장하는 경우라 그냥 certbot만 돌리면 되더라구요.
      • 그 이전에 도메인 사이트에서 A레코드를 추가해줘야하긴 해요. A레코드 맞겠…죠…?

    • sudo nginx -t 로 nginx 설정파일이 올바른지 점검할 수 있어요.
    • sudo nginx -s reload 로 nginx 설정파일을 다시 로드할 수 있어요. 서비스는 이미 돌고 있죠? 안 돌고있다면 sudo systemctl enable --now nginx를 해주세요.

플레로마 서비스

  1. sudo cp /home/pleroma/pleroma/installation/pleroma.service /usr/lib/systemd/system/pleroma.service
    • 예제 systemd 설정파일을 실제 경로로 복사해요.
  2. sudo sudo nano /usr/lib/systemd/system/pleroma.service 로 편집 모드로 들어가요.
  3. 값들이 맞는지 죽 확인해보시고, [Service] 바로 아래에 Environment="MIX_ENV=prod"를 추가해주세요.
    • 아치에서는 mix의 경로가 다르더라구요. /local이 빠지도록 바꿔주셔야돼요.
  4. sudo systemctl enable --now pleroma.service 로 서비스를 추가하고 켜요.
    • sudo systemctl status pleroma.service 로 돌아가는지 확인해볼 수 있어요.

짜잔

계정 가입, 관리자 권한 주기

아.. 아아… 다 하고 보니 일단 가입은 웹사이트에서 해야하는 거였어요. 설정에서 회원가입을 풀고 서비스를 껐다켜세요. 위에서 어떻게 하는지 나와있었죠?

  1. 먼저 회원가입을 잠깐 활성화해서 회원가입하세요.
    1. 뭐 아시겠지만…
    2. nano /home/pleroma/pleroma/config/prod.secret.exs
    3. sudo systemctl restart pleroma
    4. 회원가입
    5. 나머지는 적당히 알아서 (회원가입을 꺼야하니 위에걸 반복해야죠)
  2. mix set_moderator username [true|false]
    • 저는 mix set_moderator sftblw true 라고 넣었어요.

끝!

[https://roma.sftblw.moe/notice/1]

마스토돈에서도 보여요. 프로덕션이에요 프로듀서!

여담

졸려 잘래 자게 해줘 자러갈래 바뱌뱌

  1. 원래는 sites-available에 원본을 두고 sites-enabled에 심볼릭 링크를 걸어두는 거라고 알고있어요. [본문으로]
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함