You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have made some improvements to the project's Dockerfile locally, but I don't know how they would translate into the docker-compose-based setup because I don't use it. This is my Dockerfile:
# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021
#
# SPDX-License-Identifier: Unlicense
FROM golang:1.16-alpine as build
RUN apk add --no-cache \
build-base \
git \
sqlite \
sqlite-dev
RUN mkdir /app
WORKDIR /app
COPY . /app
RUN cd /app/cmd/server && go build && \
cd /app/cmd/insert-user && go build
FROM alpine:3.14
COPY --from=build /app /app
WORKDIR /app
EXPOSE 8008
EXPOSE 3000
ENV REPO /app/.ssb-go-room-secrets
RUN mkdir /app/.ssb-go-room-secrets
RUN adduser -D -h /app roomie && \
chown -R roomie /app && \
chmod +x ./start.sh
USER roomie
CMD ./start.sh
I'm using multi-stage builds so the container running the app only contains a bare minimum alpine install and the go-ssb-room binaries. I also changed the container's user so it doesn't run root, which is recommended best practice.
I am happy to create a pull request if somebody tells me how I'd deal with the different locations of .ssb-go-room-secrets in the different setups. Maybe pass the $REPO environment var in docker-compose.yml?
The text was updated successfully, but these errors were encountered:
rrrnld
changed the title
Improve genreal security
Improve Dockerfile security
Nov 19, 2021
LGTM @heyarne! I'm not a dev on this project but I'd like to see this turn into a PR 🙏
I am happy to create a pull request if somebody tells me how I'd deal with the different locations of .ssb-go-room-secrets in the different setups. Maybe pass the $REPO environment var in docker-compose.yml?
Would it be possible to retain the original location and instead just chown it? So then the home of the new user is /app/ but they also have permissions on /.ssb-go-room-secrets. This gives better backwards compat for people doing an upgrade.
I think the change your suggesting is the following. This seems fine but people might forget to update their configs.
Maybe that is OK if there is a big warning on the release notes + docs on the migration away from the root user.
diff --git a/docker-compose.yml b/docker-compose.yml
index f8b07fe..bfee332 100644
--- a/docker-compose.yml+++ b/docker-compose.yml@@ -11,5 +11,7 @@ services:
ports:
- "3000:3000" # Proxypass this port through NGINX or Apache as your HTTP landing & dashboard page
- "0.0.0.0:8008:8008" # This is the port SSB clients connect to
+ environment:+ REPO=/app
volumes:
- ./ssb-go-room-secrets:/ssb-go-room-secrets
I have made some improvements to the project's
Dockerfile
locally, but I don't know how they would translate into thedocker-compose
-based setup because I don't use it. This is my Dockerfile:I'm using multi-stage builds so the container running the app only contains a bare minimum alpine install and the go-ssb-room binaries. I also changed the container's user so it doesn't run root, which is recommended best practice.
I am happy to create a pull request if somebody tells me how I'd deal with the different locations of
.ssb-go-room-secrets
in the different setups. Maybe pass the$REPO
environment var indocker-compose.yml
?The text was updated successfully, but these errors were encountered: