Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .optimize-cache.json
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,7 @@
"static/images/blog/apply-appwrite-how/cover.png": "d23f45ced245b42c8712c021f5d2068c17aebd94fd049cb90222cb9647a41a4a",
"static/images/blog/appwrite-1-8-0-self-hosted-release/cover.png": "c15a9d88ccd16c2dc8333dc74e715e1f4a6c7818d3b4a05f4d68342eacdc0523",
"static/images/blog/appwrite-1-8-1-self-hosted-release/cover.png": "82f0a396c56b6b299b24133079acc6a317c66b2bf02fd91f4862bd3be0f8f373",
"static/images/blog/appwrite-1-9-5-self-hosted-release/cover.png": "f5958ba97aa507888c54c11ba156bf8a4e0643d129ed900ef1c83915efa31e88",
"static/images/blog/appwrite-1.5-now-available-on-cloud/cloud15.png": "a1df7388572a9f08d0e315e4b6bc8c9464c1418768e7efbec22758fd728eb970",
"static/images/blog/appwrite-auth-methods/cover.png": "361513d8b59de8fde7b294dcc6688aada30c46e11933070c529733e486784690",
"static/images/blog/appwrite-backups-and-restores/cover.png": "369b5d91f3dc515e7fb86588f8871aa5ffd788b40023e8373ac694840479c1ab",
Expand Down
78 changes: 56 additions & 22 deletions src/lib/components/compose-generator/composeData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ services:
- appwrite

appwrite:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
container_name: appwrite
<<: *x-logging
restart: unless-stopped
Expand Down Expand Up @@ -290,7 +290,7 @@ services:
appwrite-console:
<<: *x-logging
container_name: appwrite-console
image: appwrite/console:7.8.26
image: appwrite/console:8.7.5
restart: unless-stopped
networks:
- appwrite
Expand All @@ -310,7 +310,7 @@ services:
- traefik.http.routers.appwrite_console_https.tls=true

appwrite-realtime:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: realtime
container_name: appwrite-realtime
<<: *x-logging
Expand Down Expand Up @@ -356,7 +356,7 @@ services:
- _APP_LOGGING_CONFIG

appwrite-worker-audits:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: worker-audits
<<: *x-logging
container_name: appwrite-worker-audits
Expand Down Expand Up @@ -385,7 +385,7 @@ services:
- _APP_LOGGING_CONFIG

appwrite-worker-webhooks:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: worker-webhooks
<<: *x-logging
container_name: appwrite-worker-webhooks
Expand Down Expand Up @@ -416,7 +416,7 @@ services:
- _APP_LOGGING_CONFIG

appwrite-worker-deletes:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: worker-deletes
<<: *x-logging
container_name: appwrite-worker-deletes
Expand Down Expand Up @@ -482,7 +482,7 @@ services:
- _APP_EMAIL_CERTIFICATES

appwrite-worker-databases:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: worker-databases
<<: *x-logging
container_name: appwrite-worker-databases
Expand Down Expand Up @@ -511,7 +511,7 @@ services:
- _APP_LOGGING_CONFIG

appwrite-worker-builds:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: worker-builds
<<: *x-logging
container_name: appwrite-worker-builds
Expand Down Expand Up @@ -554,6 +554,7 @@ services:
- _APP_COMPUTE_CPUS
- _APP_COMPUTE_MEMORY
- _APP_COMPUTE_SIZE_LIMIT
- _APP_OPEN_RUNTIMES_NFT
- _APP_OPTIONS_FORCE_HTTPS
- _APP_OPTIONS_ROUTER_FORCE_HTTPS
- _APP_DOMAIN
Expand Down Expand Up @@ -582,7 +583,7 @@ services:
- _APP_DOMAIN_SITES

appwrite-worker-certificates:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: worker-certificates
<<: *x-logging
container_name: appwrite-worker-certificates
Expand Down Expand Up @@ -621,8 +622,36 @@ services:
- _APP_DB_PASS
- _APP_LOGGING_CONFIG

appwrite-worker-executions:
image: appwrite/appwrite:1.9.5
entrypoint: worker-executions
<<: *x-logging
container_name: appwrite-worker-executions
restart: unless-stopped
networks:
- appwrite
depends_on:
redis:
condition: service_healthy
__DB_SERVICE__:
condition: service_healthy
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
- _APP_REDIS_HOST
- _APP_REDIS_PORT
- _APP_REDIS_USER
- _APP_REDIS_PASS
- _APP_DB_ADAPTER
- _APP_DB_HOST
- _APP_DB_PORT
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_LOGGING_CONFIG

appwrite-worker-functions:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: worker-functions
<<: *x-logging
container_name: appwrite-worker-functions
Expand Down Expand Up @@ -665,7 +694,7 @@ services:
- _APP_LOGGING_CONFIG

appwrite-worker-mails:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: worker-mails
<<: *x-logging
container_name: appwrite-worker-mails
Expand Down Expand Up @@ -703,7 +732,7 @@ services:
- _APP_OPTIONS_FORCE_HTTPS

appwrite-worker-messaging:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: worker-messaging
<<: *x-logging
container_name: appwrite-worker-messaging
Expand Down Expand Up @@ -758,7 +787,7 @@ services:
- _APP_STORAGE_WASABI_BUCKET

appwrite-worker-migrations:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: worker-migrations
<<: *x-logging
container_name: appwrite-worker-migrations
Expand Down Expand Up @@ -796,7 +825,7 @@ services:
- _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET

appwrite-task-maintenance:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: maintenance
<<: *x-logging
container_name: appwrite-task-maintenance
Expand Down Expand Up @@ -839,7 +868,7 @@ services:
- _APP_MAINTENANCE_RETENTION_SCHEDULES

appwrite-task-stats-resources:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
container_name: appwrite-task-stats-resources
entrypoint: stats-resources
<<: *x-logging
Expand Down Expand Up @@ -871,7 +900,7 @@ services:
- _APP_STATS_RESOURCES_INTERVAL

appwrite-worker-stats-resources:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: worker-stats-resources
container_name: appwrite-worker-stats-resources
<<: *x-logging
Expand Down Expand Up @@ -902,7 +931,7 @@ services:
- _APP_STATS_RESOURCES_INTERVAL

appwrite-worker-stats-usage:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: worker-stats-usage
container_name: appwrite-worker-stats-usage
<<: *x-logging
Expand Down Expand Up @@ -933,7 +962,7 @@ services:
- _APP_USAGE_AGGREGATION_INTERVAL

appwrite-task-scheduler-functions:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: schedule-functions
container_name: appwrite-task-scheduler-functions
<<: *x-logging
Expand All @@ -949,6 +978,7 @@ services:
- _APP_ENV
- _APP_WORKER_PER_CORE
- _APP_OPENSSL_KEY_V1
- _APP_MIGRATION_HOST
- _APP_REDIS_HOST
- _APP_REDIS_PORT
- _APP_REDIS_USER
Expand All @@ -961,7 +991,7 @@ services:
- _APP_DB_PASS

appwrite-task-scheduler-executions:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: schedule-executions
container_name: appwrite-task-scheduler-executions
<<: *x-logging
Expand All @@ -977,6 +1007,7 @@ services:
- _APP_ENV
- _APP_WORKER_PER_CORE
- _APP_OPENSSL_KEY_V1
- _APP_MIGRATION_HOST
- _APP_REDIS_HOST
- _APP_REDIS_PORT
- _APP_REDIS_USER
Expand All @@ -989,7 +1020,7 @@ services:
- _APP_DB_PASS

appwrite-task-scheduler-messages:
image: appwrite/appwrite:1.9.0
image: appwrite/appwrite:1.9.5
entrypoint: schedule-messages
container_name: appwrite-task-scheduler-messages
<<: *x-logging
Expand Down Expand Up @@ -1026,12 +1057,12 @@ __ASSISTANT_BLOCK__
- appwrite

openruntimes-executor:
container_name: openruntimes-executor
container_name: exc1
hostname: exc1
<<: *x-logging
restart: unless-stopped
stop_signal: SIGINT
image: openruntimes/executor:0.7.22
image: openruntimes/executor:0.25.1
networks:
- appwrite
- runtimes
Expand All @@ -1053,6 +1084,7 @@ __ASSISTANT_BLOCK__
- OPR_EXECUTOR_RUNTIMES=$_APP_FUNCTIONS_RUNTIMES,$_APP_SITES_RUNTIMES
- OPR_EXECUTOR_SECRET=$_APP_EXECUTOR_SECRET
- OPR_EXECUTOR_RUNTIME_VERSIONS=v5
- OPEN_RUNTIMES_NFT=$_APP_OPEN_RUNTIMES_NFT
- OPR_EXECUTOR_LOGGING_CONFIG=$_APP_LOGGING_CONFIG
- OPR_EXECUTOR_STORAGE_DEVICE=$_APP_STORAGE_DEVICE
- OPR_EXECUTOR_STORAGE_S3_ACCESS_KEY=$_APP_STORAGE_S3_ACCESS_KEY
Expand Down Expand Up @@ -1240,6 +1272,7 @@ _APP_EXECUTOR_RUNTIME_NETWORK=appwrite_runtimes
_APP_FUNCTIONS_ENVS=node-16.0,php-7.4,python-3.9,ruby-3.0
_APP_FUNCTIONS_INACTIVE_THRESHOLD=60
_APP_COMPUTE_INACTIVE_THRESHOLD=60
_APP_OPEN_RUNTIMES_NFT=enabled
DOCKERHUB_PULL_USERNAME=
DOCKERHUB_PULL_PASSWORD=
DOCKERHUB_PULL_EMAIL=
Expand Down Expand Up @@ -1272,6 +1305,7 @@ _APP_GRAPHQL_INTROSPECTION=enabled
_APP_GRAPHQL_MAX_BATCH_SIZE=10
_APP_GRAPHQL_MAX_COMPLEXITY=250
_APP_GRAPHQL_MAX_DEPTH=3
_APP_MIGRATION_HOST=appwrite
_APP_MIGRATIONS_FIREBASE_CLIENT_ID=
_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=
_APP_ASSISTANT_OPENAI_API_KEY=__ASSISTANT_KEY__
Expand Down
107 changes: 107 additions & 0 deletions src/routes/blog/post/appwrite-1-9-5-self-hosted-release/+page.markdoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
---
layout: post
title: Announcing Appwrite 1.9.5 for self-hosted deployments
description: Appwrite 1.9.5 brings the Presences API, BigInt columns, the Rust runtime, X OAuth, email policies, Bun and Deno build runtimes, Git deployment triggers, faster Storage uploads, and broader migrations to self-hosted deployments.
cover: /images/blog/appwrite-1-9-5-self-hosted-release/cover.avif
date: 2026-06-29
timeToRead: 6
author: chirag-aggarwal
category: announcement
featured: false
callToAction: true
faqs:
- question: "What is new in Appwrite 1.9.5 for self-hosted deployments?"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's add a how to self host Appwrite 1.9.5 FAQ too

answer: "Appwrite 1.9.5 brings the Presences API, BigInt columns for [Databases](/docs/products/databases), the Rust runtime for [Functions](/docs/products/functions), X OAuth and email policies for [Auth](/docs/products/auth), Bun and Deno build runtimes and Git deployment triggers for [Sites](/docs/products/sites), faster Storage uploads with parallel chunks, and broader migration coverage."
- question: "What is the Presences API used for?"
answer: "The Presences API tracks short-lived user states such as online, away, typing, editing, or viewing. You can use it to build online indicators, typing states, collaborative editors, multiplayer features, and live activity feeds without managing presence channels yourself."
- question: "What are BigInt columns in Appwrite?"
answer: "BigInt columns store 64-bit signed integers in [Databases](/docs/products/databases). They are suited to large counters, external IDs, high-resolution timestamps, and financial values that need integer precision without floating-point rounding."
- question: "Can I block disposable or free email addresses at signup?"
answer: "Yes. Email policies in [Appwrite Auth](/docs/products/auth) let you block disposable inboxes, aliased addresses, and free email providers at user creation and on email updates, either from the Console or through any server SDK."
Comment on lines +15 to +20

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's cover all our updates here

- question: "How do I upgrade my self-hosted instance to 1.9.5?"
answer: "Back up your data, pull the 1.9.5 image, run the upgrade command, and run the migration. Always test the upgrade on a staging environment first."
---

**Appwrite 1.9.5** is now available for self-hosted deployments.

Over the past few months, we have shipped a steady stream of features across Appwrite Cloud. This release brings them to teams running Appwrite on their own infrastructure.

Here is what is new in Appwrite 1.9.5.

# Presences API

The Presences API tracks short-lived user states such as online, away, typing, editing, and viewing. It gives you a managed way to build online indicators, typing states, multiplayer presence, collaborative editors, and live activity feeds, without wiring up presence channels by hand. Entries carry custom metadata and expire automatically, so stale sessions clear themselves.

{% arrow_link href="/blog/post/announcing-presences-api" %}
Read the announcement
{% /arrow_link %}

# BigInt columns

Appwrite Databases now support 64-bit signed integers through the BigInt column type. BigInt is the right choice for large counters, external identifiers, high-resolution timestamps, and financial values that need integer precision without floating-point rounding.

{% arrow_link href="/blog/post/announcing-bigint-columns" %}
Read the announcement
{% /arrow_link %}

# Rust runtime for Functions

Appwrite Functions now supports Rust as a first-class runtime. You can write and deploy functions in Rust, pair them with the official Appwrite Rust SDK, and use them for performance-sensitive workloads such as webhook verification, image processing, and data transformation.

{% arrow_link href="/blog/post/announcing-rust-runtime" %}
Read the announcement
{% /arrow_link %}

# Bun and Deno build runtimes for Sites

Appwrite Sites can now build Node-based frameworks with Bun or Deno. You can switch the build runtime per Site from its Runtime settings, and the change applies on the next deployment.

{% arrow_link href="/blog/post/announcing-bun-deno-runtimes" %}
Read the announcement
{% /arrow_link %}

# Git deployment triggers

Git deployment triggers give you control over which changes create a deployment. Use branch filters to separate production, staging, and preview workflows, and path filters so each Function or Site only deploys when relevant files change.

{% arrow_link href="/blog/post/announcing-git-deployment-triggers" %}
Read the announcement
{% /arrow_link %}

# X OAuth provider

Appwrite Auth now supports signing in with X (formerly Twitter) through OAuth 2.0 with PKCE. You can enable it from the Console by adding your X app credentials, with no additional configuration in your application code.

{% arrow_link href="/blog/post/x-oauth2-appwrite" %}
Read the announcement
{% /arrow_link %}

# Email policies

Email policies let you restrict which email addresses can create accounts or update their email. Block disposable inboxes to keep throwaway accounts out of your users table, and deny free providers so business products only accept corporate addresses. Each policy is an independent toggle in the Console or any server SDK.

{% arrow_link href="/blog/post/announcing-email-policies" %}
Read the announcement
{% /arrow_link %}

# Faster uploads with parallel chunks

Appwrite SDKs now upload Storage file chunks in parallel. In our Node SDK benchmark, a 1.28 GB upload dropped from 4 minutes 44 seconds to under 40 seconds, a 7.10x improvement, with no API changes required.

{% arrow_link href="/blog/post/faster-storage-uploads-parallel-chunks" %}
Read the announcement
{% /arrow_link %}

# Improved migrations

Migrations in 1.9.5 carry over far more than your data. Project configuration now transfers alongside it, including API keys, project variables, webhooks, OAuth providers, SMTP settings, email templates, custom domains, and security policies. Moving a project between Appwrite instances, such as from Appwrite Cloud to a self-hosted instance, now reproduces its setup instead of just its records.

# Upgrade your self-hosted instance

As with every Appwrite upgrade:

- Back up your data before upgrading
- [Install or upgrade your self-hosted instance](/docs/advanced/self-hosting/production/updates#install-next-version) to **Appwrite 1.9.5**
- [Run the migration](/docs/advanced/self-hosting/production/updates#running-the-migration), even if you are upgrading from 1.9.0
Comment on lines +95 to +105

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to add a section that also just covers how to self-host Appwrite, for folks who are directly going to self-host Appwrite from this version

Comment on lines +103 to +105

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's directly cover the commands here instead


To view the complete list of changes, fixes, and contributions, check out the full [release notes](https://github.com/appwrite/appwrite/releases/tag/1.9.5).
Loading
Loading