안녕하세요. 달소입니다.
이번글은 앞서 NAS에 대한 소개를 간단하게 진행할때 말씀드린 Seafile에 대한 글입니다!
Seafile은 파이썬을 기반으로하는 NAS SW로써 소개는 나무위키에 잘나와있어서 대체합니다 ㅎㅎ
여기서는 Docker를 통해 Seafile을 직접 구축해보도록 하겠습니다.
도커로 구축하니만큼 홈서버 뿐만아니라 클라우드,라즈베리파이등 어디서든 구축이 가능합니다 ㅎㅎ
Seafile Ltd. 사에서 만드는 설치형 클라우드 스토리지이다. 커뮤니티 버전(개인용), 전문가용(엔터프라이즈 서비스용)으로 나뉘어져 있으며 커뮤니티버전은 공개되어 있어 무료로 이용할 수 있다.
위의 두 서비스와 다르게 PHP + SQL 조합이 아닌 C binary + Python 조합으로 움직인다.Pydio가 더 python으로 움직일 거 같지만 아니다 코어부분이 C 바이너리다보니 OwnCloud보다 가볍다. 동일한 하드웨어에 설치해보면 Seafile쪽이 속도가 더 잘 나온다. 덕분에 라즈베리파이 같이 컴퓨팅능력이 작은 녀석들로 클라우드 시스템을 만들 수 있다. 코어를 제외한 대부분의 UI가 Python으로 만들어져 있다. 코드가 오픈되어 있으므로 이쪽에 관심이 있다면 코드를 보면서 공부하는 것도 좋다.
인터페이스는 화려하지 않고 심플한 편이어서 예쁜 것을 원한다면 pydio나 OwnCloud가 낫다.
클라이언트 – 서버 통신간 암호화를 지원하며[12], 관리자가 유저의 파일을 볼 수 없게끔 만들어놔,[13] 보안을 중요시하는 사람이면 관심을 가질만 하다.
클라이언트 – 서버통신이 기본이지만, WebDAP을 제공하기 때문에 웹브라우저로 접근이 가능하다.
버전관리가 용이하다는 장점이 있다. 버전별로 폴더를 구성하여 설치할 수 있어 문제가 생겼을 경우 파일을 건드리지 않고 시스템만 롤백하기 쉽다.
전문가판 한정으로 웹에서 문서편집이 가능하다.[14]
홈페이지에서 언급하는 Seafile의 특징은 다음과 같다.
커뮤니티버전과 전문가판 공통 : 다중 플랫폼 파일 동기화, 공개 링크 공유 (업로드 및 다운로드), 클라이언트 측 암호화, 폴더 단위 액세스 제어, 버전 관리, AD / LDAP 인증
전문가판 추가기능 : 파일 잠금[15], 전체 텍스트 검색[16], MS 오피스 문서 미리보기 및 오피스 웹 앱 통합, 이중 인증, 활동 로깅, 분산 스토리지, 바이러스 백신 통합
사전준비 및 환경
구축환경은 Ubuntu 20.04 LTS + Docker + docker-compose 환경입니다.
nginx 설치하기
기본적으로 Docker를 이용하더라도 인증서 및 기타 설정들의 경우 nginx를 이용하는게 편하기때문에 nginx를 먼저 이용하겠습니다.
apt install nginx로 간단하게 설치가 가능하며 seafile용 셋팅파일 생성 후 적용하겠습니다.
vi /etc/nginx/sites-available/seafile.conf
서버네임과 client_max_body_size만 수정해주시면 됩니다. 저는 64기가로..ㅋㅋ(업로드용량)
server {
server_name 192.168.1.60; // 도메인이름 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 설치파일을 활성화 시켜주고 reload 시켜주세요.
ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/
이제 사전준비는 완료되었으니 도커로 Seafile 컨테이너를 구축하겠습니다.
Docker로 구축하기
먼저 seafile 디렉터리를 만들어주고 docker-compose.yml 을 생성해주겠습니다.
아래 설정에서 필요한 부분만 변경해주시면됩니다.
version: ‘2.0’
services:
db:
image: mariadb
container_name: seafile-mysql
environment:
– MYSQL_ROOT_PASSWORD=password
– MYSQL_LOG_CONSOLE=true
volumes:
– ./data/mariadb:/var/lib/mysql
networks:
– seafile-net
memcached:
image: memcached
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
– seafile-net
seafile:
image: seafileltd/seafile-mc
container_name: seafile
ports:
– “8080:80”
volumes:
– ./data/app:/shared
environment:
– DB_HOST=db
– DB_ROOT_PASSWD=password
– TIME_ZONE=Asia/Seoul
– SEAFILE_ADMIN_EMAIL=dalso@svrforum.com
– SEAFILE_ADMIN_PASSWORD=password
– SEAFILE_SERVER_LETSENCRYPT=false
– SEAFILE_SERVER_HOSTNAME=192.168.1.60 //서버 호스트네임(도메인)
depends_on:
– db
– memcached
networks:
– seafile-net
networks:
seafile-net:
이제 docker-compose up -d 명령어로 컨테이너를 생성해주면 됩니다.
nginx에 proxy pass를 적용해줬으니 ip로만 접근해주시면됩니다.
파일도 잘 올라갑니다.
여기서 네트워크 오류가 나는 경우는 서버의 hostname 이 잘못들어가는 경우고
파일이 안올라가면 용량제한이 걸렸을수도있으니 가벼운 파일먼저 올려보세요.
공유는 아래처럼 링크공유로도 손쉽게 가능합니다.
[Reference] : 달소, 「서버포럼 – Docker로 오픈소스 NAS Seafile 구축하기.」 https://svrforum.com/?document_srl=109356&mid=nas&act=dispBoardContent.