From 3aab9826258a5ab92952a898e9db124a46a1de46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sun, 31 Dec 2023 13:25:16 +0900 Subject: [PATCH] New translations ubuntu-manual.md (Korean) --- .../install/guides/ubuntu-manual.md | 272 ++++++++++-------- 1 file changed, 148 insertions(+), 124 deletions(-) diff --git a/content/ko/docs/3.for-admin/install/guides/ubuntu-manual.md b/content/ko/docs/3.for-admin/install/guides/ubuntu-manual.md index aa887c94..53501052 100644 --- a/content/ko/docs/3.for-admin/install/guides/ubuntu-manual.md +++ b/content/ko/docs/3.for-admin/install/guides/ubuntu-manual.md @@ -11,26 +11,32 @@ [**쉘 스크립트에 대한 자세한 내용과 사용법은 여기에서 확인하세요!**](./bash/) :::tip + 쉘 스크립트를 통한 개발 환경에서의 설치는 예상하지 않았습니다. + ::: :::tip -도메인 구매 및 Cloudflare 설정, 서버 확보는 여러분이 직접 준비해 주시기 바랍니다. + +이 글에서는 [Misskey 구축 가이드 (manual)](./manual/)에 소개된 대로 systemd에서 Misskey를 동작시키고 있습니다. + ::: 문제가 있으면 [@aqz@p1.a9z.dev 에 멘션](https://p1.a9z.dev/@aqz)으로 알려주시면 감사하겠습니다. -## 이 글에 대하여 +## 소개 -이 글에서는 [Misskey 구축 가이드 (manual)](./manual/)에 소개된 대로 systemd에서 Misskey를 동작시키고 있습니다. +이 글에서는 [Misskey 구축 가이드 (manual)](./manual/)을 바탕으로 일반적인 우분투 서버에 Misskey를 설치하고 공개하는 방법을 하나하나 설명합니다. [docker-compose](./docker/)를 사용하면 수작업으로 조금 더 쉽게 실행할 수 있을 것입니다. :::danger -일단 작동하기 시작한 서버의 도메인 및 호스트 이름으로는 데이터베이스를 다시 만들지 마십시오! + +OS의 차이, Misskey 본체나 의존하는 소프트웨어의 버전업으로 변경된 부분 등이 있을 수 있지만, 양해 부탁드립니다. + ::: -## 소개 +## 환경 및 조건 이 글에서는 [Misskey 구축 가이드 (manual)](./manual/)을 바탕으로 일반적인 우분투 서버에 Misskey를 설치하고 공개하는 방법을 하나하나 설명합니다. @@ -52,7 +58,9 @@ OS의 차이, Misskey 본체나 의존하는 소프트웨어의 버전업으로 - 여기서는 도메인을 example.tld로 설명할 것이므로, 자신이 구입한 도메인으로 적절히 대체하여 읽도록 합니다.개발 환경의 경우 localhost로 대체합니다(설정 파일 항목에서 별도 설명). :::danger + 일단 사용하기 시작한 서버의 도메인 및 호스트 이름은 절대로 변경하지 마십시오! + ::: ## nano 사용법 @@ -67,7 +75,7 @@ nano /path/to/file 종료는 Ctrl+X, 변경사항을 저장할 것인지 묻는다면 Y(Yes)를 입력하고 Enter를 누르면 저장할 수 있습니다. -하단에 명령어 목록이 표시되므로 ^를 Ctrl, M-를 Alt로 바꿔서 참고합니다. +Node.js는 서버사이드 자바스크립트 환경으로 Misskey의 기본 실행 환경입니다. ## 사용자 생성 @@ -78,32 +86,25 @@ sudo adduser --disabled-password --disabled-login misskey ``` :::tip + 개발 환경의 경우 사용자를 구분할 필요가 없습니다. + ::: ## 기본적인 소프트웨어 설치 및 설정 -기본적인 소프트웨어를 설치합니다. +active라면 OK. -### Node.js +### 사용자 및 데이터베이스 생성 -Node.js는 서버사이드 자바스크립트 환경으로 Misskey의 기본 실행 환경입니다. +psql을 실행합니다. ```sh -sudo apt install -y curl - -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 +sudo -u postgres psql ``` -v20.x.x 등으로 표시되면 OK.v8.x.x와 같이 낮은 버전이 표시되면 제대로 설치가 되지 않은 것이므로 서버를 재부팅하고 다시 설치하는 등 다시 한 번 시도해 봅니다. +Misskey에서 사용할 사용자를 생성합니다.\ +사용자 이름을 misskey, 비밀번호를 hoge로 설정하면 다음과 같습니다. ### PostgreSQL @@ -152,46 +153,6 @@ CREATE DATABASE mk1 OWNER misskey; Redis는 NoSQL의 인메모리 데이터베이스 소프트웨어로, 데이터베이스 및 연합과의 통신 관리 등을 위해 필요합니다. 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 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 ``` -active라면 OK.그렇지 않은 경우 다음 명령을 실행합니다. +active라면 OK. -```sh -sudo systemctl start nginx - -sudo systemctl enable nginx -``` +### nginx http\://localhost에 접속하여 \*Welcome to nginx!\*라고 표시되면 OK.\ curl에서 확인하는 것도 좋은 방법입니다. -```sh -curl http://localhost -``` +:::tip -### 기타 +개발 환경의 경우 nginx 설정이 필요하지 않습니다. -Git(버전 관리 소프트웨어) 및 build-essential(Misskey 빌드 시 필요)을 설치합니다. +::: + +nginx.org의 문서 http\://nginx.org/en/linux_packages.html#Ubuntu 에 따라 설치합니다. ```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 -개발 환경의 경우 방화벽, CloudFlare, Certbot 설정이 필요하지 않습니다. -::: +```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 -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 sudo ufw enable @@ -259,33 +224,32 @@ sudo ufw allow 80 sudo ufw allow 443 ``` -ufw의 상태를 확인합니다. +http\://localhost에 접속하여 \*Welcome to nginx!\*라고 표시되면 OK.\ +curl에서 확인하는 것도 좋은 방법입니다. ```sh sudo ufw status ``` -systemctl로 영구화합니다. +### 그 외 + +Git(버전 관리 소프트웨어) 및 build-essential(Misskey 빌드 시 필요)을 설치합니다. ```sh -sudo systemctl enable ufw +sudo apt update + +sudo apt install -y git build-essential ``` +## CloudFlare + +서버를 인터넷에 공개할 준비를 합니다. + :::tip -ufw는 넷필터(iptables)를 사람이 쉽게 조작할 수 있도록 하는 앱입니다.설치 스크립트는 OCI 환경에서는 netfilter를 직접 조작합니다. -::: - -### CloudFlare - -CloudFlare는 자신의 도메인에 대해 DNS 서버, 리버스 프록시, CDN을 한 번에 제공해 주는 매우 편리한 서비스입니다.\ -CloudFlare를 경유하지 않고 서버를 공개하는 것도 가능하지만, 매우 편리하기 때문에 도입하는 것이 좋습니다. -[**→ CDN 설정**](../resources/cdn/) - -[CloudFlare에 가입(https\://dash.cloudflare.com/sign-up)하고, 구매한 도메인을 안내에 따라 등록합니다. DNS 등록 화면에서 서버의 IP 주소를 입력하면 됩니다. -도메인 구입처에 따라 적용에 3일 정도 소요될 수 있습니다. +::: ### Certbot (Let's Encrypt) 설정 @@ -297,11 +261,11 @@ certbot과 CloudFlare 플러그인 설치하기 sudo apt install -y certbot python3-certbot-dns-cloudflare ``` -Cloudflare의 API 키를 얻습니다.아래 절차에 따라 취득합니다. +ufw의 상태를 확인합니다. -1. https\://dash.cloudflare.com/profile/api-tokens에 접속 -2. Global API Key의 View 선택 -3. 비밀번호 입력 및 hCaptcha 해제, View 선택 +```sh +sudo ufw status +``` CloudFlare의 정보를 담은 설정 파일 /etc/cloudflare/cloudflare.ini를 생성합니다. @@ -310,6 +274,44 @@ mkdir /etc/cloudflare 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에 등록한 이메일 주소를 설정합니다. ```sh @@ -317,13 +319,13 @@ dns_cloudflare_email = bar@fuga.foo dns_cloudflare_api_key = xxxxxxxxxxxxxxxxxxxxxxxxxx ``` -이를 저장하고 권한을 600으로 설정합니다. +설정 파일 .config/default.yml을 생성합니다. ```sh -sudo chmod 600 /etc/cloudflare/cloudflare.ini +nano .config/default.yml ``` -준비가 되었으니 명령을 실행합니다.**중간에 있는 2곳의 example.tld는 자신의 것으로 교체**. +다음 내용을 붙여넣고 적절하게 바꿉니다.설정값의 변경이 필요한 부분은 ●, 지금까지의 흐름에서 설정된 값을 사용하는 부분은 ○으로 표시하였습니다. ```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 @@ -335,7 +337,7 @@ sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/cloudfl ## Misskey 설치하기 -이제 사전 준비는 어느 정도 끝났으니 미스키를 준비할 차례입니다. +지정이 완료되면 저장합니다. misskey 사용자로 변경. @@ -343,27 +345,23 @@ misskey 사용자로 변경. sudo su - misskey ``` -Git으로 파일들을 전개. +루트 권한으로 변경합니다. ```sh -git clone -b master https://github.com/misskey-dev/misskey.git --recurse-submodules - -cd misskey - -git checkout master +exit ``` -필요한 npm 패키지를 설치합니다. +/etc/nginx/conf.d/misskey.conf를 작성합니다. ```sh -NODE_ENV=production pnpm install --frozen-lockfile +sudo nano /etc/nginx/conf.d/misskey.conf ``` ## Misskey 구성하기 ### default.yml -설정 파일 .config/default.yml을 생성합니다. +변경 사항을 저장합니다. ```sh 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)에 나와 있습니다. :::tip + 개발 환경의 경우 url은 `url: http://localhost:3000`로 지정합니다. + ::: ```yml @@ -407,7 +407,7 @@ syslog: port: 514 ``` -지정이 완료되면 저장합니다. +misskey 사용자로 다시 로그인합니다. ### nginx 설정하기 @@ -453,9 +453,9 @@ sudo systemctl status nginx active이면 OK. -## Misskey 빌드 +## CloudFlare의 DNS 확인하기 -misskey 사용자로 다시 로그인합니다. +CloudFlare의 DNS 설정이 올바른 IP 주소로 설정되어 있는지 다시 한 번 확인해봅니다. ```sh sudo su - misskey @@ -469,7 +469,9 @@ NODE_ENV=production pnpm run build ``` :::tip + 개발 환경의 경우 `NODE_ENV=production`은 필요하지 않습니다.이후 명령어에서도 마찬가지로 삭제해 주세요. + ::: ### 서버에서 빌드할 수 없는 경우 @@ -485,20 +487,40 @@ RAM이 부족한 경우 다음과 같은 해결책을 생각해 볼 수 있습 ## 데이터베이스 초기화 ```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 실행하기 ```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에 접속합니다. Misskey의 웰컴 페이지가 표시되어야 합니다. -계정 생성, 노트 작성, 파일 업로드 등 일련의 작업이 제대로 이루어지고 있는지 확인해 봅니다. +active라면 OK. ### 액세스 할 수 없는 경우 @@ -510,20 +532,22 @@ CloudFlare의 DNS 설정이 올바른 IP 주소로 설정되어 있는지 다시 홈 서버의 경우, 라우터가 서버와 외부와의 80포트, 443포트 통신을 허용하도록 설정되어 있는지 확인합니다. -클라우드의 경우에도 네트워크 설정에서 포트 개방이 필요한 경우가 많습니다. +[Misskey 업데이트 방법](./manual/#misskey 업데이트 방법) ## Misskey의 데몬 생성 :::tip + 개발 환경의 경우, 데몬을 만들 필요가 없습니다. + ::: -일단 Ctrl+C로 프로세스를 죽이고, Misskey를 데몬으로 실행하도록 설정해 봅시다. +재부팅 후 Misskey는 자동으로 시작됩니다. 루트 권한으로 변경합니다. ```sh -exit +sudo systemctl start misskey ``` /etc/systemd/system/misskey.service를 만듭니다. @@ -584,7 +608,7 @@ Misskey 서버에 자신의 계정을 등록하고 로그인하여 설정을 진 ## Misskey 업데이트 -[Misskey 업데이트 방법](. /manual/#misskey 업데이트 방법) +[Misskey 업데이트 방법](./manual/#misskey 업데이트 방법) 작업 중에는 Misskey를 사용할 수 없습니다.