server
server copied to clipboard
Edit Collection/Save throws error. Includes changing names of collection and access permissions.
Steps To Reproduce
From the current /dev build.
- Go to Vault, Collections, click on the collection.
- Click down carrot next to collection name in main pane. Choose edit info or access.
- Make change to collection OR access like adding user access.
- Click on Save
Expected Result
Expect change/modification to save.
Actual Result
Error is thrown.
From Console:
PUT https://bitwarden.xxx.org/api/organizations/5fab9e5a-a827-42e6-955f-af8a00e5a217/collections/21c7996d-bdaa-468b-8450-af8a00e5a27f 500
(anonymous) @ zone.js:1586
D.i.
Async submit exception: [object Object]
write @ consoleLog.service.ts:51 error @ consoleLog.service.ts:28 (anonymous) @ bit-submit.directive.ts:44 (anonymous) @ catchError.ts:117 o._error @ OperatorSubscriber.ts:79 t.error @ Subscriber.ts:91 (anonymous) @ innerFrom.ts:94 t.invoke @ zone.js:409 onInvoke @ ng_zone.ts:418 t.invoke @ zone.js:408 e.run @ zone.js:169 (anonymous) @ zone.js:1326 t.invokeTask @ zone.js:443 onInvokeTask @ ng_zone.ts:403 t.invokeTask @ zone.js:442 e.runTask @ zone.js:214 b @ zone.js:632 Promise.then (async) y @ zone.js:608 m @ zone.js:619 t.scheduleTask @ zone.js:433 onScheduleTask @ zone.js:320 t.scheduleTask @ zone.js:423 e.scheduleTask @ zone.js:257 e.scheduleMicroTask @ zone.js:277 C @ zone.js:1316 P @ zone.js:1253 (anonymous) @ zone.js:1169 (anonymous) @ zone.js:1185 Promise.then (async) (anonymous) @ zone.js:1577 t @ zone.js:1351 B.t.then @ zone.js:1576 P @ zone.js:1220 (anonymous) @ zone.js:1169 (anonymous) @ zone.js:1185 (anonymous) @ main.83c78a01bee272ba69f1.js:1 t @ zone.js:1351 l @ main.83c78a01bee272ba69f1.js:1 (anonymous) @ main.83c78a01bee272ba69f1.js:1 t @ zone.js:1351 ei @ main.83c78a01bee272ba69f1.js:1 handleError @ main.83c78a01bee272ba69f1.js:1 (anonymous) @ api.service.ts:2044 r @ main.83c78a01bee272ba69f1.js:1 t.invoke @ zone.js:409 onInvoke @ ng_zone.ts:418 t.invoke @ zone.js:408 e.run @ zone.js:169 (anonymous) @ zone.js:1326 t.invokeTask @ zone.js:443 onInvokeTask @ ng_zone.ts:403 t.invokeTask @ zone.js:442 e.runTask @ zone.js:214 b @ zone.js:632 Promise.then (async) y @ zone.js:608 m @ zone.js:619 t.scheduleTask @ zone.js:433 onScheduleTask @ zone.js:320 t.scheduleTask @ zone.js:423 e.scheduleTask @ zone.js:257 e.scheduleMicroTask @ zone.js:277 C @ zone.js:1316 P @ zone.js:1253 (anonymous) @ zone.js:1169 (anonymous) @ zone.js:1185 Promise.then (async) (anonymous) @ zone.js:1577 t @ zone.js:1351 B.t.then @ zone.js:1576 P @ zone.js:1220 (anonymous) @ zone.js:1169 (anonymous) @ zone.js:1185 l @ main.83c78a01bee272ba69f1.js:1 r @ main.83c78a01bee272ba69f1.js:1 t.invoke @ zone.js:409 onInvoke @ ng_zone.ts:418 t.invoke @ zone.js:408 e.run @ zone.js:169 (anonymous) @ zone.js:1326 t.invokeTask @ zone.js:443 onInvokeTask @ ng_zone.ts:403 t.invokeTask @ zone.js:442 e.runTask @ zone.js:214 b @ zone.js:632 Promise.then (async) y @ zone.js:608 m @ zone.js:619 t.scheduleTask @ zone.js:433 onScheduleTask @ zone.js:320 t.scheduleTask @ zone.js:423 e.scheduleTask @ zone.js:257 e.scheduleMicroTask @ zone.js:277 C @ zone.js:1316 P @ zone.js:1253 (anonymous) @ zone.js:1169 (anonymous) @ zone.js:1185 Promise.then (async) (anonymous) @ zone.js:1577 t @ zone.js:1351 B.t.then @ zone.js:1576 P @ zone.js:1220 (anonymous) @ zone.js:1169 (anonymous) @ zone.js:1185 (anonymous) @ main.83c78a01bee272ba69f1.js:1 t @ zone.js:1351 l @ main.83c78a01bee272ba69f1.js:1 r @ main.83c78a01bee272ba69f1.js:1 t.invoke @ zone.js:409 onInvoke @ ng_zone.ts:418 t.invoke @ zone.js:408 e.run @ zone.js:169 (anonymous) @ zone.js:1326 t.invokeTask @ zone.js:443 onInvokeTask @ ng_zone.ts:403 t.invokeTask @ zone.js:442 e.runTask @ zone.js:214 b @ zone.js:632 Promise.then (async) y @ zone.js:608 m @ zone.js:619 t.scheduleTask @ zone.js:433 onScheduleTask @ zone.js:320 t.scheduleTask @ zone.js:423 e.scheduleTask @ zone.js:257 e.scheduleMicroTask @ zone.js:277 C @ zone.js:1316 P @ zone.js:1253 (anonymous) @ zone.js:1169 (anonymous) @ zone.js:1185 Promise.then (async) (anonymous) @ zone.js:1577 t @ zone.js:1351 B.t.then @ zone.js:1576 P @ zone.js:1220 (anonymous) @ zone.js:1169 (anonymous) @ zone.js:1185 (anonymous) @ main.83c78a01bee272ba69f1.js:1 t @ zone.js:1351 l @ main.83c78a01bee272ba69f1.js:1 (anonymous) @ main.83c78a01bee272ba69f1.js:1 t @ zone.js:1351 Ks @ main.83c78a01bee272ba69f1.js:1 hmac @ main.83c78a01bee272ba69f1.js:1 (anonymous) @ encrypt.service.implementation.ts:174 r @ main.83c78a01bee272ba69f1.js:1 t.invoke @ zone.js:409 onInvoke @ ng_zone.ts:418 t.invoke @ zone.js:408 e.run @ zone.js:169 (anonymous) @ zone.js:1326 t.invokeTask @ zone.js:443 onInvokeTask @ ng_zone.ts:403 t.invokeTask @ zone.js:442 e.runTask @ zone.js:214 b @ zone.js:632 Promise.then (async) y @ zone.js:608 m @ zone.js:619 t.scheduleTask @ zone.js:433 onScheduleTask @ zone.js:320 t.scheduleTask @ zone.js:423 e.scheduleTask @ zone.js:257 e.scheduleMicroTask @ zone.js:277 C @ zone.js:1316 P @ zone.js:1253 (anonymous) @ zone.js:1169 (anonymous) @ zone.js:1185 Promise.then (async) (anonymous) @ zone.js:1577 t @ zone.js:1351 B.t.then @ zone.js:1576 P @ zone.js:1220 (anonymous) @ zone.js:1169 (anonymous) @ zone.js:1185 (anonymous) @ main.83c78a01bee272ba69f1.js:1 t @ zone.js:1351 l @ main.83c78a01bee272ba69f1.js:1 r @ main.83c78a01bee272ba69f1.js:1 t.invoke @ zone.js:409 onInvoke @ ng_zone.ts:418 t.invoke @ zone.js:408 e.run @ zone.js:169 (anonymous) @ zone.js:1326 t.invokeTask @ zone.js:443 onInvokeTask @ ng_zone.ts:403 t.invokeTask @ zone.js:442 e.runTask @ zone.js:214 b @ zone.js:632 Promise.then (async) y @ zone.js:608 m @ zone.js:619 t.scheduleTask @ zone.js:433 onScheduleTask @ zone.js:320 t.scheduleTask @ zone.js:423 e.scheduleTask @ zone.js:257 e.scheduleMicroTask @ zone.js:277 C @ zone.js:1316 P @ zone.js:1253 (anonymous) @ zone.js:1169 (anonymous) @ zone.js:1185 Promise.then (async) (anonymous) @ zone.js:1577 t @ zone.js:1351 B.t.then @ zone.js:1576 P @ zone.js:1220 (anonymous) @ zone.js:1169 (anonymous) @ zone.js:1185 (anonymous) @ main.83c78a01bee272ba69f1.js:1 t @ zone.js:1351 l @ main.83c78a01bee272ba69f1.js:1 (anonymous) @ main.83c78a01bee272ba69f1.js:1 t @ zone.js:1351 Ks @ main.83c78a01bee272ba69f1.js:1 aesEncrypt @ main.83c78a01bee272ba69f1.js:1 (anonymous) @ encrypt.service.implementation.ts:168 r @ main.83c78a01bee272ba69f1.js:1 t.invoke @ zone.js:409 onInvoke @ ng_zone.ts:418 t.invoke @ zone.js:408 e.run @ zone.js:169 (anonymous) @ zone.js:1326 t.invokeTask @ zone.js:443 onInvokeTask @ ng_zone.ts:403 t.invokeTask @ zone.js:442 e.runTask @ zone.js:214 b @ zone.js:632 e.invokeTask @ zone.js:529 b @ zone.js:1727 w @ zone.js:1758 x @ zone.js:1794
Screenshots or Videos
Additional Context
No response
Githash Version
"gitHash":"465681c7-dirty"
Environment Details
Synology DSM 7.1.1 Docker INTEL Celeron J4125 20GB
Database Image
mariadb:10
Issue-Link
https://github.com/bitwarden/server/issues/2480
Issue Tracking Info
- [X] I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.
Hi, we experience the same issue, I found this in the api.log
fail: Bit.Api.Utilities.ExceptionHandlerFilterAttribute[0]
=> [...] => Bit.Api.Controllers.CollectionsController.Put (Api)
An exception was thrown while attempting to evaluate a LINQ query parameter expression. See the inner exception for more information. To show additional information call 'DbContextOptionsBuilder.EnableSensitiveDataLogging'.
System.InvalidOperationException: An exception was thrown while attempting to evaluate a LINQ query parameter expression. See the inner exception for more information. To show additional information call 'DbContextOptionsBuilder.EnableSensitiveDataLogging'.
---> System.ArgumentNullException: Value cannot be null. (Parameter 'source')
at System.Linq.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
at System.Linq.Enumerable.Select[TSource,TResult](IEnumerable`1 source, Func`2 selector)
at lambda_method1031(Closure )
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.GetValue(Expression expression, String& parameterName)
--- End of inner exception stack trace ---
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.GetValue(Expression expression, String& parameterName)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.Evaluate(Expression expression, Boolean generateParameter)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.Visit(Expression expression)
at System.Linq.Expressions.ExpressionVisitor.VisitLambda[T](Expression`1 node)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.Visit(Expression expression)
at System.Linq.Expressions.ExpressionVisitor.VisitUnary(UnaryExpression node)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.Visit(Expression expression)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.ExtractParameters(Expression expression, Boolean clearEvaluatedValues)
at Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.ExtractParameters(Expression expression)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExtractParameters(Expression query, IParameterValues parameterValues, IDiagnosticsLogger`1 logger, Boolean parameterize, Boolean generateContextAccessors)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync[TResult](Expression query, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1.GetAsyncEnumerator(CancellationToken cancellationToken)
at System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.GetAsyncEnumerator()
at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable`1 source, CancellationToken cancellationToken)
at Bit.Infrastructure.EntityFramework.Repositories.CollectionRepository.ReplaceCollectionGroupsAsync(DatabaseContext dbContext, Collection collection, IEnumerable`1 groups) in /source/src/Infrastructure.EntityFramework/Repositories/CollectionRepository.cs:line 436
at Bit.Infrastructure.EntityFramework.Repositories.CollectionRepository.ReplaceAsync(Collection collection, IEnumerable`1 groups, IEnumerable`1 users) in /source/src/Infrastructure.EntityFramework/Repositories/CollectionRepository.cs:line 348
at Bit.Core.Services.CollectionService.SaveAsync(Collection collection, IEnumerable`1 groups, IEnumerable`1 users, Nullable`1 assignUserId) in /source/src/Core/Services/Implementations/CollectionService.cs:line 82
at Bit.Api.Controllers.CollectionsController.Put(Guid orgId, Guid id, CollectionRequestModel model) in /source/src/Api/Controllers/CollectionsController.cs:line 172
at lambda_method684(Closure , Object )
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
Hey all, I can not recreate this with the latest from master
. I'm hoping that someone another one of our fixes may have resolved this. The beta
tag just got update earlier today. If you could try and pull that update image and see if you still get this that would be great. Thanks!
I have the same error that is displayed and ends in a 500 Error.
However, I find a different message in the error log. Installed is currently 2023.4.3 as self hosting instance.
2023-05-15 08:44:14.091 +00:00 [Error] Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
at System.Guid.GuidResult.SetFailure(Boolean overflow, String failureMessageID)
at System.Guid.TryParseExactD(ReadOnlySpan`1 guidString, GuidResult& result)
at System.Guid.TryParseGuid(ReadOnlySpan`1 guidString, GuidResult& result)
at System.Guid..ctor(String g)
at Bit.Api.Models.Request.SelectionReadOnlyRequestModel.ToSelectionReadOnly() in /home/runner/work/server/server/src/Api/Models/Request/SelectionReadOnlyRequestModel.cs:line 15
at Bit.Api.Controllers.OrganizationUsersController.<>c.<Put>b__21_0(SelectionReadOnlyRequestModel c) in /home/runner/work/server/server/src/Api/Controllers/OrganizationUsersController.cs:line 284
at System.Linq.Enumerable.SelectListIterator`2.MoveNext()
at Bit.Infrastructure.Dapper.DapperHelpers.ToArrayTVP(IEnumerable`1 values) in /home/runner/work/server/server/src/Infrastructure.Dapper/DapperHelpers.cs:line 46
at Bit.Infrastructure.Dapper.Repositories.OrganizationUserRepository.ReplaceAsync(OrganizationUser obj, IEnumerable`1 collections) in /home/runner/work/server/server/src/Infrastructure.Dapper/Repositories/OrganizationUserRepository.cs:line 326
at Bit.Core.Services.OrganizationService.SaveUserAsync(OrganizationUser user, Nullable`1 savingUserId, IEnumerable`1 collections, IEnumerable`1 groups) in /home/runner/work/server/server/src/Core/Services/Implementations/OrganizationService.cs:line 1552
at Bit.Api.Controllers.OrganizationUsersController.Put(String orgId, String id, OrganizationUserUpdateRequestModel model) in /home/runner/work/server/server/src/Api/Controllers/OrganizationUsersController.cs:line 283
at lambda_method124(Closure , Object )
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
With Version 2023.5.0 my reported problem is fixed. can anyone else confirm this as well?
I'm seeing this on Version 2023.8.2, running the bitwarden/self-host:beta docker image.
I've had this issue since installing bitwarden in March. The issue still persists with the latest docker version.
$ sudo docker images | grep bitwarden
bitwarden/self-host beta 7b01a60465b1 13 days ago 800MB
This is a major functionality bug that has been blocking daily use cases. Since proton's password manager appears feature complete, we'll have to move to that service instead.
I was able reproduce the issue on a clean container with clean file system using the following config:
version: '2'
services:
bitwarden:
depends_on:
- mariadb
image: bitwarden/self-host:beta
restart: 'unless-stopped'
ports:
- "7080:8080"
volumes:
- ./container_data/bitwarden/bitwarden:/etc/bitwarden
environment:
BW_DOMAIN: bitwarden.local
BW_DB_PROVIDER: mariadb
BW_DB_SERVER: mariadb
BW_DB_DATABASE: bitwarden_vault
BW_DB_USERNAME: bitwarden
BW_DB_PASSWORD: RickRollThis
BW_INSTALLATION_ID: ${BW_INSTALLATION_ID}
BW_INSTALLATION_KEY: ${BW_INSTALLATION_KEY}
globalSettings__mail__replyToEmail: '[email protected]'
globalSettings__mail__smtp__host: 'smtp4dev'
globalSettings__mail__smtp__port: '25'
globalSettings__mail__smtp__ssl: 'false'
globalSettings__mail__smtp__username: '[email protected]'
globalSettings__mail__smtp__password: 'SLDKF#039ru'
adminSettings__admins: ${adminSettings__admins}
mariadb:
image: mariadb:10
restart: 'unless-stopped'
volumes:
- ./container_data/mariadb/datadir:/var/lib/mysql
environment:
MARIADB_USER: "bitwarden"
MARIADB_PASSWORD: "RickRollThis"
MARIADB_DATABASE: "bitwarden_vault"
MARIADB_RANDOM_ROOT_PASSWORD: "true"
smtp4dev:
image: rnwood/smtp4dev:v3
restart: 'unless-stopped'
ports:
- 4000:80
volumes:
- ./container_data/smtp4dev/data:/smtp4dev
After startup:
- Goto http://localhost:7080/
- Register as the admin email listed in config.
- Login
- Register your organization.
- Add a collection to the organization.
- Open the newly saved collection.
- Change anything and press save.
The API logs will appear as @YetAnotherSimon reported and the JS logs will appear in the browser console as @cvondra reported.
https://github.com/bitwarden/self-host/issues/186
still there