seafile
seafile은 파이썬을 기반으로 제작된 NAS 소프트웨어이다. 해당 포스트에서는 Docker를 통해 Seafile을 호스팅 해볼 것이다.
설치 환경
- CentOS 8
- Docker-Compose V2.23.0
- Docker
사전 준비
1. 디렉토리 생성
구축 전 필요한 디렉토리 생성
mkdir -p /home/${USER}/data/seafile/app
touch /home/${USER}/data/seafile/docker-compose.yaml
2. nginx 설치
Docker를 사용하더라도 인증서 및 기타 설정들의 경우 nginx를 사용하는게 훨씬 간편하기 때문에 nginx를 서버에 설치해보도록 하자.
nginx 설치
$ sudo apt-get install -y nginx
/etc/nginx/sites-available 경로에 seafile.conf 설정파일을 새로 만들자. server_name
과 client_max_body_size
만 설정해주면 된다.
$ vi /etc/nginx/sites-available/seafile.conf
server {
server_name 192.168.219.x; // 도메인이름 or ip
client_max_body_size 64G;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
심볼릭 링크로 nginx 설정 파일을 /etc/nginx/sites-enabled에 만들어주자.
$ ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/
nginx 서비스 재시작
$ systemctl restart nginx
seafile 설치
위에서 생성한 docker-compose.yaml 파일에 아래 내용 붙여넣기
version: "3.8"
services:
db:
image: mariadb
container_name: seafile-mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_LOG_CONSOLE=true
volumes:
- type: volume
source: "mariadb"
target: "/var/lib/mysql"
networks:
- "seafile-net"
memcached:
image: memcached
container_name: seafile-memcached
restart: always
entrypoint: memcached -m 256
networks:
- "seafile-net"
seafile:
image: seafileltd/seafile-mc
container_name: seafile
restart: always
ports:
- "8080:80"
volumes:
- type: bind
source: "./app"
target: "/shared"
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=secret
- TIME_ZONE=Asia/Seoul
- SEAFILE_ADMIN_EMAIL=jaehyo@admin.com
- SEAFILE_ADMIN_PASSWORD=secret
- SEAFILE_SERVER_LETSENCRYPT=false
- SEAFILE_SERVER_HOSTNAME=192.168.121.149 # //서버 호스트네임(도메인)
depends_on:
- db
- memcached
networks:
- "seafile-net"
volumes:
mariadb: {}
networks:
seafile-net:
driver: bridge
external: false
실행하기
$ docker-compose up -d --build
컨테이너가 정상적으로 생성되었다면 http://<IP주소>:80
으로 접속해보자.