mirror of
				https://github.com/jakeswenson/BitBetter.git
				synced 2025-10-31 12:53:25 +00:00 
			
		
		
		
	
						commit
						b23b9a92fa
					
				|  | @ -13,6 +13,7 @@ Credit to https://github.com/h44z/BitBetter and https://github.com/jakeswenson/B | |||
|     + [Dependencies](#dependencies) | ||||
|     + [Setting up BitBetter](#setting-up-bitbetter) | ||||
|     + [Building BitBetter](#building-bitbetter) | ||||
|     + [Updating Bitwarden and BitBetter](#updating-bitwarden-and-bitbetter) | ||||
|     + [Generating Signed Licenses](#generating-signed-licenses) | ||||
| 2. [FAQ](#faq-questions-you-might-have-) | ||||
| 3. [Footnotes](#footnotes) | ||||
|  | @ -23,7 +24,7 @@ The following instructions are for unix-based systems (Linux, BSD, macOS), it is | |||
| ## Dependencies | ||||
| 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.34.0, might work on lower versions) | ||||
| * openssl (probably already installed on most Linux or WSL systems, any version should work) | ||||
| 
 | ||||
| ## 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 | ||||
| 
 | ||||
| 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=`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. | ||||
| [ -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 build --build-arg BITWARDEN_TAG=bitwarden/api -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/api:$BW_VERSION -t bitbetter/api "$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()); | ||||
| 
 | ||||
|             Console.WriteLine($"Existing Cert Thumbprin: {existingCert.Thumbprint}"); | ||||
|             Console.WriteLine($"Existing Cert Thumbprint: {existingCert.Thumbprint}"); | ||||
|             X509Certificate2 certificate = new X509Certificate2(cert); | ||||
| 
 | ||||
|             Console.WriteLine($"New cert Thumbprint: {certificate.Thumbprint}"); | ||||
|             Console.WriteLine($"New Cert Thumbprint: {certificate.Thumbprint}"); | ||||
| 
 | ||||
|             var ctor = licensingType.GetConstructors().Single(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -372,6 +372,7 @@ namespace bitwardenSelfLicensor | |||
|             set("Refresh", DateTime.UtcNow.AddYears(100).AddMonths(-1)); | ||||
|             set("Expires", DateTime.UtcNow.AddYears(100)); | ||||
|             set("Trial", false); | ||||
|             set("UseApi", true); | ||||
| 
 | ||||
|             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 }))); | ||||
|  |  | |||
							
								
								
									
										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