11#! /bin/bash
2- # Module: Install Node Only
2+ # Module: Install Node
33
4- install_node_nginx () {
4+ install_node_caddy () {
55 # Load selfsteal templates module
66 load_selfsteal_templates_module
77
@@ -49,11 +49,7 @@ install_node_nginx() {
4949 exit 1
5050 fi
5151
52- SELFSTEAL_BASE_DOMAIN=$( extract_domain " $SELFSTEAL_DOMAIN " )
53-
54- unique_domains[" $SELFSTEAL_BASE_DOMAIN " ]=1
55-
56- cat > docker-compose.yml << EOL
52+ cat > docker-compose.yml << EOL
5753x-common: &common
5854 ulimits:
5955 nofile:
@@ -69,104 +65,85 @@ x-logging: &logging
6965 max-file: 5
7066
7167services:
72- remnawave-nginx:
73- image: nginx:1.28
74- container_name: remnawave-nginx
75- hostname: remnawave-nginx
76- <<: [*common, *logging]
77- network_mode: host
78- volumes:
79- - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
80- EOL
81- }
82-
83- installation_node () {
84- echo -e " ${COLOR_YELLOW}${LANG[INSTALLING_NODE]}${COLOR_RESET} "
85- sleep 1
86-
87- declare -A unique_domains
88- install_node_nginx
89-
90- declare -A domains_to_check
91- domains_to_check[" $SELFSTEAL_DOMAIN " ]=1
92-
93- handle_certificates domains_to_check " $CERT_METHOD " " $LETSENCRYPT_EMAIL "
94-
95- if [ -z " $CERT_METHOD " ]; then
96- local base_domain=$( extract_domain " $SELFSTEAL_DOMAIN " )
97- if [ -d " /etc/letsencrypt/live/$base_domain " ] && is_wildcard_cert " $base_domain " ; then
98- CERT_METHOD=" 1"
99- else
100- CERT_METHOD=" 2"
101- fi
102- fi
103-
104- if [ " $CERT_METHOD " == " 1" ]; then
105- local base_domain=$( extract_domain " $SELFSTEAL_DOMAIN " )
106- NODE_CERT_DOMAIN=" $base_domain "
107- else
108- NODE_CERT_DOMAIN=" $SELFSTEAL_DOMAIN "
109- fi
110-
111- cat >> /opt/remnanode/docker-compose.yml << EOL
112- - /dev/shm:/dev/shm:rw
113- - /var/www/html:/var/www/html:ro
114- command: sh -c 'rm -f /dev/shm/nginx.sock && exec nginx -g "daemon off;"'
115-
116- remnanode:
117- image: remnawave/node:latest
118- container_name: remnanode
119- hostname: remnanode
120- <<: [*common, *logging]
121- network_mode: host
122- cap_add:
123- - NET_ADMIN
124- environment:
125- - NODE_PORT=2222
126- - SECRET_KEY=$( echo -e " $CERTIFICATE " )
127- volumes:
128- - /dev/shm:/dev/shm:rw
68+ caddy:
69+ image: caddy:2.11.2
70+ container_name: caddy-remnawave
71+ hostname: caddy-remnawave
72+ <<: [*common, *logging]
73+ network_mode: host
74+ volumes:
75+ - ./Caddyfile:/etc/caddy/Caddyfile
76+ - /var/www/html:/var/www/html:ro
77+ - /dev/shm:/dev/shm:rw
78+ - caddy_data:/data
79+ command: sh -c 'rm -f /dev/shm/nginx.sock && caddy run --config /etc/caddy/Caddyfile --adapter caddyfile'
80+ environment:
81+ - CADDY_SOCKET_PATH=/dev/shm/nginx.sock
82+ - SELF_STEAL_DOMAIN=${SELFSTEAL_DOMAIN}
83+ healthcheck:
84+ test: ["CMD", "test", "-S", "/dev/shm/nginx.sock"]
85+ interval: 2s
86+ timeout: 5s
87+ retries: 15
88+ start_period: 5s
89+
90+ remnanode:
91+ image: remnawave/node:latest
92+ container_name: remnanode
93+ hostname: remnanode
94+ <<: [*common, *logging]
95+ network_mode: host
96+ cap_add:
97+ - NET_ADMIN
98+ environment:
99+ - NODE_PORT=2222
100+ - SECRET_KEY=$( echo -e " $CERTIFICATE " )
101+ volumes:
102+ - /dev/shm:/dev/shm:rw
103+
104+ volumes:
105+ caddy_data:
106+ name: caddy_data
107+ driver: local
108+ external: false
129109EOL
130110
131- cat > /opt/remnanode/nginx.conf << EOL
132- server_names_hash_bucket_size 64;
111+ cat > /opt/remnanode/Caddyfile << EOL
112+ {
113+ admin off
114+ servers {
115+ listener_wrappers {
116+ proxy_protocol
117+ tls
118+ }
119+ }
120+ auto_https disable_redirects
121+ }
133122
134- map \$ http_upgrade \$ connection_upgrade {
135- default upgrade;
136- "" close;
123+ http://{ \$ SELF_STEAL_DOMAIN} {
124+ bind 0.0.0.0
125+ redir https://{ \$ SELF_STEAL_DOMAIN}{uri} permanent
137126}
138127
139- ssl_protocols TLSv1.2 TLSv1.3;
140- ssl_ecdh_curve X25519:prime256v1:secp384r1;
141- 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-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
142- ssl_prefer_server_ciphers on;
143- ssl_session_timeout 1d;
144- ssl_session_cache shared:MozSSL:10m;
145- ssl_session_tickets off;
146-
147- server {
148- server_name $SELFSTEAL_DOMAIN ;
149- listen unix:/dev/shm/nginx.sock ssl proxy_protocol;
150- http2 on;
151-
152- ssl_certificate "/etc/nginx/ssl/$NODE_CERT_DOMAIN /fullchain.pem";
153- ssl_certificate_key "/etc/nginx/ssl/$NODE_CERT_DOMAIN /privkey.pem";
154- ssl_trusted_certificate "/etc/nginx/ssl/$NODE_CERT_DOMAIN /fullchain.pem";
155-
156- root /var/www/html;
157- index index.html;
158- add_header X-Robots-Tag "noindex, nofollow, noarchive, nosnippet, noimageindex" always;
128+ https://{\$ SELF_STEAL_DOMAIN} {
129+ bind unix/{\$ CADDY_SOCKET_PATH}
130+ root * /var/www/html
131+ try_files {path} /index.html
132+ file_server
159133}
160134
161- server {
162- listen unix:/dev/shm/nginx.sock ssl proxy_protocol default_server;
163- server_name _;
164- add_header X-Robots-Tag "noindex, nofollow, noarchive, nosnippet, noimageindex" always;
165- ssl_reject_handshake on;
166- return 444;
135+ :80 {
136+ bind 0.0.0.0
137+ respond 204
167138}
168139EOL
140+ }
141+
142+ installation_node_caddy () {
143+ echo -e " ${COLOR_YELLOW}${LANG[INSTALLING_NODE]}${COLOR_RESET} "
144+ install_node_caddy
169145
146+ ufw allow 80/tcp comment ' HTTP' > /dev/null 2>&1
170147 ufw allow from $PANEL_IP to any port 2222 > /dev/null 2>&1
171148 ufw reload > /dev/null 2>&1
172149
0 commit comments