Important
This update includes important security fixes.
User exports and imports
User import and export files will now both be saved to /exports
in local storage by default. Import files will be deleted once the import is completed.
Instance administrators should manually check your images
directory (local and S3 storage) for any user export files (ending in .gz
). These should be deleted as a matter of priority as they are publicly available. You are also strongly encouraged to delete any files in S3 exports
directories, especially is you are using Backblaze (B2) or Cloudflare (R2) S3-compatible storage as your bucket may be unsecured.
If you wish to use S3 storage for export files instead of local storage, you must set the following values in your .env
file:
USE_S3_FOR_EXPORTS=true
EXPORTS_S3_CUSTOM_DOMAIN
EXPORTS_STORAGE_BUCKET_NAME
The following new .env
values for are optional, and will default to the equivalent S3 env values if not set:
EXPORTS_ACCESS_KEY_ID
EXPORTS_SECRET_ACCESS_KEY
EXPORTS_S3_REGION_NAME
EXPORTS_S3_ENDPOINT_URL
Important
This update changes default values
The default file upload limit is now 100MiB
. This can be changed by defining MAX_UPLOAD_MiB
in .env
, as a number representing mebibytes. This may change again in future after enough time is provided for legacy user export files to be imported to new instances.
User import and export files now default to save to /exports
in local storage. If you wish to use S3 storage for user import/export files instead of local storage, you must set USE_S3_FOR_EXPORTS=true
in your .env
file.
Warning
This version has new minimum versions for dependencies
Postgres version
The minimum Postgres version is now 14
(17
preferred). Follow the BookWyrm upgrade instructions below to ensure a smooth migration.
Django version
The Django version is now 5.2
.
Environment variables
New env variables
NGINX_SETUP
- this actually changed in0.7.5
but was not mentioned in the release notes. Possible values arereverse-proxy
orhttps
. If not set, defaults tohttps
. If you are using a reverse-proxy or working in a development environment (including when usinglocalhost
), set this toreverse-proxy
.
Changes and deprecations to env values
USE_HTTPS
is no longer used. HTTPS will now always be assumed unlessDOMAIN=localhost
. This ensures that it is not possible to run in production on thehttp
protocol. If you were previously running in production withUSE_HTTPS
set toFalse
(or not set at all) you may have some user and object IDs withhttp
URLs. You should ensure that you have http to https forwarding in place for your IDs work correctly.DEBUG
now defaults tofalse
rather thantrue
. This makes production installs more secure by default, but may require adjustment for existing development environments.- If not set,
PORT
will now default to443
unlessDOMAIN
islocalhost
, in which case it will default to80
. This is different to previous behaviour, where if unset,PORT
was1333
.
Upgrading to BookWyrm v0.8.0
All environments
- ALWAYS BACK UP YOUR DATABASE BEFORE UPGRADING and ideally know how you can restore it if something goes wrong.
- Check the environment variables you have set in
.env
against the notes above, and make any necessary changes
Docker
- You will need to stop your containers in order to upgrade:
docker compose down
- Upgrade postgres to version 17:
./bw-dev upgrade_db_version
- Upgrade BookWyrm:
./bw-dev update
(NOTE: if you have previously commented out thedocker-compose build
stage you must uncomment this first in order to correctly rebuild with Django 5.2)
Non-docker
- Check that your postgresql version is at least
14
(17
is preferred). If necessary, upgrade according to the postgres instructions or using the relevant procedure for your operating system - Follow the BookWyrm upgrade documentation for dockerless
What's Changed
‼️ Breaking Changes & New Settings ⚙️
- change DEBUG default to True by @hughrun in #3576
- Deprecate USE_HTTPS by @hughrun in #3588
- Make file-upload limit configurable and inform when import-file is too big by @ilkka-ollakka in #3627
- Prefer existing book data from the fedi when importing user accounts by @hughrun in #3653
- Allow S3 Default ACL Override by @hughrun in #3699
Updated Dependencies 🧸
- update aiohttp requirement to fix connectivity to services behind cloudflare by @ilkka-ollakka in #3536
- fix
bw-dev setup
failing and remove--build
frombw-dev up
by @hughrun in #3561 - update requests dependency to 2.23.3 by @ilkka-ollakka in #3571
- requirements: update django-celery-beat and django-sass-processor by @ilkka-ollakka in #3617
- requirements: upgrade psycopg2 to psycopg3 by @ilkka-ollakka in #3605
- update postgresql to version 17 and add bw-dev command to upgrade current database volume by @ilkka-ollakka in #3615
- Upgrade django to 5.2 LTS by @ilkka-ollakka in #3616
- requirements: pump pillow to 11.3 by @ilkka-ollakka in #3674
New Features 🎉
- show finna links/update button in book info if finna key is present by @ilkka-ollakka in #3642
- Add ability to view and terminate user sessions by @hughrun in #3664
- Improve sort title handling by @hughrun in #3666
- Make form error messages more obvious by @hughrun in #3665
- Improve Unicode support in slugs and URL patterns by @talmuth in #3692
- Add DublinCore metadata to Book page by @jakkarth in #3694
Bug Fixes 🐛
- Exclude deleted items in user export by @ilkka-ollakka in #3586
- Bugfix/show rating shown without existing ratings by @mario-kromer in #3577
- fix s3 exports storage location by @hughrun in #3602
- fix opensearch base url missing by @hughrun in #3603
- add isbn10 and isbn13 validators to Edition model by @ilkka-ollakka in #3573
- Fix shelf RSS items to use shelved date rather than book publication date by @timothyjrogers in #3634
- Don't require authentication to view user's non-private groups by @timothyjrogers in #3637
- Fix #3632: Add anchor link to scroll to reviews section by @AdityaDeshmukh1 in #3646
- Updated EXIF removal to support large image uploads by @timothyjrogers in #3651
- https: send x-forwarded-proto from nginx and use it in django by @ilkka-ollakka in #3673
- Guess series number from series-info in openlibrary connector via regex by @ilkka-ollakka in #3657
- fix Inventaire covers not appearing in book search by @hughrun in #3678
- Fix follower/following AP requests returning wrong JSON data by @hughrun in #3686
Other Changes
- search: use default confidence of 0.1 on search instead of disabling min_confidence by @ilkka-ollakka in #3553
- inventaire: scale confidence linearly based on search score by @ilkka-ollakka in #3554
- Split nginx config files and fix flower access config by @ilkka-ollakka in #3540
- use gunicorn in main branch also by @ilkka-ollakka in #3557
- normalize rank to be 0..1 from database searches by @ilkka-ollakka in #3555
- remove port 8000 from docker-compose as unnecessary for web container by @ilkka-ollakka in #3541
- Fix randomly failing importer test jobs by add job ordering by @ilkka-ollakka in #3572
- RFC: Automatically handle nginx domain and make letsencrypt setup simpler by @ilkka-ollakka in #3543
- define testpaths for pytest to speed up pytest-run by @ilkka-ollakka in #3587
- Add bw-dev create_secrets -command by @ilkka-ollakka in #3570
- Remove deprecated use from duplicate link check by @ilkka-ollakka in #3622
- Update .gitignore to exclude QNAP NAS temporary files by @Guanchishan in #3635
- fix(nginx): remove client_max_body from https config by @ilkka-ollakka in #3652
- remove covers from export files by @hughrun in #3654
- bw-dev: add init_ssl to listed options by @ilkka-ollakka in #3661
- Use setUpTestData for Import/Export job tests by @dato in #3676
- handle 410 http responses by @hughrun in #3609
- Hughrun schedule delete by @mouse-reeve in #3688
- Delete old export and import files with a scheduled job by @hughrun in #3655
- change init_db command so it can be run against initialized database by @ilkka-ollakka in #3696
- nginx: add proxy_cache_lock, so we wait one request to populate cache if there is one ongoing for that cache-key by @ilkka-ollakka in #3604
New Contributors
- @mario-kromer made their first contribution in #3577
- @AdityaDeshmukh1 made their first contribution in #3646
- @talmuth made their first contribution in #3692
- @jakkarth made their first contribution in #3694
Full Changelog: v0.7.5...v0.8.0