Releases: getsentry/self-hosted
25.9.0
Logs is Now Available for Self-Hosted! 🪵🪵
Logs is now available for self-hosted deployments! To properly enable it on your instance, you'll need to update your sentry.conf.py
to match the example one – this step is essential for functionality.
ClickHouse Upgrade to 25.3
We've upgraded ClickHouse to 25.3, which should resolve that persistent connection closed prematurely error from Snuba consumers. We've confirmed it was a ClickHouse issue rather than Snuba's. As a standard precaution, please ensure you back up your server before upgrading – it's always the right move.
Updated Memory Requirements
We've had to increase the minimum requirements to 16 GB of swap file. That brings us to 32 GB total memory (16 GB physical RAM + 16 GB swap). If you're handling significant traffic though, you're likely already running well above these specifications.
PGBouncer Integration
We've integrated PGBouncer into the Docker Compose stack to better manage Postgres connections. The install script will handle your sentry.conf.py
updates automatically. For non-interactive-TTY users, please set the environment variable SKIP_USER_PROMPT=1
.
SeaweedFS for Nodestore (Opt-in)
We're introducing SeaweedFS with its S3-compatible API for storing Nodestore data. This is opt-in, and you'll see a prompt during installation, similar to PGBouncer.
For context: Nodestore manages raw events data, which can become substantial with high event volumes. Previously, self-hosted deployments stored this in Postgres (which we acknowledge wasn't ideal), while SaaS uses Google BigTable. We believe SeaweedFS provides a practical middle-ground solution.
Good news: you won't lose your existing event details from Postgres until the retention period passes, and there's no need to migrate your Nodestore data from Postgres to S3. We've included write_through
, read_through
, and delete_through
options for passing operations to Nodestore data in Postgres – these default to True
for new installations. After 90 days, we recommend setting these options to False
. Learn more: https://github.com/stayallive/sentry-nodestore-s3#installation
Enhanced Security Defaults
SENTRY_DISALLOWED_IPS
in sentry.conf.py
now includes more secure defaults. This enhancement prevents Sentry from making outbound connections to private/internal IPs in integration and webhook requests. If your integrations or webhooks require access to internal addresses, you can safely override this setting.
Taskbroker & Taskworker Replace Celery
Taskbroker & taskworker are now enabled to replace Celery – eliminating the outdated RabbitMQ and reducing Redis memory consumption. Please remove any options disabling taskbroker in your sentry.conf.py
. Next month, we'll be retiring the cron
and worker
containers as planned.
Other Notable Changes
- New feature flags: We've added several new feature flags to
sentry.conf.example.py
– please ensure these are included in yoursentry.conf.py
. Some of these flags indicate we're transitioning the Insights page to use theeap
dataset instead of the legacymetrics
dataset. - Air-gapped support: For air-gapped environments, please add
SENTRY_AIR_GAP = True
to yoursentry.conf.py
configuration. This ensures no unwanted outgoing HTTP calls are made to external services. - Vroom script fix: We've corrected an oversight in the Vroom
chmod
script that affected errors-only users. We've now properly addederrors-only
to the integration test matrix for both AMD64 and ARM64, ensuring full coverage going forward. - Dependency updates: We've updated patch versions for self-hosted dependencies (Postgres, Redis, and Kafka). Nginx received a minor version bump to the latest stable release, which maintains full compatibility.
Questions or need to discuss these changes? Join us on Sentry's Discord! We're always happy to help and discuss your setup.
Various fixes & improvements
- fix: able to setup nodestore multiple times (#3940) by @aldy505
- build(deps): bump actions/create-github-app-token from 2.1.1 to 2.1.4 (#3936) by @dependabot
- docs: provide information for SENTRY_AIR_GAP flag on Django config file (#3935) by @aldy505
- feat: Use S3 node store with seaweedfs (#3498) by @BYK
- feat(tasks): Remove taskworker option override and add worker healthcheck (#3933) by @markstory
- feat: install script to migrate sentry.conf.py config to use pgbouncer (#3898) by @aldy505
- chore(deps): bump clickhouse to 25.3 (#3878) by @aldy505
- feat: enable
issue-views
flag (#3922) by @aldy505 - feat: query against
eap
dataset instead ofmetrics
dataset for spans (#3923) by @aldy505 - build(deps): bump actions/setup-python from 5 to 6 (#3927) by @dependabot
- Add restart policy to pgbouncer service (#3925) by @frederikspang
- fix(tests): skip logs event test for errors-only (#3915) by @aldy505
- Improve nginx depends_on policy (#3914) by @aminvakil
- test: run errors-only integration tests (#3910) by @aldy505
- feat: enable Logs feature (#3912) by @aldy505
- fix: ensuring vroom permission should be skipped on errors-only (#3911) by @aldy505
- chore(deps): bump patches version (#3879) by @aldy505
- Revert "increase postgres max_connections above 100 connections (#2740)" (#3899) by @aminvakil
- Add pgbouncer (#3884) by @frederikspang
- chore: resolve GHA code scanning alerts (#3889) by @aldy505
- fix(enhancement): search for permissions on docker container instead of host and combine it in one command for performance enhancement (#3890) by @LvckyAPI
- build(deps): bump actions/create-github-app-token from 2.1.0 to 2.1.1 (#3885) by @dependabot
- build(deps): bump actions/checkout from 4 to 5 (#3883) by @dependabot
25.8.0
Important
If you have .env.custom
or other custom .env
files, make sure to adjust your image value to ghcr.io/getsentry/{project}
instead of getsentry/{project}
. We're no longer publishing Docker images to DockerHub and will be moving to GitHub Container Registry.
We're excited to see so many new contributors bringing their excellent work to this release! Here's what's new:
Default Disallowed IPs
SENTRY_DISALLOWED_IPS
defaults will be changed in the next self-hosted release. These defaults are commented out right now here: getsentry/sentry@4c4eec3, but will be adopted in 25.9.0.
Podman support
We finally addressed that 5 years old issue requesting Podman support. Since podman compose
has become quite compatible with docker compose
, we decided it was time to make this happen. To use it, simply run the install script with CONTAINER_ENGINE_PODMAN=1 ./install.sh
. If you successfully get self-hosted Sentry running with Podman, we'd love to hear about it on our Discord!
Healthchecks for Sentry containers
Previously, only databases and web
containers had healthchecks, which wasn't ideal. We've now added healthchecks to most containers, so you can easily spot which ones are having issues without digging through logs one by one. Just make sure your docker-compose.yml
is updated to take advantage of this improvement.
Various configuration changes
We made several configuration changes that should improve your experience. In docker-compose.yml
, we added some missing containers related to snuba-subscriptions-generic-metrics
, which fixes the issue where metrics alerts weren't triggering properly (see issue #3838).
In sentry.conf.py
, we reorganized the feature flags and added the missing organizations:profiling-view
flag to ensure profiling works correctly in the web UI. One important change: make sure you have SENTRY_OPTIONS["taskworker.enabled"] = False
so your jobs continue running on Celery. We're planning to transition to Taskbroker next month, which will also remove the cron
and worker
containers, reducing the load on Redis (or RabbitMQ) queues.
Other notable changes
- We bumped the minimum bash version to 4.4.0. If you're running CentOS 7, you'll need to either upgrade your distribution or upgrade bash (though the latter is more challenging).
- The
chown
command for thesentry-vroom
volume used to take an unnecessarily long time. We've optimized it to check ownership first before executing the command, making it much faster. - New available preview feature: Native OTLP ingestion! See issue #3830.
- The sentry image is no longer being published on DockerHub. As mentioned in release notes for 25.7.0, we're going to remove workflows to push images to DockerHub in the upcoming months.
For questions or discussion about these changes, join us on Sentry's Discord! We're always happy to chat.
Various fixes & improvements
- feat: Relay healthcheck (#3875) by @aldy505
- fix: setup swapfile only if runner architecture is X64 or X86 (#3876) by @aldy505
- Set minimum bash version to 4.4.0 (#3873) by @aminvakil
- fix: adjust file healthcheck durations (#3874) by @mzglinski
- feat: healthchecks for sentry components (#3859) by @mzglinski
- fix(eap): Fix dataset parameter to target spans (#3866) by @phacops
- build(deps): bump actions/create-github-app-token from 2.0.6 to 2.1.0 (#3865) by @dependabot
- fix(scripts): use
env
to findbash
interpreter (#3861) by @Zaczero - fix(scripts): every known flags should be shifted before executing the sentry command (#3831) by @aldy505
- fix: uptime checker image should be bumped to the tagged release (#3858) by @aldy505
- fix(enhancement): ensure correct ownership check before setting permissions of profiles (#3855) by @LvckyAPI
- chore(features): cleanup feature flags grouped by its' category (#3843) by @aldy505
- fix: add schedulers for generic metrics subscriptions (#3847) by @mzglinski
- feat: Continue using celery in self-hosted for now (#3845) by @markstory
- feat(features): add
profiling-view
flag (#3837) by @aldy505 - Potential fix for code scanning alert no. 12: Workflow does not contain permissions (#3822) by @aldy505
- docs: clearly state that
system.internal-url-prefix
shouldn't be changed (#3829) by @aldy505 - feat(install): Adds support for podman(compose) (#3673) by @DuncanConroy
- fix(action): missing project directory path for failure inspection (#3825) by @aldy505
- Cleanup unused feature flags (#3820) by @doc-sheet
- feat: inspect docker compose failure on self-hosted e2e action (#3817) by @aldy505
25.7.0
Important
Action Required: Update Your Configuration Files!
To make sure you're getting all these new goodies and everything runs smoothly, please remember to update your .env
(or .env.custom
, if any), docker-compose.yml
, and sentry/sentry.conf.py
files to their latest versions. Don't miss any feature flags or additional configurations!
Want to know what changed? Read on.
Uptime Monitoring: Available for Self-Hosted
Our Uptime Monitoring feature is now available for self-hosted Sentry. You can monitor endpoints using private IP addresses by setting UPTIME_CHECKER_ALLOW_INTERNAL_IPS
environment variable to "true," and don't forget to configure the necessary feature flags in your sentry.conf.py
file. This adds a ton of flexibility for monitoring your internal services.
New Containers for Event Analytics Platform
We're introducing new containers related to our Event Analytics Platform. This unifies the storage backend for all Sentry features—errors, traces, logs, and uptimes—under one "platform". This makes correlating events and gaining a clear overview of your services much simpler & accurate. These containers also power the new Logs and Trace Explorer features.
DockerHub to GitHub Container Registry Migration
We are transitioning our default Docker image registry from DockerHub to GitHub Container Registry. You will see some changes on the .env
file. We'll continue pushing new images to DockerHub for a short period, but new pushes will cease in the coming months. We recommend adjusting your configurations to this new standard soon.
Trace Details Link Fixes
Good news: unclickable links in performance details from the last release (you might know GitHub issues #3729 and #3758) have been fixed upstream. As a bonus, the trace-view-v1
flag has also been removed. You can check out the related pull request here.
For further discussion or questions, head over to the Sentry's Discord! We're always there to chat.
Various fixes & improvements
- feat: Swap
trace-view-v1
feature flag withvisibility-explore-view
(#3801) by @aldy505 - fix: set harakiri Django option to 30s (#3792) by @aldy505
- feat(images):Cutover images to ghcr (#3800) by @hubertdeng123
- docs: encourage community patches (#3794) by @aldy505
- feat: run EAP-related containers (#3778) by @aldy505
- feat(uptime): Enable uptime in self-hosted (#3787) by @evanpurkhiser
- feat: make
system.secret-key
configurable from environment variables (#3783) by @aldy505 - ci: run tests on arm64 (#3750) by @aldy505
25.6.2
Bug Fix
This release brings a PostgreSQL migration failure raised from this issue, it was fixed on this PR on sentry.
If you are coming from 25.5.1, you might want to skip 25.6.0 and 25.6.1, and upgrade directly to this version.
This release also brings in a fix on how Docker images are being pushed to DockerHub, mainly for ARM64 users out there:
snuba
,vroom
, andtaskbroker
images now have thelinux/arm64
platform support on thelatest
and CalVer (YY.MM.xx
) tag. Previously there was an error of copying the Docker image.symbolicator
'snightly
tags are now back (PR that fixed this: getsentry/symbolicator#1716)
Various fixes & improvements
- fix: Increase timeout for flakey test (#3781) by @tobias-wilfert
- chore: provide detailed note for sentry endpoint settings (#3780) by @aldy505
25.6.1
Caution
You should skip this release and go directly to the next release (v25.6.2)
Bug Fix
- This release includes a patch that fixes #3766
Various fixes & improvements
- fix(taskworker) Remove num-brokers (#3769) by @markstory
- feat: enable customization sentry DSN endpoint (#3747) by @yildizozgur
- ref(js-assets): Simplify how we call nginx container (#3761) by @BYK
- Revert "fix(vroom): Explicitly set PROFILES_DIR for upcoming change" (#3760) by @hubertdeng123
- fix(vroom): Explicitly set PROFILES_DIR for upcoming change (#3759) by @BYK
25.6.0
Caution
You should skip this release and go directly to the next release (v25.6.2)
New Updates
-
Self-hosted Sentry now supports ARM64 on Linux, so there's no need to run on forks anymore. The install.sh script should run smoothly on ARM64 machines. Feel free to give feedback on #1585
-
Some containers have been added to Docker Compose files, and the SMTP container is swapped with one that's ARM64-compatible and much more powerful—you can even use it as an AWS SES relay! Further details are available in the documentation: https://gitlab.com/egos-tech/smtp
-
Taskbroker is a new service (written in Rust) that aims to replace Celery, which is backed by Redis PubSub. In the next release, Taskbroker will fully replace Celery, taking over the roles of the worker and cron containers.
-
There are some feature flag changes, as we've cleaned up some, and enabled Continuous Profiling. Please ensure your
sentry.conf.p
y is updated to reflect the changes found insentry.conf.example.py
. You can view the file differences using:diff -u sentry/sentry.conf.example.py sentry/sentry.conf.py
. -
Limited by DockerHub image pulls? Replace your image name by prefixing it with
ghcr.io
. For example,getsentry/sentry:nightly
becomesghcr.io/getsentry/sentry:nightly
. It is hosted on GitHub Container Registry.
Various fixes & improvements
- enable shell linter for more scripts (#3748) by @doc-sheet
- feat: migrate to arm64-compatible smtp image (#3746) by @ezhevita
- Introduce patches with external kafka (#3521) by @aldy505
- add shellcheck action to lint bash scripts (#3710) by @doc-sheet
- tests: Install version 2.x of Python SDK (#3745) by @sentrivana
- feat(features): enable continuous profiling (#3742) by @aldy505
- feat: Add taskbroker + worker + scheduler (#3738) by @markstory
- fix(profiles): Run the profile chunks consumer (#3739) by @phacops
- chore: prune removed feature flags on main repository (#3731) by @aldy505
- remove index workaround (#3730) by @asottile-sentry
- Make usage of Python SDK future proof (#3714) by @antonpirker
25.5.1
Important
This release is a hard stop as we've squashed database migrations in sentry. Users must upgrade to 25.5.1 before proceeding to future versions.
Various fixes & improvements
- Add missing lib script to sentry-admin.sh (#3693) by @djakielski
- chore: cleanup obsolete feature flags (#3701) by @doc-sheet
25.5.0
Various fixes & improvements
- build(deps): bump actions/create-github-app-token from 2.0.2 to 2.0.6 (#3690) by @dependabot
- Resolve datetime deprecation warnings (#3686) by @emmanuel-ferdman
- ref: remove SENTRY_USE_BIG_INTS (always True) (#3687) by @asottile-sentry
25.4.0
Stand-alone Docker Compose Fixes
By: @aminvakil (#3658, #3654)
Various fixes & improvements
- chore(relay): specify spool.enveloppe.max_backpressure_memory_percent configuration for handling relay's failing healthcheck (#3635) by @aldy505
- build(deps): bump actions/create-github-app-token from 1.12.0 to 2.0.2 (#3649) by @dependabot
- build(deps): bump actions/create-github-app-token from 1.11.7 to 1.12.0 (#3639) by @dependabot
- Minimum requirements for 'errors-only' profile (#3634) by @madest92
- build(deps): bump actions/create-github-app-token from 1.11.6 to 1.11.7 (#3632) by @dependabot
- feat(sentry): add dynamic sampling feature to config (#3631) by @aldy505
- docs(config): add example config for Google Auth (#3623) by @junsung-cho
- fix: js-sdk directory/file permission should be set correctly (#3616) by @aldy505
- feat(features): enable session replay canvas (#3619) by @aldy505
25.3.0
Various fixes & improvements
- feat(features): enable trace view (#3617) by @aldy505
- feat: provide monitoring-related configurations (#3611) by @aldy505
- Enforce license compliance only on getsentry repository (#3606) by @aminvakil
- Fix unbound variable error in install script (#3601) by @brettdh
- Add --short to docker-compose version (#3605) by @aminvakil
- ref: Less complicated docker compose detection (#3604) by @BYK
- Use docker-compose if version is gte docker compose (#3595) by @aminvakil
- build(deps): bump actions/create-github-app-token from 1.11.3 to 1.11.6 (#3598) by @dependabot
- build(deps): bump getsentry/action-release from 1 to 3 (#3599) by @dependabot
- Bump docker-compose 2.33.1 (#3597) by @aminvakil
- refactor: move system.url-prefix under systems settings section (#3588) by @leeoocca