Firefish를 설치해보자 (비전문가 대상)

nginx와 보안연결 설정하기 (letsencrypt certbot)

firefish는 실행했으니, 이번엔 거기에 접속할 수 있도록 nginx를 설정해주고, 자물쇠를 달아서 보안연결로 만들어줍시다.

80, 443 포트로 접속하면 웹서버 nginx가 반겨줍니다

nginx(엔진엑스)에 대해 앞에서 잠깐 가볍게 설명했었죠?

여러분이 인터넷 브라우저의 주소창에 주소를 입력하면

  • 도메인 주소 (예시: lake.naru.cafe)
  • -> IP 주소 (예시: 123.123.234.5)
  • -> 해당 컴퓨터의 특정한 포트
    • (보안 연결:) https:// 가 붙은 주소는 443 포트로 접속합니다.
    • (비보안 연결:) http:// 가 붙은, s가 없는 주소는 80 포트로 접속합니다.
    • 접속할 포트를 주소에 따로 명시해줄수도 있어요.

이런 경로로 접속해서, 마침내 우리가 빌린 컴퓨터에서 멈추지 않고 실행되고 있는 nginx 프로그램에 도달하게 됩니다.

nginx 프로그램은 설정에 따라 사용자의 접속을 다음과 같이 처리합니다.

  • (웹서버 역할:) 웹페이지를 돌려주거나 (index.html 등)
  • (프록싱 역할:) 다른 프로그램으로 가는 관문처럼 동작해요. (톨게이트라던지)
    • 다른 프로그램에게 요청을 전달해준 뒤,
    • 그 프로그램이 응답하면 사용자한테 돌아온 대답을 보내주죠.

지금 하려는 게 두 번째 역할이에요. 아까 그림 생각나시나요?

앞으로 우리는 nginx한테, 사용자한테 요청이 들어오면

  • 바깥 ( 사용자:몰?루_포트 ) 에서
  • nginx ( 이_컴퓨터:443포트 ) 로 들어온 요청을
  • firefish ( 이_컴퓨터:3000포트 ) 로 전달해달라는

설정을 넣을 겁니다.

이렇게 하는 이유는, firefish 에서 직접적으로 보안연결을 구성하는... 자물쇠를 다는 걸 지원하지 않기 때문이에요. nginx가 대신 해줘야 하죠. 잠깐, 자물쇠라구요?

인증서와 자물쇠, 그걸 무료로, 자동으로 해주는 letsencrypt

보안연결은 내용을 암호화해서 보낸다

비보안연결(http)을 사용해서 사이트에 접속하면, 통신하는 내용을 전달해주는 사람도 그 내용을 열어볼 수 있습니다. 그렇다면 보안연결(https)은 어떻게 통신을 전달해주는 기계들이 내용을 열어보지 못하는 것일까요?

정답은 암호화입니다. 보안연결(https)은 통신하려는 내용을 암호화해서 보내게 됩니다.

안전한 암호화에는 공개키와 비밀키가 필수

그렇다면 암호화는 어떻게 할까요? 못 알아보게 암호화하는 키(key)와, 원래 내용으로 복구하는 복호화하는 키(key)가 서로 다른 "공개키 암호화" (다른 말로 비대칭 암호화) 방식을 사용합니다.

  • 공개키 (public key): 암호화용
    • 이름대로 누구한테나 보여줘도 되는 공개적인 키입니다.
    • 못 알아보게 암호화하는 데 사용됩니다.
  • 비밀키 (private key): 복호화용
    • 나만 가지고 있고, 누구한테도 보여주면 안 되는 키입니다.
    • 암호화된 내용을 알아볼 수 있게 복구하는데 사용됩니다.

이걸 가지고 통신을 암호화를 하는 방식은 cloudflare의 학습 센터에서 더 자세하게 알아봅시다. (사실은 저도 잘못 알고 있던 부분이 있어서...) 지금은 그게 중요하지 않고, 암호화를 하기 위해서는 키가 필요하다는 게 중요해요.

(* 초기에 서로 정보를 주고받기 위해 비대칭 암호화를 사용하고, 그 뒤에는 공개키와 비밀키가 같은 대칭키(세션 전용 키)를 사용한다네요.)

인증서로 서버의 공개키를 제 3자가 인증해야 한다

그리고, 서버의 공개키가 서버의 것이 맞다는 걸 인증해줄, 제 3의 인증기관이 만들어준 인증서(진짜 문서가 아니고 디지털 서명)이 필요하죠. 이게 중요합니다. 암호화를 하려면 인증서가 필요합니다.

예를 들어서, "공개키_A" 는 "lake.naru.cafe" 에 연결된 서버의 것이 맞다고 사전에 인증해줄 제 3자 인증기관이 필요한 상황입니다. 그걸 사전에 인증해준 것을 증명하는 전자서명이 "인증서" 입니다. (인증서도 암호화 기술을 사용하는지라, 실제 친필 서명 같은 게 들어있지는 않습니다.)

이걸 무료로, 그것도 자동으로 해주는 곳이 있다고?

인증서의 발급은 원래는 유료였습니다. 인증해주는 기관이 있어야 하니까 당연했죠. 하지만 암호화는 많은 곳에서 할 수록 좋은 거 아니겠습니까?

그래서 비영리기관 ISRG에서 발 벗고 나섰습니다. Let's Encrypt. 재치있게(?) 번역하자면 "우리 암호화해요~" 라는 무료 서비스입니다.

앞으로 nginx(*엔진엑스)를 설정하면서 이 무료 서비스에서 제공하는 자동 인증서 발급 프로그램인 "Certbot" 이라는 프로그램을 사용할 것입니다.

NGINX의 설정파일을 만들자

nginx는 유명한 프로그램이어서, 이번처럼 앞에서 보안연결을 대신 해줄 프로그램(*리버스 프록시라고 불러요)이 필요한 프로그램의 경우 개발진이 만든 설정파일을 공개하기도 합니다.

그래서 Firefish 프로젝트에서 공개해준 nginx 설정파일을 사용할건데요, 그 전에 nginx의 설정파일이 (1) 어디에 (2) 어떻게 구성되어있는지 살펴봅시다.

/etc/nginx/nginx.conf - 메인 설정 파일

이번에는 less 라는 프로그램을 사용해보겠습니다. less는 파일을 편집은 하지 않고 읽기만 할 때에 사용되는 프로그램입니다.

nginx의 메인 설정파일은 /etc/nginx/nginx.conf 파일입니다. /etc/ 에는 컴퓨터에 설치된 여러 프로그램들의 전역(global) 설정들이 모여있어요.

sudo less /etc/nginx/nginx.conf

Shift + g (대문자 G) 를 입력하면 제일 끝으로 갑니다. (이런 단축키는 고급 편집기인 vi / vim 과 유사하네요. 어려우니까 이번엔 안 배울거지만요!)

"#" 로 비활성화(주석)처리 되지 않은 부분 중 제일 끝에, 다음과 같은 부분이 있습니다.

http {
# 생략
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*; # 여기에 주목
}

"include"가 있습니다. /etc/nginx/sites-enabled/ 안에 있는 파일의 내용을 전부 여기에 포함한다는 뜻입니다. 그렇습니다. 실제 사이트별 설정 파일은, 그러니까 우리가 만들어야 하는 firefish의 nginx 설정은 sites-enabled 폴더에 들어가야 합니다.

/etc/nginx/sites-available 폴더와 sites-enabled 폴더

하지만 보통 sites-enabled 폴더에 바로 설정파일을 쓰지는 않습니다. 일반적으로 쓰이는 방법은 sites-avilable 폴더 안에 설정파일을 만들고, /etc/nginx/sites-enabled 폴더로 바로가기 (심볼릭 링크라고 불러요) 를 만드는 방법입니다.

  • /etc/nginx/sites-available 폴더: nginx의 사이트별 설정파일이 들어가는 폴더
    • firefish의 설정파일을 여기에 만들겁니다.
  • /etc/nginx/sites-enabled 폴더: 실제로 활성화한 설정파일의 바로가기가 들어가는 폴더
    • 위에서 만든 파일의 바로가기를 여기에 넣을 것입니다.

설정 파일을 넣고 바로가기를 만들자

firefish 프로젝트에서 제공해주는 공식 nginx 설정파일은 이쪽입니다. (wget이나 curl로 직접 받으려면 이 쪽)

파일은 /etc/nginx/sites-avilable/firefish.nginx 에 저장하겠습니다.

sudo wget -O /etc/nginx/sites-available/firefish.nginx https://git.joinfirefish.org/firefish/firefish/-/raw/develop/firefish.nginx.conf

실행 예시

ch@firefish-server:~$ sudo wget -O /etc/nginx/sites-available/firefish.nginx https://git.joinfirefish.org/firefish/firefish/-/raw/develop/firefish.nginx.conf
--2023-08-28 16:00:03--  https://git.joinfirefish.org/firefish/firefish/-/raw/develop/firefish.nginx.conf
Resolving git.joinfirefish.org (git.joinfirefish.org)... 192.99.201.173, 2607:5300:60:5ead::ff:cafe
Connecting to git.joinfirefish.org (git.joinfirefish.org)|192.99.201.173|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2370 (2.3K) [text/plain]
Saving to: ‘/etc/nginx/sites-available/firefish.nginx’

/etc/nginx/sites-available/firefish.nginx          100%[=============================================================================================================>]   2.31K  --.-KB/s    in 0s

2023-08-28 16:00:04 (1.02 GB/s) - ‘/etc/nginx/sites-available/firefish.nginx’ saved [2370/2370]

ch@firefish-server:~$

바로가기도 만들겠습니다. 바로가기를 만드는 ln 이라는 명령어에, "심볼릭 링크" 형태로 만드라는 -s 옵션을 붙입니다. 리눅스의 바로가기는 여러 종류가 있거든요. (사실 나머지는 저도 잘 몰라요)

sudo ln -s /etc/nginx/sites-available/firefish.nginx /etc/nginx/sites-enabled/firefish.nginx

실행 예시

ch@firefish-server:~$ sudo ln -s /etc/nginx/sites-available/firefish.nginx /etc/nginx/sites-enabled/firefish.nginx
ch@firefish-server:~$ ls -al /etc/nginx/sites-enabled/
total 8
drwxr-xr-x 2 root root 4096 Aug 28 16:02 .
drwxr-xr-x 8 root root 4096 Aug 12 09:45 ..
lrwxrwxrwx 1 root root   34 Aug 12 09:45 default -> /etc/nginx/sites-available/default
lrwxrwxrwx 1 root root   41 Aug 28 16:02 firefish.nginx -> /etc/nginx/sites-available/firefish.nginx
ch@firefish-server:~$

설정파일의 서버 주소를 변경하자

설정파일을 수정하기도 해야 합니다.

nginx를 사용하면 여러 도메인을 한 컴퓨터에서 운영할수도 있는데요, 이걸 위해서 서버 주소가 설정파일에 들어있거든요.

sudo nano /etc/nginx/sites-enabled/firefish.nginx

파일 내용 중, example.tld 라고 되어있는 부분을 모두 이전에 구매했던 자신의 도메인으로 바꾸시면 됩니다. 저는 lake.naru.cafe 가 되겠네요. Ctrl + O 후 엔터 로 저장하고, Ctrl + X 로 나가시면 됩니다. 이젠 익숙하시죠?

# For WebSocket
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_temp_path=off;

server {
    listen 80;
    listen [::]:80;
    # 여기를 수정했어요!
    server_name lake.naru.cafe;

    # For SSL domain validation
    root /var/www/html;
    location /.well-known/acme-challenge/ { allow all; }
    location /.well-known/pki-validation/ { allow all; }
    location / { return 301 https://$server_name$request_uri; }
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    # 여기를 수정했어요!
    server_name lake.naru.cafe;

    ssl_session_timeout 1d;
    ssl_session_cache shared:ssl_session_cache:10m;
    ssl_session_tickets off;

    # To use Let's Encrypt certificate
    # 여기도 수정했어요!
    ssl_certificate     /etc/letsencrypt/live/lake.naru.cafe/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/lake.naru.cafe/privkey.pem;

 nginx의 설정을 업데이트해서 당장 접속해보시고 싶으시겠지만, 아직 인증서가 없기 때문에 nginx가 "너가 적어놓은 거기에 인증서 파일이 없는데! 설정에 오류 있어!" 하고 설정파일을 거부할 것입니다.

실행 예시

ch@firefish-server:~$ sudo nginx -s reload
nginx: [emerg] cannot load certificate "/etc/letsencrypt/live/lake.naru.cafe/fullchain.pem": BIO_new_file() failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/etc/letsencrypt/live/lake.naru.cafe/fullchain.pem, r) error:10000080:BIO routines::no such file)
ch@firefish-server:~$

거봐요 안 된대잖아요. 인증서를 발급받으러 갑시다.

Let's Encrypt를 설정하자

이제 암호화를 위한 인증서를 발급하고 설정해줍시다.

Certbot 설치

Let's Encrypt의 certbot은 간단하게 설치할 수 있습니다.

(비영리단체 EFF의 공식 가이드)

sudo snap install --classic certbot

snap 은 snapcraft라고 부르는 프로그램 설치 관리자... (패키지 매니저) 인데, 우분투에서 밀어주고 있는 친구입니다. snap을 별로 좋아하지는 않는데 공식이 이렇게 깔라고 하니 어쩔 수 없죠 뭐,,,

꼼수를 부려서 Certbot의 nginx 플러그인을 사용하자

certbot으로 인증서를 편하게 발급받으려면 Certbot의 nginx 플러그인을 이용하는 게 좋습니다. 그러려면

  • (1) nginx 설정파일이 정상이고
  • (2) 인증서를 발급받으려는 사이트에 비보안연결(http, 80포트) 로 접속할 수 있어야 하는

조건이 있습니다. 물론 --certonly 옵션을 쓰는 등의 다른 방법도 있어요. 하지만 귀찮잖아요?

그래서 설정파일을 수정해서 먼저 비보안연결(http, 80포트) 로 연결되게 만듭니다.

sudo nano /etc/nginx/sites-enabled/firefish.nginx

지금 편집하는 내용은 나중에 되돌릴... 그냥 써도 될 거 같아요. (후술)

  • listen 80 이 있는 비보안연결 부분은 전부 제일 앞에 "#" 기호를 넣어서 비활성화(주석처리) 해줍시다.
  • listen 443 이 있는 보안연결 부분을 비보안연결 (80포트) 로 바꿉니다.
    • ssl_ 로 시작하는 부분의 앞에 모두 "#" 기호를 넣어서 비활성화(주석처리) 해줍시다.
    • 443 이 있는 두 줄도 "#" 기호를 넣어서 주석처리하고, 아래에 listen 80; 을 추가합니다.
      • listen [::]:80; 은 IPv6 용이므로 굳이 추가하실 필요는 없습니다.
#server {
#    listen 80;
#    listen [::]:80;
#    server_name lake.naru.cafe;

    # For SSL domain validation
#    root /var/www/html;
#    location /.well-known/acme-challenge/ { allow all; }
#    location /.well-known/pki-validation/ { allow all; }
#    location / { return 301 https://$server_name$request_uri; }
#}

server {
#    listen 443 ssl http2;
#    listen [::]:443 ssl http2;
    # 아래 부분 추가
    listen 80;

    server_name lake.naru.cafe;

    # SSL로 시작하는 부분은 보안연결 관련이니까 전부 비활성화해줍시다.
#    ssl_session_timeout 1d;
#    ssl_session_cache shared:ssl_session_cache:10m;
#    ssl_session_tickets off;

    # To use Let's Encrypt certificate
#    ssl_certificate     /etc/letsencrypt/live/lake.naru.cafe/fullchain.pem;
#    ssl_certificate_key /etc/letsencrypt/live/lake.naru.cafe/privkey.pem;

    # To use Debian/Ubuntu's self-signed certificate (For testing or before issuing a certificate)
    #ssl_certificate     /etc/ssl/certs/ssl-cert-snakeoil.pem;
    #ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;

    # SSL protocol settings
#    ssl_protocols TLSv1.2 TLSv1.3;
#    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-A>#    ssl_prefer_server_ciphers off;
#    ssl_stapling on;
#    ssl_stapling_verify on;

이제 certbot 명령어로 인증서를 발급하면 됩니다. --nginx 옵션을 넣어서 플러그인을 활성화합시다.

sudo certbot --nginx

실행 예시

ch@firefish-server:~$ sudo certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): example_email@example.com  # 자신의 이메일을 넣어주세요.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y   # 약관동의

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: n   # 위의 내용을 읽어보고 결정해주세요. EFF 재단의 홍보메일을 받겠냐는 겁니다.
Account registered.

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: lake.naru.cafe   # 아까 설정한 설정이 여기에 나오죠?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1  # 보안연결 인증서를 발급받고 싶은 사이트 (여기서는 1번)
Requesting a certificate for lake.naru.cafe

Successfully received certificate.  # 헤헤 성공이지롱!
Certificate is saved at: /etc/letsencrypt/live/lake.naru.cafe/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/lake.naru.cafe/privkey.pem
This certificate expires on 2023-11-26.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for lake.naru.cafe to /etc/nginx/sites-enabled/firefish.nginx
Congratulations! You have successfully enabled HTTPS on https://lake.naru.cafe

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ch@firefish-server:~$

성공했습니다.

이렇게 하면 지금 당장도 접속이 가능합니다.

원래대로라면 아까 비활성화해놓은 보안연결 관련 설정을 복원했겠지만, 자세히 보니 certbot이 만들어주는 설정도 꽤 괜찮은 것 같네요. listen 443 ssl 뒤에 http2 만 붙여주면 될 것 같습니다. ( # managed by Certbot 부분을 지우면 무슨 일이 일어날지도 잘 모르겠고, 그냥 냅두자는거죠.)

        proxy_cache_use_stale updating;
        add_header X-Cache $upstream_cache_status;
    }
    
    #              vvvvv 여기만 추가해줬어요
    listen 443 ssl http2; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/lake.naru.cafe/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/lake.naru.cafe/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

}

sudo nginx -s reload : nginx의 설정을 갱신하자

이제 nginx의 설정을 다시 불러옵시다.

두 가지 방법이 있어요.

  • nginx 프로그램에 신호를 보내서 설정을 다시 로드하는 방법
    ( sudo nginx -s reload )
  • nginx 프로그램 자체를 다시 시작하는 방법
    ( sudo systemctl restart nginx )

앞의 방법을 선택하겠습니다. 굳이 재시작까지 할 필요는 없거든요.

혹시 설정파일이 올바른지 확인하시려면 sudo nginx -t 를 입력해보세요. 도움말은 sudo nginx -h 입니다.

sudo nginx -s reload

실행 예시

# 순서가... 거꾸로 같은데... 아무렴 어때요
ch@firefish-server:~$ sudo nginx -s reload
ch@firefish-server:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
ch@firefish-server:~$

접속 확인, 관리자 계정 생성

이제 접속이 가능해졌습니다. 만든 사이트에 접속해봅시다.

저는 lake.naru.cafe 네요!

만약 아래처럼 "502 bad gateway" 가 나온다면, 이전단계의 튜토리얼에서 실행했던 docker compose 가 실행중이 아닌거니까 돌아가서 실행하고 옵시다.

오오! 불고기! 불고기!

처음 생성하는 계정이 관리자 계정이므로, 계정은 생성해두고 계속 진행합시다.

인증서 자동 갱신도 준비해놓자

많은 서버들이 3개월 뒤에 사라집니다. 이유는 단순합니다. 보안 연결을 위한 인증서가 갱신되지 않아서입니다. Let's Encrypt에서 발급해주는 인증서는 자동 발급인 만큼 기간이 3개월로 짧거든요.

그래서 자동 갱신을 설정해놔야 하는데, 다행히도 certbot 에는 이미 이걸 설정해주는 기능이 존재합니다.

공식 가이드에 나온 대로 확인만 해볼까요.

# 인증서 갱신 시도, 하지만 실제로는 하지 않고 모의실행 (--dry-run)
sudo certbot renew --dry-run

# 시스템의 자동 갱신 타이머 확인
systemctl list-timers

 실행 예시

ch@firefish-server:~$ sudo certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/lake.naru.cafe.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for lake.naru.cafe

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
  /etc/letsencrypt/live/lake.naru.cafe/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ch@firefish-server:~$ systemctl list-timers
NEXT                        LEFT               LAST                        PASSED        UNIT                           ACTIVATES
# 생략
Tue 2023-08-29 10:06:32 UTC 17h left           Mon 2023-08-28 10:06:32 UTC 6h ago        systemd-tmpfiles-clean.timer   systemd-tmpfiles-clean.service
# 여기 있네요!
Tue 2023-08-29 11:22:00 UTC 18h left           n/a                         n/a           snap.certbot.renew.timer       snap.certbot.renew.service
Sun 2023-09-03 03:10:47 UTC 5 days left        Sun 2023-08-27 03:10:44 UTC 1 day 13h ago e2scrub_all.timer              e2scrub_all.service
# 생략

13 timers listed.
Pass --all to see loaded but inactive timers, too.
ch@firefish-server:~$

next: 이미지 올릴 곳 마련하기

이제 서버가 올라갔고, 다른 서버와 상호작용도 할 수 있게 되었습니다.

하지만 아직 아무것도 하지는 마세요! 외부 계정을 검색하지도 마세요. 누구에게도 서버가 열렸다는 사실을 아직은 알려주지 마세요. 불안하다면, docker compose down 으로 서버를 종료해두세요.

우리가 빌린 서버의 저장공간은 매우 좁습니다. 그런 서버에 이미지 파일을 계속 올리면 금방 용량이 최대치로 차올라서 이용할 수 없게 될 거에요. 그래서 외부의 이미지 저장공간을 빌려야 합니다.

해당 설정은 제어판 - 오브젝트 스토리지 란에 있습니다.

(여담이지만, firefish나 misskey 가 아닌 mastodon 같은 프로그램은 이 설정을 설치하기 전에 설정파일에 미리 했어야 했어요.)

 

댓글

댓글 본문