Talkyard v1.2026.002
This (v1) is major new version (or epoch?) of Talkyard.
It's mostly an upgrade of all database software, and a better Docker Compose architecture. We'll add more features later. v0 will receive only bugfixes.
If you use our SaaS: You don't need to do anything — v1 is backwards compatible, from your perspective.
If you're self-hosted: To upgrade, you can install v1 side-by-side with v0, backup v0 and import the backup to v1. We'll publish docs soon.
Here are changes since v0.2025.015. Full changelog: tyse-v0.2025.015-368ca18d4-regular...tyse-v1.2026.002-5962b8ad5-regular.
Features
-
Multilingual search: Text now gets indexed in the language of the forum. Before, was always indexed as English.
-
Private support categories: Added a See-one's-own-topics-only permission.
So you can configure private support-style categories, where users only see their own topics.
(Was implemented long ago, but auto tests not added until now, 297c0df)
Security & self-hosting
- Major database upgrades: Postgres 18, ElasticSearch 9, Redis 8.
- An egress proxy that blocks Server Side Request Forgery (SSRF).
- Network segmentation: Databases on their own internal net (you don't need to do anything, the network gets created by Docker).
- Docker named volumes.
- Hardened containers:
- Dropping capabilities (Docker
caps_drop). - Prevent privilege escalation:
security_opt: no-new-privileges=true - App server now runs as non-root
appuser.
- Dropping capabilities (Docker
- Optionally encrypted backups (with gpg).
- Started using Docker secrets.
Self-hosting
- We now follow the Linux Filesystem Hierarchy Standard (FHS).
- Everything logs to
stdout, Docker auto rotates logs (so won't fill disk). - Using Docker Compose v2 (instead of old v1).
- Container health checks.
- Backup script uses hard links for uploaded files, saving disk.
Improvements
- Search queries: Page title & orig post now indexed together, so the search engine finds matches in both the title and the post at once.
Internal
- A new
rendrDocker service that will in the future render React server-side. So we can stop using Nashorn for this, and upgrade to Java 17+. - Using sqlx instead of FlywayDB (Flyway has been working great! but
we ran into a dependency hell when they started requiring Java 17+). - Reduced ElasticSearch to 1 shard, better for memory & performance.
- Skip Play Framework PID file. Process managed by Docker anyway.
- Reconnect to ElasticSearch if needed, with exp backoff.
- Activate
throwForbiddenIf(!enableApi)test in prod builds. - Boring stuff, e.g. upgraded libraries.
- Renamed some things. See upgrade notes, if you're self-hosted.