Commit aabc22d7d2101d0a89908c02eb6e169a9066a02f
Committed by
GitHub
1 parent
d68ef233
Non root docker user (#2460)
* Non root docker user * Fixes for user - signle user for all services * Base image changed * Fixes for pvc removal * Moved to be in sync with PE * Changed to TB repository
Showing
45 changed files
with
113 additions
and
58 deletions
... | ... | @@ -2,8 +2,8 @@ |
2 | 2 | |
3 | 3 | set -e |
4 | 4 | |
5 | -chown -R ${pkg.name}: ${pkg.logFolder} | |
6 | -chown -R ${pkg.name}: ${pkg.installFolder} | |
5 | +chown -R ${pkg.user}: ${pkg.logFolder} | |
6 | +chown -R ${pkg.user}: ${pkg.installFolder} | |
7 | 7 | systemctl --no-reload enable ${pkg.name}.service >/dev/null 2>&1 || : |
8 | 8 | |
9 | 9 | exit 0 | ... | ... |
... | ... | @@ -2,21 +2,21 @@ |
2 | 2 | |
3 | 3 | set -e |
4 | 4 | |
5 | -if ! getent group ${pkg.name} >/dev/null; then | |
6 | - addgroup --system ${pkg.name} | |
5 | +if ! getent group ${pkg.user} >/dev/null; then | |
6 | + addgroup --system ${pkg.user} | |
7 | 7 | fi |
8 | 8 | |
9 | -if ! getent passwd ${pkg.name} >/dev/null; then | |
9 | +if ! getent passwd ${pkg.user} >/dev/null; then | |
10 | 10 | adduser --quiet \ |
11 | 11 | --system \ |
12 | - --ingroup ${pkg.name} \ | |
12 | + --ingroup ${pkg.user} \ | |
13 | 13 | --quiet \ |
14 | 14 | --disabled-login \ |
15 | 15 | --disabled-password \ |
16 | 16 | --home ${pkg.installFolder} \ |
17 | 17 | --no-create-home \ |
18 | 18 | -gecos "Thingsboard application" \ |
19 | - ${pkg.name} | |
19 | + ${pkg.user} | |
20 | 20 | fi |
21 | 21 | |
22 | 22 | exit 0 |
\ No newline at end of file | ... | ... |
... | ... | @@ -44,7 +44,7 @@ installDir=${pkg.installFolder}/data |
44 | 44 | |
45 | 45 | source "${CONF_FOLDER}/${configfile}" |
46 | 46 | |
47 | -run_user=${pkg.name} | |
47 | +run_user=${pkg.user} | |
48 | 48 | |
49 | 49 | su -s /bin/sh -c "java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.ThingsboardInstallApplication \ |
50 | 50 | -Dinstall.data_dir=${installDir} \ | ... | ... |
... | ... | @@ -43,7 +43,7 @@ installDir=${pkg.installFolder}/data |
43 | 43 | |
44 | 44 | source "${CONF_FOLDER}/${configfile}" |
45 | 45 | |
46 | -run_user=${pkg.name} | |
46 | +run_user=${pkg.user} | |
47 | 47 | |
48 | 48 | su -s /bin/sh -c "java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.ThingsboardInstallApplication \ |
49 | 49 | -Dinstall.data_dir=${installDir} \ | ... | ... |
... | ... | @@ -17,6 +17,13 @@ In order to set database type change the value of `DATABASE` variable in `.env` |
17 | 17 | |
18 | 18 | **NOTE**: According to the database type corresponding docker service will be deployed (see `docker-compose.postgres.yml`, `docker-compose.cassandra.yml` for details). |
19 | 19 | |
20 | +Execute the following command to create log folders for the services and chown of these folders to the docker container users. | |
21 | +To be able to change user, **chown** command is used, which requires sudo permissions (script will request password for a sudo access): | |
22 | + | |
23 | +` | |
24 | +$ ./docker-create-log-folders.sh | |
25 | +` | |
26 | + | |
20 | 27 | Execute the following command to run installation: |
21 | 28 | |
22 | 29 | ` | ... | ... |
docker/docker-create-log-folders.sh
0 → 100755
1 | +#!/bin/bash | |
2 | +# | |
3 | +# Copyright © 2016-2020 The Thingsboard Authors | |
4 | +# | |
5 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
6 | +# you may not use this file except in compliance with the License. | |
7 | +# You may obtain a copy of the License at | |
8 | +# | |
9 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
10 | +# | |
11 | +# Unless required by applicable law or agreed to in writing, software | |
12 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
13 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | +# See the License for the specific language governing permissions and | |
15 | +# limitations under the License. | |
16 | +# | |
17 | + | |
18 | +mkdir -p tb-node/log/ && sudo chown -R 799:799 tb-node/log/ | |
19 | + | |
20 | +mkdir -p tb-transports/coap/log && sudo chown -R 799:799 tb-transports/coap/log | |
21 | + | |
22 | +mkdir -p tb-transports/http/log && sudo chown -R 799:799 tb-transports/http/log | |
23 | + | |
24 | +mkdir -p tb-transports/mqtt/log && sudo chown -R 799:799 tb-transports/mqtt/log | |
\ No newline at end of file | ... | ... |
... | ... | @@ -39,5 +39,5 @@ spec: |
39 | 39 | volumeMounts: |
40 | 40 | - mountPath: /config |
41 | 41 | name: tb-node-config |
42 | - command: ['sh', '-c', 'while [ ! -f /install-finished ]; do sleep 2; done;'] | |
42 | + command: ['sh', '-c', 'while [ ! -f /tmp/install-finished ]; do sleep 2; done;'] | |
43 | 43 | restartPolicy: Never | ... | ... |
... | ... | @@ -15,4 +15,6 @@ |
15 | 15 | # limitations under the License. |
16 | 16 | # |
17 | 17 | |
18 | -kubectl -n thingsboard delete svc,sts,deploy,pv,pvc,cm,po,ing --all | |
18 | +kubectl -n thingsboard delete svc,sts,deploy,cm,po,ing --all | |
19 | + | |
20 | +kubectl -n thingsboard get pvc --no-headers=true | awk '//{print $1}' | xargs kubectl -n thingsboard delete --ignore-not-found=true pvc | |
\ No newline at end of file | ... | ... |
... | ... | @@ -22,7 +22,7 @@ function installTb() { |
22 | 22 | kubectl apply -f tb-node-configmap.yml |
23 | 23 | kubectl apply -f database-setup.yml && |
24 | 24 | kubectl wait --for=condition=Ready pod/tb-db-setup --timeout=120s && |
25 | - kubectl exec tb-db-setup -- sh -c 'export INSTALL_TB=true; export LOAD_DEMO='"$loadDemo"'; start-tb-node.sh; touch /install-finished;' | |
25 | + kubectl exec tb-db-setup -- sh -c 'export INSTALL_TB=true; export LOAD_DEMO='"$loadDemo"'; start-tb-node.sh; touch /tmp/install-finished;' | |
26 | 26 | |
27 | 27 | kubectl delete pod tb-db-setup |
28 | 28 | ... | ... |
... | ... | @@ -38,6 +38,6 @@ fi |
38 | 38 | |
39 | 39 | kubectl apply -f database-setup.yml && |
40 | 40 | kubectl wait --for=condition=Ready pod/tb-db-setup --timeout=120s && |
41 | -kubectl exec tb-db-setup -- sh -c 'export UPGRADE_TB=true; export FROM_VERSION='"$fromVersion"'; start-tb-node.sh; touch /install-finished;' | |
41 | +kubectl exec tb-db-setup -- sh -c 'export UPGRADE_TB=true; export FROM_VERSION='"$fromVersion"'; start-tb-node.sh; touch /tmp/install-finished;' | |
42 | 42 | |
43 | 43 | kubectl delete pod tb-db-setup | ... | ... |
... | ... | @@ -14,7 +14,7 @@ |
14 | 14 | # limitations under the License. |
15 | 15 | # |
16 | 16 | |
17 | -FROM debian:stretch | |
17 | +FROM thingsboard/base | |
18 | 18 | |
19 | 19 | COPY start-js-executor.sh ${pkg.name}.deb /tmp/ |
20 | 20 | |
... | ... | @@ -25,4 +25,6 @@ RUN dpkg -i /tmp/${pkg.name}.deb |
25 | 25 | |
26 | 26 | RUN update-rc.d ${pkg.name} disable |
27 | 27 | |
28 | +USER ${pkg.user} | |
29 | + | |
28 | 30 | CMD ["start-js-executor.sh"] | ... | ... |
... | ... | @@ -36,7 +36,6 @@ |
36 | 36 | <main.dir>${basedir}/../..</main.dir> |
37 | 37 | <pkg.name>tb-js-executor</pkg.name> |
38 | 38 | <docker.name>tb-js-executor</docker.name> |
39 | - <pkg.user>thingsboard</pkg.user> | |
40 | 39 | <pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder> |
41 | 40 | <pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder> |
42 | 41 | <pkg.linux.dist>${project.build.directory}/package/linux</pkg.linux.dist> | ... | ... |
... | ... | @@ -18,12 +18,14 @@ |
18 | 18 | CONF_FOLDER="/config" |
19 | 19 | jarfile=${pkg.installFolder}/bin/${pkg.name}.jar |
20 | 20 | configfile=${pkg.name}.conf |
21 | -run_user=${pkg.name} | |
21 | +run_user=${pkg.user} | |
22 | 22 | |
23 | 23 | source "${CONF_FOLDER}/${configfile}" |
24 | 24 | |
25 | 25 | export LOADER_PATH=/config,${LOADER_PATH} |
26 | 26 | |
27 | +cd ${pkg.installFolder}/bin | |
28 | + | |
27 | 29 | if [ "$INSTALL_TB" == "true" ]; then |
28 | 30 | |
29 | 31 | if [ "$LOAD_DEMO" == "true" ]; then | ... | ... |
... | ... | @@ -36,7 +36,6 @@ |
36 | 36 | <main.dir>${basedir}/../..</main.dir> |
37 | 37 | <pkg.name>thingsboard</pkg.name> |
38 | 38 | <docker.name>tb-node</docker.name> |
39 | - <pkg.user>thingsboard</pkg.user> | |
40 | 39 | <pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder> |
41 | 40 | <pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder> |
42 | 41 | </properties> | ... | ... |
... | ... | @@ -38,7 +38,6 @@ |
38 | 38 | <tb.docker.name>tb</tb.docker.name> |
39 | 39 | <tb-postgres.docker.name>tb-postgres</tb-postgres.docker.name> |
40 | 40 | <tb-cassandra.docker.name>tb-cassandra</tb-cassandra.docker.name> |
41 | - <pkg.user>thingsboard</pkg.user> | |
42 | 41 | <pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder> |
43 | 42 | <pkg.upgradeVersion>2.4.2</pkg.upgradeVersion> |
44 | 43 | </properties> | ... | ... |
... | ... | @@ -25,6 +25,8 @@ export LOADER_PATH=/config,${LOADER_PATH} |
25 | 25 | |
26 | 26 | echo "Starting '${project.name}' ..." |
27 | 27 | |
28 | +cd ${pkg.installFolder}/bin | |
29 | + | |
28 | 30 | exec java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.coap.ThingsboardCoapTransportApplication \ |
29 | 31 | -Dspring.jpa.hibernate.ddl-auto=none \ |
30 | 32 | -Dlogging.config=/config/logback.xml \ | ... | ... |
... | ... | @@ -36,7 +36,6 @@ |
36 | 36 | <main.dir>${basedir}/../../..</main.dir> |
37 | 37 | <pkg.name>tb-coap-transport</pkg.name> |
38 | 38 | <docker.name>tb-coap-transport</docker.name> |
39 | - <pkg.user>thingsboard</pkg.user> | |
40 | 39 | <pkg.logFolder>/var/log/${pkg.name}</pkg.logFolder> |
41 | 40 | <pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder> |
42 | 41 | </properties> | ... | ... |
... | ... | @@ -25,6 +25,8 @@ export LOADER_PATH=/config,${LOADER_PATH} |
25 | 25 | |
26 | 26 | echo "Starting '${project.name}' ..." |
27 | 27 | |
28 | +cd ${pkg.installFolder}/bin | |
29 | + | |
28 | 30 | exec java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.http.ThingsboardHttpTransportApplication \ |
29 | 31 | -Dspring.jpa.hibernate.ddl-auto=none \ |
30 | 32 | -Dlogging.config=/config/logback.xml \ | ... | ... |
... | ... | @@ -36,7 +36,6 @@ |
36 | 36 | <main.dir>${basedir}/../../..</main.dir> |
37 | 37 | <pkg.name>tb-http-transport</pkg.name> |
38 | 38 | <docker.name>tb-http-transport</docker.name> |
39 | - <pkg.user>thingsboard</pkg.user> | |
40 | 39 | <pkg.logFolder>/var/log/${pkg.name}</pkg.logFolder> |
41 | 40 | <pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder> |
42 | 41 | </properties> | ... | ... |
... | ... | @@ -25,6 +25,8 @@ export LOADER_PATH=/config,${LOADER_PATH} |
25 | 25 | |
26 | 26 | echo "Starting '${project.name}' ..." |
27 | 27 | |
28 | +cd ${pkg.installFolder}/bin | |
29 | + | |
28 | 30 | exec java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.mqtt.ThingsboardMqttTransportApplication \ |
29 | 31 | -Dspring.jpa.hibernate.ddl-auto=none \ |
30 | 32 | -Dlogging.config=/config/logback.xml \ | ... | ... |
... | ... | @@ -36,7 +36,6 @@ |
36 | 36 | <main.dir>${basedir}/../../..</main.dir> |
37 | 37 | <pkg.name>tb-mqtt-transport</pkg.name> |
38 | 38 | <docker.name>tb-mqtt-transport</docker.name> |
39 | - <pkg.user>thingsboard</pkg.user> | |
40 | 39 | <pkg.logFolder>/var/log/${pkg.name}</pkg.logFolder> |
41 | 40 | <pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder> |
42 | 41 | </properties> | ... | ... |
... | ... | @@ -14,7 +14,7 @@ |
14 | 14 | # limitations under the License. |
15 | 15 | # |
16 | 16 | |
17 | -FROM debian:stretch | |
17 | +FROM thingsboard/base | |
18 | 18 | |
19 | 19 | COPY start-web-ui.sh ${pkg.name}.deb /tmp/ |
20 | 20 | |
... | ... | @@ -25,4 +25,6 @@ RUN dpkg -i /tmp/${pkg.name}.deb |
25 | 25 | |
26 | 26 | RUN update-rc.d ${pkg.name} disable |
27 | 27 | |
28 | +USER ${pkg.user} | |
29 | + | |
28 | 30 | CMD ["start-web-ui.sh"] | ... | ... |
... | ... | @@ -36,7 +36,6 @@ |
36 | 36 | <main.dir>${basedir}/../..</main.dir> |
37 | 37 | <pkg.name>tb-web-ui</pkg.name> |
38 | 38 | <docker.name>tb-web-ui</docker.name> |
39 | - <pkg.user>thingsboard</pkg.user> | |
40 | 39 | <pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder> |
41 | 40 | <pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder> |
42 | 41 | <pkg.linux.dist>${project.build.directory}/package/linux</pkg.linux.dist> | ... | ... |
... | ... | @@ -29,6 +29,7 @@ |
29 | 29 | |
30 | 30 | <properties> |
31 | 31 | <main.dir>${basedir}</main.dir> |
32 | + <pkg.user>thingsboard</pkg.user> | |
32 | 33 | <spring-boot.version>2.1.3.RELEASE</spring-boot.version> |
33 | 34 | <spring.version>5.1.5.RELEASE</spring.version> |
34 | 35 | <spring-security.version>5.1.4.RELEASE</spring-security.version> | ... | ... |
1 | 1 | #!/bin/sh |
2 | 2 | |
3 | -if ! getent group ${pkg.name} >/dev/null; then | |
4 | - addgroup --system ${pkg.name} | |
3 | +if ! getent group ${pkg.user} >/dev/null; then | |
4 | + addgroup --system ${pkg.user} | |
5 | 5 | fi |
6 | 6 | |
7 | -if ! getent passwd ${pkg.name} >/dev/null; then | |
7 | +if ! getent passwd ${pkg.user} >/dev/null; then | |
8 | 8 | adduser --quiet \ |
9 | 9 | --system \ |
10 | - --ingroup ${pkg.name} \ | |
10 | + --ingroup ${pkg.user} \ | |
11 | 11 | --quiet \ |
12 | 12 | --disabled-login \ |
13 | 13 | --disabled-password \ |
14 | 14 | --home ${pkg.installFolder} \ |
15 | 15 | --no-create-home \ |
16 | 16 | -gecos "Thingsboard application" \ |
17 | - ${pkg.name} | |
17 | + ${pkg.user} | |
18 | 18 | fi | ... | ... |
1 | 1 | #!/bin/sh |
2 | 2 | |
3 | -if ! getent group ${pkg.name} >/dev/null; then | |
4 | - addgroup --system ${pkg.name} | |
3 | +if ! getent group ${pkg.user} >/dev/null; then | |
4 | + addgroup --system ${pkg.user} | |
5 | 5 | fi |
6 | 6 | |
7 | -if ! getent passwd ${pkg.name} >/dev/null; then | |
7 | +if ! getent passwd ${pkg.user} >/dev/null; then | |
8 | 8 | adduser --quiet \ |
9 | 9 | --system \ |
10 | - --ingroup ${pkg.name} \ | |
10 | + --ingroup ${pkg.user} \ | |
11 | 11 | --quiet \ |
12 | 12 | --disabled-login \ |
13 | 13 | --disabled-password \ |
14 | 14 | --home ${pkg.installFolder} \ |
15 | 15 | --no-create-home \ |
16 | 16 | -gecos "Thingsboard application" \ |
17 | - ${pkg.name} | |
17 | + ${pkg.user} | |
18 | 18 | fi | ... | ... |
1 | 1 | #!/bin/sh |
2 | 2 | |
3 | -if ! getent group ${pkg.name} >/dev/null; then | |
4 | - addgroup --system ${pkg.name} | |
3 | +if ! getent group ${pkg.user} >/dev/null; then | |
4 | + addgroup --system ${pkg.user} | |
5 | 5 | fi |
6 | 6 | |
7 | -if ! getent passwd ${pkg.name} >/dev/null; then | |
7 | +if ! getent passwd ${pkg.user} >/dev/null; then | |
8 | 8 | adduser --quiet \ |
9 | 9 | --system \ |
10 | - --ingroup ${pkg.name} \ | |
10 | + --ingroup ${pkg.user} \ | |
11 | 11 | --quiet \ |
12 | 12 | --disabled-login \ |
13 | 13 | --disabled-password \ |
14 | 14 | --home ${pkg.installFolder} \ |
15 | 15 | --no-create-home \ |
16 | 16 | -gecos "Thingsboard application" \ |
17 | - ${pkg.name} | |
17 | + ${pkg.user} | |
18 | 18 | fi | ... | ... |