설치 가이드 · 8 min read · Oct 14, 2025
Rocky Linux 9에 Wiki.js 설치하는 방법

Wiki.js는 오픈 소스의 경량 위키 소프트웨어입니다. Node.js 자바스크립트 프레임워크를 기반으로 구축되었습니다. 개발자를 위한 Markdown 편집기와 비기술 사용자를 위한 WYSIWYG 편집기를 사용하여 문서, 위키 및 웹 콘텐츠를 작성하는 데 사용할 수 있습니다. UML 다이어그램, Tex 또는 MathML 구문을 사용하는 수학 표현식 및 코드 등 여러 콘텐츠 유형을 지원합니다. 분석, 인증, 로깅, 타사 검색 엔진 및 콘텐츠를 동기화할 여러 저장 서비스 등 다양한 기능을 위한 여러 모듈이 포함되어 있습니다.
이 튜토리얼에서는 PostgreSQL 데이터베이스와 Nginx 서버를 사용하여 Rocky Linux 9 서버에 Wiki.js를 설치하는 방법을 배웁니다.
전제 조건
- Rocky Linux 9에서 실행되는 서버.
- sudo 권한이 있는 비루트 사용자.
- 서버를 가리키는 완전한 도메인 이름(FQDN). 우리의 목적을 위해
wiki.example.com을 도메인 이름으로 사용합니다. - 모든 것이 업데이트되었는지 확인합니다.
$ sudo dnf update - 기본 유틸리티 패키지를 설치합니다. 일부는 이미 설치되어 있을 수 있습니다.
$ sudo dnf install wget curl nano unzip yum-utils -y
1단계 - 방화벽 구성
첫 번째 단계는 방화벽을 구성하는 것입니다. Rocky Linux는 Firewalld 방화벽을 사용합니다. 방화벽의 상태를 확인합니다.
$ sudo firewall-cmd --state
running
방화벽은 서로 다른 영역과 함께 작동하며, 공용 영역이 우리가 사용할 기본 영역입니다. 방화벽에서 활성화된 모든 서비스와 포트를 나열합니다.
$ sudo firewall-cmd --permanent --list-services
다음과 같은 출력이 표시되어야 합니다.
cockpit dhcpv6-client ssh
Wiki.js는 작동하기 위해 HTTP 및 HTTPS 포트가 필요합니다. 이를 열어줍니다.
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent
변경 사항을 적용하기 위해 방화벽을 다시 로드합니다.
$ sudo firewall-cmd --reload
2단계 - PostgreSQL 및 유틸리티 설치
Rocky Linux 9는 이전 버전의 PostgreSQL을 제공합니다. 튜토리얼을 위해 Postgres 14를 설치합니다.
PostgreSQL용 리포지토리 RPM을 설치합니다.
$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
PostgreSQL 14 서버를 설치합니다.
$ sudo dnf install -y postgresql14-server postgresql14-contrib
데이터베이스를 초기화합니다.
$ sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
PostgreSQL 서비스를 활성화하고 시작합니다.
$ sudo systemctl enable postgresql-14 --now
서비스의 상태를 확인합니다.
$ sudo systemctl status postgresql-14
? postgresql-14.service - PostgreSQL 14 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-14.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2022-10-22 09:52:41 UTC; 2s ago
Docs: https://www.postgresql.org/docs/14/static/
Process: 103857 ExecStartPre=/usr/pgsql-14/bin/postgresql-14-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 103862 (postmaster)
Tasks: 8 (limit: 5915)
Memory: 16.6M
CPU: 61ms
CGroup: /system.slice/postgresql-14.service
??103862 /usr/pgsql-14/bin/postmaster -D /var/lib/pgsql/14/data/
??103863 "postgres: logger "
??103865 "postgres: checkpointer "
??103866 "postgres: background writer "
??103867 "postgres: walwriter "
??103868 "postgres: autovacuum launcher "
??103869 "postgres: stats collector "
??103870 "postgres: logical replication launcher "
Oct 22 09:52:41 wiki.example.com systemd[1]: Starting PostgreSQL 14 database server...
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://rpm.nodesource.com/setup_16.x | sudo bash -
Node를 설치합니다.
$ sudo dnf 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
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
성공적인 설치를 확인하는 유사한 출력을 받게 됩니다.
2022-10-22T10:25:48.187Z [MASTER] info: =======================================
2022-10-22T10:25:48.190Z [MASTER] info: = Wiki.js 2.5.289 ======================
2022-10-22T10:25:48.191Z [MASTER] info: =======================================
2022-10-22T10:25:48.191Z [MASTER] info: Initializing...
2022-10-22T10:25:49.079Z [MASTER] info: Using database driver pg for postgres [ OK ]
2022-10-22T10:25:49.086Z [MASTER] info: Connecting to database...
2022-10-22T10:25:49.117Z [MASTER] info: Database Connection Successful [ OK ]
2022-10-22T10:25:49.467Z [MASTER] warn: DB Configuration is empty or incomplete. Switching to Setup mode...
2022-10-22T10:25:49.468Z [MASTER] info: Starting setup wizard...
2022-10-22T10:25:49.740Z [MASTER] info: Starting HTTP server on port 3000...
2022-10-22T10:25:49.741Z [MASTER] info: HTTP Server on port: [ 3000 ]
2022-10-22T10:25:49.745Z [MASTER] info: HTTP Server: [ RUNNING ]
2022-10-22T10:25:49.745Z [MASTER] info: .......................................
2022-10-22T10:25:49.745Z [MASTER] info:
2022-10-22T10:25:49.746Z [MASTER] info: Browse to http://YOUR-SERVER-IP:3000/ to complete setup!
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 설치
Rocky Linux는 이전 버전의 Nginx를 제공합니다. 최신 버전을 설치하기 위해 공식 Nginx 리포지토리를 다운로드해야 합니다.
공식 Nginx 리포지토리를 생성하기 위해 /etc/yum.repos.d/nginx.repo 파일을 생성하고 엽니다.
$ sudo nano /etc/yum.repos.d/nginx.repo
다음 코드를 붙여넣습니다.
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
파일을 저장하려면 Ctrl + X를 누르고 프롬프트가 나타나면 Y를 입력합니다.
Nginx 서버를 설치합니다.
$ sudo dnf install nginx -y
설치를 확인합니다.
$ nginx -v
nginx version: nginx/1.22.1
Nginx 서버를 활성화하고 시작합니다.
$ sudo systemctl enable nginx --now
서버의 상태를 확인합니다.
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2022-10-22 11:15:39 UTC; 49min ago
Docs: http://nginx.org/en/docs/
Process: 116236 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 116237 (nginx)
Tasks: 2 (limit: 5915)
Memory: 5.0M
CPU: 245ms
CGroup: /system.slice/nginx.service
??116237 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??116238 "nginx: worker process"
Oct 22 11:15:39 wiki.example.com systemd[1]: Starting nginx - high performance web server...
9단계 - SSL 설치
SSL 인증서를 발급하기 위해 Snapd 도구를 사용하는 Certbot 도구를 사용할 것입니다. 작동하기 위해 EPEL 리포지토리가 필요합니다.
$ sudo dnf install epel-release
Certbot을 설치하기 위해 Snapd를 사용할 것입니다. Snapd를 설치합니다.
$ sudo dnf install snapd
Snap 서비스를 활성화하고 시작합니다.
$ sudo systemctl enable snapd.socket --now
Snapd가 작동할 수 있도록 필요한 링크를 생성합니다.
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
핵심 Snapd 리포지토리를 설치합니다.
$ sudo snap install core
$ sudo snap refresh core
Certbot을 설치합니다.
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
인증서를 생성합니다. 다음 명령은 Nginx를 자동으로 구성합니다.
$ 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
SSL 갱신이 잘 작동하는지 확인하기 위해 프로세스를 드라이 런합니다.
$ sudo certbot renew --dry-run
오류가 없으면 모든 준비가 완료된 것입니다. 인증서는 자동으로 갱신됩니다.
10단계 - SELinux 구성
Wiki.js 디렉토리에 올바른 SELinux 컨텍스트를 적용하기 위해 다음 명령을 실행합니다.
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/wikijs(/.*)?"
$ sudo restorecon -Rv /var/www/wikijs
HTTP를 위한 포트를 생성하고 3000에 할당하여 Wiki.js가 SELinux와 함께 작동하도록 합니다.
$ sudo semanage port -a -t http_port_t -p tcp 3000
Nginx가 네트워크에 연결할 수 있도록 허용합니다.
$ sudo setsebool -P httpd_can_network_connect 1
11단계 - 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
12단계 - 설치 완료
URL https://wiki.example.com을 방문하여 설치를 완료합니다.

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

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

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