설치 가이드 · 8 min read · Dec 19, 2025
우분투 22.04 LTS에 Wiki.js 설치하는 방법

Wiki.js는 오픈 소스의 경량 위키 소프트웨어입니다. Node.js 자바스크립트 프레임워크를 기반으로 구축되었습니다. 개발자를 위한 Markdown 편집기와 비기술 사용자를 위한 WYSIWYG 편집기를 사용하여 문서, 위키 및 웹 콘텐츠를 작성하는 데 사용할 수 있습니다. UML 다이어그램, Tex 또는 MathML 구문을 사용한 수학 표현식 및 코드와 같은 여러 콘텐츠 유형을 지원합니다. 분석, 인증, 로깅, 타사 검색 엔진 및 콘텐츠를 동기화할 수 있는 여러 저장 서비스와 같은 다양한 기능을 위한 여러 모듈이 포함되어 있습니다.
이 튜토리얼에서는 PostgreSQL 데이터베이스와 Nginx 서버를 사용하여 우분투 22.04 서버에 Wiki.js를 설치하는 방법을 배웁니다.
전제 조건
- 우분투 22.04를 실행하는 서버.
- sudo 권한이 있는 비루트 사용자.
- 서버를 가리키는 완전한 도메인 이름(FQDN). 우리의 목적을 위해
wiki.example.com을 도메인 이름으로 사용합니다. - 모든 것이 업데이트되었는지 확인하십시오.
$ sudo apt update && sudo apt upgrade - 기본 유틸리티 패키지를 설치합니다. 일부는 이미 설치되어 있을 수 있습니다.
$ sudo apt install wget curl ca-certificates gnupg gnupg2 nano unzip lsb-release ubuntu-keyring -y
1단계 - 방화벽 구성
패키지를 설치하기 전에 첫 번째 단계는 HTTP 및 HTTPS 연결을 허용하도록 방화벽을 구성하는 것입니다.
방화벽 상태를 확인합니다.
$ sudo ufw status
다음과 유사한 내용을 볼 수 있어야 합니다.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
HTTP 및 HTTPS 포트를 허용합니다.
$ sudo ufw allow http
$ sudo ufw allow https
확인을 위해 상태를 다시 확인합니다.
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
2단계 - PostgreSQL 및 유틸리티 설치
우분투 22.04에는 이전 버전의 PostgreSQL이 포함되어 있습니다. 튜토리얼을 위해 PostgreSQL 14를 설치합니다.
PostgreSQL용 저장소를 설치합니다.
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
PostgreSQL GPG 키를 가져옵니다.
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null
시스템 저장소 목록을 업데이트합니다.
$ sudo apt update
PostgreSQL 14 서버를 설치합니다.
$ sudo apt install -y postgresql-14
서비스 상태를 확인합니다.
$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Tue 2022-10-25 06:24:24 UTC; 10min ago
Main PID: 4032 (code=exited, status=0/SUCCESS)
CPU: 1ms
Oct 25 06:24:24 wiki systemd[1]: Starting PostgreSQL RDBMS...
Oct 25 06:24:24 wiki systemd[1]: Finished PostgreSQL RDBMS.
3단계 - PostgreSQL 구성
PostgreSQL 셸에 로그인합니다.
$ sudo -i -u postgres psql
Wiki.js를 위한 새 데이터베이스를 생성합니다.
postgres=# CREATE DATABASE wikidb;
강력한 비밀번호를 가진 새 데이터베이스 사용자를 생성합니다.
postgres=# CREATE USER wikiuser WITH ENCRYPTED PASSWORD 'wikipassword';
사용자가 데이터베이스를 사용할 수 있는 권한을 부여합니다.
postgres=# GRANT ALL PRIVILEGES ON DATABASE wikidb TO wikiuser;
Postgres 셸을 종료합니다.
postgres=# \q
4단계 - Node.js 설치
현재 이 튜토리얼을 작성할 때 Wiki.js는 Node v16을 지원합니다.
다음 명령을 사용하여 Node 저장소를 설치합니다.
$ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
Node를 설치합니다.
$ sudo apt install nodejs -y
Node 설치를 확인합니다.
$ node --version
v16.18.0
5단계 - Wiki.js 다운로드
Wiki.js를 설치할 폴더를 생성합니다.
$ sudo mkdir -p /var/www/wikijs
현재 로그인한 사용자를 폴더의 소유자로 설정합니다.
$ sudo chown $USER:$USER /var/www/wikijs
디렉토리로 전환하고 Wiki.js 코드 아카이브를 다운로드합니다.
$ cd /var/www/wikijs && wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
다운로드한 아카이브를 추출합니다.
$ tar xzf wiki-js.tar.gz
아카이브를 삭제합니다.
$ rm wiki-js.tar.gz
6단계 - Wiki.js 구성 및 실행
샘플에서 구성 파일을 생성합니다.
$ cp config.sample.yml config.yml
구성 파일을 편집하기 위해 엽니다.
$ nano config.yml
다음 데이터베이스 설정을 찾아 3단계에서 구성한 값으로 업데이트합니다.
# PostgreSQL / MySQL / MariaDB / MS SQL Server only:
host: localhost
port: 5432
user: wikiuser
pass: wikipassword
db: wikidb
ssl: false
bindIP: 0.0.0.0 줄을 찾아 다음과 같이 업데이트합니다.
bindIP: 127.0.0.1
이렇게 하면 Wiki.js가 루프백 주소에서 수신 대기하게 됩니다. 외부에서 접근하기 위해 Nginx 프록시를 사용할 것입니다.
파일을 저장하려면 Ctrl + X를 누르고 프롬프트가 표시되면 Y를 입력합니다.
다음 명령을 사용하여 Wiki.js를 실행합니다.
$ node server
성공적인 설치를 확인하는 유사한 출력을 받게 됩니다.
Loading configuration from /var/www/wikijs/config.yml... OK
2022-10-25T06:40:46.294Z [MASTER] info: =======================================
2022-10-25T06:40:46.296Z [MASTER] info: = Wiki.js 2.5.289 =====================
2022-10-25T06:40:46.296Z [MASTER] info: =======================================
2022-10-25T06:40:46.296Z [MASTER] info: Initializing...
2022-10-25T06:40:46.962Z [MASTER] info: Using database driver pg for postgres [ OK ]
2022-10-25T06:40:46.974Z [MASTER] info: Connecting to database...
2022-10-25T06:40:47.067Z [MASTER] info: Database Connection Successful [ OK ]
2022-10-25T06:40:47.345Z [MASTER] warn: DB Configuration is empty or incomplete. Switching to Setup mode...
2022-10-25T06:40:47.345Z [MASTER] info: Starting setup wizard...
2022-10-25T06:40:47.510Z [MASTER] info: Starting HTTP server on port 3000...
2022-10-25T06:40:47.511Z [MASTER] info: HTTP Server on port: [ 3000 ]
2022-10-25T06:40:47.515Z [MASTER] info: HTTP Server: [ RUNNING ]
2022-10-25T06:40:47.515Z [MASTER] info: .......................................................................
2022-10-25T06:40:47.515Z [MASTER] info:
2022-10-25T06:40:47.516Z [MASTER] info: Browse to http://YOUR-SERVER-IP:3000/ to complete setup!
2022-10-25T06:40:47.516Z [MASTER] info:
2022-10-25T06:40:47.516Z [MASTER] info: ............................................................................
Ctrl + C를 눌러 프로세스를 중지합니다.
7단계 - Systemd 서비스 설정
Wiki.js를 실행하는 위의 프로세스는 임시적입니다. 프로세스를 영구적으로 만들기 위해, Wiki.js를 백그라운드 서비스로 실행할 systemd 서비스를 생성해야 합니다. 이렇게 하면 시스템 재부팅 시에도 Wiki.js가 실행됩니다.
Wiki.js에 대한 systemd 서비스 파일을 생성하고 편집을 위해 엽니다.
$ sudo nano /etc/systemd/system/wikijs.service
다음 코드를 붙여넣습니다. User 변수의 값을 시스템 사용자 이름으로 바꿉니다.
[Unit]
Description=Wiki.js
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
User=navjot
Environment=NODE_ENV=production
WorkingDirectory=/var/www/wikijs
[Install]
WantedBy=multi-user.target
파일을 저장하려면 Ctrl + X를 누르고 프롬프트가 표시되면 Y를 입력합니다.
시스템 데몬을 다시 로드합니다.
$ sudo systemctl daemon-reload
Wiki.js 서비스를 활성화합니다.
$ sudo systemctl enable wikijs
8단계 - Nginx 설치
우분투 22.04에는 이전 버전의 Nginx가 포함되어 있습니다. 최신 버전을 설치하기 위해 공식 Nginx 저장소를 다운로드해야 합니다.
공식 Nginx 키를 가져옵니다.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Nginx의 공식 저장소를 설정합니다.
$ 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
시스템 저장소 목록을 업데이트합니다.
$ sudo apt update
Nginx 서버를 설치합니다.
$ sudo apt install nginx -y
설치를 확인합니다.
$ nginx -v
nginx version: nginx/1.22.1
Nginx 서버를 시작합니다.
$ sudo systemctl start nginx
서비스 상태를 확인합니다.
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-10-25 06:50:05 UTC; 2s ago
Docs: https://nginx.org/en/docs/
Process: 5522 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 5523 (nginx)
Tasks: 2 (limit: 1030)
Memory: 1.8M
CPU: 4ms
CGroup: /system.slice/nginx.service
??5523 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??5524 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
Oct 25 06:50:05 wiki systemd[1]: Starting nginx - high performance web server...
9단계 - SSL 설치
SSL 인증서를 생성하기 위해 Certbot을 설치해야 합니다. 우분투의 저장소를 사용하여 Certbot을 설치하거나 Snapd 도구를 사용하여 최신 버전을 가져올 수 있습니다. 우리는 Snapd 버전을 사용할 것입니다.
우분투 22.04에는 기본적으로 Snapd가 설치되어 있습니다. 다음 명령을 실행하여 Snapd 버전이 최신인지 확인합니다.
$ sudo snap install core
$ sudo snap refresh core
Certbot을 설치합니다.
$ sudo snap install --classic certbot
다음 명령을 사용하여 Certbot 명령이 /usr/bin 디렉토리에서 실행될 수 있도록 심볼릭 링크를 생성합니다.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
다음 명령을 실행하여 인증서를 발급합니다.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d wiki.example.com
위 명령은 서버의 /etc/letsencrypt/live/wiki.example.com 디렉토리에 인증서를 다운로드합니다.
Diffie-Hellman 그룹 인증서를 생성합니다.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Certbot 갱신 스케줄러 서비스를 확인합니다.
$ sudo systemctl list-timers
snap.certbot.renew.service가 실행될 서비스 중 하나로 표시됩니다.
NEXT LEFT LAST PASSED UNIT ACTIVATES
.................................................................................................................................
Tue 2022-10-25 00:00:00 UTC 17h left Tue 2022-10-25 04:49:20 UTC 2h ago logrotate.timer logrotate.service
Tue 2022-10-25 02:39:09 UTC 20h left Tue 2022-10-25 06:47:33 UTC 12min ago apt-daily.timer apt-daily.service
Tue 2022-10-25 06:02:00 UTC 8h left n/a n/a snap.certbot.renew.timer snap.certbot.renew.service
SSL 갱신이 잘 작동하는지 확인하기 위해 프로세스를 드라이 런합니다.
$ sudo certbot renew --dry-run
오류가 없으면 모든 준비가 완료된 것입니다. 인증서는 자동으로 갱신됩니다.
10단계 - Nginx 구성
/etc/nginx/conf.d/wikijs.conf 파일을 생성하고 편집을 위해 엽니다.
$ sudo nano /etc/nginx/conf.d/wikijs.conf
다음 코드를 붙여넣습니다.
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name wiki.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name wiki.example.com;
root /var/www/wikijs;
access_log /var/log/nginx/wiki.access.log;
error_log /var/log/nginx/wiki.error.log;
http2_push_preload on; # Enable HTTP/2 Server Push
ssl_certificate /etc/letsencrypt/live/wiki.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wiki.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/wiki.example.com/chain.pem;
ssl_session_timeout 1d;
# Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
ssl_protocols TLSv1.2 TLSv1.3;
# Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
# prevent replay attacks.
#
# @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
ssl_early_data on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
add_header X-Early-Data $tls1_3_early_data;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:3000;
}
}
# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
"~." $ssl_early_data;
default "";
}
위 파일에서 루트 위치를 서버의 디렉토리로 바꿉니다.
파일을 저장하려면 Ctrl + X를 누르고 프롬프트가 표시되면 Y를 입력합니다.
/etc/nginx/nginx.conf 파일을 편집하기 위해 엽니다.
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf; 줄 앞에 다음 줄을 추가합니다.
server_names_hash_bucket_size 64;
파일을 저장하려면 Ctrl + X를 누르고 프롬프트가 표시되면 Y를 입력합니다.
Nginx 구성을 확인합니다.
$ sudo nginx -t
오류가 없으면 준비가 완료된 것입니다.
Wiki.js 서비스를 시작합니다.
$ sudo systemctl start wikijs
Nginx 서버를 다시 로드합니다.
$ sudo systemctl reload nginx
11단계 - 설치 완료
URL https://wiki.example.com을 방문하여 설치를 완료합니다.

관리자 계정 세부정보와 URL을 입력합니다. Allow Telemetry 옵션의 체크를 해제하여 원격 측정을 비활성화합니다. 관리 패널에서도 비활성화할 수 있습니다. Install 버튼을 클릭하여 진행합니다.
로그인 페이지로 이동합니다.

계정 세부정보를 입력하고 Log in 버튼을 클릭하여 관리 페이지로 진행합니다.

이제 Wiki.js를 사용하기 시작할 수 있습니다.
결론
이 튜토리얼은 우분투 22.04 서버에 Wiki.js를 설치하는 방법을 배운 것으로 마칩니다. 질문이 있으면 아래 댓글에 남겨주세요.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.