mirror of
https://github.com/jakeswenson/BitBetter.git
synced 2025-12-16 03:06:18 +00:00
Update container name/links of Bitwarden Unified to Bitwarden Lite (#265)
* Rename Containers from bitwarden/self-host:beta to bitwarden/lite:beta * Edit README to reflect rename * Change build.ps1 and Dockerfile-bitwarden-patched to CRLF * Remove .DS_Store file, and add to .gitignore * Actually remove .DS_Store * Make all ps1 files CRLF in .gitattributes & Make Dockerfiles LF. * Change from beta tag to latest
This commit is contained in:
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*.ps1 text eol=crlf
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -9,3 +9,4 @@ src/bitBetter/.vs/*
|
|||||||
*.pfx
|
*.pfx
|
||||||
*.cer
|
*.cer
|
||||||
*.vsidx
|
*.vsidx
|
||||||
|
.DS_Store
|
||||||
|
|||||||
@@ -63,14 +63,14 @@ The scripts supports running and patching multi instances.
|
|||||||
Edit the .servers/serverlist.txt file and fill in the missing values, they can be replaced with existing installation values.
|
Edit the .servers/serverlist.txt file and fill in the missing values, they can be replaced with existing installation values.
|
||||||
This file may be empty, but there will be no containers will be spun up automatically.
|
This file may be empty, but there will be no containers will be spun up automatically.
|
||||||
|
|
||||||
Now it is time to **run the main build script** to generate a modified version of the `ghcr.io/bitwarden/self-host` docker image and the license generator.
|
Now it is time to **run the main build script** to generate a modified version of the `ghcr.io/bitwarden/lite` docker image and the license generator.
|
||||||
|
|
||||||
From the BitBetter directory, simply run:
|
From the BitBetter directory, simply run:
|
||||||
```
|
```
|
||||||
./build.[sh|ps1]
|
./build.[sh|ps1]
|
||||||
```
|
```
|
||||||
|
|
||||||
This will create a new self-signed certificate in the `.keys` directory if one does not already exist and then create a modified version of the official `ghcr.io/bitwarden/self-host` image called `bitwarden-patched`.
|
This will create a new self-signed certificate in the `.keys` directory if one does not already exist and then create a modified version of the official `ghcr.io/bitwarden/lite` image called `bitwarden-patched`.
|
||||||
|
|
||||||
Afterwards it will automatically generate the license generator and start all previously specified containers which are **now ready to accept self-issued licenses.**
|
Afterwards it will automatically generate the license generator and start all previously specified containers which are **now ready to accept self-issued licenses.**
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ If you ran the build script, you can **simply run the license gen in interactive
|
|||||||
|
|
||||||
## Migrating from mssql to a real database
|
## Migrating from mssql to a real database
|
||||||
|
|
||||||
Prepare a new database and bwdata directory, download and prepare the new settings.env (https://raw.githubusercontent.com/bitwarden/self-host/refs/heads/main/docker-unified/settings.env)
|
Prepare a new database and bwdata directory, download and prepare the new settings.env (https://raw.githubusercontent.com/bitwarden/self-host/refs/heads/main/bitwarden-lite/settings.env)
|
||||||
|
|
||||||
Make sure you can get the data from either the backup file or by connecting directly to the mssql database (navicat has a trial).
|
Make sure you can get the data from either the backup file or by connecting directly to the mssql database (navicat has a trial).
|
||||||
|
|
||||||
@@ -160,4 +160,4 @@ Require a recreation of the docker container, build.sh will suffice too.
|
|||||||
|
|
||||||
<a name="#f1"><sup>1</sup></a>This tool builds on top of the `bitbetter/api` container image so make sure you've built that above using the root `./build.sh` script.
|
<a name="#f1"><sup>1</sup></a>This tool builds on top of the `bitbetter/api` container image so make sure you've built that above using the root `./build.sh` script.
|
||||||
|
|
||||||
<a name="#f2"><sup>2</sup></a> If you wish to change this you'll need to change the value that `licenseGen/Program.cs` uses for its `GenerateUserLicense` and `GenerateOrgLicense` calls. Remember, this is really unnecessary as this certificate does not represent any type of security-related certificate.
|
<a name="#f2"><sup>2</sup></a> If you wish to change this you'll need to change the value that `licenseGen/Program.cs` uses for its `GenerateUserLicense` and `GenerateOrgLicense` calls. Remember, this is really unnecessary as this certificate does not represent any type of security-related certificate.
|
||||||
|
|||||||
256
build.ps1
256
build.ps1
@@ -1,128 +1,128 @@
|
|||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
$PSNativeCommandUseErrorActionPreference = $true
|
$PSNativeCommandUseErrorActionPreference = $true
|
||||||
|
|
||||||
# detect buildx, ErrorActionPreference will ensure the script stops execution if not found
|
# detect buildx, ErrorActionPreference will ensure the script stops execution if not found
|
||||||
docker buildx version
|
docker buildx version
|
||||||
|
|
||||||
# define temporary directory
|
# define temporary directory
|
||||||
$tempdirectory = "$pwd\temp"
|
$tempdirectory = "$pwd\temp"
|
||||||
# define services to patch
|
# define services to patch
|
||||||
$components = "Api","Identity"
|
$components = "Api","Identity"
|
||||||
|
|
||||||
# delete old directories / files if applicable
|
# delete old directories / files if applicable
|
||||||
if (Test-Path "$tempdirectory" -PathType Container) {
|
if (Test-Path "$tempdirectory" -PathType Container) {
|
||||||
Remove-Item "$tempdirectory" -Recurse -Force
|
Remove-Item "$tempdirectory" -Recurse -Force
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Test-Path -Path "$pwd\src\licenseGen\Core.dll" -PathType Leaf) {
|
if (Test-Path -Path "$pwd\src\licenseGen\Core.dll" -PathType Leaf) {
|
||||||
Remove-Item "$pwd\src\licenseGen\Core.dll" -Force
|
Remove-Item "$pwd\src\licenseGen\Core.dll" -Force
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Test-Path -Path "$pwd\src\licenseGen\cert.pfx" -PathType Leaf) {
|
if (Test-Path -Path "$pwd\src\licenseGen\cert.pfx" -PathType Leaf) {
|
||||||
Remove-Item "$pwd\src\licenseGen\cert.pfx" -Force
|
Remove-Item "$pwd\src\licenseGen\cert.pfx" -Force
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Test-Path -Path "$pwd\src\bitBetter\cert.cer" -PathType Leaf) {
|
if (Test-Path -Path "$pwd\src\bitBetter\cert.cer" -PathType Leaf) {
|
||||||
Remove-Item "$pwd\src\bitBetter\cert.cer" -Force
|
Remove-Item "$pwd\src\bitBetter\cert.cer" -Force
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Test-Path "$pwd\.keys\cert.cert" -PathType Leaf) {
|
if (Test-Path "$pwd\.keys\cert.cert" -PathType Leaf) {
|
||||||
Rename-Item -Path "$pwd\.keys\cert.cert" -NewName "$pwd\.keys\cert.cer"
|
Rename-Item -Path "$pwd\.keys\cert.cert" -NewName "$pwd\.keys\cert.cer"
|
||||||
}
|
}
|
||||||
|
|
||||||
# generate keys if none are available
|
# generate keys if none are available
|
||||||
if (!(Test-Path "$pwd\.keys" -PathType Container)) {
|
if (!(Test-Path "$pwd\.keys" -PathType Container)) {
|
||||||
.\generateKeys.ps1
|
.\generateKeys.ps1
|
||||||
}
|
}
|
||||||
|
|
||||||
# copy the key to bitBetter
|
# copy the key to bitBetter
|
||||||
Copy-Item "$pwd\.keys\cert.cer" -Destination "$pwd\src\bitBetter"
|
Copy-Item "$pwd\.keys\cert.cer" -Destination "$pwd\src\bitBetter"
|
||||||
|
|
||||||
# build bitBetter and clean the source directory after
|
# build bitBetter and clean the source directory after
|
||||||
docker build --no-cache -t bitbetter/bitbetter "$pwd\src\bitBetter"
|
docker build --no-cache -t bitbetter/bitbetter "$pwd\src\bitBetter"
|
||||||
Remove-Item "$pwd\src\bitBetter\cert.cer" -Force
|
Remove-Item "$pwd\src\bitBetter\cert.cer" -Force
|
||||||
|
|
||||||
# gather all running instances, cannot run a wildcard filter on Ancestor= :(, does find all where name = *bitwarden*
|
# gather all running instances, cannot run a wildcard filter on Ancestor= :(, does find all where name = *bitwarden*
|
||||||
$oldinstances = docker container ps --all -f Name=bitwarden --format '{{.ID}}'
|
$oldinstances = docker container ps --all -f Name=bitwarden --format '{{.ID}}'
|
||||||
|
|
||||||
# stop and remove all running instances
|
# stop and remove all running instances
|
||||||
foreach ($instance in $oldinstances) {
|
foreach ($instance in $oldinstances) {
|
||||||
docker stop $instance
|
docker stop $instance
|
||||||
docker rm $instance
|
docker rm $instance
|
||||||
}
|
}
|
||||||
|
|
||||||
# update bitwarden itself
|
# update bitwarden itself
|
||||||
if ($args[0] -eq 'update') {
|
if ($args[0] -eq 'update') {
|
||||||
docker pull ghcr.io/bitwarden/self-host:beta
|
docker pull ghcr.io/bitwarden/lite:latest
|
||||||
} else {
|
} else {
|
||||||
$confirmation = Read-Host "Update (or get) bitwarden source container (y/n)"
|
$confirmation = Read-Host "Update (or get) bitwarden source container (y/n)"
|
||||||
if ($confirmation -eq 'y') {
|
if ($confirmation -eq 'y') {
|
||||||
docker pull ghcr.io/bitwarden/self-host:beta
|
docker pull ghcr.io/bitwarden/lite:latest
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# stop and remove previous existing patch(ed) container
|
# stop and remove previous existing patch(ed) container
|
||||||
$oldinstances = docker container ps --all -f Ancestor=bitwarden-patched --format '{{.ID}}'
|
$oldinstances = docker container ps --all -f Ancestor=bitwarden-patched --format '{{.ID}}'
|
||||||
foreach ($instance in $oldinstances) {
|
foreach ($instance in $oldinstances) {
|
||||||
docker stop $instance
|
docker stop $instance
|
||||||
docker rm $instance
|
docker rm $instance
|
||||||
}
|
}
|
||||||
$oldinstances = docker image ls bitwarden-patched --format '{{.ID}}'
|
$oldinstances = docker image ls bitwarden-patched --format '{{.ID}}'
|
||||||
foreach ($instance in $oldinstances) {
|
foreach ($instance in $oldinstances) {
|
||||||
docker image rm $instance
|
docker image rm $instance
|
||||||
}
|
}
|
||||||
|
|
||||||
# remove old extract containers
|
# remove old extract containers
|
||||||
$oldinstances = docker container ps --all -f Name=bitwarden-extract --format '{{.ID}}'
|
$oldinstances = docker container ps --all -f Name=bitwarden-extract --format '{{.ID}}'
|
||||||
foreach ($instance in $oldinstances) {
|
foreach ($instance in $oldinstances) {
|
||||||
docker stop $instance
|
docker stop $instance
|
||||||
docker rm $instance
|
docker rm $instance
|
||||||
}
|
}
|
||||||
|
|
||||||
# start a new bitwarden instance so we can patch it
|
# start a new bitwarden instance so we can patch it
|
||||||
$patchinstance = docker run -d --name bitwarden-extract ghcr.io/bitwarden/self-host:beta
|
$patchinstance = docker run -d --name bitwarden-extract ghcr.io/bitwarden/lite:latest
|
||||||
|
|
||||||
# create our temporary directory
|
# create our temporary directory
|
||||||
New-item -ItemType Directory -Path $tempdirectory
|
New-item -ItemType Directory -Path $tempdirectory
|
||||||
|
|
||||||
# extract the files that need to be patched from the services that need to be patched into our temporary directory
|
# extract the files that need to be patched from the services that need to be patched into our temporary directory
|
||||||
foreach ($component in $components) {
|
foreach ($component in $components) {
|
||||||
New-item -itemtype Directory -path "$tempdirectory\$component"
|
New-item -itemtype Directory -path "$tempdirectory\$component"
|
||||||
docker cp $patchinstance`:/app/$component/Core.dll "$tempdirectory\$component\Core.dll"
|
docker cp $patchinstance`:/app/$component/Core.dll "$tempdirectory\$component\Core.dll"
|
||||||
}
|
}
|
||||||
|
|
||||||
# stop and remove our temporary container
|
# stop and remove our temporary container
|
||||||
docker stop bitwarden-extract
|
docker stop bitwarden-extract
|
||||||
docker rm bitwarden-extract
|
docker rm bitwarden-extract
|
||||||
|
|
||||||
# run bitBetter, this applies our patches to the required files
|
# run bitBetter, this applies our patches to the required files
|
||||||
docker run -v "$tempdirectory`:/app/mount" --rm bitbetter/bitbetter
|
docker run -v "$tempdirectory`:/app/mount" --rm bitbetter/bitbetter
|
||||||
|
|
||||||
# create a new image with the patched files
|
# create a new image with the patched files
|
||||||
docker build . --tag bitwarden-patched --file "$pwd\src\bitBetter\Dockerfile-bitwarden-patch"
|
docker build . --tag bitwarden-patched --file "$pwd\src\bitBetter\Dockerfile-bitwarden-patch"
|
||||||
|
|
||||||
# start all user requested instances
|
# start all user requested instances
|
||||||
if (Test-Path -Path "$pwd\.servers\serverlist.txt" -PathType Leaf) {
|
if (Test-Path -Path "$pwd\.servers\serverlist.txt" -PathType Leaf) {
|
||||||
foreach($line in Get-Content "$pwd\.servers\serverlist.txt") {
|
foreach($line in Get-Content "$pwd\.servers\serverlist.txt") {
|
||||||
if (!($line.StartsWith("#"))) {
|
if (!($line.StartsWith("#"))) {
|
||||||
Invoke-Expression "& $line"
|
Invoke-Expression "& $line"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# remove our bitBetter image
|
# remove our bitBetter image
|
||||||
docker image rm bitbetter/bitbetter
|
docker image rm bitbetter/bitbetter
|
||||||
|
|
||||||
# copy our patched library to the licenseGen source directory
|
# copy our patched library to the licenseGen source directory
|
||||||
Copy-Item "$tempdirectory\Identity\Core.dll" -Destination "$pwd\src\licenseGen"
|
Copy-Item "$tempdirectory\Identity\Core.dll" -Destination "$pwd\src\licenseGen"
|
||||||
Copy-Item "$pwd\.keys\cert.pfx" -Destination "$pwd\src\licenseGen"
|
Copy-Item "$pwd\.keys\cert.pfx" -Destination "$pwd\src\licenseGen"
|
||||||
|
|
||||||
# build the licenseGen
|
# build the licenseGen
|
||||||
docker build -t bitbetter/licensegen "$pwd\src\licenseGen"
|
docker build -t bitbetter/licensegen "$pwd\src\licenseGen"
|
||||||
|
|
||||||
# clean the licenseGen source directory
|
# clean the licenseGen source directory
|
||||||
Remove-Item "$pwd\src\licenseGen\Core.dll" -Force
|
Remove-Item "$pwd\src\licenseGen\Core.dll" -Force
|
||||||
Remove-Item "$pwd\src\licenseGen\cert.pfx" -Force
|
Remove-Item "$pwd\src\licenseGen\cert.pfx" -Force
|
||||||
|
|
||||||
# remove our temporary directory
|
# remove our temporary directory
|
||||||
Remove-Item "$tempdirectory" -Recurse -Force
|
Remove-Item "$tempdirectory" -Recurse -Force
|
||||||
|
|||||||
8
build.sh
8
build.sh
@@ -54,11 +54,11 @@ done
|
|||||||
|
|
||||||
# update bitwarden itself
|
# update bitwarden itself
|
||||||
if [ "$1" = "update" ]; then
|
if [ "$1" = "update" ]; then
|
||||||
docker pull ghcr.io/bitwarden/self-host:beta
|
docker pull ghcr.io/bitwarden/lite:latest
|
||||||
else
|
else
|
||||||
read -p "Update (or get) bitwarden source container (y/n): "
|
read -p "Update (or get) bitwarden source container (y/n): "
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||||
docker pull ghcr.io/bitwarden/self-host:beta
|
docker pull ghcr.io/bitwarden/lite:latest
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ for INSTANCE in ${OLDINSTANCES[@]}; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# start a new bitwarden instance so we can patch it
|
# start a new bitwarden instance so we can patch it
|
||||||
PATCHINSTANCE=$(docker run -d --name bitwarden-extract ghcr.io/bitwarden/self-host:beta)
|
PATCHINSTANCE=$(docker run -d --name bitwarden-extract ghcr.io/bitwarden/lite:latest)
|
||||||
|
|
||||||
# create our temporary directory
|
# create our temporary directory
|
||||||
mkdir $TEMPDIRECTORY
|
mkdir $TEMPDIRECTORY
|
||||||
@@ -128,4 +128,4 @@ rm -f "$PWD/src/licenseGen/Core.dll"
|
|||||||
rm -f "$PWD/src/licenseGen/cert.pfx"
|
rm -f "$PWD/src/licenseGen/cert.pfx"
|
||||||
|
|
||||||
# remove our temporary directory
|
# remove our temporary directory
|
||||||
rm -rf "$TEMPDIRECTORY"
|
rm -rf "$TEMPDIRECTORY"
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
$PSNativeCommandUseErrorActionPreference = $true
|
$PSNativeCommandUseErrorActionPreference = $true
|
||||||
|
|
||||||
if ($($args.Count) -lt 1) {
|
if ($($args.Count) -lt 1) {
|
||||||
echo "USAGE: <License Gen action> [License Gen args...]"
|
echo "USAGE: <License Gen action> [License Gen args...]"
|
||||||
echo "ACTIONS:"
|
echo "ACTIONS:"
|
||||||
echo " interactive"
|
echo " interactive"
|
||||||
echo " user"
|
echo " user"
|
||||||
echo " org"
|
echo " org"
|
||||||
Exit 1
|
Exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($args[0] -eq "interactive") {
|
if ($args[0] -eq "interactive") {
|
||||||
docker run -it --rm bitbetter/licensegen interactive
|
docker run -it --rm bitbetter/licensegen interactive
|
||||||
} else {
|
} else {
|
||||||
docker run bitbetter/licensegen $args
|
docker run bitbetter/licensegen $args
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
FROM ghcr.io/bitwarden/self-host:beta
|
FROM ghcr.io/bitwarden/lite:latest
|
||||||
|
|
||||||
COPY ./temp/ /app/
|
COPY ./temp/ /app/
|
||||||
|
|||||||
Reference in New Issue
Block a user