Thiết lập máy chủ owncloud và máy chủ rocket.chat trên một máy / ip phía sau bộ định tuyến


1

Tôi có kịch bản sau đây:

Tôi có một địa chỉ IP tĩnh từ nhà cung cấp internet của tôi. Tôi đã sử dụng điều đó trong nhiều năm nay trên một máy chủ raspbian nhỏ trên PI mâm xôi chạy owncloud.

Bây giờ tôi đã mua một hộp zotac mạnh hơn nhiều (bộ xử lý lõi tứ, RAM 8 GB, SSD 256 GB) và tôi đang cố gắng để cả máy chủ owncloud chạy trên https, cũng như máy chủ rocket.chat (tương tự Slack) Tất nhiên cũng nên chạy trên https.

Hộp Zotac chạy Ubuntu Server 18.04 LTS và nằm phía sau bộ định tuyến Airport Extreme. Tôi có 2 tên miền phụ khác nhau trên tên miền chính của tôi trỏ đến địa chỉ IP của tôi.

Tôi đã cấu hình định tuyến cho các cổng 80, 4438443 để tất cả được chuyển đến địa chỉ IP cục bộ của hộp zotac của tôi 192.168.1.33. Thí dụ:

enter image description here

Máy chủ owncloud (Apache 2 với PHP 7.2 và MySQL 5.7) hoạt động trên https://cloud.mydomain.example và bây giờ tôi muốn làm cho rocket.chat hoạt động trên https://chat.mydomain.example:8443hoặc thậm chí tốt hơn, chỉ đơn giản là trên https://chat.mydomain.com.

Rocket.chat được cài đặt nhanh chóng trong đó rocket.chat chạy trên máy chủ web caddy trên localhost:3000. Tôi đã cố gắng làm theo thiết lập https được mô tả trên https://rocket.chat/docs/installation/manual-installation/ubfox/snaps/autossl/ nhưng không thể làm cho nó hoạt động. Tôi cũng đã cố gắng thiết lập Apache chạy máy chủ owncloud để hoạt động như một proxy ngược như được mô tả trong https://stackoverflow.com/questions/8541182/apache-redirect-to-another-port , nhưng đã không quản lý để làm cho nó hoạt động.

Sau đó, tôi đã cố gắng thiết lập một máy chủ ảo cho cổng 8443 với tệp rocketchat.conf này:

<VirtualHost *:8443>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
    SSLCertificateKeyFile /etc/private/ssl/apache-selfsigned.key
    ServerAdmin admin@example.com
    ServerName localhost
    ProxyPreserveHost On

    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass / https://localhost:3000/
    ProxyPassReverse / https://localhost:3000/
</VirtualHost>

Tôi cũng không hiểu tại sao tôi không thể đơn giản làm cho caddy của tôi nghe trên cổng 8443 (và vẫn sử dụng https) trong khi Apache lắng nghe trên 80 và 443.

Đó sẽ là thiết lập tối ưu cho kịch bản của tôi? Các bước cần thiết phải làm là gì?

Câu trả lời:


2

Tôi nghĩ rằng tài liệu chính thức của Rocket.Chat đủ rõ ràng:

Chạy đằng sau Proxy đảo ngược SSL của Apache

Chạy cái này với quyền root:

apt-get update
apt-get install apache2
a2enmod proxy_http
a2enmod proxy
a2enmod ssl
a2enmod proxy_wstunnel
a2enmod rewrite

Thêm khóa riêng của bạn vào /etc/ssl/private/chat.domain.com.key

Khóa quyền: chmod 400 /etc/ssl/private/chat.domain.com.key

Thêm chứng chỉ của bạn vào /etc/ssl/certs/chat.domain.com.crt

Thêm trung gian của bạn vào /etc/ssl/certs/intermediate.ca.pem

Chỉnh sửa /etc/apache2/sites-enabled/rocketchat.conf và hãy chắc chắn sử dụng tên máy chủ thực tế của bạn thay cho tên máy chủ mẫu tên là your your_hostname.com.

<VirtualHost *:443>

ServerAdmin it@domain.com
ServerName chat.domain.com
ErrorLog /var/log/chat.domain.com_error.log
TransferLog /var/log/chat.domain.com_access.log
LogLevel info
SSLEngine On
SSLCertificateFile /etc/ssl/certs/chat.domain.com.crt
SSLCertificateKeyFile /etc/ssl/private/chat.domain.com.key
SSLCertificateChainFile /etc/ssl/certs/intermediate.ca.pem

<Location />
        Order allow,deny
        Allow from all
</Location>

RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*)           ws://localhost:3000/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*)           http://localhost:3000/$1 [P,L]

ProxyPassReverse / http://localhost:3000/
</VirtualHost>

Khởi động lại Apache: service apache2 restart

Khi nó nói

hãy chắc chắn sử dụng tên máy chủ thực tế của bạn   thay cho tên máy chủ mẫu của bạn là your your_hostname.com

nó có thể có nghĩa là

hãy chắc chắn sử dụng địa chỉ https bên ngoài thực tế của bạn   (ví dụ., https://www.example.com )   thay vì http://localhost:3000


Như tôi đã nói, cổng 443 đã được sử dụng trên Apache cho owncloud. Đó là lý do tại sao tôi thậm chí không bắt đầu cấu hình Apache2 như một proxy ngược với lời giải thích dài dòng đó. Tôi cần một sự khác biệt dựa trên tên máy chủ thực tế, không phải trên cổng. Đó là lý do tại sao tôi nhắm sử dụng cổng 8443. Hoặc bạn có thể có hai tệp máy chủ ảo khác nhau bắt đầu bằng <VirtualHost :*443>?
connexo

1
Vâng ! Bạn có thể sử dụng *: 443 cho nhiều vhost. Đảm bảo sử dụng Tên máy chủ khác nhau.
Craft

@connexo Đối với cổng 443, cơ chế cho phép bạn thực hiện việc này là Tên máy chủ .
Anaksunaman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.