Skip to content

Documentation + tutorial blog for self-hosted MongoDB release#2823

Open
atharvadeosthale wants to merge 19 commits intomainfrom
sh-mongo-docs
Open

Documentation + tutorial blog for self-hosted MongoDB release#2823
atharvadeosthale wants to merge 19 commits intomainfrom
sh-mongo-docs

Conversation

@atharvadeosthale
Copy link
Copy Markdown
Member

@atharvadeosthale atharvadeosthale commented Mar 19, 2026

Summary by CodeRabbit

  • Documentation
    • Updated self-hosting docs: web-based setup wizard walkthrough, Databases page, environment variables, backups, scaling, and upgrade guides; added MongoDB integration guide and new related images.
  • New Features
    • Installer now offers database backend selection; MongoDB supported and set as default for new self-hosted installs (Appwrite 1.9.0).
  • Content
    • New blog announcement and changelog entry about MongoDB support; adjusted integration metadata and featured flags.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 19, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

This PR adds MongoDB support for self-hosted Appwrite and introduces a web-based setup wizard served on port 20080. It adds new documentation and blog pages (MongoDB integration, self-hosting tutorial, announcement, changelog), a Databases configuration doc and nav item, updates installation, backups, scaling, updates, and environment-variable docs (adds _APP_DB_ADAPTER and adapter-dependent _APP_DB_HOST/_APP_DB_PORT defaults), bumps the Docker image to appwrite/appwrite:1.9.0 and update run commands to publish 20080:20080, and adds wizard-related image cache entries.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the primary change: adding documentation and a tutorial blog post for the self-hosted MongoDB release, which is reflected across multiple new files and updates throughout the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sh-mongo-docs

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Mar 19, 2026

Greptile Summary

This PR adds documentation and a tutorial blog post for the Appwrite 1.9.0 MongoDB self-hosting feature, including a new web-based installation wizard. The changes update the installation guide with a 4-step wizard walkthrough, add a new Databases configuration reference page, update the backup guide with MongoDB-specific commands, and refresh all version references from 1.8.1 to 1.9.0 across install/upgrade commands.

Key changes:

  • New blog post (self-hosting-appwrite-with-mongodb): End-to-end tutorial for setting up MongoDB with the new wizard. The referenced cover image (/images/blog/self-hosting-appwrite-with-mongodb/cover.png) does not appear to be included in the PR changeset, which will result in a broken image on the post.
  • New databases doc page: Well-structured reference covering MongoDB and MariaDB environment variables, Docker images, and Compose profiles.
  • Updated backups doc: Adds a MongoDB backup/restore section, but the "Fresh installation only" data-safety warning was inadvertently removed from the MariaDB restore flow during restructuring — it now only appears under the MongoDB section.
  • Updated installation doc: The wizard walkthrough is clear and correctly uses only_dark/only_light blocks for screenshots. The blog post, however, hardcodes all screenshots to dark-mode paths, which may look inconsistent for light-mode readers.

Confidence Score: 3/5

  • Safe to merge after addressing the missing blog cover image and the misplaced "Fresh installation only" restore warning.
  • The documentation changes are mostly accurate and well-structured, but there are two notable issues: a likely missing cover image for the new blog post (which would render broken on publish) and an important data-safety warning that was removed from the MariaDB restore documentation during restructuring. These should be resolved before merging.
  • src/routes/blog/post/self-hosting-appwrite-with-mongodb/+page.markdoc (missing cover image asset) and src/routes/docs/advanced/self-hosting/production/backups/+page.markdoc (missing "Fresh installation only" warning for MariaDB restore).

Important Files Changed

Filename Overview
src/routes/blog/post/self-hosting-appwrite-with-mongodb/+page.markdoc New tutorial blog post for self-hosting Appwrite with MongoDB; cover image appears to be missing from the changeset, and all screenshots are hardcoded to dark-mode variants.
src/routes/docs/advanced/self-hosting/production/backups/+page.markdoc Adds MongoDB backup/restore section alongside MariaDB; the "Fresh installation only" warning was inadvertently removed from the MariaDB restore flow during restructuring.
src/routes/docs/advanced/self-hosting/installation/+page.markdoc Updated to document the new web-based installation wizard with step-by-step screenshots, port 20080 firewall note, and bumped version to 1.9.0; no issues found.
src/routes/docs/advanced/self-hosting/configuration/databases/+page.markdoc New reference page documenting MongoDB and MariaDB backend options, environment variables, Docker images, and Compose profiles; content is accurate and well-structured.
src/routes/docs/advanced/self-hosting/configuration/environment-variables/+page.markdoc Updated database section to reflect both MongoDB and MariaDB support, adds _APP_DB_ADAPTER variable, and corrects default values; no issues found.
src/routes/docs/advanced/self-hosting/production/updates/+page.markdoc Adds --publish 20080:20080 to the upgrade Docker commands across all three shell variants (Bash, CMD, PowerShell); consistent with the new web-wizard flow.
src/routes/docs/advanced/self-hosting/+layout.svelte Adds "Databases" nav entry as the first item under the Configuration section, correctly pointing to the new databases page.
src/routes/docs/advanced/self-hosting/production/scaling/+page.markdoc Minor copy update to mention MongoDB alongside MariaDB as the stateful database container; no issues found.

Comments Outside Diff (1)

  1. src/routes/docs/advanced/self-hosting/production/backups/+page.markdoc, line 36-38 (link)

    P2 "Fresh installation only" warning missing from MariaDB restore

    The {% info title="Fresh installation only" %} warning was originally positioned after the unified restore section covering MariaDB as well. After the restructuring, this warning now only appears after the MongoDB restore commands (line 54). The MariaDB restore command on line 37 no longer has this important data-safety warning visible to users following the MariaDB path.

    Consider duplicating the info block so it appears after both the MariaDB and MongoDB restore commands, or moving it to appear at the top of the entire "Database backups" section.

    And add the info block directly after line 38:

    {% info title="Fresh installation only" %}
    Only restore to fresh Appwrite installations to avoid data corruption.
    {% /info %}
    

Last reviewed commit: "docs + blog for mong..."

title: Self-hosting Appwrite with MongoDB as the underlying database
description: Learn how to self-host Appwrite with MongoDB as the database backend using the new installation wizard.
date: 2026-03-24
cover: /images/blog/self-hosting-appwrite-with-mongodb/cover.png
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.

P2 Cover image not included in PR changeset

The blog post frontmatter references a cover image at /images/blog/self-hosting-appwrite-with-mongodb/cover.png, but this file does not appear to be included in the PR. All other image files added in this PR are wizard screenshots under static/images/docs/.... If the cover image is missing from static/images/blog/self-hosting-appwrite-with-mongodb/cover.png, the blog post will render with a broken image.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
src/routes/blog/post/self-hosting-appwrite-with-mongodb/+page.markdoc (1)

56-84: Prefer theme-aware screenshots in the blog body.

Right now the tutorial uses dark screenshots only. In light mode, these can feel low-contrast and out of place. Consider pairing dark/light variants as done in docs pages.

♻️ Suggested pattern
-![Setup your app](/images/docs/advanced/self-hosting/installation/dark/wizard-setup.png)
+{% only_dark %}
+![Setup your app](/images/docs/advanced/self-hosting/installation/dark/wizard-setup.png)
+{% /only_dark %}
+{% only_light %}
+![Setup your app](/images/docs/advanced/self-hosting/installation/wizard-setup.png)
+{% /only_light %}

Apply the same pattern to the secure/account/review images.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/blog/post/self-hosting-appwrite-with-mongodb/`+page.markdoc around
lines 56 - 84, The dark-only screenshots in +page.markdoc make the blog look
low-contrast in light theme; update the image blocks for wizard-setup.png,
wizard-secure.png, wizard-account.png, and wizard-review.png to use theme-aware
pairs (dark + light variants) following the docs pattern: replace each single
img line with the theme-aware include used elsewhere in the docs so the template
selects the correct /images/.../dark/... and /images/.../light/... files at
render time and add the matching light variants to the assets if they don't
exist.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@src/routes/docs/advanced/self-hosting/configuration/environment-variables/`+page.markdoc:
- Line 63: The current line implies the database backend is chosen only during
installation; update the wording to explicitly state the backend can be set via
the _APP_DB_ADAPTER environment variable at runtime (not just at install time)
and point readers to the environment variable section where _APP_DB_ADAPTER is
documented; reference the existing sentence in the file and replace or append
text clarifying runtime configurability and linking to the Databases and
Environment Variables sections.

In `@src/routes/docs/advanced/self-hosting/installation/`+page.markdoc:
- Around line 68-69: The line containing the URL literal
"http://localhost:20080" should be expanded to clarify remote-host access:
update the text so it tells users that for remote or non-local installs they
must use the server's IP address or domain (e.g., http://SERVER_IP:20080 or
http://your-domain:20080) instead of localhost so the setup wizard is reachable
from other machines; edit the sentence around that URL in +page.markdoc to
include both localhost (for local installs) and the server IP/domain option for
remote installs.

---

Nitpick comments:
In `@src/routes/blog/post/self-hosting-appwrite-with-mongodb/`+page.markdoc:
- Around line 56-84: The dark-only screenshots in +page.markdoc make the blog
look low-contrast in light theme; update the image blocks for wizard-setup.png,
wizard-secure.png, wizard-account.png, and wizard-review.png to use theme-aware
pairs (dark + light variants) following the docs pattern: replace each single
img line with the theme-aware include used elsewhere in the docs so the template
selects the correct /images/.../dark/... and /images/.../light/... files at
render time and add the matching light variants to the assets if they don't
exist.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2e277128-298d-4d9c-919b-348aae7d2a38

📥 Commits

Reviewing files that changed from the base of the PR and between 189e90d and 26d261b.

⛔ Files ignored due to path filters (8)
  • static/images/docs/advanced/self-hosting/installation/dark/wizard-account.png is excluded by !**/*.png
  • static/images/docs/advanced/self-hosting/installation/dark/wizard-review.png is excluded by !**/*.png
  • static/images/docs/advanced/self-hosting/installation/dark/wizard-secure.png is excluded by !**/*.png
  • static/images/docs/advanced/self-hosting/installation/dark/wizard-setup.png is excluded by !**/*.png
  • static/images/docs/advanced/self-hosting/installation/wizard-account.png is excluded by !**/*.png
  • static/images/docs/advanced/self-hosting/installation/wizard-review.png is excluded by !**/*.png
  • static/images/docs/advanced/self-hosting/installation/wizard-secure.png is excluded by !**/*.png
  • static/images/docs/advanced/self-hosting/installation/wizard-setup.png is excluded by !**/*.png
📒 Files selected for processing (9)
  • .optimize-cache.json
  • src/routes/blog/post/self-hosting-appwrite-with-mongodb/+page.markdoc
  • src/routes/docs/advanced/self-hosting/+layout.svelte
  • src/routes/docs/advanced/self-hosting/configuration/databases/+page.markdoc
  • src/routes/docs/advanced/self-hosting/configuration/environment-variables/+page.markdoc
  • src/routes/docs/advanced/self-hosting/installation/+page.markdoc
  • src/routes/docs/advanced/self-hosting/production/backups/+page.markdoc
  • src/routes/docs/advanced/self-hosting/production/scaling/+page.markdoc
  • src/routes/docs/advanced/self-hosting/production/updates/+page.markdoc

Comment on lines +68 to +69
Once the command is running, open your browser and navigate to `http://localhost:20080` to access the setup wizard.

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.

⚠️ Potential issue | 🟡 Minor

Clarify remote-host access URL in setup instructions.

Line 68 currently points only to localhost. For remote installs, users should be told to use the server IP/domain on port 20080 to avoid failed access attempts.

🛠️ Suggested wording
-Once the command is running, open your browser and navigate to `http://localhost:20080` to access the setup wizard.
+Once the command is running, open your browser and navigate to `http://localhost:20080` (or `http://<your-server-ip>:20080` for remote installs) to access the setup wizard.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Once the command is running, open your browser and navigate to `http://localhost:20080` to access the setup wizard.
Once the command is running, open your browser and navigate to `http://localhost:20080` (or `http://<your-server-ip>:20080` for remote installs) to access the setup wizard.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/advanced/self-hosting/installation/`+page.markdoc around
lines 68 - 69, The line containing the URL literal "http://localhost:20080"
should be expanded to clarify remote-host access: update the text so it tells
users that for remote or non-local installs they must use the server's IP
address or domain (e.g., http://SERVER_IP:20080 or http://your-domain:20080)
instead of localhost so the setup wizard is reachable from other machines; edit
the sentence around that URL in +page.markdoc to include both localhost (for
local installs) and the server IP/domain option for remote installs.

Comment on lines +41 to +59
## CMD
```cmd
docker run -it --rm ^
--publish 20080:20080 ^
--volume //var/run/docker.sock:/var/run/docker.sock ^
--volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^
--entrypoint="install" ^
appwrite/appwrite:1.9.0
```

## PowerShell
```powershell
docker run -it --rm `
--publish 20080:20080 `
--volume /var/run/docker.sock:/var/run/docker.sock `
--volume ${pwd}/appwrite:/usr/src/code/appwrite:rw `
--entrypoint="install" `
appwrite/appwrite:1.9.0
```
Copy link
Copy Markdown
Contributor

@adityaoberai adityaoberai Mar 24, 2026

Choose a reason for hiding this comment

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

Instead of using headings, you can just write a sentence or even maybe have two tabs: Windows (CMD) and Windows (Powershell)

Right now this looks weird @atharvadeosthale

Image

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.

@atharvadeosthale check this out please


Here's what's on the roadmap:

- **MongoDB on Appwrite Cloud.** MongoDB will be available in a fully managed environment. The console will adapt dynamically when running on MongoDB, and the experience will feel first-class from day one.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

maybe mention the self-hosted solution as something that is already available as the first step of this.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

sorry I see this mentioned later, maybe I would switch the two section for chronological sense

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.

Alright 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants