1. Dokuwiki
https://www.dokuwiki.org/dokuwiki
dokuwiki [DokuWiki]
www.dokuwiki.org

wiki는 다수의 사용자가 편집 가능한 문서 저장 플랫폼들을 총칭하는 말입니다. Mediawiki, dokuwiki, Guru 등등이 있지만 저는 dokuwiki를 설치해 볼 겁니다. 일반적으로 많은 접속자와 많은 문서양을 감당하기 위해서 SQL을 사용하여 플랫폼을 만듭니다. 하지만 dokuwiki는 SQL 없이 작동합니다. 덕분에 설정이 좀 더 쉽습니다. DB를 사용하지 않는 만큼 대용량서비스에는 적합하지 않습니다. 소규모 혹은 개인이 활용하기 좋은 플랫폼입니다.
2. AWS Lightsail
https://aws.amazon.com/ko/lightsail/
가상 프라이빗 서버 및 웹 호스팅–Amazon Lightsail—Amazon Web Services
Amazon Lightsail은 사용하기 쉬운 가상 프라이빗 서버(VPS) 인스턴스, 컨테이너, 스토리지, 데이터베이스 등을 비용 효율적인 월별 가격으로 제공합니다.
aws.amazon.com
Lightsail은 가상 클라우드 서비스의 1인자 AWS에서 만든 저가형 가상 클라우드 서버입니다. 가장 보편적인 EC2에 비해서 기능이 조금 생략되었지만 가격이 저렴합니다. 저렴한 가격이지만 EC2는 필요한 시간에만 가동할 수 있다면 Lightsail은 24시간 기준으로 책정하기 때문에 특정 시간대에만 사용한다면 추천하지 않습니다. wiki특성상 24시간 가동하기 때문에 lightsail을 골랐습니다.
2.1 (번외) dokuwiki를 EC2에서 만들기
EC2로 만드는 것이 더 간편합니다. lightsail과는 다르게 EC2는 모든 것이 설치 완료된 AMI를 제공하기 때문에 콘솔 로그인 없이도 만들 수 있습니다. 기본 설정을 본인이 하지 않기 때문에 추후 관리가 어려울 수도 있고 migration절차가 조금 더 복잡할 수도 있습니다. EC2로 간편하게 dokuwiki 서버 만드는 과정은 다른 포스트로 올리겠습니다.
3. 준비
AWS 계정 혹은 linux 시스템(ubuntu), ssh 연결이 가능한 컴퓨터만 있으면 됩니다.
본문은 AWS 클라우드를 기준으로 설명하고 있지만 아무 linux 시스템에서나 가능합니다. debian기반이면 아마 다 될 것으로 예상됩니다. ARM기반 서버도 될 것 같지만 잘 모르겠네요. 라즈베리파이에서 debian 다운받으면 가능할 것 같은데 보장은 못합니다.
4. Lightsail에서 가상 서버 만들기.


AWS 콘솔에 접속한 뒤 Lightsail을 들어가 줍니다.

Create Instance를 눌러 인스턴스를 생성할 수 있습니다. Linux 중에 Ubuntu를 선택합니다. Debian도 아마 비슷하게 작동하지 싶은데 일단은 사용자가 많아서 오류가 생겼을 때 찾아보기 편한 Ubuntu를 추천합니다.

다음으로는 서버의 vCPU와 메모리를 선택해야 합니다.
dokuwiki의 경우 문서만 배포하기 때문에 가장 저렴한 서버를 골라도 됩니다. $5짜리를 골라줍니다. vCPU와 메모리가 동일한 EC2 t3.nano에서도 dokuwiki를 구동해보았는데 웹페이지 작동은 문제 없었습니다. 가끔 ssh연결이 끊기고, 업데이트, 플러그인 설치 등이 느리다는 점 외에는 문제 없습니다.
외부 접속이 가능하도록 IPv4를 사용하려면 Dual-stack을 골라야 합니다. 손쉬운 접속이 불가능하면 web서버의 정체성이 없어져버리므로 Dual-stack을 고릅시다.
5. 접속
손쉽게 AWS에서 자체적으로 제공하는 콘솔을 사용해서 접속해 봅시다. putty를 활용한 ssh접속은 다른 글에 올리겠습니다.
우측 상단의 콘솔 표시를 누르거나 세로로 있는 점을 눌러서 Connect를 누르면 손쉽게 접속할 수 있습니다. 참고로 22번 포트가 아니기 때문에 22번포트 접속이 막혀있는 망(e.g. 사지방)에서도 접속 가능합니다.
6. 방화벽 설정


Lightsail에서의 방화벽 설정은 쉽습니다.. manage를 누른 후에 Networking을 들어가면 바로 있습니다. 웹 서버이므로 http tcp 80을 설정하면 끝 입니다. 기본설정으로 80이 되어 있을 텐데 만약에 없으면 add rule을 눌러서 추가하면 됩니다.
7. docker 와 NGINX 설정
https://docs.docker.com/engine/install/ubuntu/
버전을 좀 낮춰서 해야하기 때문에 docker을 사용하는 것을 추천합니다.
docker설치는 다음과 같이 할 수 있습니다. apt-get 한 줄로 설치가 되면 참 좋겠지만 안 되네요.
아래와 동일하게 하면 문제가 없을 것 같은데 혹시 변경사항이 있다면 공식 홈페이지를 참고하시기 바랍니다.
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker 설치가 완료되었으면 프로젝트 폴더를 하나 만들고 컴포즈파일 하나를 작성합니다.
해당 파일은 docker가 컨테이너를 만들 때에 사용하는 파일입니다.
sudo mkdir /project
sudo vim /project/compose.yml
compose.yml
services:
nginx:
image: nginx:latest
container_name: nginx-server
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./dokuwiki:/dokuwiki
depends_on:
- php
php:
image: php:7.4-fpm
container_name: php-fpm
volumes:
- ./dokuwiki:/dokuwiki
25년2월 기준으로 php8.0 혹은 그 이상과 dokuwiki의 호환성 문제가 있으므로 php7.4버전으로 설치해야 합니다. 8.0부터는 경고문 혹은 오류문이 자꾸 뜹니다.
NGINX configuration파일도 만들어 줍니다.
sudo vim /project/nginx.conf
server {
listen 80;
server_name localhost;
root /dokuwiki;
index doku.php;
# index index.php index.html index.html;
location ~ /(\.ht|\.git|\.hg|\.svn|\.vs|data|conf|bin|inc|vendor|composer.json|composer.lock)/ {
deny all;
}
location ~ ^/data/ {
internal;
}
location / {
try_files $uri @dokuwiki;
}
location @dokuwiki {
rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
rewrite ^/(.*) /doku.php?id=$1&$args last;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /dokuwiki$fastcgi_script_name;
}
}
8. Dokuwiki 다운로드
https://download.dokuwiki.org/
Download DokuWiki
Here you can download the latest DokuWiki-Version. Either just click "Download" or customize the download to your likings with the options below. DokuWiki is available free of charge under the GNU General Public License Version 2. Start Download
download.dokuwiki.org
위의 웹페이지에서 다운로드 링크를 복사해 둡시다. 일단 다운로드를 누른 후에 크롬 탭의 다운로드(ctrl+J)를 눌러서 링크를 확인 할 수 있습니다. 해당 링크를 wget으로 받아오면 됩니다.
wget https://download.dokuwiki.org/out/dokuwiki-a6b3119b5d16cfdee29a855275c5759f.tgz
폴더 하나를 미리 생성한 뒤 압축을 풀면 됩니다.
sudo tar -xf dokuwiki-a6b3119b5d16cfdee29a855275c5759f.tgz -C /project/
9. 권한 설정
sudo chown -R www-data:www-data /project/dokuwiki/
sudo chmod 755 /project/dokuwiki
nginx가 사용하는 유저, 그룹에 권한을 넘기고 실행가능하도록 합니다.
10. 실행

cd /project
sudo docker compose up -d
#잠깐 기다리고 실행한다.
sudo docker start nginx-server php-fpm

#강제 종료
sudo docker rm -f nginx-server php-fpm
#잘 안되는 경우 혹여나 80포트를 다른 서비스가 사용하고 있는지 확인한다.
#apache2가 사용하는 경우 작동하지 않는다.
sudo lsof -i -P -n | grep LISTEN
11. 웹페이지 접속
다시 aws웹 페이지로 돌아와서 IP주소를 확인합니다.

IP 주소를 확인하였으면
본인 ip주소에 install.php를 붙여서 접속하면 끝 입니다.
예시 : http://41.202.204.111/install.php
여기서 부터는 콘솔이 아니라 브라우저로 수정 가능합니다.
웹페이지를 다 만들었으면 관리자로 로그인 한 후에 플러그인을 설치할 수 있습니다.

MathJax plugin, Numbered Headins, Video Sharing Site Plugin, A toolbox for the toolbar 등등을 추천합니다.
가장 중요한 기능 중 하나인 ACL(Access Control List)를 통해서 유저별로 다른 권한을 부여할 수 있습니다. 만약에 관리 페이지에서 ACL Management가 보이지 않는다면 설정에서 ACL을 켜야합니다.
12. 끝
PROFIT!