New translations ubuntu-manual.md (Korean)

This commit is contained in:
かっこかり 2023-12-31 13:25:16 +09:00
parent 1dd92ee580
commit 3aab982625

View File

@ -11,26 +11,32 @@
[**쉘 스크립트에 대한 자세한 내용과 사용법은 여기에서 확인하세요!**](./bash/) [**쉘 스크립트에 대한 자세한 내용과 사용법은 여기에서 확인하세요!**](./bash/)
:::tip :::tip
쉘 스크립트를 통한 개발 환경에서의 설치는 예상하지 않았습니다. 쉘 스크립트를 통한 개발 환경에서의 설치는 예상하지 않았습니다.
::: :::
:::tip :::tip
도메인 구매 및 Cloudflare 설정, 서버 확보는 여러분이 직접 준비해 주시기 바랍니다.
이 글에서는 [Misskey 구축 가이드 (manual)](./manual/)에 소개된 대로 systemd에서 Misskey를 동작시키고 있습니다.
::: :::
문제가 있으면 [@aqz@p1.a9z.dev 에 멘션](https://p1.a9z.dev/@aqz)으로 알려주시면 감사하겠습니다. 문제가 있으면 [@aqz@p1.a9z.dev 에 멘션](https://p1.a9z.dev/@aqz)으로 알려주시면 감사하겠습니다.
## 이 글에 대하여 ## 소개
이 글에서는 [Misskey 구축 가이드 (manual)](./manual/)에 소개된 대로 systemd에서 Misskey를 동작시키고 있습니다. 이 글에서는 [Misskey 구축 가이드 (manual)](./manual/)을 바탕으로 일반적인 우분투 서버에 Misskey를 설치하고 공개하는 방법을 하나하나 설명합니다.
[docker-compose](./docker/)를 사용하면 수작업으로 조금 더 쉽게 실행할 수 있을 것입니다. [docker-compose](./docker/)를 사용하면 수작업으로 조금 더 쉽게 실행할 수 있을 것입니다.
:::danger :::danger
일단 작동하기 시작한 서버의 도메인 및 호스트 이름으로는 데이터베이스를 다시 만들지 마십시오!
OS의 차이, Misskey 본체나 의존하는 소프트웨어의 버전업으로 변경된 부분 등이 있을 수 있지만, 양해 부탁드립니다.
::: :::
## 소개 ## 환경 및 조건
이 글에서는 [Misskey 구축 가이드 (manual)](./manual/)을 바탕으로 일반적인 우분투 서버에 Misskey를 설치하고 공개하는 방법을 하나하나 설명합니다. 이 글에서는 [Misskey 구축 가이드 (manual)](./manual/)을 바탕으로 일반적인 우분투 서버에 Misskey를 설치하고 공개하는 방법을 하나하나 설명합니다.
@ -52,7 +58,9 @@ OS의 차이, Misskey 본체나 의존하는 소프트웨어의 버전업으로
- 여기서는 도메인을 example.tld로 설명할 것이므로, 자신이 구입한 도메인으로 적절히 대체하여 읽도록 합니다.개발 환경의 경우 localhost로 대체합니다(설정 파일 항목에서 별도 설명). - 여기서는 도메인을 example.tld로 설명할 것이므로, 자신이 구입한 도메인으로 적절히 대체하여 읽도록 합니다.개발 환경의 경우 localhost로 대체합니다(설정 파일 항목에서 별도 설명).
:::danger :::danger
일단 사용하기 시작한 서버의 도메인 및 호스트 이름은 절대로 변경하지 마십시오! 일단 사용하기 시작한 서버의 도메인 및 호스트 이름은 절대로 변경하지 마십시오!
::: :::
## nano 사용법 ## nano 사용법
@ -67,7 +75,7 @@ nano /path/to/file
종료는 Ctrl+X, 변경사항을 저장할 것인지 묻는다면 Y(Yes)를 입력하고 Enter를 누르면 저장할 수 있습니다. 종료는 Ctrl+X, 변경사항을 저장할 것인지 묻는다면 Y(Yes)를 입력하고 Enter를 누르면 저장할 수 있습니다.
하단에 명령어 목록이 표시되므로 ^를 Ctrl, M-를 Alt로 바꿔서 참고합니다. Node.js는 서버사이드 자바스크립트 환경으로 Misskey의 기본 실행 환경입니다.
## 사용자 생성 ## 사용자 생성
@ -78,32 +86,25 @@ sudo adduser --disabled-password --disabled-login misskey
``` ```
:::tip :::tip
개발 환경의 경우 사용자를 구분할 필요가 없습니다. 개발 환경의 경우 사용자를 구분할 필요가 없습니다.
::: :::
## 기본적인 소프트웨어 설치 및 설정 ## 기본적인 소프트웨어 설치 및 설정
기본적인 소프트웨어를 설치합니다. active라면 OK.
### Node.js ### 사용자 및 데이터베이스 생성
Node.js는 서버사이드 자바스크립트 환경으로 Misskey의 기본 실행 환경입니다. psql을 실행합니다.
```sh ```sh
sudo apt install -y curl sudo -u postgres psql
curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
# Node.js가 설치되었으므로 버전을 확인합니다.
node -v
# corepack enable
sudo corepack enable
``` ```
v20.x.x 등으로 표시되면 OK.v8.x.x와 같이 낮은 버전이 표시되면 제대로 설치가 되지 않은 것이므로 서버를 재부팅하고 다시 설치하는 등 다시 한 번 시도해 봅니다. Misskey에서 사용할 사용자를 생성합니다.\
사용자 이름을 misskey, 비밀번호를 hoge로 설정하면 다음과 같습니다.
### PostgreSQL ### PostgreSQL
@ -152,46 +153,6 @@ CREATE DATABASE mk1 OWNER misskey;
Redis는 NoSQL의 인메모리 데이터베이스 소프트웨어로, 데이터베이스 및 연합과의 통신 관리 등을 위해 필요합니다. Redis는 NoSQL의 인메모리 데이터베이스 소프트웨어로, 데이터베이스 및 연합과의 통신 관리 등을 위해 필요합니다.
redis.io의 문서에 따라 설치합니다. https\://redis.io/docs/getting-started/installation/install-redis-on-linux/ redis.io의 문서에 따라 설치합니다. https\://redis.io/docs/getting-started/installation/install-redis-on-linux/
```sh
sudo apt install -y curl ca-certificates gnupg2 lsb-release
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt update
sudo apt install -y redis
```
systemctl로 데몬의 상태를 확인합니다.
```sh
systemctl status redis-server
```
active라면 OK.
### nginx
nginx는 주로 리버스 프록시에 사용되는 웹 서버 소프트웨어입니다.Misskey에 필수적인 것은 아니지만, 캐시 등을 하면 성능이 향상되고 http에서 https로 전송하는 등의 작업을 위해 설치해 둡니다.
:::tip
개발 환경의 경우 nginx 설정이 필요하지 않습니다.
:::
nginx.org의 문서 http\://nginx.org/en/linux_packages.html#Ubuntu 에 따라 설치합니다.
```sh
sudo apt install ubuntu-keyring
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
```
이때 출력에 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62가 있는지 확인합니다.
```sh ```sh
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
@ -208,44 +169,48 @@ systemctl로 데몬 상태 확인.
systemctl status nginx systemctl status nginx
``` ```
active라면 OK.그렇지 않은 경우 다음 명령을 실행합니다. active라면 OK.
```sh ### nginx
sudo systemctl start nginx
sudo systemctl enable nginx
```
http\://localhost에 접속하여 \*Welcome to nginx!\*라고 표시되면 OK.\ http\://localhost에 접속하여 \*Welcome to nginx!\*라고 표시되면 OK.\
curl에서 확인하는 것도 좋은 방법입니다. curl에서 확인하는 것도 좋은 방법입니다.
```sh :::tip
curl http://localhost
```
### 기타 개발 환경의 경우 nginx 설정이 필요하지 않습니다.
Git(버전 관리 소프트웨어) 및 build-essential(Misskey 빌드 시 필요)을 설치합니다. :::
nginx.org의 문서 http\://nginx.org/en/linux_packages.html#Ubuntu 에 따라 설치합니다.
```sh ```sh
sudo apt update sudo apt install ubuntu-keyring
sudo apt install -y git build-essential curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
``` ```
## 추가 설정 및 설치
서버를 인터넷에 공개할 준비를 합니다. 서버를 인터넷에 공개할 준비를 합니다.
:::tip ```sh
개발 환경의 경우 방화벽, CloudFlare, Certbot 설정이 필요하지 않습니다. echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
:::
### 방화벽 echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx
이번에는 방화벽으로 ufw를 사용합니다. sudo apt update
다음은 접속 허용을 화이트리스트 형식으로 하여 22번 SSH 포트를 접속 횟수 제한을 두어 개방하고, 80번 HTTP 포트와 443번 HTTPS 포트를 개방했습니다. sudo apt install -y nginx
```
systemctl로 데몬 상태를 확인합니다.
```sh
systemctl status nginx
```
active라면 OK.그렇지 않은 경우 다음 명령을 실행합니다.
```sh ```sh
sudo ufw enable sudo ufw enable
@ -259,33 +224,32 @@ sudo ufw allow 80
sudo ufw allow 443 sudo ufw allow 443
``` ```
ufw의 상태를 확인합니다. http\://localhost에 접속하여 \*Welcome to nginx!\*라고 표시되면 OK.\
curl에서 확인하는 것도 좋은 방법입니다.
```sh ```sh
sudo ufw status sudo ufw status
``` ```
systemctl로 영구화합니다. ### 그 외
Git(버전 관리 소프트웨어) 및 build-essential(Misskey 빌드 시 필요)을 설치합니다.
```sh ```sh
sudo systemctl enable ufw sudo apt update
sudo apt install -y git build-essential
``` ```
## CloudFlare
서버를 인터넷에 공개할 준비를 합니다.
:::tip :::tip
ufw는 넷필터(iptables)를 사람이 쉽게 조작할 수 있도록 하는 앱입니다.설치 스크립트는 OCI 환경에서는 netfilter를 직접 조작합니다.
:::
### CloudFlare
CloudFlare는 자신의 도메인에 대해 DNS 서버, 리버스 프록시, CDN을 한 번에 제공해 주는 매우 편리한 서비스입니다.\
CloudFlare를 경유하지 않고 서버를 공개하는 것도 가능하지만, 매우 편리하기 때문에 도입하는 것이 좋습니다.
[**→ CDN 설정**](../resources/cdn/)
[CloudFlare에 가입(https\://dash.cloudflare.com/sign-up)하고, 구매한 도메인을 안내에 따라 등록합니다.
DNS 등록 화면에서 서버의 IP 주소를 입력하면 됩니다. DNS 등록 화면에서 서버의 IP 주소를 입력하면 됩니다.
도메인 구입처에 따라 적용에 3일 정도 소요될 수 있습니다. :::
### Certbot (Let's Encrypt) 설정 ### Certbot (Let's Encrypt) 설정
@ -297,11 +261,11 @@ certbot과 CloudFlare 플러그인 설치하기
sudo apt install -y certbot python3-certbot-dns-cloudflare sudo apt install -y certbot python3-certbot-dns-cloudflare
``` ```
Cloudflare의 API 키를 얻습니다.아래 절차에 따라 취득합니다. ufw의 상태를 확인합니다.
1. https\://dash.cloudflare.com/profile/api-tokens에 접속 ```sh
2. Global API Key의 View 선택 sudo ufw status
3. 비밀번호 입력 및 hCaptcha 해제, View 선택 ```
CloudFlare의 정보를 담은 설정 파일 /etc/cloudflare/cloudflare.ini를 생성합니다. CloudFlare의 정보를 담은 설정 파일 /etc/cloudflare/cloudflare.ini를 생성합니다.
@ -310,6 +274,44 @@ mkdir /etc/cloudflare
nano /etc/cloudflare/cloudflare.ini nano /etc/cloudflare/cloudflare.ini
``` ```
:::tip
ufw는 넷필터(iptables)를 사람이 쉽게 조작할 수 있도록 하는 앱입니다.설치 스크립트는 OCI 환경에서는 netfilter를 직접 조작합니다.
:::
### CloudFlare
준비가 되었으니 명령을 실행합니다.**중간에 있는 2곳의 example.tld는 자신의 것으로 교체**.
[CloudFlare에 가입(https\://dash.cloudflare.com/sign-up)하고, 구매한 도메인을 안내에 따라 등록합니다.
DNS 등록 화면에서 서버의 IP 주소를 입력하면 됩니다.
자동 업데이트 설정은 설치와 동시에 이루어지기 때문에 불필요합니다.
### Misskey 설치하기
이제 사전 준비는 어느 정도 끝났으니 미스키를 준비할 차례입니다.
misskey 사용자로 변경.
```sh
sudo su - misskey
```
Cloudflare의 API 키를 얻습니다.아래 절차에 따라 취득합니다.
1. https\://dash.cloudflare.com/profile/api-tokens 에 접속
2. Global API Key의 View 선택
3. 비밀번호 입력 및 hCaptcha 해제, View 선택
필요한 npm 패키지를 설치합니다.
```sh
NODE_ENV=production pnpm install --frozen-lockfile
```
dns_cloudflare_email(아래 예에서는 bar\@fuga.foo)에는 CloudFlare에 등록한 이메일 주소를 설정합니다. dns_cloudflare_email(아래 예에서는 bar\@fuga.foo)에는 CloudFlare에 등록한 이메일 주소를 설정합니다.
```sh ```sh
@ -317,13 +319,13 @@ dns_cloudflare_email = bar@fuga.foo
dns_cloudflare_api_key = xxxxxxxxxxxxxxxxxxxxxxxxxx dns_cloudflare_api_key = xxxxxxxxxxxxxxxxxxxxxxxxxx
``` ```
이를 저장하고 권한을 600으로 설정합니다. 설정 파일 .config/default.yml을 생성합니다.
```sh ```sh
sudo chmod 600 /etc/cloudflare/cloudflare.ini nano .config/default.yml
``` ```
준비가 되었으니 명령을 실행합니다.**중간에 있는 2곳의 example.tld는 자신의 것으로 교체**. 다음 내용을 붙여넣고 적절하게 바꿉니다.설정값의 변경이 필요한 부분은 ●, 지금까지의 흐름에서 설정된 값을 사용하는 부분은 ○으로 표시하였습니다.
```sh ```sh
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/cloudflare/cloudflare.ini --dns-cloudflare-propagation-seconds 60 --server https://acme-v02.api.letsencrypt.org/directory -d example.tld -d *.example.tld sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/cloudflare/cloudflare.ini --dns-cloudflare-propagation-seconds 60 --server https://acme-v02.api.letsencrypt.org/directory -d example.tld -d *.example.tld
@ -335,7 +337,7 @@ sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/cloudfl
## Misskey 설치하기 ## Misskey 설치하기
이제 사전 준비는 어느 정도 끝났으니 미스키를 준비할 차례입니다. 지정이 완료되면 저장합니다.
misskey 사용자로 변경. misskey 사용자로 변경.
@ -343,27 +345,23 @@ misskey 사용자로 변경.
sudo su - misskey sudo su - misskey
``` ```
Git으로 파일들을 전개. 루트 권한으로 변경합니다.
```sh ```sh
git clone -b master https://github.com/misskey-dev/misskey.git --recurse-submodules exit
cd misskey
git checkout master
``` ```
필요한 npm 패키지를 설치합니다. /etc/nginx/conf.d/misskey.conf를 작성합니다.
```sh ```sh
NODE_ENV=production pnpm install --frozen-lockfile sudo nano /etc/nginx/conf.d/misskey.conf
``` ```
## Misskey 구성하기 ## Misskey 구성하기
### default.yml ### default.yml
설정 파일 .config/default.yml을 생성합니다. 변경 사항을 저장합니다.
```sh ```sh
nano .config/default.yml nano .config/default.yml
@ -371,12 +369,14 @@ nano .config/default.yml
다음 내용을 붙여넣고 적절하게 바꿉니다.설정값의 변경이 필요한 부분은 ●, 지금까지의 흐름에서 설정된 값을 사용하는 부분은 ○으로 표시하였습니다. 다음 내용을 붙여넣고 적절하게 바꿉니다.설정값의 변경이 필요한 부분은 ●, 지금까지의 흐름에서 설정된 값을 사용하는 부분은 ○으로 표시하였습니다.
이 설정 파일은 YAML 형식으로 작성되어 있으며, 줄의 시작 부분의 띄어쓰기 등을 잘못하면 Misskey가 동작하지 않으므로 특히 주의해야 합니다. OK라면 nginx 데몬을 재시작합니다.
설정할 수 있는 값과 작성 방법은 [.config/example.yml](https://github.com/syuilo/misskey/blob/develop/.config/example.yml)에 나와 있습니다. 설정할 수 있는 값과 작성 방법은 [.config/example.yml](https://github.com/syuilo/misskey/blob/develop/.config/example.yml)에 나와 있습니다.
:::tip :::tip
개발 환경의 경우 url은 `url: http://localhost:3000`로 지정합니다. 개발 환경의 경우 url은 `url: http://localhost:3000`로 지정합니다.
::: :::
```yml ```yml
@ -407,7 +407,7 @@ syslog:
port: 514 port: 514
``` ```
지정이 완료되면 저장합니다. misskey 사용자로 다시 로그인합니다.
### nginx 설정하기 ### nginx 설정하기
@ -453,9 +453,9 @@ sudo systemctl status nginx
active이면 OK. active이면 OK.
## Misskey 빌드 ## CloudFlare의 DNS 확인하기
misskey 사용자로 다시 로그인합니다. CloudFlare의 DNS 설정이 올바른 IP 주소로 설정되어 있는지 다시 한 번 확인해봅니다.
```sh ```sh
sudo su - misskey sudo su - misskey
@ -469,7 +469,9 @@ NODE_ENV=production pnpm run build
``` ```
:::tip :::tip
개발 환경의 경우 `NODE_ENV=production`은 필요하지 않습니다.이후 명령어에서도 마찬가지로 삭제해 주세요. 개발 환경의 경우 `NODE_ENV=production`은 필요하지 않습니다.이후 명령어에서도 마찬가지로 삭제해 주세요.
::: :::
### 서버에서 빌드할 수 없는 경우 ### 서버에서 빌드할 수 없는 경우
@ -485,20 +487,40 @@ RAM이 부족한 경우 다음과 같은 해결책을 생각해 볼 수 있습
## 데이터베이스 초기화 ## 데이터베이스 초기화
```sh ```sh
pnpm run init [Unit]
Description=Misskey daemon
[Service]
Type=simple
User=misskey
ExecStart=/usr/bin/npm start
WorkingDirectory=/home/misskey/misskey
Environment="NODE_ENV=production"
TimeoutSec=60
StandardOutput=journal
StandardError=journal
SyslogIdentifier=misskey
Restart=always
[Install]
WantedBy=multi-user.target
``` ```
## Misskey 실행하기 ## Misskey 실행하기
```sh ```sh
NODE_ENV=production pnpm run start sudo systemctl daemon-reload
sudo systemctl enable misskey
sudo systemctl start misskey
``` ```
**Now listening on port 3000 on** [**http://example.tld**](http://example.tld) 라고 표시되면 설정한 URL에 접속합니다. **Now listening on port 3000 on** [**http://example.tld**](http://example.tld) 라고 표시되면 설정한 URL에 접속합니다.
Misskey의 웰컴 페이지가 표시되어야 합니다. Misskey의 웰컴 페이지가 표시되어야 합니다.
계정 생성, 노트 작성, 파일 업로드 등 일련의 작업이 제대로 이루어지고 있는지 확인해 봅니다. active라면 OK.
### 액세스 할 수 없는 경우 ### 액세스 할 수 없는 경우
@ -510,20 +532,22 @@ CloudFlare의 DNS 설정이 올바른 IP 주소로 설정되어 있는지 다시
홈 서버의 경우, 라우터가 서버와 외부와의 80포트, 443포트 통신을 허용하도록 설정되어 있는지 확인합니다. 홈 서버의 경우, 라우터가 서버와 외부와의 80포트, 443포트 통신을 허용하도록 설정되어 있는지 확인합니다.
클라우드의 경우에도 네트워크 설정에서 포트 개방이 필요한 경우가 많습니다. [Misskey 업데이트 방법](./manual/#misskey 업데이트 방법)
## Misskey의 데몬 생성 ## Misskey의 데몬 생성
:::tip :::tip
개발 환경의 경우, 데몬을 만들 필요가 없습니다. 개발 환경의 경우, 데몬을 만들 필요가 없습니다.
::: :::
일단 Ctrl+C로 프로세스를 죽이고, Misskey를 데몬으로 실행하도록 설정해 봅시다. 재부팅 후 Misskey는 자동으로 시작됩니다.
루트 권한으로 변경합니다. 루트 권한으로 변경합니다.
```sh ```sh
exit sudo systemctl start misskey
``` ```
/etc/systemd/system/misskey.service를 만듭니다. /etc/systemd/system/misskey.service를 만듭니다.
@ -584,7 +608,7 @@ Misskey 서버에 자신의 계정을 등록하고 로그인하여 설정을 진
## Misskey 업데이트 ## Misskey 업데이트
[Misskey 업데이트 방법](. /manual/#misskey 업데이트 방법) [Misskey 업데이트 방법](./manual/#misskey 업데이트 방법)
작업 중에는 Misskey를 사용할 수 없습니다. 작업 중에는 Misskey를 사용할 수 없습니다.