Profile picture

[Docker] 오픈소스 웹 기반 파일 공유 서비스 - seafile

JaehyoJJAng2023년 05월 04일

seafile

seafile은 파이썬을 기반으로 제작된 NAS 소프트웨어이다. 해당 포스트에서는 Docker를 통해 Seafile을 호스팅 해볼 것이다.
image
image


설치 환경

  • 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_nameclient_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으로 접속해보자.
image


Loading script...