Small starter stacks for self-hosted apps on Docker or Coolify, maintained by Vaguul under the Zemiax personal software studio.
The goal is simple: start from a clean template instead of rebuilding the same PHP, Node, database, and worker setup every time.
Use this repository as a GitHub template when you want to copy the starters into a new project.
node-postgres-redisphp-mariadbpython-worker
docker compose -f node-postgres-redis/docker-compose.yml config
docker compose -f php-mariadb/docker-compose.yml config
docker compose -f python-worker/docker-compose.yml configUse these checks after deploying a starter locally or through Coolify:
| Starter | Static validation command | Expected services | Public surface | Health behavior | Host requirements |
|---|---|---|---|---|---|
node-postgres-redis |
docker compose -f node-postgres-redis/docker-compose.yml config |
api, postgres, redis |
api on ${API_PORT:-3000} |
Postgres must answer pg_isready, Redis must answer PING, and api waits for both dependencies to become healthy. |
Port ${API_PORT:-3000} must be free if published on the host. Uses named volumes postgres-data and redis-data. |
php-mariadb |
docker compose -f php-mariadb/docker-compose.yml config |
app, mariadb |
app on ${APP_PORT:-8080} |
MariaDB must answer mariadb-admin ping, and app waits for the database to become healthy. |
Port ${APP_PORT:-8080} must be free if published on the host. Uses named volume mariadb-data. |
python-worker |
docker compose -f python-worker/docker-compose.yml config |
worker |
none by default | The worker container should stay running with restart: unless-stopped. No dependency healthcheck is required. |
No inbound host port required. Confirm the worker has the environment variables it needs before enabling real jobs. |
For production deployments, expose only the application service that needs traffic. Databases, Redis, and background workers should stay private to the Docker network unless your provider requires a separate internal network configuration.
- Replace every sample password before deploying.
- Keep
.envfiles out of Git. - Bind only the ports that the application actually needs.
- solo builders shipping internal tools
- small product teams on VPS + Docker
- people using Coolify and wanting cleaner starting points
Built and maintained by Vaguul for Zemiax.
MIT