대부분 유저분들이 stable diffusion 쓰시면서
127.0.0.1:7860 이라는 내부주소를 사용해서 접속하실 겁니다.
분명 인터넷 브라우저로 들어가져서 폰이나 다른 컴에서 해도 될 것 같지만, 실제로는 컴퓨터 내부용이라 사용할 수 없습니다.
폰에서 간단하게 쓰거나, 외부에 나가서 쓰거나, 친구들과 쓰고 싶으신 분들을 위한 방법입니다.
1. gradio
1111오토매틱 webui의 경우, gradio를 사용하여 webui를 구현하고 있고, 따라서 gradio의 share 명령어를 통한 서버 공개가 가능합니다.
사용법도 간단합니다.
윈도우 유저의 경우 - stable diffusion 폴더 안의 webui_user.bat파일을 엽니다.
export COMMANDLINE_ARGS=--share
저장하고 닫습니다.
stable diffusion을 실행시키면 주소가 나타납니다.
.gradio.live로 끝나는 주소로 접속하면 됩니다.
본인이 아니더라도 주소만 있다면 접속 가능합니다.
리눅스 유저의 경우 - stable diffusion 폴더 안의 webui_user.sh파일을 엽니다.
.sh파일의 경우 안쪽이 좀 난잡한데
그냥 맨 윗줄에 엔터 하나 치고 띄어쓰기 한번 한 다음
export COMMANDLINE_ARGS="--share"
이런식으로 수정해 줍시다.
이런식,
저장하고 닫은 다음 stable diffusion을 실행시키면 윈도우와 같은 방식으로 주소가 나타납니다.
다만 gradio의 경우 열 때마다 주소가 바뀌고, 해외 레딧발 이슈로는 gradio 검색기로 gradio 서버에서 돌아가는 stable diffusion링크를 때려맞춰서 들어가는 경우가 있어서 그냥 저 상태로 쓰는것은 좋지 않습니다.
암호와 비밀번호를 추가해 줍시다.
윈도우, 리눅스 모두 아까 열었던 webui_user파일을 열어줍시다.
기존에 추가한
export COMMANDLINE_ARGS="--share" 를
export COMMANDLINE_ARGS="--share --gradio auth Id:PW"
저장하시면 됩니다.
ID에 ID를 설정하고, PW에 비밀번호를 설정합니다.
ex) ID에 1q2w3e, 비밀번호에 4r5t!
export COMMANDLINE_ARGS="--share --gradio-auth 1q2w3e:4r5t!"
이런 식으로 저장하면 됩니다.
export COMMANDLINE_ARGS=가 포함된 명령줄은 하나만 있어야 합니다.
여러개를 넣는게 아니라, 띄어쓰기 하나로 구분해서 넣습니다.
2. ngrok - gradio보다 좀더 보안성이 높다는 ngrok입니다.
우선 ngrok을 가입해야 합니다.
왼쪽 메뉴에서 your authtoken
뭔가 길다란 코드가 뜹니다. 복사해 줍시다.
이제 webui_user 파일을 열어줍시다.
이번에는 --share 대신 --ngrok=아까 복사한 코드
를 넣어줍니다. share 빼줍니다.
export COMMANDLINE_ARGS="--ngrok=아까 복사한 코드"
비밀번호를 넣고 싶다면 아까와 마찬가지로 gradio-auth명령어를 씁니다.
export COMMANDLINE_ARGS="--ngrok=아까 복사한 코드 --gradio-auth ID:PW"
접속주소는 gradio보다는 좀더 위에 나타납니다.
3. 포트포워딩, DDNS - 위의 gradio, ngrok의 경우 열때마다 주소가 바뀝니다. 엄청 귀찮습니다...
포트포워딩이나 DDNS 설정은 개인 공유기에 따라 다릅니다, 여기서 설명하기엔 복잡하므로...인터넷에 포트포워딩/DDNS 검색하시면 나옵니다.
포트포워딩에서 특정 포트를 열어줬다면, 예를 들어 7860포트를 열어줬다면
export COMMANDLINE_ARGS="--listen --port 7860"
이런 식으로 하면 됩니다.
포트포워딩은 자기 컴퓨터에 직접 연결되므로, gradio-auth는 꼭 쓰시는게 좋습니다.
export COMMANDLINE_ARGS="--listen --port 7860 --gradio-auth ID:PW"
접속주소는 아까 공유기에서 포트포워딩/DDNS설정할 때 만들었던 DDNS 주소를 사용합니다.
흔히 쓰이는 iptime공유기의 DDNS를 예로 들면
example.iptime.org:7860 이런 식입니다.
주소 뒤에 :설정한 포트번호
이런 식으로 붙이면 됩니다.
이제 밖에서도 자유로운 AI 그림뽑기가 가능합니다
요즘 gradio가 불안정해서 끊어지는경우가 잦더라구요 그리고 ngrok 보안보다는 속도때문에 쓰는 걸겁니다. 지금도 그러는지 모르겠는데 무료는 ssl을 안써서 공공장소의 wifi같은거 함부로 이용하다가 패킷 강탈당할 수 있어 보안성은 오히려 떨어지는 편입니다. 대응책으로 Cloudflared 가 있는데 클라우드플레어에서 제공하는 서비스입니다. PR(Pull request)에 보니깐 한국분이 구현한게 있더군요. 문제는 auto 1111 이 업데이트 안해준다고 해서 직접 코드를 수정해야될겁니다. https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/7396 개인적으로 이쪽을 쓰는게 속도나 안전성에서 좋을걸로 생각됩니다.
ngrok이 보안때문이 아니었군요..레딧 댓글에 대체제로 ngrok을 추천해서 보안 때문인줄 알았습니다. cloudflare는 지금 네임서버 승인 요청을 해 놨는데, 24시간 이내에 승인메일 준다 하고 승인이 안되서... 제가 아직 해보지 못해서 올리지 않았습니다.
cloudflare 에서 Cloudflared라는 터널링 서비스를 제공해주고 있는거에요 gradio랑 ngrok같은거에요 지금 하고 있는거랑은 다른거에요 ㅋ 가입이나 인증 절차 없이 바로 사용 가능합니다.
https://developers.cloudflare.com/cloudflare-one/connections/connect-apps
https://dash.cloudflare.com/1705b7de44ab170afd62f0152aae1aa2 여기서 하는게 아닌가요? cloudflare tunnel인줄 알았는데요
방법이 두가지인데 하나는 대시보드에서 하는거 하나는 cli로 할 수 있는 방법이 있어요 대시보드에서 하려면 가입을 해야되지만 cli로 하면 그런 절차가 필요 없거든요 그냥 https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation 받아서 로컬 아이피랑포트만 넘겨주면 웹주소로 접속할 수 있게 설정해줍니다.
오...감사합니다 좀더 읽어보고 해봐야겠네요
덕분에 성공했습니다! 근데 여전히 주소는 계속 바뀌는군요... 어짜피 포트포워딩 열어놔서 상관은 없긴 합니다 조언 감사합니다