mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-19 06:02:52 +00:00
## Todos for release - [x] Configure Env in docs project on vercel - [x] Configure Root Path in the docs project on vercel - [ ] Remove old CSP https://github.com/zitadel/website/pull/1592 ## What we did This pull request migrates the project documentation from the old `docs/` directory to the new `apps/docs/` directory, introduces a new documentation system built with Next.js and Fumadocs, and updates all relevant references, configuration files, and documentation to reflect this change. It also adds new configuration and ignore files for the new documentation app, updates CI and linting to exclude the new docs from certain checks, and revises the contributing guidelines accordingly. **Documentation System Migration and New Docs App** * Migrated all documentation from `docs/` to `apps/docs/`, and updated all references in `README.md`, `CONTRIBUTING.md`, and other files to point to the new location. [[1]](diffhunk://#diff-eca12c0a30e25b4b46522ebf89465a03ba72a03f540796c979137931d8f92055L585-L640) [[2]](diffhunk://#diff-eca12c0a30e25b4b46522ebf89465a03ba72a03f540796c979137931d8f92055L660-R607) [[3]](diffhunk://#diff-eca12c0a30e25b4b46522ebf89465a03ba72a03f540796c979137931d8f92055L740-R687) [[4]](diffhunk://#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5L2-R3) [[5]](diffhunk://#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5L30-R30) * Added a new Next.js/Fumadocs-based documentation app under `apps/docs/`, including core app files, layouts, routing, search API, and a comprehensive `README.md` with development and contribution instructions. [[1]](diffhunk://#diff-5a1b07344a2c1b4d3f37b23ff1388b62cd9f57dea3c1cd23d8a0412b7602b132R1-R74) [[2]](diffhunk://#diff-462b9ad1eabbb7d1c29bb9c36e4931eb180fd7190900e6d2babf8f4d66ad1c28R1-R39) [[3]](diffhunk://#diff-e16ae25660ded787b10ac35dea96d5ecaacf895dae0afc8a9bd4382dc79a8c87R1-R7) [apps/docs/app/[[...slug]]/layout.tsxR1-R81](diffhunk://#diff-59e08acde4e805b7aeccef1dcf98f1d71dfc550777e6b9402085cee0e9fa4e0aR1-R81), [apps/docs/app/[[...slug]]/page.tsxR1-R79](diffhunk://#diff-e5df3f80d0fa01e12d63d81f29c57a9d14e846c78fd3beabb2ef768e38fd9580R1-R79), [[4]](diffhunk://#diff-389b34918e040cacaa87cd7201ffa462cc2b0b716736f537e3d3c660ac69353bR1-R7) [[5]](diffhunk://#diff-d3b03416d1c457b19f1c27b26f2db741412df841b875c26ccadc36e4522247f4R1-R29) [[6]](diffhunk://#diff-c8fb8339570a5305809be7c618e14705fd86390dc278e6ce8ba224a7bc8b0c3cR1-R25) **Configuration and Tooling Updates** * Updated `.github/workflows/codeql.yml`, `.golangci.yaml`, and `.github/dependabot.yml` to properly handle the new docs app: excluded `apps/docs` from certain checks, added npm dependency updates for the docs app, and excluded generated content. [[1]](diffhunk://#diff-12783128521e452af0cfac94b99b8d250413c516ec71fe6d97dbea666ff7ba27L8-R14) [[2]](diffhunk://#diff-9917ddc9f1c3304218f7269265b746d997c5c0615478177b5fceecd33ef47cb5R5-R6) [[3]](diffhunk://#diff-9917ddc9f1c3304218f7269265b746d997c5c0615478177b5fceecd33ef47cb5R126-R129) [[4]](diffhunk://#diff-dd4fbda47e51f1e35defb9275a9cd9c212ecde0b870cba89ddaaae65c5f3cd28R89-R106) * Updated `.devcontainer/devcontainer.json` to use the latest Go 1.25.3 version for consistency. **Licensing and Miscellaneous** * Added `apps/docs/` to the list of licensed directories in `LICENSING.md`. These changes ensure the documentation is now maintained in a modern, scalable system and all project tooling is updated to support the new structure. --------- Co-authored-by: Federico Coppede <[email protected]>
90 lines
4.2 KiB
Plaintext
90 lines
4.2 KiB
Plaintext
---
|
|
title: Set up Zitadel with Docker Compose
|
|
sidebar_label: Docker Compose
|
|
---
|
|
|
|
import CodeBlock from '@/components/docusaurus/code-block';
|
|
import NoteInstanceNotFound from './troubleshooting/_note_instance_not_found.mdx';
|
|
|
|
import DockerComposeSource from "./docker-compose.yaml"
|
|
import Disclaimer from './_disclaimer.mdx'
|
|
import DefaultUser from './_defaultuser.mdx'
|
|
import Next from './_next.mdx'
|
|
|
|
This guide is the entrypoint for running the Zitadel platform locally for the first time.
|
|
It is for demonstration and development purposes only and does not set up a production-ready and security hardened instance of Zitadel.
|
|
Once Zitadel up is and running, learn more about a production setup in the [What's Next section](#next-steps).
|
|
|
|
## Prerequisites
|
|
|
|
The setup is likely to work with other software versions too, but it is tested against the following environment:
|
|
|
|
- Ubuntu 24.04.1
|
|
- Docker 28.3.2
|
|
- Docker Compose v2.38.2
|
|
- curl 8.5.0
|
|
|
|
## Docker compose
|
|
|
|
The following commands set up services for a PostgreSQL database, a Zitadel API and a Zitadel login:
|
|
|
|
1. Download the `docker-compose.yaml` file from the Zitadel repository:
|
|
```shell
|
|
curl -L https://raw.githubusercontent.com/zitadel/zitadel/main/docs/self-hosting/deploy/docker-compose.yaml -o docker-compose.yaml
|
|
```
|
|
2. Make sure the containers use the latest image versions.
|
|
```shell
|
|
docker compose pull
|
|
```
|
|
3. Run the PostgreSQL database, the Zitadel API, and the Zitadel login.
|
|
```shell
|
|
docker compose up --detach --wait
|
|
```
|
|
4. Verify the containers are running and healthy.
|
|
```shell
|
|
docker compose ps
|
|
```
|
|
|
|
<DefaultUser components={props.components} />
|
|
|
|
## What's next
|
|
|
|
Before proceeding, review the downloaded `docker-compose.yaml` file:
|
|
The comments give context to the used variables and show examples for commonly used configuration variants.
|
|
|
|
<details>
|
|
<summary>docker-compose.yaml</summary>
|
|
<CodeBlock language="yaml">{DockerComposeSource}</CodeBlock>
|
|
</details>
|
|
|
|
Here are some natural steps forward to go from the current setup to production:
|
|
|
|
- **Use a different master key**: Set up an instance from scratch and use a different master key. For example, generate one by running `tr -dc A-Za-z0-9 </dev/urandom | head -c 32`
|
|
- **Use files for secrets instead of environment variables, and don't commit them to Git**: Learn how to [configure the platform](/self-hosting/manage/configure)
|
|
- **Run the containers as non-root users**: Remove the `user: "0"` lines from the `docker-compose.yaml` file.
|
|
- **Configure a different external domain or IP**: Beware that the login only works with HTTPS on non-localhost domains. [Run and configure a reverse proxy](/self-hosting/manage/reverseproxy/reverse_proxy)
|
|
- **Serve the API and the UI together on the same port**: [Run and configure a reverse proxy](/self-hosting/manage/reverseproxy/reverse_proxy)
|
|
- **Encrypt Traffic**: [Run and configure a reverse proxy](/self-hosting/manage/reverseproxy/reverse_proxy)
|
|
|
|
For more detailed recommendations, read the [Zitadel Production Setup Guide](/self-hosting/manage/production).
|
|
|
|
<details>
|
|
<summary>Read this if the environment uses the login v1</summary>
|
|
<p>
|
|
The login v2 is the next generation of the Zitadel login.
|
|
Its code and deployment are easily customizable.
|
|
Unlike the login v1, it runs in its own process.
|
|
The login v2 is enabled by default in new installations.
|
|
But if an existing `docker-compose.yaml` file is updated by following this guide,
|
|
an additional `zitadel-login` service is now running which is actually not doing anything, yet.
|
|
The following steps give guidance on how to enable the login v2 in an environment.
|
|
</p>
|
|
<ol>
|
|
<li>Read the login v2 related comments in the docker-compose.yaml.</li>
|
|
<li><a href="../../self-hosting/manage/login-client#create-login-client">Manually create a login client personal access token (PAT) for the now running v2 login</a>.</li>
|
|
<li>Move the PAT to `./login-client.pat`</li>
|
|
<li>Restart the login process: `docker compose restart login`</li>
|
|
<li><a href="../../self-hosting/manage/login-client#require-login-v2">Enable the Login UI for all users</a></li>
|
|
</ol>
|
|
</details>
|