홈 서버

홈 서버(home server)는 홈 네트워킹이나 인터넷을 통해 가정 안팎의 기타 장치에 서비스를 제공하는, 가정에 위치한 컴퓨팅 서버를 의미한다. 이러한 서비스들은 파일 및 프린터 서비스, 미디어 센터 서비스, 웹 서비스(네트워크 또는 인터넷 상에서), 웹 캐시, 파일 공유 및 동기화, 캘린더 및 연락처 공유 / 동기화, 계정 인증 및 백업 서비스를 포함한다. 일반적인 홈 네트워크 상에서 상대적으로 컴퓨터 수가 적은 까닭에 홈 서버는 보통 상당한 연산 능력을 요하지 않는다. 홈 서버는 오래된 컴퓨터나 플러그 컴퓨터를 가지고 DIY(do-it-yourself) 스타일로 구현이 가능하다. 즉, 미리 구성된 상용 홈 서버 어플라이언스도 이용할 수 있다. 데이터 손상을 일으킬 수 있는 정전의 경우에 대비하여 무정전 전원 장치가 사용되기도 한다. 홈 서버는 헤드리스(headless)로 구동되기도 하며 셸을 통해 원격으로 관리되거나 RDP, VNC, Webmin, 애플 리모트 데스크톱 등의 원격 데스크톱 소프트웨어 시스템을 통해 그래픽적으로 관리될 수 있다. 일부 홈 서버 운영 체제(예: 윈도우 홈 서버)들은 홈 네트워크(그리고 원격 접속을 통한 인터넷을 경유하여) 상의 홈 컴퓨터에서 사용할 수 있는 설정과 구성을 위한 소비자 지향 그래픽 사용자 인터페이스(GUI)를 포함하고 있다. 그 밖의 운영 체제들은 구성을 위해 단순히 사용자들이 네이티브 운영 체제 도구를 사용할 수 있게 하고 있다. 홈 서버는 네트워크 결합 스토리지(NAS) 역할을 수행하기도 하므로 모든 사용자의 파일을 한 곳에 안전하게 저장할 수 있는 이점과 더불어 이 파일들에 유연한 권한을 적용할 수 있다. 이러한 파일들은 유효한 자격 정보가 제공되면 네트워크 상의 다른 시스템으로부터 쉽게 접근할 수 있다. 이는 공유 프린터에도 해당한다. 이러한 파일들은 원격 접속을 사용하여 세계 어느 곳에서나 인터넷을 경유하여 접근함으로써 공유가 가능하다. 삼바 제품군(또는 특정한 윈도우 서버 제품군 - 윈도우 홈 서버 제외)이 설치된 유닉스나 리눅스를 구동하는 서버들은 특정 버전의 윈도우 사용자들에게 도메인 제어, 사용자 지정 로그온 스크립트, 로밍 프로파일을 제공할 수 있다. 이를 통해 사용자가 도메인에 속한 임의의 장치에 로그온하여 자신의 "내 문서"와 개인화된 윈도우, 응용 프로그램 환경 설정에 접근할 수 있으며 - 가정 내 각 컴퓨터마다 여러 개의 계정이 필요하지 않다. 홈 서버들은 멀티미디어 콘텐츠를 서비스하기 위해 사용되기도 하며, 여기에는 가정 내 다른 장치들에 대한 사진, 음악, 동영상이 포함된다.(심지어는 인터넷에 대해서도 가능하다. 스페이스 시프팅, Tonido, Orb 참고). 아이튠즈 등의 사유 시스템이나 DLNA 등의 표준 프로토콜을 사용하여 사용자들은 가정 내의 어느 방으로부터 홈 서버에 저장된 미디어에 접근할 수 있다. 윈도우 XP 미디어 센터 에디션, 윈도우 비스타, 윈도우 7은 홈 서버 역할을 수행할 수 있으며 엑스박스 360을 포함한 미디어 센터 익스텐더에 상호작용 사용자 경험을 스트리밍하는 특정한 유형의 미디어 서비스를 지원한다. 윈도우 홈 서버는 내장된 윈도우 미디어 커넥트 기술을 통해 엑스박스 360과 기타 DNLA 기반 미디어 수신기에 미디어 스티리밍을 지원한다. HP와 같은 일부 윈도우 홈 서버 장치 제조업체들은 패킷비디오 TwonkyMedia 서버와 같은 완전한 DLNA 구현체를 통해 이 기능을 확장한다. 리눅스용으로 사용 가능한 미디어 서비스용 오픈 소스 및 프로그램이 다수 존재한다. LinuxMCE가 한 예로서, 다른 장치들이 서버 상의 하드 드라이브 이미지의 부팅을 시작할 수 있게 하고 셋톱박스와 같은 어플라이언스가 될 수 있게 한다. Asterisk, Xine, MythTV(다른 미디어 서비스 솔루션), VideoLAN, 슬림서버, DLNA 및 기타 수많은 오픈 소스 프로젝트들이 심리스한 홈 시어터/자동화/통화 경험을 위해 완전히 연동된다. 애플 매킨토시 서버에서는 아이튠즈, PS3 미디어 서버, Elgato 등의 옵션이 있다. 게다가 TV에 직접 연결되는 맥의 경우 Boxee가 완전한 기능의 미디어 센터 인터페이스 역할을 수행할 수 있다. 서버들은 일반적으로 항상 켜져 있으므로 TV나 라디오 튜너를 추가하면 언제든지 녹화/녹음을 스케줄링할 수 있다. 일부 홈 서버들은 미디어와 엔터테인먼트 콘텐츠에 대해 원격 접속을 제공한다. 홈 서버는 인터넷 상의 장치로부터 가정 안으로 원격 접근을 제공하기 위해 사용할 수 있으며, 이는 원격 데스크톱 소프트웨어와 기타 원격 관리 소프트웨어를 사용함으로써 이루어진다. 이를테면, 윈도우 홈 서버는 가정 내 PC의 웹 인터페이스 및 원격 데스크톱 세션에 대한 원격 접근을 통해 홈 서버에 저장된 파일로의 원격 접근을 제공한다. 이와 비슷하게 Tonido는 포트 포워딩이나 기타 설정 없이 인터넷으로부터 웹 브라우저를 통해 직접 접근할 수 있는 기능을 제공한다. 일부 열정가들은 VPN 기술들을 활용하기도 한다. 리눅스 서버에서 VNC와 Webmin, 이렇게 2가지가 유명한 도구이다. VNC는 클라이언트들이 서버 GUI 데스크톱을 원격으로 볼 수 있게 함으로써 마치 사용자가 물리적으로 서버 앞에 앉아있는 것처럼 만들어준다. 이를 위해 서버 콘솔에 GUI가 구동될 필요가 없다. 즉, 여러 개의 '가상' 데스크톱 환경을 한 번에 개방할 수 있다. Webmin은 사용자들이 단순 웹 인터페이스로부터 여러 측면의 서버 구성과 유지보수를 제어할 수 있게 한다. 이 둘 다 인터넷 어느 곳에서 접근할 수 있도록 구성이 가능하다. 서버들은 명령 줄 기반 텔넷과 SSH 프로토콜을 사용하여 원격으로 접근할 수도 있다. 일부 사용자들은 파일을 쉽고 공개적으로(또는 홈 네트워크 상에서 개인적으로) 공유하기 위해 웹 서버를 구동하기도 한다. 다른 사용자들은 웹 페이지를 설정하여 가정으로부터 직접 이들을 서비스하지만 이는 일부 ISP 서비스 조항에 위배된다. ISP의 포트 차단을 막기 위해 이러한 웹 서버들은 비표준 포트를 통해 구동되기도 한다. 홈 서버에 사용되는 대표적인 웹 서버로는 아파치와 IIS가 있다. 기타 수많은 웹 서버들을 이용할 수 있다. 경량 웹 서버 비교, 웹 서버 비교 문서를 참고할 것. 일부 네트워크들은 여러 사용자들이 동일한 웹사이트에 방문할 때 웹 접속의 속도를 빠르게 하기 위해 사용되거나 소유자가 특정 사이트를 차단할 수 있는 일부 기관의 네트워크를 이용하는 동안 차단 소프트웨어를 우회하기 위해 사용되는 프록시 서버를 갖추고 있다. 공개 프록시는 느리고 신뢰성이 없는 경우가 있으므로 자신만의 사설 프록시를 구축하는 것이 나을 수 있다. 일부 프록시들은 프록시 서버로 구축할 경우 로컬 네트워크의 웹사이트를 차단하도록 구성할 수 있다. 수많은 홈 서버들은 소유자의 도메인 이름을 위해 이메일을 관리하는 이메일 서버를 구동하기도 한다. 대부분의 상용 이메일 서비스 대비 매우 큰 편지 사서함과 최대 메시지 크기를 가질 수 있다는 장점이 있다. 외부 서비스를 이용하는 것보다 로컬 네트워크의 서버에 접근하는 편이 훨씬 더 빠르다. 이는 또한 이메일이 외부 사이트 서버에 상주하지 않으므로 보안이 강화되기도 한다. 홈 서버는 일부 토렌트가 완료까지 수일 소요되거나 심지어 수주가 소요될 수 있고 방해받지 않은 연결에서 더 나은 성능을 수행하는 까닭에 파일의 다운로드, 시드 제공을 위해 비트토렌트 프로토콜을 활용하는 것이 이상적이다. rTorrent 등의 수많은 텍스트 기반 클라이언트, 또 동일 목적을 위해 사용 가능한 TorrentFlux, Tonido 등의 웹 기반 클라이언트가 있다. 흔히 쓰이지 않는 서비스로 고퍼가 있으며 이는 1990년대 초에 대중적이었고 월드 와이드 웹을 앞섰던 하이퍼텍스트 문서 검색 프로토콜이었다. 현재도 남아있는 고퍼 서버의 다수가 PyGopherd 및 Bucktooth 고퍼 서버를 사용하는 홈 서버에서 구동된다. 가정 자동화는 일주일 24시간 내내 사용 가능한 가정의 장치가 필요하다. 이러한 가정 자동화 컨트롤러는 홈 서버에서 구동되기도 한다. 상대적으로 저비용인 CCTV DVR 솔루션들은 보안 목적을 위해 홈 서버에 비디오 카메라의 녹화를 허용할 수 있다. 동영상은 이때 가정 내 PC나 기타 장치를 통해 볼 수 있다. 일련의 저렴한 USB 기반의 웹캠을 홈 서버에 연결할 수 있다. 선택적으로 이러한 이미지들과 비디오 스트림들은 표준 프로토콜을 사용하여 인터넷을 통해 시청할 수 있다. 홈 서버는 가족 지향 애플리케이션에 호스팅할 목적으로 사용할 수 있으며, 여기에는 가족 캘린더, 할 일 목록, 게시판 등이 포함된다. 서버가 언제나 켜져 있기 때문에 서버 위에 구동되는 IRC 클라이언트나 IM 클라이언트는 인터넷에 고가용적으로 연결된다. 이렇듯 채팅 클라이언트는 사용자가 컴퓨터에 머물지 않는 동안(잠을 자거나 일을 하거나 학교에 있는 등) 발생되는 활동을 기록할 수 있다. 이를테면 Irssi와 tmsnc 등의 텍스트 기반 클라이언트들의 분리(detach)가 가능하며 xmove를 사용하여 피진 등의 그래픽 클라이언트의 분리가 가능하다. Quassel은 이러한 종류의 이용을 위해 특정한 버전을 제공한다. 홈 서버는 또한 개인용 XMPP 서버와 IRC 서버 구동을 위해 사용할 수도 있으며 이러한 프로토콜들은 매우 적은 대역으로 많은 수의 사용자들을 지원할 수 있다. 컨티늄, Tremulous, 마인크래프트, 둠 등의 일부 멀티플레이어 게임들은 서버 소프트웨어를 제공하고 있으므로 사용자들이 이를 다운로드하여 자신만의 사설 게임 서버를 구동하기 위해 사용할 수 있다. 이러한 서버들 중 일부는 비밀번호로 보호되어 있으므로 클랜 멤버나 화이트리스트에 등재된 플레이어 등 선별된 그룹의 인원들만 서버에 대한 접근 권한이 있다. 그 밖의 경우에는 일반에 공개되어 있다. 홈 서버는 디아스포라*, GNU 소셜과 같은 분산 연합형 소셜 네트워크를 호스팅하기 위해 사용할 수 있다. 액티비티펍과 같은 연합형 프로토콜들은 수많은 소형 홈 서버들이 의미있는 방식으로 소통할 수 있게 하며 전통적인 대형 네트워크의 느낌을 제공한다. 연합 형태는 단지 소셜 네트워크에만 국한되지 않는다. 다수의 획기적이고 새로운 자유 소프트웨어 웹 서비스들이 개발되고 있으므로 사람들이 자신만의 동영상, 사진, 블로그 등을 호스팅하고 더 큰 연합형 네트워크에 참여할 수 있다. 홈 서버들은 시간이 지남에 따라 서드 파티 제품을 빌드, 추가할 수 있는 플랫폼이기도 하다. 이를테면, 윈도우 홈 서버는 소프트웨어 개발 키트를 제공한다. 이와 비슷하게, Tonido는 자신들의 SDK를 사용하여 새로운 애플리케이션을 작성함으로써 확장 가능한 애플리케이션 플랫폼을 제공한다. 홈 서버들은 각기 다른 수많은 운영 체제를 실행할 수 있다. 자신만의 홈 서버를 빌드하는 열정가들은 자신들에게 친숙하거나 편리한 운영 체제라면 뭐든지 사용할 수 있으며, 이를테면 마이크로소프트 윈도우, macOS, 리눅스, 솔라리스, BSD, 플랜 9 등이 있다. 단일 보드 컴퓨터가 점차 홈 서버 지원에 사용되고 있으며 그 중 다수는 ARM 장치들이다. 오래된 데스크톱과 노트북 컴퓨터들 또한 홈 서버로 목적을 바꾸어 사용할 수 있다. 휴대 전화들은 일반적으로 ARM 기반 단일 보드 컴퓨터로서 강력하다. 휴대 전화가 리눅스 운영 체제를 실행할 경우 셀프 호스팅을 휴대 전화로 옮김으로써 각 사용자의 데이터와 장치들은 자신들의 휴대전화로부터 서비스를 받을 수 있다. 서버 NAS (네트워크 결합 스토리지) 파일 서버 프린트 서버 미디어 서버 BSD 다양한 리눅스 배포판 - 다음 배포판들은 홈 서버용으로 특화되어 개발되었다: FreedomBox, UBOS Linux MacOS 서버 솔라리스 윈도우 홈 서버 및 기타 종류의 마이크로소프트 윈도우 플랜 9 (운영 체제) HP 미디어스마트 서버 클라이언트 서버 모델 DDNS 파일 서버 홈 네트워킹 네트워크 결합 스토리지 (NAS) 상주형 게이트웨이(Residential gateway) 프런트로 - Mac OS X LinuxMCE MythTV 플렉스 미디어 서버 코디 웹 서버 비교 메일 서버 목록 FTP 서버 소프트웨어 목록 삼바 (소프트웨어) RealVNC Tonido 아파치(Apache) DOCSIS G.hn HomePNA 전력선 통신, 홈플러그 파워라인 얼라이언스 VDSL, VDSL2 무선랜, IEEE 802.11 http://msdn.microsoft.com/en-us/library/bb425866.aspx