---
title: "Faça o deploy de HedgeDoc no Pethost com um clique"
description: "Notas em Markdown que você escreve com outras pessoas, em tempo real. Um template para o Pethost: em um ou dois minutos o app está no ar na sua máquina, com HTTPS no próprio endereço e backups noturnos."
---

[← Todos os templates](https://pethost.dev/pt/templates/)

# Faça o deploy de HedgeDoc no Pethost com um clique

Notas em Markdown que você escreve com outras pessoas, em tempo real

[Fazer deploy no Pethost](https://console.pethost.dev/?template=hedgedoc)

## O que acontece

1. Você entra no Pethost ou cria uma conta, com uma passkey, GitHub ou Google.
2. Ainda não tem máquina? Você escolhe um plano, e nós preparamos uma para você. O link espera no seu navegador até ela ficar pronta.
3. Novo projeto abre no app. Você preenche o que ele pede e clica em Criar projeto: **E-mail**, **Senha**.
4. Em um ou dois minutos o app está no ar no próprio endereço com HTTPS. Os segredos dele são gerados ao acaso, e os dados vão para o backup noturno.
5. É um projeto como qualquer outro: o compose.yaml, o .env, os logs e um terminal ficam no painel, e seu agente pode alterá-lo, fazer rollback ou restaurá-lo.

## Primeiros passos

Entre com o e-mail e a senha que você definiu. Ninguém mais pode se cadastrar: para deixar outras pessoas entrarem, adicione CMD_ALLOW_EMAIL_REGISTER=true ao .env do projeto e faça o deploy de novo. A senha também é alterada no .env: toda vez que o app inicia, ela é definida de novo.

## O que roda

O template é este compose.yaml e as variáveis que ele grava no .env do projeto. O Pethost roda o arquivo exatamente como está escrito.

```
services:
  hedgedoc:
    image: quay.io/hedgedoc/hedgedoc:1.12.0
    restart: unless-stopped
    environment:
      CMD_DB_URL: postgres://hedgedoc:${POSTGRES_PASSWORD}@db:5432/hedgedoc
      CMD_DOMAIN: ${HOST}
      # TLS ends at the machine's proxy: links are https, with no port, and the proxy is trusted.
      CMD_PROTOCOL_USESSL: "true"
      CMD_URL_ADDPORT: "false"
      CMD_SESSION_SECRET: ${SESSION_SECRET}
      # A guest reads what a note's permission allows, and writes nothing.
      CMD_ALLOW_ANONYMOUS: "false"
      CMD_ALLOW_EMAIL_REGISTER: ${CMD_ALLOW_EMAIL_REGISTER:-false}
      # Said outright, so that the image's entrypoint gives the uploads volume to its user.
      CMD_IMAGE_UPLOAD_TYPE: filesystem
      ACCOUNT_EMAIL: ${EMAIL}
      ACCOUNT_PASSWORD: ${PASSWORD}
    # The account comes from .env, so no sign-up page is left open, and every start sets its
    # password again: HedgeDoc has no page to change it. The tables come first, as the app
    # itself would make them.
    command:
      - sh
      - -c
      - |
        set -e
        node -e "require('./lib/models').runMigrations().then(() => process.exit(0))"
        node bin/manage_users --reset="$$ACCOUNT_EMAIL" --pass="$$ACCOUNT_PASSWORD" ||
          node bin/manage_users --add="$$ACCOUNT_EMAIL" --pass="$$ACCOUNT_PASSWORD"
        exec node app.js
    depends_on:
      db:
        condition: service_healthy
    volumes:
      - uploads:/hedgedoc/public/uploads
    # The image's own check, with time for the first start's migrations.
    healthcheck:
      test: ["CMD", "node", "healthcheck.mjs"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 90s

  db:
    image: postgres:18-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: hedgedoc
      POSTGRES_USER: hedgedoc
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - db:/var/lib/postgresql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U hedgedoc -d hedgedoc"]
      interval: 5s
      timeout: 5s
      retries: 12
      start_period: 30s

volumes:
  uploads:
  db:
```

[compose.yaml](https://pethost.dev/templates/hedgedoc/compose.yaml)[Ver no GitHub](https://github.com/pethost-dev/templates/tree/main/hedgedoc)

Pethost · Stephan Gomer · NIP 1133096755

[Templates](https://pethost.dev/pt/templates/) [Sobre nós](https://pethost.dev/about/) [Blog](https://pethost.dev/blog/) [Termos](https://pethost.dev/terms/) [Privacidade](https://pethost.dev/privacy/) [Reembolsos](https://pethost.dev/refunds/) [API](https://pethost.dev/docs/api/) [CLI](https://pethost.dev/docs/cli/) [Plugin](https://github.com/pethost-dev/plugin) [support@pethost.dev](mailto:support@pethost.dev)
