This guide uses the pre-built Docker image published to GitHub Container Registry (GHCR). You don’t build anything from source — Docker pulls the ready-to-run image directly. Updates are a single command or one click in your hosting panel.
You need a GitHub organization invite to access the repository and pull the Docker image. If you haven’t received one, or it has expired, contact me. After accepting, the repository will be available at github.com/domainer-platform/domainer-platform-releases.
Prerequisites
- A server or VPS with Docker and Docker Compose installed — see docs.docker.com/get-docker
- A domain name pointed at your server’s IP address
1
Generate a GitHub Personal Access Token (PAT)
Docker needs your GitHub credentials to pull the private image from GHCR.
- Go to github.com/settings/tokens (GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic))
- Click Generate new token (classic)
- Give it a name (e.g.
domainer-docker) - Under Select scopes, check
read:packages— this is the only permission needed - Click Generate token and copy the value immediately — GitHub shows it only once
2
Log in to GitHub Container Registry
On your server, authenticate Docker with GHCR using your GitHub username and the token you just generated:Replace
YOUR_PAT with the token and YOUR_GITHUB_USERNAME with your GitHub username. You should see Login Succeeded.You only need to do this once — Docker stores the credentials on the server.3
Download the Compose file
Go to github.com/domainer-platform/domainer-platform-releases, find
docker-compose.hub.yml, and place it on your server. This file tells Docker which image to pull and how to configure the services.You can do this via SFTP, or copy the file contents directly from GitHub and create it manually on the server.4
Create your .env file
In the same directory as
docker-compose.hub.yml, create a .env file with the following variables:DATABASE_URL is already configured inside docker-compose.hub.yml and points to the PostgreSQL container. Do not add it to .env.5
Start the containers
app and db with status Up.6
Set up a reverse proxy with HTTPS
The app runs on port 3000. You need a reverse proxy to serve it on port 443 with HTTPS. A minimal Nginx + Certbot setup:See the Certbot documentation for how to issue a free Let’s Encrypt certificate for your server and distribution.
7
Open the Setup Wizard
Visit your domain — you’ll be redirected to the Setup Wizard at
/admin/install. Complete the wizard to seed your database, configure AI, and set up notifications.See Setup Wizard for a full step-by-step walkthrough.Scheduled jobs (optional)
The platform works fully without scheduled jobs. However, three background tasks handle important notifications and will not run unless you set them up:
Each request must include the
x-cron-secret header matching your CRON_SECRET value.
Example crontab entries (edit with crontab -e):
Updating
Pull the latest image and restart:Example: Hostinger VPS with Docker Manager
Hostinger’s VPS plans include a visual Docker Manager that makes deployment and updates possible without any terminal commands.1
Add your GitHub credentials in Hostinger
In the Hostinger control panel, open Docker Manager → Credentials → + Credential.
- Registry:
GitHub Container Registry - Username: your GitHub username
- Token: your GitHub PAT (the token from Step 1)
2
Create a new Docker project
Click Docker Manager → Projects → Compose → choose Compose manually → name your project → in .yaml editor paste the contents of
docker-compose.hub.yml and in Environment add your .env values → click Deploy.Hostinger pulls the image, starts the containers, and shows you the running status.You will also need to carry out some additional configuration, which will depend on your VPS settings. Please follow the general instructions above.
3
Update with one click
When a new version is available, open your project in Docker Manager → click ⋯ → Update.Hostinger pulls the new image and restarts the container automatically. The whole process takes under a minute.