Ubuntu 20 LTS에 OPEN VPN 설치

Linux
요즘은 서버에 접속하기 위해서 공개된 Port외에는 IP 접근 차단을 당하는경우가 많은 생겨서 이동중에 접속을 하기 위해서 개인서버에 VPN 서버를 구성하였습니다. 공개된 서비스만큼 안정성은 아직 테스트를 해 보아야 하지만 지금은 개인서버이기때문에 이럴다 할 정도로 개인정보가 세어나갈 일이 없기때문에 설치하기로 큰 맘을 먹고 설치를 진행을 하였습니다. 인터넷에 검색을 하니 인터넷에 쉽게 설치를 할 수 있도록 나와 있어서 쉽게 설치를 하였습니다. curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh chmod +x openvpn-install.sh 이후에 서비스를 올리고 나서 포트를 연결하고 나니 순조롭게 사용을 가능하였습니다. sudo systemctl status openvpn #sudo iptables -t nat -I POSTROUTING 1 -s 10.8.0.0/24 -o eth0 -j MASQUERADE #sudo iptables -I INPUT 1 -i tun0 -j ACCEPT #sudo iptables -I FORWARD 1 -i eth0 -o tun0 -j ACCEPT #sudo iptables -I FORWARD 1 -i tun0 -o eth0 -j ACCEPT 이후에 몇개를 나뉘어서 추가를 하려고 하니 위세 설치…
Read More

Apache를 통한 Synology Proxy 설정

Linux
<VirtualHost *:80> ServerAdmin your-email ServerName your-privkey-domain RewriteEngine On RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] ErrorLog ${APACHE_LOG_DIR}/your-privkey-domain.error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/your-privkey-domain.access.log combined #ProxyPass / http://your-privkey-domain:port #ProxyPassReverse / https://your-privkey-domain:port </VirtualHost> <VirtualHost *:443> ServerAdmin your-email ServerName your-privkey-domain ProxyRequests Off SSLProxyEngine on ProxyPreserveHost On AllowEncodedSlashes NoDecode SSLEngine on SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off SSLProxyCheckPeerExpire off SSLCertificateFile "/etc/letsencrypt/live/your-privkey-domain/cert.pem" SSLCertificateKeyFile "/etc/letsencrypt/live/your-privkey-domain/privkey.pem" SSLCertificateChainFile "/etc/letsencrypt/live/your-privkey-domain/chain.pem" ProxyPass / https://your-privkey-domain:port nocanon ProxyPassReverse / https://your-privkey-domain:port RequestHeader set X-Forwarded-Proto "https" RequestHeader set X-Forwarded-Port "443" ErrorLog ${APACHE_LOG_DIR}/your-privkey-domain.error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/your-privkey-domain.access.log combined </VirtualHost>
Read More

code server 세팅 기록

Linux, Tool
외근이 많다보니 IDE 세팅을 일일이 맞추기도 힘들어서 알아보던 도중에 code-server가 존재하는것을 알게 되었습니다. PC에 설치 하지 않고 Server에 설치해서 Webbrowser를 이용해서 IDE를 사용하도록 해주는 Tools 이여서 상당히 끌리게 되어서 제 서버에 설치를 하게 되었습니다. 전 웹서버를 이용할대 Apache를 잘 이용하지만 이번에는 code-server 때문에 nginx 를 이용해서 설치를 하게 되었습니다. code-server만을 이용할때는 상당히 잘 작동을 하고 빠르게 작동을 하여서 만족을 하게 되었습니다. 애초에 nginx가 apache보다 가볍기 때문에 속도가 잘 보장이 되어서 좋은 기능을 사용할 수 있게 되었지만 서버를 code-server 만으로 사용하기에는 자원을 너무 낭비를 하기에 여러가지 올리는 도중에 webdav까지 사용할 수 있도록 설정을 하려고 하다보니 여러가지 설정을 찾아서 헤매게 되었습니다. nginx 설정을 인터넷에 많기 때문에 자료를 정리하려다가 포기하고, apache로 갈아 타게 되었습니다. apache도 code-server 기능을 이용하기 위해서는 인터넷에 찾아보니 여러가지로 돌아 다니지만 참 난관의 연속이였습니다.꼬박 하루를 설정을 가지고 WEB 서버 가동을…
Read More

fail2ban 개인 설정

Linux
개인서버를 운영하다보면은 무단으로 접속하는 사람이 많은 편입니다. 처음에는 SSH 접속만을 차단을 하다가 이제는 웹으로도 접속이 많이 시도를 하게 되어서 fail2ban에 설정을 인용해서 apache도 설정을 추가 해서 사용을 합니다. 공개 서버이지만 무단 접속은 막지 않으면은 결국은 쌓여서 서버의 자원을 소모하게 됩니다. 그래서 특단의 조치로 설정을 하게 되면서 설정 파일을 블로그에 기록을 합니다. 개인적인 설정이다 보니 조금은 개인적인 생각이 가미되어 있을수 있지만은 참조를 해서 사용을 하면 되지 않을까 합니다. [DEFAULT] ## 차단하지 않을 IP #ignoreip = 127.0.0.1/8 192.168.10.0/24 # 접속을 차단할 시간. 600 = 10분 bantime = 10800 # 최대 허용 횟수 maxretry = 3 #아래 시간동안 maxretry횟수만큼 실패시 차단 findtime = 60 # (선택) 메일 알림기능 #destemail = sysadmin@example.com #sender = fail2ban@my-server.com #mta = sendmail #action = %(action_mwl)s [sshd] enabled = true #여러 포트를 사용할 경우 port = ssh,10022 port =…
Read More

gitlab CE 버전 의 설치 및 Apache2 동시 운영 실패

Linux
sudo apt updatesudo apt dist-upgrade sudo apt-get install curl openssh-server ca-certificates postfixcurl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bashsudo apt updatesudo apt install gitlab-cesudo EXTERNAL_URL="http://git.truds.kr" apt-get install gitlab-ce vi /etc/gitlab/gitlab.rb sudo gitlab-ctl reconfigure dpkg-reconfigure tzdata a2enmod rewritea2enmod headersa2enmod ssla2dismod -f autoindexa2enmod proxya2enmod proxy_http 10 5 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log15 5 * * 1 /usr/bin/gitlab-ctl restart nginx sudo vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml gitlab-ctl restartgitlab-ctl stop ServerName gitlab.truds.krServerSignature OffProxyPreserveHost On <Location /> Order deny,allow Allow from all ProxyPassReverse http://127.0.0.1:8080 ProxyPassReverse http://gitlab.truds.kr/ </Location> RewriteEngine on RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA] # needed for downloading attachments DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public 그냥 정보를 알려주기보다는 그냥 기록을 남겨보는 정도 입니다. 명령어를 모아 놓아서 보기도 불편합니다. 하지만 실패도 기록이 되기에 남겨서 추후에 제가 잘못한 부분등이 있다면은 수정을 해서 다시 시도해 보기 위해서 기록을 남깁니다.
Read More

ShellScript로 원격DB 백업 및 로컬DB 복원 하기

Linux
#!/bin/bash LOCALDB={로컬DB명} REMOTEDB={원격DB명} LOCALDBFILE=/home/databaseBackup/sqlFile/$LOCALDB.sql echo "Backup:: $REMOTEDB > $LOCALDB" /usr/bin/mysqldump -h{원격DB서버주소} -P {원격DB서버포트} -u {원격DB사용자} -p"{원격DB사용자비밀번호}" --add-drop-table $REMOTEDB > $LOCALDBFILE LOCALDBFILESIZE=$(wc -c "$LOCALDBFILE" | awk '{print $1}') echo "FileSize: $LOCALDBFILESIZE" #파일이 일정 용량 있상일경우에만 복원을 시도 if [ $LOCALDBFILESIZE -gt 3000 ];then # 원격서버의 Root권한이 %인것을 로컬에서는 localhost로 문자 치환 echo "Strng replace:: $LOCALDBFILE >> $LOCALDBFILE.bk" /usr/bin/cat $LOCALDBFILE | sed 's/DEFINER=`root`@`%`/DEFINER=`root`@`localhost`/g' > $LOCALDBFILE.bk # 문자치환된 파일을 덮어써서 1개로 만듬 echo "File Move:: $LOCALDBFILE.bk >> $LOCALDBFILE" /usr/bin/mv -f $LOCALDBFILE.bk $LOCALDBFILE # 문자치환된 파일 삭제처리 echo "Tmpfile Remove $LOCALDBFILE.bk" /usr/bin/rm -rf $LOCALDBFILE.bk # 로컬 DB에 파일 복구 echo "Restore:: $LOCALDB < $LOCALDBFILE" /usr/bin/mysql -u{로컬DB사용자} -p"{로컬DB사용자비밀번호}" $LOCALDB < $LOCALDBFILE fi
Read More

Windows10 OneDrive 삭제

Windows
OneDrive를 삭제 하게 될경우에는 기본에 동기화 된게 있으면은 동기화를 해제하고 작업을 해야 합니다. 동기화가 이뤄지는 도중에 작업하면은 동기화 항목중에 바탕화면이나 다른것이 있다면은 함께 지워지게 됩으로 꼭 동기화를 해제하고 삭제 처리 해주시기 바랍니다. @echo off cls set x86="%SYSTEMROOT%\System32\OneDriveSetup.exe" set x64="%SYSTEMROOT%\SysWOW64\OneDriveSetup.exe" echo Closing the OneDrive process. echo. taskkill /f /im OneDrive.exe > NUL 2>&1 ping 127.0.0.1 -n 5 > NUL 2>&1 echo Uninstalling OneDrive... echo. if exist %x64% ( %x64% /uninstall ) else ( %x86% /uninstall ) ping 127.0.0.1 -n 5 > NUL 2>&1 echo Removing OneDrive leftovers... echo. rd "%USERPROFILE%\OneDrive" /Q /S > NUL 2>&1 rd "C:\OneDriveTemp" /Q /S > NUL 2>&1 rd "%LOCALAPPDATA%\Microsoft\OneDrive" /Q /S > NUL 2>&1 rd "%PROGRAMDATA%\Microsoft OneDrive" /Q /S > NUL 2>&1 echo Removing OneDrive from the Windows Explorer Side Panel... echo. REG DELETE "HKEY_CLASSES_ROOT\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" /f…
Read More

PEM 파일을 PPK 파일로 변환후 안될때

Linux
pem 파일을 가지고 ppk 로 변환을 하였는데, 정상적인디 안될때 ppk file의 버전을 3 에서 2로 변경을 하니 정상적으로 ppk 파일을 이용할 수 있었습니다. 정확한 이유는 버전 차이라고 생각이 됩니다. 가끔 PPK파일이 필요하기때문에 미리 미리 만들어서 테스트를 해두면은 나중에 급할때 사용하기에 편리할수 있다는 생각을 합니다. 물론 Key파일에 대해서는 관리를 잘해서 보관을 해야지 유출되면은 바로 접속 권한을 모두 주기 때문에 적절히 잘 관리하여서 처리를 해야 합니다.
Read More

SVN으로 배포후 기본 세팅하기

Linux
여러 NAS 서버에 배포를 해줄때 초기에 실행할 파일입니다. 예전에는 APM세팅을 해주고 잘아는 사람이 세팅을 해주는것이 일반적인 Server라면은 NAS에서는 기본적인 패키지 설치도 쉽고 해서 회사 내부에서 전혀 모르는 사람이 메뉴얼에 따라서 초기 세팅을 해서 배포하는 경우도 있습니다. 그렇게 작업을 하다 보니 꼭 한번은 체크를 해야 되어서 필수적으로 세팅하고 해야되는 작업을 그냥 파일로 만들어 보았습니다. 어차피 모든 소스는 범용적으로 소스저장소에 올려 놓기때문에 초기에 파일 몇개만 순서적으로 실행을 하면은 모든 사람이 할 수 있어서 이런 방법을 취하게 되었습니다. #!/bin/bash # SVN SETTING /usr/bin/svn propset svn:ignore application/libs/databases.php . # DEFAULT DIRTORY MAKE targetDataBase=`pwd -P` if [ -d $targetDataBase/uploads ]; then echo 'Not Make' else /bin/mkdir $targetDataBase/uploads fi if [ -d $targetDataBase/uploads/logs ]; then echo 'Not Make' else /bin/mkdir $targetDataBase/uploads/logs fi /bin/chmod 777 $targetDataBase/uploads /bin/chmod 777 $targetDataBase/uploads/logs 이렇게 파일을 만들어 놓고 보면은 이제 누구나 할…
Read More

CRON 을 ShellScript로 처리하기

Linux, NAS
서버를 운영하다보면 여러가지 스케쥴러 작업을 실행할 일이 생깁니다. 내가 서버 관리자 이면은 그냥 귀찮음을 감수 하고 매번 등록을 하는것도 나쁘지 않지만 매번 찾아가서 맞추기는 솔직히 귀찮음이 발동을 해서 CRONTAB은 한개의 파일만 보고 실행을 할려고 만들었습니다. #!/bin/bash # 시스템 분 정보 NOW=$(date +"%M") echo $NOW # CRON 단일 파일로 처리 하기 위해서 분 단위 구분 let FULL=$NOW%60 let HALF=$NOW%30 let TEN=$NOW%10 # CRON 조건문 추가 if [ $FULL -eq 0 ]; then echo 'FULL' /volume1/@appstore/PHP7.4/usr/local/bin/php74 -q /volume2/publicedition/skem/index.php system cron dumy_noti elif [ $HALF -eq 0 ]; then echo 'HALF' elif [ $TEN -eq 0 ]; then echo 'TEN' else echo 'ONE' /volume1/@appstore/PHP7.4/usr/local/bin/php74 -q /volume2/publicedition/skem/index.php system lot lot_check fi 물론 단일 파일이라서 CRONTAB하고는 작동 방법이 조금 다르지만 언제나 내 좋을대로만 움직일수 없기에 가장 협의를 본 방법입니다. 이 방법외에도 많지만 관리자에게 말을 하지…
Read More

[Ubuntu] SWAP 파일 생성 삭제

Linux
스왑 파일/파티션 존재 여부 확인스왑 파일 생성 전에 스왑 파일이나 스왑 파티션이 존재하는지 먼저 확인합니다. sudo free -m 그리고 아래의 명령어를 입력해서 swap 관련한 내용이 보이지 않으면 스왑이 설정되지 않은 것입니다. sudo swapon -s 만약 두 명령어 모두 swap 관련이 보이지 않으면 아래 명령어로 생성합니다. 스왑 파일(swapfile) 생성먼저 스왑 용도로 사용할 파일을 swapfile이라는 이름으로 생성합니다. sudo fallocate -l 2G /swapfile 명령어의 2G는 2GB를 의미하며 원하는 용량을 입력하면 됩니다.루트 디렉터리에 swapfile 파일이 생성됩니다. swapfile 다음으로 생성된 파일의 권한을 수정합니다. sudo chmod 600 /swapfile sudo chmod 600 /swapfile 이제 해당 파일이 스왑으로 동작하도록 만들어줍니다. sudo mkswap /swapfile 아래와 같은 내용이 표시됩니다. mkswap 마지막으로 아래 명령어를 입력해서 스왑을 활성화시킵니다. sudo swapon /swapfile sudo swapon /swapfile 이것으로 스왑이 생성되며 재부팅 이후에도 계속 사용하려면 /etc/fstab 파일을 수정합니다. sudo vi /etc/fstab sudo vi /etc/fstab 파일 하단에…
Read More

Synology에서 git pull 후 배포만 만들기

NAS
#!/bin/bash #날짜 date=$(date '+%Y%m%d') # 디렉토리 비우기 /usr/bin/rm -f /volume1/Distribute/table.tar.gz /usr/bin/rm -rf /volume1/Distribute/table/* # 디렉토리 복사 /usr/bin/cp -r /volume2/development/table/* /volume1/Distribute/table/ # Database sql dump /volume1/@appstore/MariaDB10/usr/local/mariadb10/bin/mysqldump -uUSER -pPASSWORD table > /volume1/Distribute/table/table.sql # 불필요 디렉토기 삭제 /usr/bin/rm -rf "/volume1/Distribute/table/_" /usr/bin/rm -rf "/volume1/Distribute/table/프로젝트" # 디렉토리 생성 /usr/bin/mkdir /volume1/Distribute/table/upload /usr/bin/chown user:users /volume1/Distribute/table/* /usr/bin/chmod 777 /volume1/Distribute/table/upload # 파일 압축 /usr/bin/tar -zcvf /volume1/Distribute/table.tar.gz /volume1/Distribute/table/*
Read More

Synology에서 쉘로 SVN update하기

NAS
쉘스크립트를 만드는 이유는 자동화를하기 위해서 입니다. 커멘트 모드에서 매번 실행을 하다 보면은 조금은 잊어 버릴때가많아서 스케쥴러에 걸어 놓으면은 상당히 편합니다. #!/bin/bash /usr/bin/svn checkout svn://URL/프로젝트명 /volume2/development/받을 경로/ 실 생활에서 사용하는것에 감춰야 할 부분을 감추고 정말 간단한 정보만을 표현을 한것입니다. 시놀로지 NAS에서 작업스케쥴을 걸면은 잊어 먹지 않고 바로 공개적으로 사용할수 있는 Public 웹이 만들어지기때문에 굳이 NAS에 들어가지 않아도 되는 이점이 존재 하는것입니다. 스케쥴러 캡쳐 화면 위에 화면 처럼 조금 빠르지만은 개발을 할 시간에 걸어 놓으면은 별도로 NAS에서 확인하지 않아도 바로 적용이 되고, 늦어도 커밋후 10분 이내에 바로 NAS Web에 적용이 되지 작업을 줄이는 일입니다. 처음에 이렇게 사용하게 된 이유가 제가 담당을 해서 매번 업데이트를 실행해야 되어서 퇴근전이나 큰 변경사항이 있다면은 매번 하다 보니 조금은 귀찮은 점을 해소하기 위해서 작업을 하게 된 것입니다. 프로그램을 만드는 사람이라면은 응당 자기가 귀찮은 일을 프로그램에게 맡겨서 처리할수…
Read More