Let’s deploy Hyvor Blogs on your server using Docker Compose. You can easily adapt this guide to other deployment methods such as Kubernetes.
Server: A Linux server with at least 1 GB RAM and 1 vCPUs.
Docker: Install Docker following the official guide.
OpenID Connect (OIDC) Provider: Hyvor Blogs relies on OIDC for authentication. Create an application in your OIDC provider and obtain the issuer URL, client ID, and client secret. Then, allow the following URLs:
https://<your-app-domain>/api/oidc/callbackhttps://<your-app-domain>Domain: Domain name for your Hyvor Blogs instance. This is called the “App Domain”.
Point your app domain to your server’s IP address.
See Reverse Proxy if you are running Hyvor Blogs behind a reverse proxy.
Download the latest release tarball from the releases page:
curl -L https://github.com/hyvor/blogs/releases/latest/download/deploy.tar.gz | tar -xz
cd deployThis gives you two files:
deploy/
compose.yaml
.envEdit the .env file and fill in the required values:
APP_SECRET: A strong random string. You can generate one using the following command: openssl rand -base64 32POSTGRES_PASSWORD: Use a strong, URL-safe password for the Postgres database. You can generate one using the following command: openssl rand -base64 32 | tr '+/' '-_' | tr -d '='DOMAIN_APP: The main domain where your Hyvor Blogs instance is hosted (e.g., blogs.example.com). This is where you access the Console, Sudo, and APIs.OIDC_ISSUER_URL, OIDC_CLIENT_ID, OIDC_CLIENT_SECRET: Set these variables based on your OIDC provider configuration.See Environment Variables for all available environment variables.
TLS_MODE controls how HTTPS is handled for the app domain (DOMAIN_APP). It does not affect custom domains attached to individual blogs, which always get TLS certificates automatically. Set it to one of the following:
autoDOMAIN_APP to be publicly resolvable, with ports 80 and 443 reachable from the internet.externalX-Forwarded-Proto: https and X-Forwarded-For headers, and that its
IP is included in TRUSTED_PROXIES.manual/certs/cert.pem and /certs/key.pem.disabledhttp://. Only use this on a trusted internal network.If you are running Hyvor Blogs behind a reverse proxy, see Reverse Proxy.
docker compose up -dHyvor Blogs will start and run database migrations automatically on the first launch.
To check logs:
docker compose logs -f blogsTo verify your config:
docker compose exec blogs bin/console app:verifyTo upgrade to the latest version, replace the image version in compose.yaml:
services:
blogs:
image: hyvor/blogs:<version>Then, run:
docker compose up -dMigrations will be applied automatically on startup.