Configuration
Configure your project with .gibil.yml
The .gibil.yml file lives in the root of your project repo and tells Gibil how to set up the VM.
name: my-app
image: node:20
server_type: cpx11 # VM size (default: cpx11)
location: fsn1 # Datacenter (default: fsn1)
services:
- name: db
image: postgres:16
port: 5432
env:
POSTGRES_PASSWORD: devpass
POSTGRES_DB: myapp
tasks:
- name: install
command: pnpm install
- name: build
command: pnpm build
- name: test
command: pnpm test
env:
DATABASE_URL: postgres://postgres:devpass@localhost:5432/myapp
NODE_ENV: development
| Field | Required | Default | Description |
|---|
name | No | — | Project name |
image | No | node:20 | Runtime to install. node:20, python:3.12, go:1.22 |
server_type | No | cpx11 | Hetzner VM size |
location | No | fsn1 | Datacenter location |
services | No | — | Docker containers to start |
tasks | No | — | Commands to run after repo clone |
env | No | — | Environment variables set on the VM |
| Runtime | Installs |
|---|
node:20 | Node.js 20 + pnpm |
node:22 | Node.js 22 + pnpm |
python:3.12 | Python 3.12 + pip |
go:1.22 | Go 1.22 |
Any Docker image works as a service. Docker is automatically installed when services are defined.
services:
- name: db
image: postgres:16
port: 5432
env:
POSTGRES_PASSWORD: devpass
- name: cache
image: redis:7
port: 6379
| Type | vCPU | RAM | Cost/hr |
|---|
cpx11 | 2 | 4 GB | ~€0.011 |
cpx21 | 4 | 8 GB | ~€0.019 |
cpx31 | 4 | 16 GB | ~€0.036 |
| Code | Location |
|---|
fsn1 | Falkenstein, Germany |
nbg1 | Nuremberg, Germany |
hel1 | Helsinki, Finland |
ash | Ashburn, Virginia |
--config ./path/to/config.yml — explicit path (highest priority)
--repo https://github.com/user/repo — fetches from the repo's GitHub raw URL
- No
--repo — looks in the current working directory