@@ -46,39 +46,39 @@ endpoint restrictions, placeholders, and flexible configuration.
4646Get the latest version of the ` docker-compose.yaml ` file:
4747
4848``` yaml
49- services\:\
50- \ \ signal\ -api\:\
51- \ \ \ \ image\:\ bbernhard\ /signal\ -cli\ -rest\ -api\ :latest\
52- \ \ \ \ container_name\:\ signal\ -api\
53- \ \ \ \ environment\:\
54- \ \ \ \ \ \ \-\ MODE\ =normal\
55- \ \ \ \ volumes\:\
56- \ \ \ \ \ \ \-\ \.\ /data\:\ /home\/\ .local\ /share\ /signal\ -cli\
57- \ \ \ \ restart\:\ unless\ -stopped\
58- \ \ \ \ networks\:\
59- \ \ \ \ \ \ backend\:\
60- \ \ \ \ \ \ \ \ aliases\:\
61- \ \ \ \ \ \ \ \ \ \ \-\ signal\ -api\
62- \
63- \ \ secured\ -signal\:\
64- \ \ \ \ image\:\ ghcr\ .io\ /codeshelldev\ /secured\ -signal\ -api\ :latest\
65- \ \ \ \ container_name\:\ secured\ -signal\
66- \ \ \ \ environment\:\
67- \ \ \ \ \ \ API__URL\:\ http\:\/\ /signal\ -api\ :8080\
68- \ \ \ \ \ \ SETTINGS__VARIABLES__RECIPIENTS\:\
69- \ \ \ \ \ \ \ \ \'\[\ +123400002\,\ \ +123400003\,\ \ +123400004\]\'\
70- \ \ \ \ \ \ SETTINGS__VARIABLES__NUMBER\:\ \"\ +123400001\"\
71- \ \ \ \ \ \ API__TOKENS\:\ \'\ [LOOOOOONG_STRING\]\'\
72- \ \ \ \ ports\:\
73- \ \ \ \ \ \ \-\ \ "8880\ :8880\"\
74- \ \ \ \ restart\:\ unless\ -stopped\
75- \ \ \ \ networks\:\
76- \ \ \ \ \ \ backend\:\
77- \ \ \ \ \ \ \ \ aliases\:\
78- \ \ \ \ \ \ \ \ \ \ \-\ secured\ -signal\ -api\
79- \
80- networks\:\
81- \ \ backend\ :
49+ services :
50+ signal-api :
51+ image : bbernhard/signal-cli-rest-api:latest
52+ container_name : signal-api
53+ environment :
54+ - MODE=normal
55+ volumes :
56+ - . /data: /home/ .local/share/signal-cli
57+ restart : unless-stopped
58+ networks :
59+ backend :
60+ aliases :
61+ - signal-api
62+
63+ secured-signal :
64+ image : ghcr.io/codeshelldev/secured-signal-api:latest
65+ container_name : secured-signal
66+ environment :
67+ API__URL : http:/ /signal-api:8080
68+ SETTINGS__VARIABLES__RECIPIENTS :
69+ ' [ +123400002, +123400003, +123400004] '
70+ SETTINGS__VARIABLES__NUMBER : " +123400001"
71+ API__TOKENS : ' [LOOOOOONG_STRING] '
72+ ports :
73+ - " 8880:8880"
74+ restart : unless-stopped
75+ networks :
76+ backend :
77+ aliases :
78+ - secured-signal-api
79+
80+ networks :
81+ backend :
8282` ` `
8383
8484And add secure Token(s) to ` api.tokens`. See [API TOKENs](#api-tokens).
@@ -94,109 +94,109 @@ And add secure Token(s) to `api.tokens`. See [API TOKENs](#api-tokens).
9494Take a look at the [traefik](https://github.com/traefik/traefik) implementation :
9595
9696` ` ` yaml
97- services\: \
98- \ \ secured\ - signal\: \
99- \ \ \ \ image\: \ ghcr\ . io\ / codeshelldev\ / secured\ - signal\ - api\ : latest\
100- \ \ \ \ container_name\: \ secured\ - signal\
101- \ \ \ \ environment\: \
102- \ \ \ \ \ \ API__URL\: \ http\: \/\ / signal\ - api\ : 8080\
103- \ \ \ \ \ \ SETTINGS__VARIABLES__RECIPIENTS\: \
104- \ \ \ \ \ \ \ \ \'\[\ + 123400002\,\ + 123400003\,\ + 123400004\]\' \
105- \ \ \ \ \ \ SETTINGS__VARIABLES__NUMBER\: \ \" \ + 123400001\" \
106- \ \ \ \ \ \ API__TOKENS\: \ \'\ [ LOOOOOONG_STRING\]\' \
107- \ \ \ \ labels\: \
108- \ \ \ \ \ \ \- \ traefik\ . enable\ = true\
109- \ \ \ \ \ \ \- \ traefik\ . http\ . routers\ . signal\ - api\ . rule\ = Host\(\ ` signal\ - api\ . mydomain\ . com\`\) \
110- \ \ \ \ \ \ \- \ traefik\ . http\ . routers\ . signal\ - api\ . entrypoints\ = websecure\
111- \ \ \ \ \ \ \- \ traefik\ . http\ . routers\ . signal\ - api\ . tls\ = true\
112- \ \ \ \ \ \ \- \ traefik\ . http\ . routers\ . signal\ - api\ . tls\ . certresolver\ = cloudflare\
113- \ \ \ \ \ \ \- \ traefik\ . http\ . routers\ . signal\ - api\ . service\ = signal\ - api\ - svc\
114- \ \ \ \ \ \ \- \ traefik\ . http\ . services\ . signal\ - api\ - svc\ . loadbalancer\ . server\ . port\ = 8880\
115- \ \ \ \ \ \ \- \ traefik\ . docker\ . network\ = proxy\
116- \ \ \ \ restart\: \ unless\ - stopped\
117- \ \ \ \ networks\: \
118- \ \ \ \ \ \ proxy\: \
119- \ \ \ \ \ \ backend\: \
120- \ \ \ \ \ \ \ \ aliases\: \
121- \ \ \ \ \ \ \ \ \ \ \- \ secured\ - signal\ - api\
122- \
123- networks\: \
124- \ \ backend\: \
125- \ \ proxy\: \
126- \ \ \ \ external\: \ true
97+ services:
98+ secured-signal:
99+ image: ghcr.io/codeshelldev/secured-signal-api:latest
100+ container_name: secured-signal
101+ environment:
102+ API__URL: http:/ /signal-api:8080
103+ SETTINGS__VARIABLES__RECIPIENTS:
104+ '[ +123400002, +123400003, +123400004]'
105+ SETTINGS__VARIABLES__NUMBER: " +123400001"
106+ API__TOKENS: ' [LOOOOOONG_STRING]'
107+ labels:
108+ - traefik.enable=true
109+ - traefik.http.routers.signal-api.rule=Host( ` signal-api.mydomain.com`)
110+ - traefik.http.routers.signal-api.entrypoints=websecure
111+ - traefik.http.routers.signal-api.tls=true
112+ - traefik.http.routers.signal-api.tls.certresolver=cloudflare
113+ - traefik.http.routers.signal-api.service=signal-api-svc
114+ - traefik.http.services.signal-api-svc.loadbalancer.server.port=8880
115+ - traefik.docker.network=proxy
116+ restart : unless-stopped
117+ networks :
118+ proxy :
119+ backend :
120+ aliases :
121+ - secured-signal-api
122+
123+ networks :
124+ backend :
125+ proxy :
126+ external : true
127127` ` `
128128
129129#### NGINX Proxy
130130
131131This is the [NGINX](https://github.com/nginx/nginx) ` docker-compose.yaml` file:
132132
133133` ` ` yaml
134- services\: \
135- \ \ secured\ - signal\: \
136- \ \ \ \ image\: \ ghcr\ . io\ / codeshelldev\ / secured\ - signal\ - api\ : latest\
137- \ \ \ \ container_name\: \ secured\ - signal\ - api\
138- \ \ \ \ environment\: \
139- \ \ \ \ \ \ API__URL\: \ http\: \/\ / signal\ - api\ : 8080\
140- \ \ \ \ \ \ SETTINGS__VARIABLES__RECIPIENTS\: \ \" \[\ + 123400002\,\ + 123400003\,\ + 123400004\] \" \
141- \ \ \ \ \ \ SETTINGS__VARIABLES__NUMBER\: \ \" \ + 123400001\" \
142- \ \ \ \ \ \ API__TOKENS\: \ \" \ [ LOOOOOONG_STRING\] \" \
143- \ \ \ \ restart\: \ unless\ - stopped\
144- \ \ \ \ networks\: \
145- \ \ \ \ \ \ backend\: \
146- \ \ \ \ \ \ \ \ aliases\: \
147- \ \ \ \ \ \ \ \ \ \ \- \ secured\ - signal\ - api\
148- \
149- \ \ nginx\: \
150- \ \ \ \ image\: \ nginx\ : latest\
151- \ \ \ \ container_name\: \ secured\ - signal\ - proxy\
152- \ \ \ \ volumes\: \
153- \ \ \ \ \ \ \- \ \. \ / nginx\ . conf\: \ / etc\ / nginx\ / conf\. d \ / default\ . conf\
154- \ \ \ \ \ \ \# \ Load\ SSL\ certificates\: \ cert\ . key\, \ cert\ . crt\
155- \ \ \ \ \ \ \- \ \. \ / certs\: \ / etc\ / nginx\ / ssl\
156- \ \ \ \ ports\: \
157- \ \ \ \ \ \ \- \ \ " 443\ : 443\" \
158- \ \ \ \ \ \ \- \ \ " 80\ : 80\" \
159- \ \ \ \ restart\: \ unless\ - stopped\
160- \ \ \ \ networks\: \
161- \ \ \ \ \ \ frontend\: \
162- \ \ \ \ \ \ backend\: \
163- \
164- networks\: \
165- \ \ backend\: \
166- \ \ frontend\ :
134+ services:
135+ secured-signal:
136+ image: ghcr.io/codeshelldev/secured-signal-api:latest
137+ container_name: secured-signal-api
138+ environment:
139+ API__URL: http:/ /signal-api:8080
140+ SETTINGS__VARIABLES__RECIPIENTS: "[ +123400002, +123400003, +123400004]"
141+ SETTINGS__VARIABLES__NUMBER: " +123400001"
142+ API__TOKENS: " [LOOOOOONG_STRING]"
143+ restart: unless-stopped
144+ networks:
145+ backend:
146+ aliases:
147+ - secured-signal-api
148+
149+ nginx:
150+ image: nginx:latest
151+ container_name: secured-signal-proxy
152+ volumes:
153+ - . /nginx.conf: /etc/nginx/conf.d /default.conf
154+ # Load SSL certificates: cert.key, cert.crt
155+ - . /certs: /etc/nginx/ssl
156+ ports:
157+ - "443:443"
158+ - "80:80"
159+ restart: unless-stopped
160+ networks:
161+ frontend:
162+ backend:
163+
164+ networks:
165+ backend:
166+ frontend:
167167` ` `
168168
169169Create a `nginx.conf` file in the `docker-compose.yaml` folder and mount it to `etc/nginx/conf.d/default.conf` :
170170
171171` ` ` conf
172- server\ \{ \
173- \ \ \ \ \# \ Allow\ SSL\ on\ Port\ 443\
174- \ \ \ \ listen\ 443\ ssl\; \
175- \
176- \ \ \ \ \# \ Add\ allowed\ hostnames\ which\ nginx\ should\ respond\ to\
177- \ \ \ \ \# \ \` _ \` \ for\ any\
178- \ \ \ \ server_name\ localhost\; \
179- \
180- \ \ \ \ ssl_certificate\ \ / etc\ / nginx\ / ssl\ / cert\ . crt\; \
181- \ \ \ \ ssl_certificate_key\ \ / etc\ / nginx\ / ssl\ / cert\ . key\; \
182- \
183- \ \ \ \ location\ \/\ \{ \
184- \ \ \ \ \ \ \ \ \# \ Use\ whatever\ network\ alias\ you\ set\ in\ the\ docker\ - compose\ file\
185- \ \ \ \ \ \ \ \ proxy_pass\ http\: \/\ / secured\ - signal\ - api\ : 8880\; \
186- \ \ \ \ \ \ \ \ proxy_set_header\ Host\ \; \
187- \ \ \ \ \ \ \ \ proxy_set_header\ X \ - Real\ - IP\ \; \
188- \ \ \ \ \ \ \ \ proxy_set_header\ X \ - Forwarded\ - For\ \; \
189- \ \ \ \ \ \ \ \ proxy_set_header\ X \ - Forwarded\ - Host\ \; \
190- \ \ \ \ \ \ \ \ proxy_set_header\ X \ - Fowarded\ - Proto\ \; \
191- \ \ \ \ \} \
192- \} \
193- \
194- \# \ Redirect\ HTTP\ to\ HTTPs\
195- server\ \{ \
196- \ \ \ \ listen\ 80\; \
197- \ \ \ \ server_name\ localhost\; \
198- \ \ \ \ return\ 301\ https\: \/\/ \; \
199- \ }
172+ server {
173+ # Allow SSL on Port 443
174+ listen 443 ssl;
175+
176+ # Add allowed hostnames which nginx should respond to
177+ # ` _` for any
178+ server_name localhost;
179+
180+ ssl_certificate /etc/nginx/ssl/cert.crt;
181+ ssl_certificate_key /etc/nginx/ssl/cert.key;
182+
183+ location / {
184+ # Use whatever network alias you set in the docker-compose file
185+ proxy_pass http:/ /secured-signal-api:8880;
186+ proxy_set_header Host ;
187+ proxy_set_header X -Real-IP ;
188+ proxy_set_header X -Forwarded-For ;
189+ proxy_set_header X -Forwarded-Host ;
190+ proxy_set_header X -Fowarded-Proto ;
191+ }
192+ }
193+
194+ # Redirect HTTP to HTTPs
195+ server {
196+ listen 80;
197+ server_name localhost;
198+ return 301 https://;
199+ }
200200```
201201
202202Lastly add your ` cert.key ` and ` cert.crt ` into your ` certs/ ` folder and mount it to ` /etc/nginx/ssl ` .
@@ -295,26 +295,26 @@ To change the internal config file location set `CONFIG_PATH` in your **Environm
295295This example config shows all of the individual settings that can be applied:
296296
297297``` yaml
298- \#\ Example\ Config\ \ (all\ configurations\ shown\)\
299- \
300- api\:\
301- \ \ port\:\ 8880\
302- \ \ url\:\ http\:\/\ /signal\ -api\ :8080\
303- \ \ tokens\:\ \ [token1\,\ token2\]\
304- \
305- logLevel\:\ INFO\
306- \
307- settings\:\
308- \ \ variables\:\
309- \ \ \ \ number\:\ \"\ +123400001\"\
310- \ \ \ \ recipients\:\ \[\"\ +123400002\"\,\ \ "group\ .id\"\,\ \ "user\ .id\"\]\
311- \
312- \ \ messageAliases\:\ \[\{\ alias\:\ \ "msg\"\,\ score\:\ 100\ \}\]\
313- \
314- \ \ blockedEndpoints\:\
315- \ \ \ \ \-\ \ /v1\ /about\
316- \ \ allowedEndpoints\:\
317- \ \ \ \ \-\ \ /v2\ /send
298+ # Example Config (all configurations shown)
299+
300+ api :
301+ port : 8880
302+ url : http:/ /signal-api:8080
303+ tokens : [token1, token2]
304+
305+ logLevel : INFO
306+
307+ settings :
308+ variables :
309+ number : " +123400001"
310+ recipients : [" +123400002", "group.id", "user.id"]
311+
312+ messageAliases : [{ alias: "msg", score: 100 }]
313+
314+ blockedEndpoints :
315+ - /v1/about
316+ allowedEndpoints :
317+ - /v2/send
318318` ` `
319319
320320#### Token Configs
@@ -326,13 +326,13 @@ This way you can permission tokens by further restricting or adding [Endpoints](
326326Here is an example :
327327
328328` ` ` yaml
329- tokens\:\ \ [LOOOONG_STRING\]\
330- \
331- overrides\:\
332- \ \ variables\:\ \#\ Disable\ Placeholder\
333- \ \ blockedEndpoints\:\ \#\ Disable\ Sending\
334- \ \ \ \ \-\ \ /v2\ /send\
335- \ \ messageAliases\:\ \#\ Disable\ Aliases
329+ tokens: [LOOOONG_STRING]
330+
331+ overrides:
332+ variables: # Disable Placeholder
333+ blockedEndpoints: # Disable Sending
334+ - /v2/send
335+ messageAliases: # Disable Aliases
336336` ` `
337337
338338# ## Environment
@@ -500,9 +500,7 @@ Feel free to open up an issue or create a Pull Request!
500500
501501# # Support
502502
503- Has this Repo been helpful 👍️ to you? Then consider ⭐️'ing this Project.
504-
505- :)
503+ Has this Repo been helpful 👍️ to you? Then consider ⭐️'ing this Project. :)
506504
507505# # License
508506
0 commit comments