Docker 컨테이너에서 Fathom Lite 설정
나는 최근에 내 웹사이트에서 방문자 통계를 수집하기 위해 Fathom을 가지고 놀았습니다. 저는 "Google 분석에 대한 간단하고 가벼운 프라이버시 우선 대안"이라는 약속을 정말 좋아합니다.
셀프 호스트를 원하는 사람들을 위해 lite version을 제공하는 것도 매력적이었습니다. 그들이 미리 빌드된 Docker 이미지를 제공하는 것을 보고 그것에 회전을 주고 싶어하는 것은 쉬운 일이 아닙니다. 모든 것이 작동하도록 약간의 구성이 필요했으며 다른 사람에게 도움이 될 경우를 대비하여 여기에 단계를 문서화했습니다(일명 6개월 후 나).
따라서 세부 사항을 살펴보기 전에 설정의 전체 그림은 다음과 같습니다.
내 호스트 컴퓨터에서 루트로:
mkdir /opt/fathom
fathom.conf
에 /opt/fathom
파일을 만듭니다.server {
server_name your.domain.name;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:7070;
}
}
위의
fathom.conf
파일을 nginx에서 사용할 컨테이너의 디렉토리에 매핑합니다..env
파일을 생성합니다(/opt/fathom에도 있음).FATHOM_SERVER_ADDR=":7070"
FATHOM_DATABASE_NAME="/app/config/fathom.db"
이
.env
파일은 포트 7070에서 fathom 서버를 시작하고 sqlite db 파일을 Docker 컨테이너의 /app/config
에 배치합니다.자, Docker 컨테이너를 시작하겠습니다.
sudo docker run -d -v /opt/fathom:/app/config -p 9090:8080 -p 80:80 --name fathom usefathom/fathom:latest ./fathom --config /app/config/.env server
와우!! 와우!! 와우!! 나는 당신이 생각하는 것을 알고 있습니다. 도대체 여기서 무슨 일이 벌어지고 있는 걸까요??!!!
이 docker 명령을 분석해 보겠습니다.
sudo docker run -d
- Docker 컨테이너를 실행합니다.-v /opt/fathom:/app/config
- 호스트 시스템( /opt/fathom
)의 볼륨을 Docker 컨테이너( /app/config
)의 디렉토리로 매핑합니다.-p 9090:8080 -p 80:80
- 컨테이너의 포트 8080을 호스트의 포트 9090으로 노출합니다. 두 번째 인수는 포트 80을 자체로 노출합니다. 이는 Let's Encrypt SSL 인증서를 생성하는 데 필요합니다.--name fathom
- 쉽게 참조할 수 있도록 컨테이너 이름을 지정합니다.usefathom/fathom:latest
- Fathom에서 제공하는 미리 빌드된 Docker 컨테이너를 풀다운합니다../fathom --config /app/config/.env server
- 방금 생성하고 컨테이너에 매핑한 .env
파일을 사용하여 Fathom 서버를 시작합니다.이제 실행 중인 Docker 컨테이너를 만들었으므로 다음을 사용하여 대화형 bash 셸을 사용하여 액세스할 수 있습니다.
sudo docker exec -it fathom /bin/bash
참고:
sudo
없이 실행하는 데 필요한 권한을 docker에 부여하지 않았습니다.컨테이너에 들어가면
/app
디렉토리에 있어야 합니다.추측 사용자를 만들어 봅시다.
fathom --config /app/config/.env user add --email="[email protected]" --password="strong-password"
nginx, certbot 및 certbot/nginx 플러그인을 설치합니다.
apk add certbot certbot-nginx nginx
참고: 사전 빌드된 Docker 컨테이너는 Alpine Linux 배포를 기반으로 합니다. 공교롭게도 내가 사용하고 있는 호스트 머신은 역시 Alpine Linux인 Linode입니다.
nginx가 사용할 수 있도록 이전에 생성된
fathom.conf
을 Symlink로 연결합니다.ln -s /app/config/fathom.conf /etc/nginx/conf.d/fathom.conf
Let's Encrypt에서 인증서 생성:
mkdir /run/nginx
certbot --nginx -d your-site.com
대답해야 할 일련의 질문이 있으며 완료되면 conf 파일에 대한 업데이트가 있습니다.
/etc/nginx/conf.d/fathom.conf
를 열고 업데이트된 섹션을 찾습니다. 다음과 같아야 합니다(발췌). listen 80; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/yoursite.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/yoursite.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
443
를 8080
로 바꾸면 최종 내용은 다음과 같아야 합니다.server {
server_name your.domain.name;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:7070;
}
listen 80; # managed by Certbot
listen 8080 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/yoursite.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/yoursite.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
nginx 실행:
nginx -t
nginx
아휴! 정말 많았어요! 이제
https://yourdomain.com:9090
로 이동하여 새로 설치된 Fathom Lite 대시보드를 확인하십시오!
Reference
이 문제에 관하여(Docker 컨테이너에서 Fathom Lite 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/grepliz/setting-up-fathom-lite-in-a-docker-container-3ifg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)