mirror of
https://github.com/jakeswenson/BitBetter.git
synced 2023-10-10 13:36:57 +02:00
Make Sso available in org license (#73)
* Exclude cert.cert from git * Use latest release of bitwarden as base image (#67, #66) * Add a script which simplifies Bitwarden updates * fix typo * Add UseApi * Updated version, created update section * Workaround for docker-compose --ignore-pull-failures bugs (4377 and 7127) * use version from docker script * check if bitbetter images are outdated * Make Sso available in org license Add `UseSso` var and enable * Update README.md Co-authored-by: Christoph Haas <christoph.h@sprinternet.at> Co-authored-by: Lework <kuailemy123@163.com> Co-authored-by: Captainhook <ec14018@qmul.ac.uk>
This commit is contained in:
parent
6527ac8362
commit
7d8f0b1082
@ -13,6 +13,7 @@ Credit to https://github.com/h44z/BitBetter and https://github.com/jakeswenson/B
|
|||||||
+ [Dependencies](#dependencies)
|
+ [Dependencies](#dependencies)
|
||||||
+ [Setting up BitBetter](#setting-up-bitbetter)
|
+ [Setting up BitBetter](#setting-up-bitbetter)
|
||||||
+ [Building BitBetter](#building-bitbetter)
|
+ [Building BitBetter](#building-bitbetter)
|
||||||
|
+ [Updating Bitwarden and BitBetter](#updating-bitwarden-and-bitbetter)
|
||||||
+ [Generating Signed Licenses](#generating-signed-licenses)
|
+ [Generating Signed Licenses](#generating-signed-licenses)
|
||||||
2. [FAQ](#faq-questions-you-might-have-)
|
2. [FAQ](#faq-questions-you-might-have-)
|
||||||
3. [Footnotes](#footnotes)
|
3. [Footnotes](#footnotes)
|
||||||
@ -23,7 +24,7 @@ The following instructions are for unix-based systems (Linux, BSD, macOS), it is
|
|||||||
## Dependencies
|
## Dependencies
|
||||||
Aside from docker, which you also need for Bitwarden, BitBetter requires the following:
|
Aside from docker, which you also need for Bitwarden, BitBetter requires the following:
|
||||||
|
|
||||||
* Bitwarden (tested with 1.33.0, might work on lower versions)
|
* Bitwarden (tested with 1.37.0, might work on lower versions)
|
||||||
* openssl (probably already installed on most Linux or WSL systems, any version should work)
|
* openssl (probably already installed on most Linux or WSL systems, any version should work)
|
||||||
|
|
||||||
## Setting up BitBetter
|
## Setting up BitBetter
|
||||||
@ -78,6 +79,10 @@ openssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem -passin pass:te
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Updating Bitwarden and BitBetter
|
||||||
|
|
||||||
|
To update Bitwarden, the provided `update-bitwarden.sh` script can be used. It will rebuild the BitBetter images and automatically update Bitwarden afterwards. Docker pull errors can be ignored for api and identity images.
|
||||||
|
|
||||||
## Generating Signed Licenses
|
## Generating Signed Licenses
|
||||||
|
|
||||||
There is a tool included in the directory `src/licenseGen/` that will generate new individual and organization licenses. These licenses will be accepted by the modified Bitwarden because they will be signed by the certificate you generated in earlier steps.
|
There is a tool included in the directory `src/licenseGen/` that will generate new individual and organization licenses. These licenses will be accepted by the modified Bitwarden because they will be signed by the certificate you generated in earlier steps.
|
||||||
|
11
build.sh
11
build.sh
@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
DIR=`dirname "$0"`
|
DIR=`dirname "$0"`
|
||||||
DIR=`exec 2>/dev/null;(cd -- "$DIR") && cd -- "$DIR"|| cd "$DIR"; unset PWD; /usr/bin/pwd || /bin/pwd || pwd`
|
DIR=`exec 2>/dev/null;(cd -- "$DIR") && cd -- "$DIR"|| cd "$DIR"; unset PWD; /usr/bin/pwd || /bin/pwd || pwd`
|
||||||
|
BW_VERSION="$(curl --silent https://raw.githubusercontent.com/bitwarden/server/master/scripts/bitwarden.sh | grep 'COREVERSION="' | sed 's/^[^"]*"//; s/".*//')"
|
||||||
|
|
||||||
|
echo "Building BitBetter for BitWarden version $BW_VERSION"
|
||||||
|
|
||||||
# If there aren't any keys, generate them first.
|
# If there aren't any keys, generate them first.
|
||||||
[ -e "$DIR/.keys/cert.cert" ] || "$DIR/.keys/generate-keys.sh"
|
[ -e "$DIR/.keys/cert.cert" ] || "$DIR/.keys/generate-keys.sh"
|
||||||
@ -12,7 +15,11 @@ cp "$DIR/.keys/cert.cert" "$DIR/src/bitBetter/.keys"
|
|||||||
|
|
||||||
docker run --rm -v "$DIR/src/bitBetter:/bitBetter" -w=/bitBetter mcr.microsoft.com/dotnet/core/sdk:3.1 sh build.sh
|
docker run --rm -v "$DIR/src/bitBetter:/bitBetter" -w=/bitBetter mcr.microsoft.com/dotnet/core/sdk:3.1 sh build.sh
|
||||||
|
|
||||||
docker build --build-arg BITWARDEN_TAG=bitwarden/api -t bitbetter/api "$DIR/src/bitBetter" # --squash
|
docker build --no-cache --build-arg BITWARDEN_TAG=bitwarden/api:$BW_VERSION -t bitbetter/api "$DIR/src/bitBetter" # --squash
|
||||||
docker build --build-arg BITWARDEN_TAG=bitwarden/identity -t bitbetter/identity "$DIR/src/bitBetter" # --squash
|
docker build --no-cache --build-arg BITWARDEN_TAG=bitwarden/identity:$BW_VERSION -t bitbetter/identity "$DIR/src/bitBetter" # --squash
|
||||||
|
|
||||||
|
docker tag bitbetter/api bitbetter/api:latest
|
||||||
|
docker tag bitbetter/identity bitbetter/identity:latest
|
||||||
|
docker tag bitbetter/api bitbetter/api:$BW_VERSION
|
||||||
|
docker tag bitbetter/identity bitbetter/identity:$BW_VERSION
|
||||||
|
|
||||||
|
@ -51,10 +51,10 @@ namespace bitwardenSelfLicensor
|
|||||||
|
|
||||||
var existingCert = new X509Certificate2(x.GetResourceData());
|
var existingCert = new X509Certificate2(x.GetResourceData());
|
||||||
|
|
||||||
Console.WriteLine($"Existing Cert Thumbprin: {existingCert.Thumbprint}");
|
Console.WriteLine($"Existing Cert Thumbprint: {existingCert.Thumbprint}");
|
||||||
X509Certificate2 certificate = new X509Certificate2(cert);
|
X509Certificate2 certificate = new X509Certificate2(cert);
|
||||||
|
|
||||||
Console.WriteLine($"New cert Thumbprint: {certificate.Thumbprint}");
|
Console.WriteLine($"New Cert Thumbprint: {certificate.Thumbprint}");
|
||||||
|
|
||||||
var ctor = licensingType.GetConstructors().Single();
|
var ctor = licensingType.GetConstructors().Single();
|
||||||
|
|
||||||
|
@ -359,6 +359,7 @@ namespace bitwardenSelfLicensor
|
|||||||
set("Seats", (short)32767);
|
set("Seats", (short)32767);
|
||||||
set("MaxCollections", short.MaxValue);
|
set("MaxCollections", short.MaxValue);
|
||||||
set("UsePolicies", true);
|
set("UsePolicies", true);
|
||||||
|
set("UseSso", true);
|
||||||
set("UseGroups", true);
|
set("UseGroups", true);
|
||||||
set("UseEvents", true);
|
set("UseEvents", true);
|
||||||
set("UseDirectory", true);
|
set("UseDirectory", true);
|
||||||
@ -367,11 +368,12 @@ namespace bitwardenSelfLicensor
|
|||||||
set("MaxStorageGb", short.MaxValue);
|
set("MaxStorageGb", short.MaxValue);
|
||||||
set("SelfHost", true);
|
set("SelfHost", true);
|
||||||
set("UsersGetPremium", true);
|
set("UsersGetPremium", true);
|
||||||
set("Version", 5);
|
set("Version", 6);
|
||||||
set("Issued", DateTime.UtcNow);
|
set("Issued", DateTime.UtcNow);
|
||||||
set("Refresh", DateTime.UtcNow.AddYears(100).AddMonths(-1));
|
set("Refresh", DateTime.UtcNow.AddYears(100).AddMonths(-1));
|
||||||
set("Expires", DateTime.UtcNow.AddYears(100));
|
set("Expires", DateTime.UtcNow.AddYears(100));
|
||||||
set("Trial", false);
|
set("Trial", false);
|
||||||
|
set("UseApi", true);
|
||||||
|
|
||||||
set("Hash", Convert.ToBase64String((byte[])type.GetMethod("ComputeHash").Invoke(license, new object[0])));
|
set("Hash", Convert.ToBase64String((byte[])type.GetMethod("ComputeHash").Invoke(license, new object[0])));
|
||||||
set("Signature", Convert.ToBase64String((byte[])type.GetMethod("Sign").Invoke(license, new object[] { cert })));
|
set("Signature", Convert.ToBase64String((byte[])type.GetMethod("Sign").Invoke(license, new object[] { cert })));
|
||||||
|
73
update-bitwarden.sh
Executable file
73
update-bitwarden.sh
Executable file
@ -0,0 +1,73 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SCRIPT_BASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||||
|
BW_VERSION="$(curl --silent https://raw.githubusercontent.com/bitwarden/server/master/scripts/bitwarden.sh | grep 'COREVERSION="' | sed 's/^[^"]*"//; s/".*//')"
|
||||||
|
|
||||||
|
echo "Starting Bitwarden update, newest server version: $BW_VERSION"
|
||||||
|
|
||||||
|
# Default path is the parent directory of the BitBetter location
|
||||||
|
BITWARDEN_BASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." >/dev/null 2>&1 && pwd )"
|
||||||
|
|
||||||
|
# Get Bitwarden base from user (or keep default value)
|
||||||
|
read -p "Enter Bitwarden base directory [$BITWARDEN_BASE]: " tmpbase
|
||||||
|
BITWARDEN_BASE=${tmpbase:-$BITWARDEN_BASE}
|
||||||
|
|
||||||
|
# Check if directory exists and is valid
|
||||||
|
[ -d "$BITWARDEN_BASE" ] || { echo "Bitwarden base directory $BITWARDEN_BASE not found!"; exit 1; }
|
||||||
|
[ -f "$BITWARDEN_BASE/bitwarden.sh" ] || { echo "Bitwarden base directory $BITWARDEN_BASE is not valid!"; exit 1; }
|
||||||
|
|
||||||
|
# Check if user wants to recreate the docker-compose override file
|
||||||
|
RECREATE_OV="y"
|
||||||
|
read -p "Rebuild docker-compose override? [Y/n]: " tmprecreate
|
||||||
|
RECREATE_OV=${tmprecreate:-$RECREATE_OV}
|
||||||
|
|
||||||
|
if [[ $RECREATE_OV =~ ^[Yy]$ ]]
|
||||||
|
then
|
||||||
|
{
|
||||||
|
echo "version: '3'"
|
||||||
|
echo ""
|
||||||
|
echo "services:"
|
||||||
|
echo " api:"
|
||||||
|
echo " image: bitbetter/api:$BW_VERSION"
|
||||||
|
echo ""
|
||||||
|
echo " identity:"
|
||||||
|
echo " image: bitbetter/identity:$BW_VERSION"
|
||||||
|
echo ""
|
||||||
|
} > $BITWARDEN_BASE/bwdata/docker/docker-compose.override.yml
|
||||||
|
echo "BitBetter docker-compose override created!"
|
||||||
|
else
|
||||||
|
echo "Make sure to check if the docker override contains the correct image version ($BW_VERSION) in $BITWARDEN_BASE/bwdata/docker/docker-compose.override.yml!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if user wants to rebuild the bitbetter images
|
||||||
|
docker images bitbetter/api --format="{{ .Tag }}" | grep -F -- "${BW_VERSION}" > /dev/null
|
||||||
|
retval=$?
|
||||||
|
REBUILD_BB="n"
|
||||||
|
REBUILD_BB_DESCR="[y/N]"
|
||||||
|
if [ $retval -ne 0 ]; then
|
||||||
|
REBUILD_BB="y"
|
||||||
|
REBUILD_BB_DESCR="[Y/n]"
|
||||||
|
fi
|
||||||
|
read -p "Rebuild BitBetter images? $REBUILD_BB_DESCR: " tmprebuild
|
||||||
|
REBUILD_BB=${tmprebuild:-$REBUILD_BB}
|
||||||
|
|
||||||
|
if [[ $REBUILD_BB =~ ^[Yy]$ ]]
|
||||||
|
then
|
||||||
|
./build.sh
|
||||||
|
echo "BitBetter images updated to version: $BW_VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Now start the bitwarden update
|
||||||
|
cd $BITWARDEN_BASE
|
||||||
|
|
||||||
|
./bitwarden.sh updateself
|
||||||
|
|
||||||
|
# Update the bitwarden.sh: automatically patch run.sh to fix docker-compose pull errors for private images
|
||||||
|
awk '1;/function downloadRunFile/{c=6}c&&!--c{print "sed -i '\''s/docker-compose pull/docker-compose pull --ignore-pull-failures || true/g'\'' $SCRIPTS_DIR/run.sh"}' $BITWARDEN_BASE/bitwarden.sh > tmp_bw.sh && mv tmp_bw.sh $BITWARDEN_BASE/bitwarden.sh
|
||||||
|
chmod +x $BITWARDEN_BASE/bitwarden.sh
|
||||||
|
echo "Patching bitwarden.sh completed..."
|
||||||
|
|
||||||
|
./bitwarden.sh update
|
||||||
|
|
||||||
|
cd $SCRIPT_BASE
|
||||||
|
echo "Bitwarden update completed!"
|
Loading…
Reference in New Issue
Block a user