You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 28 Next »

새 문서 공간에 오신 것을 환영합니다!

우리는 알게 모르게 인터넷에서 수많은 서비스들을 무료로 혹은 유료로 사용하고 있습니다.

그러한 서비스를 개인이 소유하고 운영할수 있는 저예산 저비용운영에 포커스를 두고

살아가는데 몰라도되는, 구글에 검색하면 나오는 그러한 지식들을 카테고리화 해서 정리중에 있습니다.

개인서버 구축과정중 잘작동되는 기준의 내용만(가급적 오픈진영) 작동검증하여 정리예정입니다.


구축 예상도

-리눅스는 일반적으로 무료입니다. 하지만 윈도우도 UI를 빼서 리눅스처럼 사용하는 Windows HyperServer 공짜입니다.

HyperVM아래에 구동해야 공짜인지 라이센스정책을 잘 모르겠지만, 어쨋든 MS에 공식으로 다운받고

리눅스 하위에 구동을 해도 라이센스 개념이 없어서 묻지도 따지지도 않고 서버기능을 사용할수 있습니다.

비교적 무거운 지라윈도우버젼을 이곳에 잘 구동시키는중이며 마우스 신공 대신, 파워쉘 능력이 요구됩니다. 

가상 OS 구축화면 in 우분투

메인 OS를 우분투로 선택한이유?  하위 가상 OS는 모두 UI없는 콘솔형 서버이지만 이것저것 셋팅할께 많은

메인 OS는 윈도우처럼 사용하되 무료이고, 윈도우보다는 가벼운 우분투를 선택하였습니다. 마우스신공은

리눅스에서도 계속 됩니다. VirtualBox를 선택한것도 마우스질로 홈서버 가상화 구축 하기에 충분합니다.


클라우드 서비스 가격

 클라우드 서버기준 가장 싼 녀석(https://www.vultr.com/

서버를 직접고를수도 있고, ISO를 통해 직접설치도 가능 (해적 OS설치가가능)

하지만 우린,  8테라 이상의 하드를 도킹하고 16기가의 메모리를 붙이기위해 직접 설치를 할것입니다.


도메인 구축계획

라우터 경로


서브도메인을 위한 haproxy 셋팅

 이것이 필요한 이유는, 도메인을 하나 할당받고( 유료일것입니다.)

우리의 Home아이피는 가장싼 유동 아이피 인터넷일것이며

오로지 80번 포트만으로 여러가지 서브도메인을 DNS서버없이

우리가 설치한 다양한 포트에 연결할것입니다.


이러한 설정으로 다음과 같이 지라 4총사가 구축되었습니다.


Hproxy 설치

  • haproxy 설치설명달것




/etc/haproxy.cfg
global
	log /dev/log	local0
	log /dev/log	local1 notice
	chroot /var/lib/haproxy
	stats socket /run/haproxy/admin.sock mode 660 level admin
	stats timeout 30s
	user haproxy
	group haproxy
	daemon

	# Default SSL material locations
	ca-base /etc/ssl/certs
	crt-base /etc/ssl/private

	# Default ciphers to use on SSL-enabled listening sockets.
	# For more information, see ciphers(1SSL). This list is from:
	#  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
	ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
	ssl-default-bind-options no-sslv3

defaults
	log	global
	mode	http
	option	httplog
	option	dontlognull
	option http-server-close
	retries                 3
	timeout http-request    10s
	timeout queue           1m
	timeout connect         10s
	timeout client          1m
	timeout server          1m
	timeout http-keep-alive 10s
	timeout check           10s
	maxconn                 3000
	errorfile 400 /etc/haproxy/errors/400.http
	errorfile 403 /etc/haproxy/errors/403.http
	errorfile 408 /etc/haproxy/errors/408.http
	errorfile 500 /etc/haproxy/errors/500.http
	errorfile 502 /etc/haproxy/errors/502.http
	errorfile 503 /etc/haproxy/errors/503.http
	errorfile 504 /etc/haproxy/errors/504.http

frontend http
bind *:80

acl host_jira hdr(host) -i jira.webnori.com
acl host_wiki hdr(host) -i wiki.webnori.com
acl host_media hdr(host) -i media.webnori.com
acl host_git hdr(host) -i git.webnori.com
acl host_bam hdr(host) -i bam.webnori.com
acl host_home hdr(host) -i webnori.com

acl is_root path -i /
acl is_domain hdr(host) -i webnori.com


use_backend jiraapp    if host_jira
use_backend wikiapp    if host_wiki
use_backend mediaapp    if host_media
use_backend gitapp	if host_git
use_backend bamapp	if host_bam
use_backend homeapp2	if host_home


backend jiraapp
   balance roundrobin 
   server host1 192.168.56.103:8080 

backend wikiapp
   balance roundrobin
   server host1 192.168.56.103:8090

backend gitapp
   balance roundrobin
   server host1 192.168.56.104:7990

backend bamapp
   balance roundrobin
   server host1 192.168.56.104:8085

backend mediaapp
   balance roundrobin
   server host1 127.0.0.1:32400


backend homeapp2
   balance roundrobin
   server host1 192.168.56.104:9000


#/etc/init.d/haproxy restart


SSL 설정

https 프로토콜을 사용하기위해서 위와같은 구조로 SSL인증과정을 단일화 할것입니다.

Why? SSL인증처리를 각 WWW-N 서버에 두게되면 모든 서버마다 SSL설정을 해야하며

인증서 만료에따른 관리교체가 힘들어집니다.

SSL 인증서 가격이 도메인당 1년에 만원정도 해서 구매 하고 Haproxy와 잘연동되고

저렴하다라고 생각하고 구매 진행하였습니다.


아래와같이 서브 도메인도 1도메인에 포함되는줄 착각하였지만.

위와같이 구성하면 4개의 SSL인증서를 각각 받아야합니다.

개발자에게 크로스 도메인상 위 도메인은 같은 도메인입니다.

그런데 저걸 굳이 쪼개서 팔아먹고 있습니다.


이게 귀찮으면 서브 도메인을 허용하는 ssl인증서를 받아야하는데

*.webnori.com

위 인증서는 1년 사용료가 20만원이 훌쩍 넘네요


개인서버 구축에 SSL적용은 사치입니다. 불매 운동을 할것을 권장하며 셋팅하지 말것을 권장드립니다.



그럼에도 불구하고, SSL인증서를 적용하는 방법에대해 간략하게 링크정도만 달겠습니다.


준비물

frontend https #Haproxy에서는 진입단계에서 SSL처리를 해주고, 내부에서는 비암호화 통신을 할수 있게해줍니다.
bind *:443 ssl crt /etc/ssl/private/webnori_com.pem #이 인증서에는 개인키 + 인증서키등
http-response set-header Strict-Transport-Security "max-age=16000000; includeSubDomains; preload;"
reqadd X-Forwarded-Proto:\ https
default_backend homeapp2

backend www-backend
balance roundrobin
server www-1 192.168.56.103:8090 check



대안 - NginxProxyManager

https://nginxproxymanager.com/

  • 도커로 디플로이
  • 웹으로 기본적인 구성가능
  • SSL Proxy및 인증서도 쉽게구성가능







문서화 진행사항
  • OS선택및 설치
  • 개인서버 구축으로 할수 있는 것들(미디어서버,개인위키,파일공유등)
  • JIRA 설치하여 Task및 문서화진행( Jira활용법 별도의 섹션으로)
  • 가상머신 선택및 설치
  • 가상디스크/메모리/CPU 설정을 통한 서비스 사용량 분배 계획
  • 가상 네트워크 설정을 통한 서비스 사용대상 최적 계획화
  • 도메인생성 및 라우터설정으로 동일도메인으로 설정 ( Haproxy 사용)
  • SSL 인증서 생서및 도메인에 연결 ( Haproxy를 통해 접근 포인트 단일화)
  • Open Ldap을 구축하여 계정 집중 관리
  • 구축된 개인자료를 보호하는 보안과 백업


구축 작업

key summary type created updated due assignee reporter priority status resolution

JQL and issue key arguments for this macro require at least one Jira application link to be configured





이 문서 검색

인기있는 주제

Error rendering macro 'popular-labels'

A space with 'serverdevops' key does not exist

특별 페이지

Error rendering macro 'contentbylabel'

parameters should not be empty

최근에 변경된 페이지

  • No labels