Release: v0.1.0-alpha
Release Docker Image / Build & Push Docker Image (release) Failing after 1m30s

This commit is contained in:
2026-04-05 16:56:16 +02:00
parent 23ff731579
commit fd13e67aef
89 changed files with 18786 additions and 0 deletions
+215
View File
@@ -0,0 +1,215 @@
# Troubleshooting
Common issues and solutions for Keywarden.
## Startup Issues
### "Failed to initialize database"
**Cause**: SQLite database file cannot be created or accessed.
**Solutions**:
- Check that the `/data` directory exists and is writable
- Verify the `KEYWARDEN_DB_PATH` environment variable
- In Docker: ensure the volume is correctly mounted and the `keywarden` user has write access
### "Failed to create directory"
**Cause**: Data directories (`/data`, `/data/keys`, `/data/master`) cannot be created.
**Solutions**:
- Check filesystem permissions
- In Docker: the container runs as user `keywarden` — ensure the volume has correct ownership
### Initial Password Not Showing
**Cause**: The initial owner password is only printed on the **first startup** when no users exist.
**Solutions**:
- Check the very first startup logs: `docker compose logs keywarden`
- If you missed the password, delete the database and restart to trigger a fresh setup:
```bash
docker compose down
docker volume rm keywarden_keywarden_data
docker compose up -d
docker compose logs keywarden
```
## Login Issues
### "Invalid username or password"
- Verify the username (case-sensitive)
- Check for typos in the password
- If this is the initial login, find the auto-generated password in the startup logs
### "Account is temporarily locked"
**Cause**: Too many failed login attempts.
**Solutions**:
- Wait for the lockout period to expire (default: 15 minutes)
- Ask an administrator to unlock the account from the user management page
- If you're the only owner: wait for the lockout to expire, or delete and recreate the database
### MFA Code Invalid
- Verify your authenticator app has the correct time (TOTP is time-based)
- Allow ±30 seconds of clock skew
- If you lost your MFA device, an admin with database access will need to manually disable MFA
### "Forbidden invalid or missing CSRF token"
**Cause**: CSRF token mismatch. This can happen if:
- Your session expired and you submitted a form on a stale page
- Cookies are blocked by your browser
- A proxy is stripping or modifying cookies
**Solutions**:
- Refresh the page and try again
- Clear your browser cookies for the Keywarden domain
- Ensure cookies are not being blocked
## SSH Deployment Issues
### "System master key not available"
**Cause**: The system master key is missing or corrupted in the settings table.
**Solutions**:
- Check the startup logs for the master key output
- Navigate to Admin Settings and view the master key
- If corrupted, regenerate the master key (owner only)
### "Connection failed" / "Cannot reach server"
**Cause**: Keywarden cannot establish a TCP connection to the target server.
**Solutions**:
- Verify the server hostname and port
- Use the **Connection Test** feature to check TCP connectivity
- Ensure the Keywarden container can reach the server's network
- Check firewall rules on both sides
### "SSH authentication failed"
**Cause**: The system master key is not authorized on the target server.
**Solutions**:
1. Get the master public key from Admin Settings or startup logs
2. Add it to the target server:
```bash
echo "<master-public-key>" >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
```
3. Ensure the server's SSH daemon accepts public key authentication
4. Use the **Auth Test** feature to verify
5. If using a non-root admin user on the target server, ensure that user has permissions to manage `authorized_keys` for other users
### "Failed to create system user"
**Cause**: The `useradd` command failed on the target server.
**Solutions**:
- Verify the server's admin user has sufficient privileges (root or sudo)
- Check if the username conflicts with an existing user
- Review the server's `/var/log/auth.log` for details
### "Failed to deploy key for user"
**Cause**: Key deployment to a specific system user failed.
**Solutions**:
- Verify the system user exists (or enable "Create User" in the assignment)
- Check directory permissions on the target server
- Ensure the admin user can write to other users' `.ssh` directories
## Email Issues
### "Email is not configured"
**Cause**: `KEYWARDEN_SMTP_HOST` is not set.
**Solution**: Configure SMTP settings in the `.env` file. See [Email Configuration](email.md).
### SMTP Connection Errors
- Verify the SMTP host, port, and credentials
- Check if the Docker container can reach the SMTP server
- Try different TLS settings (`KEYWARDEN_SMTP_TLS=true/false`)
- For port 465, ensure implicit TLS is supported by the server
- Check if the SMTP server requires app-specific passwords
### Invitation Emails Not Arriving
- Verify the recipient's email address
- Check spam/junk folders
- Review application logs for SMTP errors (`KEYWARDEN_LOG_LEVEL=DEBUG`)
- Verify `KEYWARDEN_BASE_URL` is set correctly (needed for the invitation link)
- Send a test email from Admin Settings to verify SMTP works
## Backup Issues
### "Failed to decrypt backup"
**Cause**: Wrong backup password.
**Solution**: Use the exact password that was provided during backup export.
### "Failed to parse backup"
**Cause**: The backup file is corrupt or not a valid `.kwbak` file.
**Solution**: Ensure the file was not modified or corrupted during transfer.
### SSH Keys Not Working After Restore
**Cause**: The `KEYWARDEN_ENCRYPTION_KEY` in the current environment doesn't match the one used when the backup was created.
**Solution**: Set `KEYWARDEN_ENCRYPTION_KEY` to the same value that was in use when the backup was created.
## Performance
### Slow Page Loads
- Check the log level — `TRACE` and `DEBUG` can be verbose
- SQLite WAL mode is enabled by default for better concurrent read performance
- The in-memory session store scales well for typical deployments
### High Memory Usage
- Sessions are stored in memory — many active sessions increase memory
- The session cleanup goroutine runs every minute to remove expired sessions
- Avatar images are served from disk, not stored in memory
## Logs
### Viewing Logs
```bash
# Docker
docker compose logs keywarden
docker compose logs -f keywarden # follow
# Log levels
KEYWARDEN_LOG_LEVEL=DEBUG # more detail
KEYWARDEN_LOG_LEVEL=TRACE # maximum verbosity
```
### Log Levels
| Level | Output |
|---|---|
| `ERROR` | Only errors |
| `WARN` | Errors + warnings |
| `INFO` | Errors + warnings + informational (default) |
| `DEBUG` | All of the above + debug details |
| `TRACE` | Maximum verbosity, including request/response details |
### Request Logging
Every HTTP request is logged with:
- Method, path, status code
- Response time
- Client IP address
- Username (if authenticated)