Docker 컨테이너에서 Fathom Lite 설정

사진 제공: Markus Winkler on Unsplash

나는 최근에 내 웹사이트에서 방문자 통계를 수집하기 위해 Fathom을 가지고 놀았습니다. 저는 "Google 분석에 대한 간단하고 가벼운 프라이버시 우선 대안"이라는 약속을 정말 좋아합니다.

셀프 호스트를 원하는 사람들을 위해 lite version을 제공하는 것도 매력적이었습니다. 그들이 미리 빌드된 Docker 이미지를 제공하는 것을 보고 그것에 회전을 주고 싶어하는 것은 쉬운 일이 아닙니다. 모든 것이 작동하도록 약간의 구성이 필요했으며 다른 사람에게 도움이 될 경우를 대비하여 여기에 단계를 문서화했습니다(일명 6개월 후 나).

따라서 세부 사항을 살펴보기 전에 설정의 전체 그림은 다음과 같습니다.


  • Fathom 서버가 포트 7070에서 실행 중입니다.
  • nginx 서버가 포트 8080에서 실행 중입니다.
  • 컨테이너의 포트 8080이 호스트의 포트 9090에 바인딩됩니다.


  • 내 호스트 컴퓨터에서 루트로:

    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
    
    
    

    4438080로 바꾸면 최종 내용은 다음과 같아야 합니다.

    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 대시보드를 확인하십시오!

    좋은 웹페이지 즐겨찾기