Getting started

Build a local site and make your first working change.

Start with Set up a local development environment. It gives you a short path through installation, a running blog, and your first visible template change.

Choose one installation route: containers for a first try, native macOS/Linux when you want the tools installed locally, or Nix if you already use it. Each route leads back to the same garden example. The requirements and database pages are supporting instructions; you do not need to read every page before starting.

Once the first edit works, add a dynamic page and explore the development workflow. The collection below also provides the individual setup tasks for later reference.

In this section

  1. 1Set up a local development environmentChoose one installation route, start Zotonic, create a site, and make your first visible change.
  2. 2Build and start ZotonicCompile Zotonic, start it, check the status page, and continue to your first site.
  3. 3Create your first siteCreate the garden blog, open it in your browser, and sign in to its admin.
  4. 4Find the status site and your site's adminThe status site manages the running Zotonic installation. A site's /admin manages that site's content and enabled modules. They have different scopes and can use different credentials.
  5. 5Change a template and see the resultMake a small visible change before building a larger feature.
  6. 6Add your first dynamic pageUse an existing controller and a template for a simple dynamic page.
  7. 7Understand the development workflowWork in small, verifiable steps: change source, compile or reload, reproduce the request, and inspect the result.
  8. 8Install with Docker or PodmanBuild and run Zotonic with its development containers, then create a site.
  9. 9Install on macOS or LinuxInstall the native tools, prepare PostgreSQL, and build a local checkout.
  10. 10Installation requirementsCheck the required tools and install optional media tools when you need them.
  11. 11Prepare local PostgreSQLCreate and check the database used by a native development installation.
  12. 12Use the Nix development shellEnter the supplied OTP 28 development shell, prepare PostgreSQL, and build.