티스토리 뷰
(업데이트: 서버용으로 아치리눅스를 쓰는 저같은 실수를 하지 마세요.)
플레로마?
OStatus, ActivityPub 프로토콜을 구현하는 오픈소스 분산형 SNS에요. 트위터랑 유사한데, 이 분야의 대빵인 마스토돈과 100% 호환돼요 (설치해보니 프론트엔드는 기능이 누락된 게 좀 있네요…). 모바일 앱도요. 가장 좋은 점은 요구사항이 낮아서 (엘릭서!) 라즈베리 파이에도 설치해서 혼자 쓰기도 무난해요.
전 혼자쓰려고 설치해보려구요. 지금 있는 마스토돈 인스턴스에서 조금 불편한 점이 있어서요. 물론 정말 옮길지는 고민해봐야겠지만요.
이 글에서는
이 글에서는 가이드를 보고 설치를 해볼거에요. 저는 라즈베리파이 3에서 아치ARM을 쓰고 있어요.
업데이트
업데이트는 했나요?
sudo pacman -Syu --noconfirm
--noconfirm
을 쓰면 묻지 않고 해요.tmux
로 설치하면 ssh를 끄고도 계속 업데이트할 수 있어요. 나올때는Ctrl+B D
에요.tmux ls
와tmux 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 설치
위에서 같이 설치는 했는데 추가 설정이 필요한 모양이에요.
- sudo passwd postgres`
- postgres라는 계정이 설치하면서 만들어졌는데, 암호를 먼저 설정해주래요.
sudo -u postgres -i
- 현재 계정을 postgres로 바꿔요.
initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data'
- DB 클러스터 초기화래요.
-E
인코딩-D
DB 클러스터가 저장될 기본 장소래요.
su 본인계정명
- sudo 권한이 있는 본인 계정으로 돌아가요.
- 안 하면 뭐가 나오냐면요…
무서워! 는 제가 주인이니까 괜찮아요.
sudo systemctl enable postgresql.service && sudo systemctl start postgresql.service
- systemctl로 서비스를 켜요. 이제 DB가 상시 돌아갈거에요.
플레로마 설치
이제 설치해요.
유저 추가
adduser
AUR 스크립트를 쓰는 대신에 아치 위키를 참조해서 직접 유저를 추가할 거에요.
- sudo
useradd -m -s /bin/bash pleroma
-m
: 홈 디렉토리를 만들어요.-s
: 셸을 정해요.pleroma
: 유저 이름이에요. 그룹명을 생략하면 동일명으로 들어간대요.
- sudo
passwd pleroma
- 암호를 설정해요. 강력한걸로.
- sudo
usermod -aG wheel pleroma
-aG
: 추가 그룹(additional Group) sudo에 pleroma 유저를 넣어요.wheel
: 아무래도 아치의 sudo가 가능한 그룹은 sudo가 아니라 wheel이라는 모양이에요.
su pleroma
하고나서cd ~
- pleroma 계정으로 현재 계정을 바꿔요. 그리고 새 홈으로 가는거에요.
git clone https://git.pleroma.social/pleroma/pleroma
- 코드를 복사해와요.
cd pleroma
mix deps.get
하고Hex
설치할거냐고 물으면 yes 하기- 이제부터 엘릭서 부분인 것 같아요 (엘릭서 모름)
mix generate_config
하고rebar3
설치할거냐고 물으면 yes 하기- 설정파일을 만드는 작업이래요.
- 위 과정이 다 끝나면 설문조사 타임이래요.
- 무슨 인스턴스인가요? 를 묻는다고 하네요.
미디어 프록시는 어차피 라즈베리 파이에서만 돌릴거니까 안 쓰기로 했어요.
다음으로 진행하기 전에 config/generated_config.exs를 열어서 조금 설정을 바꿨어요. 혼자 쓸 거니까 가입도 닫았구요. URL도 나중에 roma.sftblw.moe 로 바꿨어요.
설치하면서 무슨 일이 일어났나요?
아치잖아요. 엘릭서 버전이 앞서가있는 거에요. 플레로마 메인테이너가 무시해도 된대요. 어머나 감사해라…
이어서
mv config/{generated_config.exs,prod.secret.exs}
- 수정이 끝난 설정파일을 프로덕션 설정으로 옮겨버려요.
- sudo
usermod -aG wheel postgres
- postgres 계정이 sudo 명령어를 쓸 수 있게 wheel 그룹에 넣어요.
- 이래도 보안상 안전할지 모르겠네요… 일단 아래아래 명령어를 실행하려면 필요해서 하긴 했는데요.
sudo chown pleroma:wheel /home/pleroma && sudo chmod g+rx /home/pleroma
- /home/pleroma 의 읽기/쓰기 권한을 줘야 계정 postgres가 해당 디렉토리로 cd해서 들어가서 읽을 수 있어요.
- wheel 그룹에 추가(첫 번째 명령어)했다는 점을 활용해서 pleroma 계정의 홈폴더를 wheel 그룹 소유로 바꿔버렸어요. 보안상 괜찮으려나요?
- 신… 신나는 트러블 슈팅…
sudo su postgres -c 'psql -f config/setup_db.psql'
- db 설치를 해요. 내용을 읽어봤는데 별 거 없고 유저만 만드는 거 같아요.
- 어서와 서버 관리자는 처음이지?
- 사실 아까 DB 만들면서 보셨을 거에요. 그 부분을 나중에 작성했거든요…
MIX_ENV=prod mix ecto.migrate
- 데이터베이스 마이그레이션
- MIX_ENV 는 엘릭서 빌드툴인 MIX 관련 환경변수같아요.
MIX_ENV=prod mix phx.server
- 플레로마를 드디어 시작해요.
- 이건 진짜 실행이니까 차라리 서비스로 시작하려면 지금 안 하고 나중에 해도 돼요.
설치 마무리
아직 바로 쓸 순 없죠. ssh로 라즈베리파이에 외부에서 접근하고 있으니까요…
nginx
아직 웹서버/프록시는 없잖아요? 앞에 nginx를 세워서 서브도메인 안에 집어넣을 거에요. 그래야 밖에서 접근할 수 있겠죠?
sudo pacman -S nginx
- nginx를 설치해요.
- nginx는 설치되어있나요? 전 되어있는데… 제 홈페이지가 nginx로 돌아가거든요. 설치되어있다면 넘어가도 돼요.
- sudo
cp /home/pleroma/pleroma/installation/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx
- 예제 systemd 서비스를 복사해서 옮겨요.
- 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
를 해주세요.
- 저는 vim을 켜서
플레로마 서비스
- sudo
cp /home/pleroma/pleroma/installation/pleroma.service /usr/lib/systemd/system/pleroma.service
- 예제 systemd 설정파일을 실제 경로로 복사해요.
- sudo
sudo nano /usr/lib/systemd/system/pleroma.service
로 편집 모드로 들어가요. - 값들이 맞는지 죽 확인해보시고,
[Service]
바로 아래에Environment="MIX_ENV=prod"
를 추가해주세요.- 아치에서는 mix의 경로가 다르더라구요.
/local
이 빠지도록 바꿔주셔야돼요.
- 아치에서는 mix의 경로가 다르더라구요.
- sudo
systemctl enable --now pleroma.service
로 서비스를 추가하고 켜요.sudo systemctl status pleroma.service
로 돌아가는지 확인해볼 수 있어요.
짜잔
계정 가입, 관리자 권한 주기
아.. 아아… 다 하고 보니 일단 가입은 웹사이트에서 해야하는 거였어요. 설정에서 회원가입을 풀고 서비스를 껐다켜세요. 위에서 어떻게 하는지 나와있었죠?
- 먼저 회원가입을 잠깐 활성화해서 회원가입하세요.
- 뭐 아시겠지만…
nano /home/pleroma/pleroma/config/prod.secret.exs
- sudo
systemctl restart pleroma
- 회원가입
- 나머지는 적당히 알아서 (회원가입을 꺼야하니 위에걸 반복해야죠)
mix set_moderator username [true|false]
- 저는
mix set_moderator sftblw true
라고 넣었어요.
- 저는
끝!
[https://roma.sftblw.moe/notice/1]
마스토돈에서도 보여요. 프로덕션이에요 프로듀서!
여담
졸려 잘래 자게 해줘 자러갈래 바뱌뱌
- 원래는 sites-available에 원본을 두고 sites-enabled에 심볼릭 링크를 걸어두는 거라고 알고있어요. [본문으로]
- Total
- Today
- Yesterday
- Sass
- pleroma
- kotlin당했다
- 개발기록
- C++ FAQ
- ActivityPub
- Oracle Cloud Infrastructure
- 마스토돈
- rust-lang
- C#
- Godot Engine
- vuex
- c++
- gitea
- 토이프로젝트
- javascript
- exercism
- 왜 생각이 안 났지
- 업비트
- OStatus
- ArchLinuxARM
- mvu
- 오라클 클라우드
- pdf.js
- upbit
- 시스어드민
- K8s
- 오라클 클라우드 인프라
- 쿠버네티스
- scss
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |