0. 서론
구글이 학교계정을 제한함에 따라 사실상 무료였던 구글 드라이브가 쪼그라들었습니다.
대체제를 찾으러 네이버 myBox, MS OneDrive 등을 고려했습니다. 그러나 이들은 사진이 메인이 아닌 스토리지가 주 목적이라 배제를 했습니다. 앨범을 따로 만들고 그러면 되겠지만 그런 번거로운 과정이 싫거든요.
그리고 클라우드 서비스들은 익숙한 것에 손이 가길 마련이고, MS서비스랑 동기화 하기가 싫었습니다. (윈도우 부팅하면 계속 OneDrive가 자동실행하고 귀찮게 굴어서 그런듯..) 묘하게 MS서비스들은 OA사무용이란 인식이 있기도 했고요.
네이버 mybox는 구 네이버 클라우드 시절부터 파일 유실 사건사고가 많이 있다고 들어서, 특히 일러스트 하시는 분들이 강력한 비추(!)를 했습니다.
NAS를 구매하려고 했고, 실제로 구매했다가 취소 했습니다. 사유는 뱃사공이 너무 많았고(시놀로지를 가네, 하드디스크 NAS전용을 써야하네, 플러터 방식때문에 일반용 쓰면 안되네 되네 등등) 어쨌든 서버(리눅스)이기 때문에 관리하는 시간이 적잖이 들어갑니다. NAS의 가격의 80%는 소프트웨어값이라는 말이 있듯이, 저렴하게 구축하면 소프트웨어 유지하는데 자원이 너무 많이 투입이 될거 같더라구요. 또한, 집에 콘센트랑 LAN선 빼는것도 힘들었던것도 이유였습니다. (+전기세 타령하는 부모님)
그럴바엔 그냥 클라우드에다가 사진 전용 NAS를 구축하자! 하고... 프리티어가 혜자라고 소문난 오라클 클라우드를 선택하게 되었습니다. (본격 노예계약 시작)
사실, 구글이 학교계정 제한했을때 부터 오라클 클라우드를 고려했는데 그놈의 '오라클'이라는 악명높은 이미지 밸류 덕택에 많이 고민을 했지만, 클라우드 업계는 웬만해선 순위변동이 없고, 완벽한 후발주자로 혜자 혜택을 계속 줄 수 밖에 없는 위치(=꼴찌)이기 때문에 그냥 선택했습니다.
=대신 조건이 있었습니다.
1. 오라클 클라우드 가입 및 인스턴트 생성 시도
1-1. 프리티어 계정 생성 시도
오라클 클라우드 프리티어는 막강한 하드웨어 사양을 제공합니다. 무료 200GB 블록스토리지, Ampere 4 OCPU / 24GB RAM을 제공합니다. 대신 저 사양을 Full로 땡기려면 Oracle Linux를 선택해야합니다. (이게 조건)
하지만, 프리티어 캐파가 꽉 차서 신청할 수가 없었고, 그렇다고 가입시 리전을 바꿀수도 없었습니다. (현재 저는 춘천리전을 사용중입니다) 서울 리전은 꽉차서 안된다고 하더니, 서울리전에 가입한 개발자분은 잘만 생성되더라구요 ㅎㄷㄷ;
혹시 몰라 오라클 클라우드 챗팅 상담에 물어봤습니다. 그랬더니 그냥 기다리래요. 그리고 그런 문제가 있었냐고 오히려 되 묻더라구요. 역시... 미국서비스들은 챗봇이나 사람이나 거기서 거기입니다.
그래서 오라클 한국지사에 전화했더니, 자기네들은 클라우드 관련 응대할 수 있는 사람이 없고 단순 엔지니어 두 분만 있다고 하더라구요. (역시 쓰는사람이 잘 써야 하는 오라클...)
국내 클라우드업체들이 품질이 떨어진다고 엄청 까이는데, 그래도 국내 서비스 업체는 말귀라도 알아듣지
해외 서비스는 그런거도 없어요. 괜히 외산 갔다가 국산으로 돌아오는게 아니더라구요.
구글링 해보니, 파이썬으로 인스턴트 VM 생성 스크립트가 있어서 API키를 발급받아 1분에 한번씩 무료 VM인스턴트를 생성하는 스크립트를 만들었습니다.
윈도우 같은경우에는 작업스케쥴러로 py파일을 돌려버리고
리눅스는 crontab에 넣어주면 됩니다.
저는 1분에 한번씩 간격으로 py파일이 돌아가게끔 했습니다.
그렇게 2일동안 했는데도 도통 답이 없어서 결제를 했어요.
1-2. 유료회원 전환 및 VM 생성
월 초에 안쓰는 VM들이 삭제되고 자리가 생겨서 무료티어를 생성 가능하다고 합니다.
하지만 전 참을성이 없었고, 또한 유료계정으로 전환하면 각종 혜택들이 있다고 해서 전환했어요.
예컨데, 오랫동안 사용안하면 VM이 삭제되는게 일어나지 않으니, 개인 NAS용으로 사용하기 위해선 어짜피 결제를 해야 했거든요.
USD 100 결제 승인 후 바로 취소가 되었습니다. 신용카드가 아닌 체크카드만 있다면 부담이 되었을거 같네요.
업그레이드가 진행중입니다
세팅하는데 1일 정도 걸린다고 하던데 저는 20분 만에 전환 되었습니다.
그렇게 Ampere ARM 4 ocpu와 24gb ram, 200gb 블록스토리지 무료 사양을 풀로 땡겼습니다.
원래는 나눠서 인스턴트를 생성해도 되지만 저는 사진백업용으로만 온전히 사용할 거라 했죠.
그리고 저렇게 땡겨서 쓰려면.... '오라클리눅스'(이하 OL)를 선택해야했어요. 우분투로 하려면 minimal 버전이 아니여서 선택지는 얘 밖에 없더라구요.
그리고 유료로 전환하니 오라클에서 메일이 왔습니다. 유료가 좋긴 좋네요.
허나 영업메일...
역시 한국 오라클은 IT기업이 아니라 영업회사라는게 정설....
1-3. 'ocivolume-oled' lv파티션의 난입
블록스토리지 200G를 풀로 다 땡겼는데, 시스템 상에서는 30gb밖에 표시가 안되서 파티션을 봤습니다.
sda1,2야 다 아는 내용이니 패스하고
sda3를 보시면 197.9GB인데
'ocivolume-root'가 29.5gb 만 먹고있습니다.
더 기가막힌건 그 아래 'ocivolume-oled'가 15gb 씩 먹고있고 아무것도 없습니다.
생각난 김에, 한국 오라클 담당자한테 한번 물어봤습니다.
어짜피 자기네들도 모른대요. (저 메일은 이미 파티션 날린 뒤 확인차 보낸 메일)
근데 해외 사례 검색해보니 어짜피 Crash 관련된거 모아두는거고 날려도 상관없어서
200gb를 통으로 다 쓰려고 하는 저를 '아무도 날 막을 순 없으셈ㅋ' 으로 바로 날렸습니다.
lvremove 하고 lvextend 100% FREE 넣어주시면 됩니다.
ocivolume-oled는 사라졌습니다.
2. 이미지 관리 프로그램 - immich
암튼 그렇게 셋팅하고,
이미지 관리툴로 immich 라는 한창 개발중이고
국내에서도 잘 안 알려진 녀석을 선택했습니다.
https://immich.app/
발음이 '이미지'와 비슷하게 발음되는 애고, 무엇보다 구글포토를 지향하는 녀석이라, 아직 미 구현된 기능도 많지만, 혼자만 사용하려면 얘만한게 없었습니다. (그래도 ML기반의 이미지 태깅이나 분류작업은 구현되어있습니다)
원래는 photoprism을 고려했지만 사용성이 너무 불편하고, 휴대폰 사진의 정보를 (EXIF 가 없더라구요? 다른 방식으로 매칭하나봅니다) 제대로 못 불러와서 고민할 찰나에 회사 개발자 분의 추천으로 설치하게 되었습니다.
설치는 도커로 설치하면 됩니다.
설치할때 .env파일 그대로 냅두시고, 나중에 업데이트할때 pull로 당겨 오면됩니다.
그리고 docker compose는 arm 버젼이 따로 있으니 별도로 설치해주세요.
대충 요렇게 생겼습니다.
웹에서 접속하면 검색이 안되지만, 모바일 앱에서는 검색이 잘 됩니다. (왜?)
관리자 화면에서는 저렇게 사진이나 용량정보를 확인할 수 있습니다. 최근에 추가된 기능이예요.
썸네일 생성기능, EXIF. 머신러닝 재색인 페이지입니다.
눌러봤는데 딱히 나아지는게 뭔지 잘 모르겠어요.
사용자를 추가할 수 있어요. 예전버전에서는 생성만 되고
유저 삭제가 안되서 어떻게 할 수 없었는데 지금은 모르겠네요.
(docker sudo 권한이 안먹혀서 업데이트하다가 날려서 한번 싹 갈아엎어 지금은 없어요)
(저거 incheon이 아니라 siheung 내지 baegot인데...)
모바일 앱에서는 검색도 가능하고
장소별로 잘 정리하는 모습을 보여줍니다. (EXIF 기반)
웹에서도 당연히 이렇게 잘 보여주는데
문제는 저게 오픈스트리트맵 기반이라.... 이름이 쪼금.. 혹은 행정구역이 이상하게 되던가 하는 문제는 있어요.
그래도 쓸만합니다.
200G 블록스토리지를 오래오래 울궈먹어야 하기 때문에
스냅시드로 후 보정을 한 애들만 자동 업로드를 하도록 했습니다.
안드로이드는 이게 당연히 되고
아이폰도 되더라구요. (사진 전체 접근 허용 후, snapseed 앨범만 허용하면 됩니다)
사소한 단점이라면, 가끔 이미지 백업이 실패했다고 해서 들어가보면
최신 버전으로 업데이트 해달라고 하거나
dns로 연결이 잘 안되서, 그냥 ip주소로 연결해뒀습니다. (그래도 가끔 끊기는거 보면 오라클 잘못인듯...)
진짜 일주일에 한번은 계속 업데이트가 나오는거 같아요.
그때마다 업데이트 합니다만...
immich 설치했던 폴더 가서 (docker-compose.yml파일이랑 .env 파일 존재해야함)
docker compose pull && docker compose up -d
쳐주면 끝납니다.
아, 저게 MobaXterm 이란 터미널 프로그램인데 진짜 편리해요! 탭으로 터미널 여러개 할수 있고
putty 깔려있으면 자동으로 땡겨와줍니다. (회사 개발자한테 영업당했어요)
또한 옆에 ftp처럼 되어있어서 폴더 권한만 주고 (전 귀찮아서 chmod 777 잠깐만 하고 다시 닫아요)
파일 업로드합니다. (wget 못사용하는 경우)
그래서 가끔은 개인 클라우드처럼 써요.. (...)
업데이트하면 새로운 컨테이너랑 이미지로 연결되는데
그래서 포테이너에서 unused 라고 되어있는 이미지랑 컨테이너를 지워주면 끝납니다...
3. SSL (https) 적용
저는 그냥 certbot 깔고 하면 다 될줄 알았습니다. 그래서 나중에 nginx에다가 깔고 또 인증서 발급하고 그랬는데
포트별로 각각 따로 들어가더라구요. (...)
사실 ssl 적용하는 개념이 머릿속에 없다보니까 많이 삽질을 했었습니다. 가장 기초적인 실수로는 오라클 클라우드 콘솔에서 443 포트를 연다는걸 433 으로 적어서 하루 정도 날렸고 (게임회사가 잘못했네!) 포트별로 적용해야 한다는 것도 나중에 알게되었어요. nginx깔아서 ssl 적용까진 성공했는데 immich 로 포워딩하는건 실패해서 ㅠㅠ
그렇게 삽질을 하다가 npm (nginx proxy manager) 라는 녀석을 추천 받았어요. 와일드카드 발급도 손쉽고, 프록시 마다 별도로 인증서 발급이 되고, let's encrypt 로 발급됩니다.
와일드카드 적용으로 했는데 보안연결 실패로 떠서 (서명자가 다르다나) 각각 발급받았습니다.
다만 npm이 80포트를 먹기 때문에 기존에 cerbot 삽질한다고 nginx를 깔아둔거를 iptables에서 중단했습니다.
나중에 듣기로는 ip관리를 페도라 계열은 firewalld로 하고, 우분투계열에서는 iptables로 한다고 하더라구요.
뭔 차인지는 모르겠지만... 나중에 firewalld로 익숙해지게 해야겠습니다.
암튼 각각 proxy별로 ssl 발급해서 적용했습니다.
하도 삽질해서 let's encrypt를 하니까 발급 갯수 제한 걸리더라구요. 그래서 2주 동안 기다렸습니다 (...)
정리하자면
오라클 클라우드 : 다른 클라우드 대비 혜자여서 좋으나, 회사서 도입한다면 국내 클라우드 쓸래요.
immich : 혼자 구글포토처럼 쓸꺼면 강추. 업데이트도 간편.
portainer : 추천
npm : 추천 (물론 기본적인것만 하려면. 더 고급기능을 한다 하면 nginx 깔고 직접 세팅을....)
MovaXterm : 강력추천. putty 지웠습니다.
나중에 200gb이 넘어가면...
그땐 얄짤없이 원드라이브 1tb로 가든지
아님 piwigo 유료서비스 (1년에 39유로 무제한)로 가든지
해야겠습니다...