CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c6d0209e4e72 local_discourse/app "/sbin/boot" 51 minutes ago Up 51 minutes 127.0.0.1:8880->80/tcp, 127.0.0.1:4443->443/tcp app
…그리고 여기는 app.yml 정보입니다:
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
expose:
- "127.0.0.1:8880:80" # http
- "127.0.0.1:4443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
db_shared_buffers: "2048MB"
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
UNICORN_WORKERS: 8
DISCOURSE_HOSTNAME: [redacted]
DISCOURSE_SMTP_ADDRESS: [redacted]
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: [redacted]
DISCOURSE_SMTP_PASSWORD: "[redacted]"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (선택 사항, 기본값 true)
DISCOURSE_SMTP_DOMAIN: [redacted]
DISCOURSE_NOTIFICATION_EMAIL: [redacted]
## Docker 컨테이너는 상태가 없으며(stateless), 모든 데이터는 /shared에 저장됩니다
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## 플러그인은 여기에 설치합니다
## 자세한 내용은 https://meta.discourse.org/t/19157 참조
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## 빌드 후 실행할 사용자 지정 명령
run:
- exec: echo "Beginning of custom commands"
- exec: echo "End of custom commands"
아, 이제 원인을 알겠다. 8880:80은 정상적으로 작동했고, 나는 4443:443 쪽만 테스트하고 있었다. 인증서 오류로 인해 해당 쪽은 작동하지 않았다. 가상 호스트 레벨의 웹서버에서 인증서를 설치하고 관리할 계획이다. 모든 설정이 정상적으로 작동하는 대로 관심 있는 분들을 위해 최종 해결책을 공유하겠다.
설치 환경
Hestia Control Panel (서버 관리용)
Apache2 (웹 서버)
Docker에서 실행 중인 Discourse를 Apache2로 리버스 프록시 설정
Let’sEncrypt는 리버스 프록시되지 않으며, www_root에서 Hestia가 관리
app.yml에서 unix 소켓을 설정하고 (재빌드):n```
“templates/web.socketed.template.yml”
2) app.yml에서 포트 매핑과 Let'sEncrypt를 제거하고 (재빌드)
- “templates/web.ssl.template.yml”
- “templates/web.letsencrypt.ssl.template.yml”
- “80:80” # http
- “443:443” # https
LETSENCRYPT_ACCOUNT_EMAIL: {your email, probably}
3) HestiaCP를 위한 대안적인 apache2.conf 템플릿을 다음과 같이 생성합니다 (hestiacp를 사용하지 않는 분들을 위해, %{replace 태그}%는 다른 apache2.conf 파일을 보면 꽤 표준적이고 명확한 것임을 알 수 있습니다. 가장 중요한 부분들은 %{replace 태그}%를 많이 사용하지 않습니다. 또한 설정에 따라 *standalone* 텍스트가 *socket-only*일 수 있습니다. 기억나지 않으면 /var/discourse/shared/ 디렉터리에 무엇이 있는지 확인해 보세요.
{Custom Template}.stpl
<VirtualHost %ip%:%web_ssl_port%>
ServerName %domain_idn%
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / unix:/var/discourse/shared/standalone/nginx.http.sock|http://localhost/
ProxyPassReverse / unix:/var/discourse/shared/standalone/nginx.http.sock|http://localhost/
ServerAdmin %email%
Alias /vstats/ %home%/%user%/web/%domain%/stats/
Alias /error/ %home%/%user%/web/%domain%/document_errors/
CustomLog /var/log/%web_system%/domains/%domain%.bytes bytes
CustomLog /var/log/%web_system%/domains/%domain%.log combined
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
<Directory %home%/%user%/web/%domain%/stats>
AllowOverride All
</Directory>
<Directory %sdocroot%>
AllowOverride All
SSLRequireSSL
Options +Includes -Indexes +ExecCGI
</Directory>
SSLEngine on
SSLVerifyClient none
SSLCertificateFile %ssl_crt%
SSLCertificateKeyFile %ssl_key%
%ssl_ca_str%SSLCertificateChainFile %ssl_ca%
IncludeOptional %home%/%user%/conf/web/%domain%/%web_system%.ssl.conf_*
{Custom Template}.tpl
<VirtualHost %ip%:%web_port%>
ServerName %domain_idn%
%alias_string%
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / unix:/var/discourse/shared/standalone/nginx.http.sock|http://localhost/
ProxyPassReverse / unix:/var/discourse/shared/standalone/nginx.http.sock|http://localhost/
RewriteEngine On
RewriteCond %{REQUEST_URI} !^.well-known/acme-challenge
RewriteRule ^(.*) https://%domain_idn%/$1 [R=301,L]
Alias /vstats/ %home%/%user%/web/%domain%/stats/
Alias /error/ %home%/%user%/web/%domain%/document_errors/
CustomLog /var/log/%web_system%/domains/%domain%.bytes bytes
CustomLog /var/log/%web_system%/domains/%domain%.log combined
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
<Directory %home%/%user%/web/%domain%/stats>
AllowOverride All
</Directory>
<Directory %sdocroot%>
AllowOverride All
Options +Includes -Indexes +ExecCGI
</Directory>
IncludeOptional %home%/%user%/conf/web/%domain%/%web_system%.conf_*