비밀번호 만큼 브라우저니 앱이니 많다. 다들 자기 시스템에 비밀번호를 저장하라고 난리다. 내가 보니 비밀번호를 저장해둔 시스템이 400여개 생각보다 많지 않네? 그래도 모두 외울순 없으니 난감한차에 비밀번호를 안전하게 보호해준다는 크롬, 삼성브라우저, 파이어폭스, 알패스(망했죠?)까지.. 처음엔 고마웠다.
요즘엔 브라우저 호환때문에 이것 저것 쓰진 않지만 얼마전까지만 해도 그런 불편이 심했다. 모바일은 그나마 양반인게 A사이트는 B브라우저에서만 잘 작동하고, C사이트는 D브라우저에서 딱 맞춰 보이는 증상이 덜하다. 하지만 모바일에서만 쓰느냐? 패드나 구형PC등도 시스템에 맞춰서 브라우저를 설치해서 사용한다. HWP를 많이 쓰면 웨일을 쓰기도 하고, 우수한 플러그인의 압도적인 양을 생각하면 크롬을, 크롬의 램 먹는 하마가 꼴보기 싫으면 엣지를 모바일과 데스크탑 패드등의 핸드오프의 편리함을 위해서는 사파리를 선택하는 식이지 모두 친절하게도 한번 로그인한 사이트의 아이디와 비밀번호를 안전하게 보관했다가 다음 접속에는 자동으로 입력 해 준다.
그런데 이게 각 회사들에게는 사용자사 해당 시스템에 귀속되어버리는 락인(LOCK-IN)이 되어 너무 불편해져버리는 단점이 되버렸다.
엣지나 크롬, 사파리나 삼성브라우저등등 PC와 모바일등에서이름만 같고 사용처가 다르다보니 모바일에서는 지문으로 입력되는 비밀번호가 PC에서는 크롬아니면 비밀번호가 저장이 되어있지 않고, 삼성브라우저에는 기억되어있는 패스워드가 사파리엔 없고 그렇다고 브라우저를 하나만 쓰자니 되는것도 있고 아닌것도 있고 어느날엔가 너무 화딱지가 나서 이런생각까지 들게됬다.
패스워드를 내가 다 기억하고있으면 패스워드가 저장된 브라우저 골라쓰느라 똑같은 사이트를 몇번씩 들락 거리지 않아도 되잖아!
물론 내 머리는 저걸 다 기억할리 없으니 패스워드 저장과 자동입력하는것을 내가 관리한다면 그래서 브라우저가 달라도 플랫폼이 달라도 아무문제가 없겠다 생각이 들었다.(깨닫는게 이렇게 오래 걸릴일도 아닌데 말이지..) 심지어 나는 패스워드를 메모앱에 아무런 보안대책없이 적어뒀으니 이걸 이제 생각해낸 내가 여러모로 답답했다.
일단 내가 가진 패스워드들은 저 세가지다
크롬
삼성패스
메모에 적어둔 것들
모두 vaultwarden으로 하나씩 옮겨야했다.
먼저 가장 자주 사용하는 모바일에서는 삼성패스에 거의 모든 비밀번호가 생성되어있는데 이것부터 옮기기로 했다. 이녀석은 캡쳐도 안돼네
삼성월렛 -> 설정(점세개) -> 삼성 패스 데이터 가져오기 및 내보내기
데이터가져오기
폰에 데이터 내보내기
ID 및 비밀번호
비밀번호를 체크하면 내 폰안에 .spass 파일로 저장이 되는데 꼭 비밀번호를 설정해야한다.
이제 이 파일의 비밀번호를 없애고 Vaultwarden에 불러오기로 옮겨야하는데 비밀번호를 바꾸는데는 두가지 방법이 있다.
폰내에서 파이썬 스크립트로 하기
클라이언트 사이드 변환기를 사용 – 브라우저에 파일을 올려서 github등의 오픈소스 해독사이트를쓰는건데 불안해서 안했다.
폰으로 받은 삼성패스 .spass파일을 폰에서 해독하는것도 뭐 결국 온라인에서 프로그램을 받아야하지만 이 방법으로 하기로했고 마침(?) 핸드폰에 Termux가 설치 되어있어서 아래의 순서로 따라하면 비밀번호를 해제한 파일을 얻을 수 있었다.
Termux-setup-storage # Termux프로그램이 파일에 접근할 권한 부여
# 파이썬 및 변환기 프로그램 다운로드
pkg install python python-cryptography git -y
git clone https://github.com/NHClaessens/samsung_pass_converter.git
#프로그램 폴더로 이동 및 파일가져오기
cd samsung_pass_converter
cp ~/storage/download/내보내기한 파일명.spass ./
# 암호 해독 “내비밀번호” 부분은 필히 본인이 정한 비밀번호 넣기
python convert.py ./2026_07_29_13_41_51_spass_export_data.spass “내비밀번호”
#Download폴더로 CSV파일 이동
cp ./*.csv ~/storage/downloads/
이제 Vaultwarden에서 삼성패스의 비밀번호를 불러오기할 모든 준비가 끝났다.
파일 선택을 누르고 핸드폰의 Download의 csv파일을 첨부하면 끝이다. 생각보다 너무 쉽다.
핸드폰과 PC에 클라이언트인 Bitwaden을 설치하고 자체호스팅된 Vaultwarden의 주소를 적어주면 해당시스템에서 구글에 저장된 비밀번호나 삼성월렛에 저장된 비밀번호대신 Vaultwarden에 옮겨진 내 관리하의 패스워드로 로그인이 된다.
크롬에서라면 확장프로그램 Bitwarden을 설치하고 툴바에 고정을 선택해주면 편하다.크롬의 비밀번호 관리자는 저장을 해제하고 비밀번호 내보내기로 Vaultwarden에서 읽어들일 패스워드 목록을 받을수 있다.자체호스팅으로 변경내 Vaultwarden의 주소와 패스워드를 적으면 끝
끝으로 메모장에 적어두던 파일은 Bitwarden의 보안 메모에 옮겨뒀다. 과정에서 생성한 CSV파일들을 꼭 지우는걸 잊지말자.
📸 첨부 이미지 1: Proxmox Summary 화면 (CPU/RAM 정상인데 체감 속도 저하)
어느 날 NPM VM(LXC)을 재부팅한 이후부터 이상 증상이 시작됐다.
NPM 웹 페이지 로딩이 극단적으로 느림
Proxmox 에서 해당 컨테이너로의 콘솔 접속 자체가 늦거나 끊김
Tailnet에서 NPM 노드가 보이지 않음
하지만 Proxmox Summary에서는 CPU / RAM 사용률 정상
처음엔 디스크 I/O 문제를 의심했지만, sync 명령이 즉시 반환되어 스토리지 병목은 아닌 것으로 판단했다.
2. Tailscale 상태 확인
📸 첨부 이미지 2: tailscale status 실행 시 오류 화면
NPM LXC 안에서 확인한 결과:systemctl status tailscaled
결과는 명확했다.Active: failed (Result: exit-code)
즉, tailscaled 데몬 자체가 기동 실패 상태였다.
3. 결정적 로그 (원인 확정)
journalctl -u tailscaled 로그 root@nginxproxymanager:~# journalctl -u tailscaled -b –no-pager | tail -n 120 Dec 29 16:23:22 nginxproxymanager systemd[1]: tailscaled.service: Main process exited, code=exited, status=1/FAILURE Dec 29 16:23:22 nginxproxymanager tailscaled[415]: TPM: error opening: stat /dev/tpmrm0: no such file or directory Dec 29 16:23:22 nginxproxymanager tailscaled[415]: logtail started Dec 29 16:23:22 nginxproxymanager tailscaled[415]: Program starting: v1.92.3-ta17f36b9b-ga4dc88aac, Go 1.25.5: []string{“/usr/sbin/tailscaled”, “–cleanup”} Dec 29 16:23:22 nginxproxymanager tailscaled[415]: LogID: e6162d241fd04f3372e9cde1bb50d0f5f0e122c5e3f85ebd6d01c6033a2cb41c Dec 29 16:23:22 nginxproxymanager tailscaled[415]: logpolicy: using $STATE_DIRECTORY, “/var/lib/tailscale” Dec 29 16:23:22 nginxproxymanager tailscaled[415]: dns: [rc=unknown ret=direct] Dec 29 16:23:22 nginxproxymanager tailscaled[415]: dns: using “direct” mode Dec 29 16:23:22 nginxproxymanager tailscaled[415]: dns: using *dns.directManager Dec 29 16:23:22 nginxproxymanager tailscaled[415]: dns: inotify: NewDirWatcher: context canceled Dec 29 16:23:22 nginxproxymanager tailscaled[415]: flushing log. Dec 29 16:23:22 nginxproxymanager tailscaled[415]: logger closing down Dec 29 16:23:23 nginxproxymanager systemd[1]: tailscaled.service: Failed with result ‘exit-code’. Dec 29 16:23:23 nginxproxymanager systemd[1]: tailscaled.service: Scheduled restart job, restart counter is at 2. Dec 29 16:23:23 nginxproxymanager systemd[1]: Stopped tailscaled.service – Tailscale node agent. Dec 29 16:23:23 nginxproxymanager systemd[1]: Starting tailscaled.service – Tailscale node agent… Dec 29 16:23:23 nginxproxymanager tailscaled[634]: TPM: error opening: stat /dev/tpmrm0: no such file or directory Dec 29 16:23:23 nginxproxymanager tailscaled[634]: logtail started Dec 29 16:23:23 nginxproxymanager tailscaled[634]: Program starting: v1.92.3-ta17f36b9b-ga4dc88aac, Go 1.25.5: []string{“/usr/sbin/tailscaled”, “–state=/var/lib/tailscale/tailscaled.state”, “–socket=/run/tailscale/tailscaled.sock”, “–port=41641”} Dec 29 16:23:23 nginxproxymanager tailscaled[634]: LogID: e6162d241fd04f3372e9cde1bb50d0f5f0e122c5e3f85ebd6d01c6033a2cb41c Dec 29 16:23:23 nginxproxymanager tailscaled[634]: logpolicy: using $STATE_DIRECTORY, “/var/lib/tailscale” Dec 29 16:23:23 nginxproxymanager tailscaled[634]: dns: [rc=unknown ret=direct] Dec 29 16:23:23 nginxproxymanager tailscaled[634]: dns: using “direct” mode Dec 29 16:23:23 nginxproxymanager tailscaled[634]: dns: using *dns.directManager Dec 29 16:23:23 nginxproxymanager tailscaled[634]: dns: inotify: NewDirWatcher: context canceled Dec 29 16:23:23 nginxproxymanager tailscaled[634]: wgengine.NewUserspaceEngine(tun “tailscale0”) … Dec 29 16:23:23 nginxproxymanager systemd[1]: Started tailscaled.service – Tailscale node agent. Dec 29 16:23:23 nginxproxymanager tailscaled[634]: Linux kernel version: 6.8.12-5-pve Dec 29 16:23:23 nginxproxymanager tailscaled[634]: is CONFIG_TUN enabled in your kernel? modprobe tun failed with: modprobe: FATAL: Module tun not found in directory /lib/modules/6.8.12-5-pve Dec 29 16:23:23 nginxproxymanager tailscaled[634]: tun module not loaded nor found on disk Dec 29 16:23:23 nginxproxymanager tailscaled[634]: wgengine.NewUserspaceEngine(tun “tailscale0”) error: tstun.New(“tailscale0”): CreateTUN(“tailscale0”) failed; /dev/net/tun does not exist Dec 29 16:23:23 nginxproxymanager tailscaled[634]: flushing log. Dec 29 16:23:23 nginxproxymanager tailscaled[634]: logger closing down Dec 29 16:23:24 nginxproxymanager tailscaled[634]: getLocalBackend error: createEngine: tstun.New(“tailscale0”): CreateTUN(“tailscale0”) failed; /dev/net/tun does not exist Dec 29 16:23:24 nginxproxymanager systemd[1]: tailscaled.service: Main process exited, code=exited, status=1/FAILURE Dec 29 16:23:24 nginxproxymanager tailscaled[665]: TPM: error opening: stat /dev/tpmrm0: no such file or directory Dec 29 16:23:24 nginxproxymanager tailscaled[665]: logtail started Dec 29 16:23:24 nginxproxymanager tailscaled[665]: Program starting: v1.92.3-ta17f36b9b-ga4dc88aac, Go 1.25.5: []string{“/usr/sbin/tailscaled”, “–cleanup”} Dec 29 16:23:24 nginxproxymanager tailscaled[665]: LogID: e6162d241fd04f3372e9cde1bb50d0f5f0e122c5e3f85ebd6d01c6033a2cb41c Dec 29 16:23:24 nginxproxymanager tailscaled[665]: logpolicy: using $STATE_DIRECTORY, “/var/lib/tailscale” Dec 29 16:23:24 nginxproxymanager tailscaled[665]: dns: [rc=unknown ret=direct] Dec 29 16:23:24 nginxproxymanager tailscaled[665]: dns: using “direct” mode Dec 29 16:23:24 nginxproxymanager tailscaled[665]: dns: using *dns.directManager Dec 29 16:23:24 nginxproxymanager tailscaled[665]: dns: inotify: NewDirWatcher: context canceled Dec 29 16:23:24 nginxproxymanager tailscaled[665]: flushing log. Dec 29 16:23:24 nginxproxymanager tailscaled[665]: logger closing down Dec 29 16:23:24 nginxproxymanager systemd[1]: tailscaled.service: Failed with result ‘exit-code’. Dec 29 16:23:24 nginxproxymanager systemd[1]: tailscaled.service: Scheduled restart job, restart counter is at 3. Dec 29 16:23:24 nginxproxymanager systemd[1]: Stopped tailscaled.service – Tailscale node agent. Dec 29 16:23:24 nginxproxymanager systemd[1]: Starting tailscaled.service – Tailscale node agent… Dec 29 16:23:24 nginxproxymanager tailscaled[691]: TPM: error opening: stat /dev/tpmrm0: no such file or directory Dec 29 16:23:24 nginxproxymanager tailscaled[691]: logtail started Dec 29 16:23:24 nginxproxymanager tailscaled[691]: Program starting: v1.92.3-ta17f36b9b-ga4dc88aac, Go 1.25.5: []string{“/usr/sbin/tailscaled”, “–state=/var/lib/tailscale/tailscaled.state”, “–socket=/run/tailscale/tailscaled.sock”, “–port=41641”} Dec 29 16:23:24 nginxproxymanager tailscaled[691]: LogID: e6162d241fd04f3372e9cde1bb50d0f5f0e122c5e3f85ebd6d01c6033a2cb41c Dec 29 16:23:24 nginxproxymanager tailscaled[691]: logpolicy: using $STATE_DIRECTORY, “/var/lib/tailscale” Dec 29 16:23:24 nginxproxymanager tailscaled[691]: dns: [rc=unknown ret=direct] Dec 29 16:23:24 nginxproxymanager tailscaled[691]: dns: using “direct” mode Dec 29 16:23:24 nginxproxymanager tailscaled[691]: dns: using *dns.directManager Dec 29 16:23:24 nginxproxymanager tailscaled[691]: dns: inotify: NewDirWatcher: context canceled Dec 29 16:23:25 nginxproxymanager tailscaled[691]: wgengine.NewUserspaceEngine(tun “tailscale0”) … Dec 29 16:23:25 nginxproxymanager systemd[1]: Started tailscaled.service – Tailscale node agent. Dec 29 16:23:25 nginxproxymanager tailscaled[691]: Linux kernel version: 6.8.12-5-pve Dec 29 16:23:25 nginxproxymanager tailscaled[691]: is CONFIG_TUN enabled in your kernel? modprobe tun failed with: modprobe: FATAL: Module tun not found in directory /lib/modules/6.8.12-5-pve Dec 29 16:23:25 nginxproxymanager tailscaled[691]: tun module not loaded nor found on disk Dec 29 16:23:25 nginxproxymanager tailscaled[691]: wgengine.NewUserspaceEngine(tun “tailscale0”) error: tstun.New(“tailscale0”): CreateTUN(“tailscale0”) failed; /dev/net/tun does not exist Dec 29 16:23:25 nginxproxymanager tailscaled[691]: flushing log. Dec 29 16:23:25 nginxproxymanager tailscaled[691]: logger closing down Dec 29 16:23:25 nginxproxymanager tailscaled[691]: getLocalBackend error: createEngine: tstun.New(“tailscale0”): CreateTUN(“tailscale0”) failed; /dev/net/tun does not exist Dec 29 16:23:25 nginxproxymanager systemd[1]: tailscaled.service: Main process exited, code=exited, status=1/FAILURE Dec 29 16:23:25 nginxproxymanager tailscaled[722]: TPM: error opening: stat /dev/tpmrm0: no such file or directory Dec 29 16:23:25 nginxproxymanager tailscaled[722]: logtail started Dec 29 16:23:25 nginxproxymanager tailscaled[722]: Program starting: v1.92.3-ta17f36b9b-ga4dc88aac, Go 1.25.5: []string{“/usr/sbin/tailscaled”, “–cleanup”} Dec 29 16:23:25 nginxproxymanager tailscaled[722]: LogID: e6162d241fd04f3372e9cde1bb50d0f5f0e122c5e3f85ebd6d01c6033a2cb41c Dec 29 16:23:25 nginxproxymanager tailscaled[722]: logpolicy: using $STATE_DIRECTORY, “/var/lib/tailscale” Dec 29 16:23:25 nginxproxymanager tailscaled[722]: dns: [rc=unknown ret=direct] Dec 29 16:23:25 nginxproxymanager tailscaled[722]: dns: using “direct” mode Dec 29 16:23:25 nginxproxymanager tailscaled[722]: dns: using *dns.directManager Dec 29 16:23:25 nginxproxymanager tailscaled[722]: dns: inotify: NewDirWatcher: context canceled Dec 29 16:23:25 nginxproxymanager tailscaled[722]: flushing log. Dec 29 16:23:25 nginxproxymanager tailscaled[722]: logger closing down Dec 29 16:23:26 nginxproxymanager systemd[1]: tailscaled.service: Failed with result ‘exit-code’. Dec 29 16:23:26 nginxproxymanager systemd[1]: tailscaled.service: Scheduled restart job, restart counter is at 4. Dec 29 16:23:26 nginxproxymanager systemd[1]: Stopped tailscaled.service – Tailscale node agent. Dec 29 16:23:26 nginxproxymanager systemd[1]: Starting tailscaled.service – Tailscale node agent… Dec 29 16:23:26 nginxproxymanager tailscaled[748]: TPM: error opening: stat /dev/tpmrm0: no such file or directory Dec 29 16:23:26 nginxproxymanager tailscaled[748]: logtail started Dec 29 16:23:26 nginxproxymanager tailscaled[748]: Program starting: v1.92.3-ta17f36b9b-ga4dc88aac, Go 1.25.5: []string{“/usr/sbin/tailscaled”, “–state=/var/lib/tailscale/tailscaled.state”, “–socket=/run/tailscale/tailscaled.sock”, “–port=41641”} Dec 29 16:23:26 nginxproxymanager tailscaled[748]: LogID: e6162d241fd04f3372e9cde1bb50d0f5f0e122c5e3f85ebd6d01c6033a2cb41c Dec 29 16:23:26 nginxproxymanager tailscaled[748]: logpolicy: using $STATE_DIRECTORY, “/var/lib/tailscale” Dec 29 16:23:26 nginxproxymanager tailscaled[748]: dns: [rc=unknown ret=direct] Dec 29 16:23:26 nginxproxymanager tailscaled[748]: dns: using “direct” mode Dec 29 16:23:26 nginxproxymanager tailscaled[748]: dns: using *dns.directManager Dec 29 16:23:26 nginxproxymanager tailscaled[748]: dns: inotify: NewDirWatcher: context canceled Dec 29 16:23:26 nginxproxymanager tailscaled[748]: wgengine.NewUserspaceEngine(tun “tailscale0”) … Dec 29 16:23:26 nginxproxymanager systemd[1]: Started tailscaled.service – Tailscale node agent. Dec 29 16:23:26 nginxproxymanager tailscaled[748]: Linux kernel version: 6.8.12-5-pve Dec 29 16:23:26 nginxproxymanager tailscaled[748]: is CONFIG_TUN enabled in your kernel? modprobe tun failed with: modprobe: FATAL: Module tun not found in directory /lib/modules/6.8.12-5-pve Dec 29 16:23:26 nginxproxymanager tailscaled[748]: tun module not loaded nor found on disk Dec 29 16:23:26 nginxproxymanager tailscaled[748]: wgengine.NewUserspaceEngine(tun “tailscale0”) error: tstun.New(“tailscale0”): CreateTUN(“tailscale0”) failed; /dev/net/tun does not exist Dec 29 16:23:26 nginxproxymanager tailscaled[748]: flushing log. Dec 29 16:23:26 nginxproxymanager tailscaled[748]: logger closing down Dec 29 16:23:27 nginxproxymanager tailscaled[748]: getLocalBackend error: createEngine: tstun.New(“tailscale0”): CreateTUN(“tailscale0”) failed; /dev/net/tun does not exist Dec 29 16:23:27 nginxproxymanager systemd[1]: tailscaled.service: Main process exited, code=exited, status=1/FAILURE Dec 29 16:23:27 nginxproxymanager tailscaled[779]: TPM: error opening: stat /dev/tpmrm0: no such file or directory Dec 29 16:23:27 nginxproxymanager tailscaled[779]: logtail started Dec 29 16:23:27 nginxproxymanager tailscaled[779]: Program starting: v1.92.3-ta17f36b9b-ga4dc88aac, Go 1.25.5: []string{“/usr/sbin/tailscaled”, “–cleanup”} Dec 29 16:23:27 nginxproxymanager tailscaled[779]: LogID: e6162d241fd04f3372e9cde1bb50d0f5f0e122c5e3f85ebd6d01c6033a2cb41c Dec 29 16:23:27 nginxproxymanager tailscaled[779]: logpolicy: using $STATE_DIRECTORY, “/var/lib/tailscale” Dec 29 16:23:27 nginxproxymanager tailscaled[779]: dns: [rc=unknown ret=direct] Dec 29 16:23:27 nginxproxymanager tailscaled[779]: dns: using “direct” mode Dec 29 16:23:27 nginxproxymanager tailscaled[779]: dns: using *dns.directManager Dec 29 16:23:27 nginxproxymanager tailscaled[779]: dns: inotify: NewDirWatcher: context canceled Dec 29 16:23:27 nginxproxymanager tailscaled[779]: flushing log. Dec 29 16:23:27 nginxproxymanager tailscaled[779]: logger closing down Dec 29 16:23:27 nginxproxymanager systemd[1]: tailscaled.service: Failed with result ‘exit-code’. Dec 29 16:23:28 nginxproxymanager systemd[1]: tailscaled.service: Scheduled restart job, restart counter is at 5. Dec 29 16:23:28 nginxproxymanager systemd[1]: Stopped tailscaled.service – Tailscale node agent. Dec 29 16:23:28 nginxproxymanager systemd[1]: tailscaled.service: Start request repeated too quickly. Dec 29 16:23:28 nginxproxymanager systemd[1]: tailscaled.service: Failed with result ‘exit-code’. Dec 29 16:23:28 nginxproxymanager systemd[1]: Failed to start tailscaled.service – Tailscale node agent.
journalctl -u tailscaled -b --no-pager
핵심 로그:CreateTUN("tailscale0") failed; /dev/net/tun does not exist modprobe: FATAL: Module tun not found
여기서 원인을 찾을 수 있었다.
이 NPM은 LXC 컨테이너이고, /dev/net/tun 이 패스스루되지 않은 상태
컨테이너 안에서 modprobe tun 이 실패하는 건 정상이다. LXC에서는 Host가 가진 TUN 디바이스를 직접 마운트해줘야 한다.
4. Proxmox Host에서 해결 조치
(1) LXC 설정 파일 수정
nano /etc/pve/lxc/<CTID>.conf
아래 항목 추가:lxc.cgroup2.devices.allow: c 10:200 rwm lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file 0 0 features: keyctl=1,nesting=1
(2) 컨테이너 재시작
pct restart <CTID>
5. 컨테이너 내부에서 최종 확인
ls -l /dev/net/tun systemctl reset-failed tailscaled systemctl start tailscaled tailscale status
정상 출력 예시:100.97.x.x nginxproxymanager linux 100.115.x.x proxmox linux ...