1
0
mirror of https://github.com/bitwarden/server.git synced 2024-11-22 12:15:36 +01:00

map host docker group id to containers

This commit is contained in:
Kyle Spearrin 2018-04-16 15:30:07 -04:00
parent 2c65bd8403
commit b7a2e47bd9
18 changed files with 333 additions and 87 deletions

View File

@ -28,6 +28,9 @@ then
OS="mac"
fi
LUID="LOCAL_UID=`id -u $USER`"
LGID="LOCAL_GID=`getent group docker | cut -d: -f3`"
mkdir -p $OUTPUT_DIR
LETS_ENCRYPT="n"
@ -63,7 +66,7 @@ fi
docker pull bitwarden/setup:$COREVERSION
if [ $OS == "lin" ]
then
docker run -it --rm --name setup -v $OUTPUT_DIR:/bitwarden -e LOCAL_UID=`id -u $USER` bitwarden/setup:$COREVERSION \
docker run -it --rm --name setup -v $OUTPUT_DIR:/bitwarden -e $LUID -e $LGID bitwarden/setup:$COREVERSION \
dotnet Setup.dll -install 1 -domain $DOMAIN -letsencrypt $LETS_ENCRYPT -os $OS -corev $COREVERSION -webv $WEBVERSION
else
docker run -it --rm --name setup -v $OUTPUT_DIR:/bitwarden bitwarden/setup:$COREVERSION \

View File

@ -31,6 +31,8 @@ fi
DOCKER_DIR="$OUTPUT_DIR/docker"
ENV_DIR="$OUTPUT_DIR/env"
LUID="LOCAL_UID=`id -u $USER`"
LGID="LOCAL_GID=`getent group docker | cut -d: -f3`"
# Functions
@ -80,7 +82,7 @@ function updateDatabase() {
if [ $OS == "lin" ]
then
docker run -i --rm --name setup --network container:bitwarden-mssql \
-v $OUTPUT_DIR:/bitwarden -e LOCAL_UID=`id -u $USER` bitwarden/setup:$COREVERSION \
-v $OUTPUT_DIR:/bitwarden -e $LUID -e $LGID bitwarden/setup:$COREVERSION \
dotnet Setup.dll -update 1 -db 1 -os $OS -corev $COREVERSION -webv $WEBVERSION
else
docker run -i --rm --name setup --network container:bitwarden-mssql \
@ -95,7 +97,7 @@ function update() {
if [ $OS == "lin" ]
then
docker run -i --rm --name setup -v $OUTPUT_DIR:/bitwarden \
-e LOCAL_UID=`id -u $USER` bitwarden/setup:$COREVERSION \
-e $LUID -e $LGID bitwarden/setup:$COREVERSION \
dotnet Setup.dll -update 1 -os $OS -corev $COREVERSION -webv $WEBVERSION
else
docker run -i --rm --name setup \
@ -109,7 +111,7 @@ function printEnvironment() {
if [ $OS == "lin" ]
then
docker run -i --rm --name setup -v $OUTPUT_DIR:/bitwarden \
-e LOCAL_UID=`id -u $USER` bitwarden/setup:$COREVERSION \
-e $LUID -e $LGID bitwarden/setup:$COREVERSION \
dotnet Setup.dll -printenv 1 -os $OS -corev $COREVERSION -webv $WEBVERSION
else
docker run -i --rm --name setup \
@ -126,7 +128,7 @@ function restart() {
if [ $OS == "lin" ]
then
mkdir -p $ENV_DIR
echo "LOCAL_UID=`id -u $USER`" > $ENV_DIR/uid.env
(echo $LUID; echo $LGID) > $ENV_DIR/uid.env
fi
dockerComposeUp

View File

@ -10,8 +10,6 @@ WORKDIR /app
EXPOSE 5000
COPY obj/Docker/publish .
COPY entrypoint.sh /
RUN groupadd -g 999 bitwarden \
&& chmod +x /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

View File

@ -1,35 +1,67 @@
#!/bin/bash
# Setup
GROUPNAME="bitwarden"
USERNAME="bitwarden"
NOUSER=`id -u $USERNAME > /dev/null 2>&1; echo $?`
CURRENTGID=`getent group $GROUPNAME | cut -d: -f3`
LGID=${LOCAL_GID:-999}
CURRENTUID=`id -u $USERNAME`
NOUSER=`$CURRENTUID > /dev/null 2>&1; echo $?`
LUID=${LOCAL_UID:-999}
# Step down from host root
if [ $LGID == 0 ]
then
LGID=999
fi
if [ $LUID == 0 ]
then
LUID=999
fi
if [ $NOUSER == 0 ] && [ `id -u $USERNAME` != $LUID ]
# Create group
if [ $CURRENTGID ]
then
if [ $CURRENTGID != $LGID ]
then
groupmod -g $LGID $GROUPNAME
fi
else
groupadd -g $LGID $GROUPNAME
fi
# Create user and assign group
if [ $NOUSER == 0 ] && [ $CURRENTUID != $LUID ]
then
usermod -u $LUID $USERNAME
elif [ $NOUSER == 1 ]
then
useradd -r -u $LUID -g $USERNAME $USERNAME
useradd -r -u $LUID -g $GROUPNAME $USERNAME
fi
# Make home directory for user
if [ ! -d "/home/$USERNAME" ]
then
mkhomedir_helper $USERNAME
fi
chown -R $USERNAME:$USERNAME /app
# The rest...
chown -R $USERNAME:$GROUPNAME /app
mkdir -p /etc/bitwarden/core
mkdir -p /etc/bitwarden/logs
mkdir -p /etc/bitwarden/ca-certificates
chown -R $USERNAME:$USERNAME /etc/bitwarden
chown -R $USERNAME:$GROUPNAME /etc/bitwarden
cp /etc/bitwarden/ca-certificates/*.crt /usr/local/share/ca-certificates/ \
&& update-ca-certificates
gosu $USERNAME:$USERNAME dotnet /app/Admin.dll
gosu $USERNAME:$GROUPNAME dotnet /app/Admin.dll

View File

@ -12,11 +12,9 @@ EXPOSE 5000
COPY obj/Docker/publish/Api .
COPY obj/Docker/publish/Jobs /jobs
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
RUN mv /jobs/crontab /etc/cron.d/bitwarden-cron \
&& chmod 0644 /etc/cron.d/bitwarden-cron
RUN groupadd -g 999 bitwarden \
&& chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

View File

@ -1,36 +1,68 @@
#!/bin/bash
# Setup
GROUPNAME="bitwarden"
USERNAME="bitwarden"
NOUSER=`id -u $USERNAME > /dev/null 2>&1; echo $?`
CURRENTGID=`getent group $GROUPNAME | cut -d: -f3`
LGID=${LOCAL_GID:-999}
CURRENTUID=`id -u $USERNAME`
NOUSER=`$CURRENTUID > /dev/null 2>&1; echo $?`
LUID=${LOCAL_UID:-999}
# Step down from host root
if [ $LGID == 0 ]
then
LGID=999
fi
if [ $LUID == 0 ]
then
LUID=999
fi
if [ $NOUSER == 0 ] && [ `id -u $USERNAME` != $LUID ]
# Create group
if [ $CURRENTGID ]
then
if [ $CURRENTGID != $LGID ]
then
groupmod -g $LGID $GROUPNAME
fi
else
groupadd -g $LGID $GROUPNAME
fi
# Create user and assign group
if [ $NOUSER == 0 ] && [ $CURRENTUID != $LUID ]
then
usermod -u $LUID $USERNAME
elif [ $NOUSER == 1 ]
then
useradd -r -u $LUID -g $USERNAME $USERNAME
useradd -r -u $LUID -g $GROUPNAME $USERNAME
fi
# Make home directory for user
if [ ! -d "/home/$USERNAME" ]
then
mkhomedir_helper $USERNAME
fi
# The rest...
touch /var/log/cron.log
chown $USERNAME:$USERNAME /var/log/cron.log
chown -R $USERNAME:$USERNAME /app
chown -R $USERNAME:$USERNAME /jobs
chown $USERNAME:$GROUPNAME /var/log/cron.log
chown -R $USERNAME:$GROUPNAME /app
chown -R $USERNAME:$GROUPNAME /jobs
mkdir -p /etc/bitwarden/core
mkdir -p /etc/bitwarden/logs
mkdir -p /etc/bitwarden/ca-certificates
chown -R $USERNAME:$USERNAME /etc/bitwarden
chown -R $USERNAME:$GROUPNAME /etc/bitwarden
env >> /etc/environment
cron
@ -38,4 +70,4 @@ cron
cp /etc/bitwarden/ca-certificates/*.crt /usr/local/share/ca-certificates/ \
&& update-ca-certificates
gosu bitwarden:bitwarden dotnet /app/Api.dll
gosu $USERNAME:$GROUPNAME dotnet /app/Api.dll

View File

@ -18,8 +18,6 @@ WORKDIR /app
EXPOSE 5000
COPY obj/Docker/publish .
COPY entrypoint.sh /
RUN groupadd -g 999 bitwarden \
&& chmod +x /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

View File

@ -1,30 +1,62 @@
#!/bin/bash
# Setup
GROUPNAME="bitwarden"
USERNAME="bitwarden"
NOUSER=`id -u $USERNAME > /dev/null 2>&1; echo $?`
CURRENTGID=`getent group $GROUPNAME | cut -d: -f3`
LGID=${LOCAL_GID:-999}
CURRENTUID=`id -u $USERNAME`
NOUSER=`$CURRENTUID > /dev/null 2>&1; echo $?`
LUID=${LOCAL_UID:-999}
# Step down from host root
if [ $LGID == 0 ]
then
LGID=999
fi
if [ $LUID == 0 ]
then
LUID=999
fi
if [ $NOUSER == 0 ] && [ `id -u $USERNAME` != $LUID ]
# Create group
if [ $CURRENTGID ]
then
if [ $CURRENTGID != $LGID ]
then
groupmod -g $LGID $GROUPNAME
fi
else
groupadd -g $LGID $GROUPNAME
fi
# Create user and assign group
if [ $NOUSER == 0 ] && [ $CURRENTUID != $LUID ]
then
usermod -u $LUID $USERNAME
elif [ $NOUSER == 1 ]
then
useradd -r -u $LUID -g $USERNAME $USERNAME
useradd -r -u $LUID -g $GROUPNAME $USERNAME
fi
# Make home directory for user
if [ ! -d "/home/$USERNAME" ]
then
mkhomedir_helper $USERNAME
fi
chown -R $USERNAME:$USERNAME /app
chown -R $USERNAME:$USERNAME /etc/iconserver
# The rest...
gosu $USERNAME:$USERNAME /etc/iconserver/iconserver &
gosu $USERNAME:$USERNAME dotnet /app/Icons.dll iconsSettings:bestIconBaseUrl=http://localhost:8080
chown -R $USERNAME:$GROUPNAME /app
chown -R $USERNAME:$GROUPNAME /etc/iconserver
gosu $USERNAME:$GROUPNAME /etc/iconserver/iconserver &
gosu $USERNAME:$GROUPNAME dotnet /app/Icons.dll iconsSettings:bestIconBaseUrl=http://localhost:8080

View File

@ -10,8 +10,6 @@ WORKDIR /app
EXPOSE 5000
COPY obj/Docker/publish .
COPY entrypoint.sh /
RUN groupadd -g 999 bitwarden \
&& chmod +x /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

View File

@ -1,38 +1,70 @@
#!/bin/bash
# Setup
GROUPNAME="bitwarden"
USERNAME="bitwarden"
NOUSER=`id -u $USERNAME > /dev/null 2>&1; echo $?`
CURRENTGID=`getent group $GROUPNAME | cut -d: -f3`
LGID=${LOCAL_GID:-999}
CURRENTUID=`id -u $USERNAME`
NOUSER=`$CURRENTUID > /dev/null 2>&1; echo $?`
LUID=${LOCAL_UID:-999}
# Step down from host root
if [ $LGID == 0 ]
then
LGID=999
fi
if [ $LUID == 0 ]
then
LUID=999
fi
if [ $NOUSER == 0 ] && [ `id -u $USERNAME` != $LUID ]
# Create group
if [ $CURRENTGID ]
then
if [ $CURRENTGID != $LGID ]
then
groupmod -g $LGID $GROUPNAME
fi
else
groupadd -g $LGID $GROUPNAME
fi
# Create user and assign group
if [ $NOUSER == 0 ] && [ $CURRENTUID != $LUID ]
then
usermod -u $LUID $USERNAME
elif [ $NOUSER == 1 ]
then
useradd -r -u $LUID -g $USERNAME $USERNAME
useradd -r -u $LUID -g $GROUPNAME $USERNAME
fi
# Make home directory for user
if [ ! -d "/home/$USERNAME" ]
then
mkhomedir_helper $USERNAME
fi
# The rest...
mkdir -p /etc/bitwarden/identity
mkdir -p /etc/bitwarden/core
mkdir -p /etc/bitwarden/logs
mkdir -p /etc/bitwarden/ca-certificates
chown -R $USERNAME:$USERNAME /etc/bitwarden
chown -R $USERNAME:$GROUPNAME /etc/bitwarden
cp /etc/bitwarden/identity/identity.pfx /app/identity.pfx
chown -R $USERNAME:$USERNAME /app
chown -R $USERNAME:$GROUPNAME /app
cp /etc/bitwarden/ca-certificates/*.crt /usr/local/share/ca-certificates/ \
&& update-ca-certificates
gosu $USERNAME:$USERNAME dotnet /app/Identity.dll
gosu $USERNAME:$GROUPNAME dotnet /app/Identity.dll

View File

@ -8,8 +8,6 @@ RUN apt-get update \
ENV ASPNETCORE_URLS http://+:5000
EXPOSE 5000
COPY entrypoint.sh /
RUN groupadd -g 999 bitwarden \
&& chmod +x /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

View File

@ -1,31 +1,63 @@
#!/bin/bash
# Setup
GROUPNAME="bitwarden"
USERNAME="bitwarden"
NOUSER=`id -u $USERNAME > /dev/null 2>&1; echo $?`
CURRENTGID=`getent group $GROUPNAME | cut -d: -f3`
LGID=${LOCAL_GID:-999}
CURRENTUID=`id -u $USERNAME`
NOUSER=`$CURRENTUID > /dev/null 2>&1; echo $?`
LUID=${LOCAL_UID:-999}
# Step down from host root
if [ $LGID == 0 ]
then
LGID=999
fi
if [ $LUID == 0 ]
then
LUID=999
fi
if [ $NOUSER == 0 ] && [ `id -u $USERNAME` != $LUID ]
# Create group
if [ $CURRENTGID ]
then
if [ $CURRENTGID != $LGID ]
then
groupmod -g $LGID $GROUPNAME
fi
else
groupadd -g $LGID $GROUPNAME
fi
# Create user and assign group
if [ $NOUSER == 0 ] && [ $CURRENTUID != $LUID ]
then
usermod -u $LUID $USERNAME
elif [ $NOUSER == 1 ]
then
useradd -r -u $LUID -g $USERNAME $USERNAME
useradd -r -u $LUID -g $GROUPNAME $USERNAME
fi
# Make home directory for user
if [ ! -d "/home/$USERNAME" ]
then
mkhomedir_helper $USERNAME
fi
chown -R $USERNAME:$USERNAME /bitwarden_server
mkdir -p /etc/bitwarden/core/attachments
chown -R $USERNAME:$USERNAME /etc/bitwarden
# The rest...
gosu $USERNAME:$USERNAME dotnet /bitwarden_server/Server.dll \
chown -R $USERNAME:$GROUPNAME /bitwarden_server
mkdir -p /etc/bitwarden/core/attachments
chown -R $USERNAME:$GROUPNAME /etc/bitwarden
gosu $USERNAME:$GROUPNAME dotnet /bitwarden_server/Server.dll \
/contentRoot=/etc/bitwarden/core/attachments /webRoot=. /serveUnknown=true

View File

@ -6,8 +6,6 @@ RUN apt-get update \
gosu \
&& rm -rf /var/lib/apt/lists/*
RUN groupadd -g 999 bitwarden
COPY crontab /etc/cron.d/bitwarden-cron
RUN chmod 0644 /etc/cron.d/bitwarden-cron
COPY backup-db.sql /
@ -16,4 +14,5 @@ COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh \
&& chmod +x /backup-db.sh
ENTRYPOINT ["/entrypoint.sh"]

View File

@ -1,38 +1,70 @@
#!/bin/bash
# Setup
GROUPNAME="bitwarden"
USERNAME="bitwarden"
NOUSER=`id -u $USERNAME > /dev/null 2>&1; echo $?`
CURRENTGID=`getent group $GROUPNAME | cut -d: -f3`
LGID=${LOCAL_GID:-999}
CURRENTUID=`id -u $USERNAME`
NOUSER=`$CURRENTUID > /dev/null 2>&1; echo $?`
LUID=${LOCAL_UID:-999}
# Step down from host root
if [ $LGID == 0 ]
then
LGID=999
fi
if [ $LUID == 0 ]
then
LUID=999
fi
if [ $NOUSER == 0 ] && [ `id -u $USERNAME` != $LUID ]
# Create group
if [ $CURRENTGID ]
then
if [ $CURRENTGID != $LGID ]
then
groupmod -g $LGID $GROUPNAME
fi
else
groupadd -g $LGID $GROUPNAME
fi
# Create user and assign group
if [ $NOUSER == 0 ] && [ $CURRENTUID != $LUID ]
then
usermod -u $LUID $USERNAME
elif [ $NOUSER == 1 ]
then
useradd -r -u $LUID -g $USERNAME $USERNAME
useradd -r -u $LUID -g $GROUPNAME $USERNAME
fi
# Make home directory for user
if [ ! -d "/home/$USERNAME" ]
then
mkhomedir_helper $USERNAME
fi
# The rest...
touch /var/log/cron.log
chown $USERNAME:$USERNAME /var/log/cron.log
chown $USERNAME:$GROUPNAME /var/log/cron.log
mkdir -p /etc/bitwarden/mssql/backups
chown -R $USERNAME:$USERNAME /etc/bitwarden
chown -R $USERNAME:$GROUPNAME /etc/bitwarden
mkdir -p /var/opt/mssql/data
chown -R $USERNAME:$USERNAME /var/opt/mssql
chown $USERNAME:$USERNAME /backup-db.sh
chown $USERNAME:$USERNAME /backup-db.sql
chown -R $USERNAME:$GROUPNAME /var/opt/mssql
chown $USERNAME:$GROUPNAME /backup-db.sh
chown $USERNAME:$GROUPNAME /backup-db.sql
env >> /etc/environment
cron
gosu $USERNAME:$USERNAME /opt/mssql/bin/sqlservr
gosu $USERNAME:$GROUPNAME /opt/mssql/bin/sqlservr

View File

@ -9,8 +9,6 @@ COPY nginx.conf /etc/nginx
COPY proxy.conf /etc/nginx
COPY mime.types /etc/nginx
COPY entrypoint.sh /
RUN groupadd -g 999 bitwarden \
&& chmod +x /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

View File

@ -1,37 +1,69 @@
#!/bin/bash
# Setup
GROUPNAME="bitwarden"
USERNAME="bitwarden"
NOUSER=`id -u $USERNAME > /dev/null 2>&1; echo $?`
CURRENTGID=`getent group $GROUPNAME | cut -d: -f3`
LGID=${LOCAL_GID:-999}
CURRENTUID=`id -u $USERNAME`
NOUSER=`$CURRENTUID > /dev/null 2>&1; echo $?`
LUID=${LOCAL_UID:-999}
# Step down from host root
if [ $LGID == 0 ]
then
LGID=999
fi
if [ $LUID == 0 ]
then
LUID=999
fi
if [ $NOUSER == 0 ] && [ `id -u $USERNAME` != $LUID ]
# Create group
if [ $CURRENTGID ]
then
if [ $CURRENTGID != $LGID ]
then
groupmod -g $LGID $GROUPNAME
fi
else
groupadd -g $LGID $GROUPNAME
fi
# Create user and assign group
if [ $NOUSER == 0 ] && [ $CURRENTUID != $LUID ]
then
usermod -u $LUID $USERNAME
elif [ $NOUSER == 1 ]
then
useradd -r -u $LUID -g $USERNAME $USERNAME
useradd -r -u $LUID -g $GROUPNAME $USERNAME
fi
# Make home directory for user
if [ ! -d "/home/$USERNAME" ]
then
mkhomedir_helper $USERNAME
fi
chown -R $USERNAME:$USERNAME /etc/bitwarden
# The rest...
chown -R $USERNAME:$GROUPNAME /etc/bitwarden
cp /etc/bitwarden/nginx/default.conf /etc/nginx/conf.d/default.conf
mkdir -p /etc/letsencrypt
chown -R $USERNAME:$USERNAME /etc/letsencrypt
chown -R $USERNAME:$GROUPNAME /etc/letsencrypt
mkdir -p /etc/ssl
chown -R $USERNAME:$USERNAME /etc/ssl
chown -R $USERNAME:$GROUPNAME /etc/ssl
touch /var/run/nginx.pid
chown -R $USERNAME:$USERNAME /var/run/nginx.pid
chown -R $USERNAME:$USERNAME /var/cache/nginx
chown -R $USERNAME:$USERNAME /var/log/nginx
chown -R $USERNAME:$GROUPNAME /var/run/nginx.pid
chown -R $USERNAME:$GROUPNAME /var/cache/nginx
chown -R $USERNAME:$GROUPNAME /var/log/nginx
gosu $USERNAME:$USERNAME nginx -g 'daemon off;'
gosu $USERNAME:$GROUPNAME nginx -g 'daemon off;'

View File

@ -9,8 +9,6 @@ RUN apt-get update \
WORKDIR /app
COPY obj/Docker/publish .
COPY entrypoint.sh /
RUN groupadd -g 999 bitwarden \
&& chmod +x /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

View File

@ -1,35 +1,67 @@
#!/bin/bash
# Setup
GROUPNAME="bitwarden"
USERNAME="bitwarden"
NOUSER=`id -u $USERNAME > /dev/null 2>&1; echo $?`
CURRENTGID=`getent group $GROUPNAME | cut -d: -f3`
LGID=${LOCAL_GID:-999}
CURRENTUID=`id -u $USERNAME`
NOUSER=`$CURRENTUID > /dev/null 2>&1; echo $?`
LUID=${LOCAL_UID:-999}
# Step down from host root
if [ $LGID == 0 ]
then
LGID=999
fi
if [ $LUID == 0 ]
then
LUID=999
fi
if [ $NOUSER == 0 ] && [ `id -u $USERNAME` != $LUID ]
# Create group
if [ $CURRENTGID ]
then
if [ $CURRENTGID != $LGID ]
then
groupmod -g $LGID $GROUPNAME
fi
else
groupadd -g $LGID $GROUPNAME
fi
# Create user and assign group
if [ $NOUSER == 0 ] && [ $CURRENTUID != $LUID ]
then
usermod -u $LUID $USERNAME
elif [ $NOUSER == 1 ]
then
useradd -r -u $LUID -g $USERNAME $USERNAME
useradd -r -u $LUID -g $GROUPNAME $USERNAME
fi
# Make home directory for user
if [ ! -d "/home/$USERNAME" ]
then
mkhomedir_helper $USERNAME
fi
chown -R $USERNAME:$USERNAME /app
# The rest...
chown -R $USERNAME:$GROUPNAME /app
mkdir -p /bitwarden/env
mkdir -p /bitwarden/docker
mkdir -p /bitwarden/ssl
mkdir -p /bitwarden/letsencrypt
mkdir -p /bitwarden/identity
mkdir -p /bitwarden/nginx
chown -R $USERNAME:$USERNAME /bitwarden
chown -R $USERNAME:$GROUPNAME /bitwarden
exec gosu $USERNAME:$USERNAME "$@"
exec gosu $USERNAME:$GROUPNAME "$@"