ZEKTOR.IO Docs

Getting Started

Create your first database instance on Zektor.io in under 60 seconds.

Create an Account

  1. Go to zektor.io and click Get Started
  2. Register with your email or sign in with Google/GitHub
  3. You'll be redirected to your dashboard

Deploy Your First Instance

Valkey (Cache)

  1. From the dashboard, click Cache Instances in the sidebar
  2. Click New Cache (or navigate to /new?type=cache)
  3. Choose your cluster size (starting at 128MB RAM)
  4. Select a region (Nuremberg, Falkenstein, or Helsinki)
  5. Click Deploy — your instance will be ready in under 60 seconds

PostgreSQL (Database)

  1. From the dashboard, click Database Instances in the sidebar
  2. Click New Database (or navigate to /new?type=database)
  3. Choose your cluster size — select the Free tier for a zero-cost database perfect for learning and prototyping, or pick a paid tier starting at 512MB RAM + 5GB SSD
  4. Select a region and PostgreSQL version (v17 or v18)
  5. Click Deploy

What You Get

Once your instance is provisioned (typically under 60 seconds), you'll have:

  • Connection credentials — Host, port, username, password, and a ready-to-use connection string available in the Settings tab
  • Monitoring dashboard — Real-time CPU, memory, and storage metrics
  • TLS encryption — All connections are encrypted by default
  • Automated daily backups — (PostgreSQL) A default backup schedule is created automatically
  • AOF persistence — (Valkey) Data survives restarts out of the box

Connect to Your Instance

Once your instance is provisioned, you'll see connection details on the instance dashboard.

Valkey

valkey-cli -h <your-host> -p <port> -a <password> --tls

PostgreSQL

psql 'postgresql://<username>:<password>@<your-host>:5432/<database>?sslmode=require'

Connection strings and credentials are available in the Settings tab of your instance.

Quick Start: Build Your First App

Node.js + PostgreSQL

import pg from 'pg';

const pool = new pg.Pool({
  connectionString: process.env.DATABASE_URL // from your Settings tab
});

// Create a table
await pool.query(`
  CREATE TABLE IF NOT EXISTS tasks (
    id SERIAL PRIMARY KEY,
    title TEXT NOT NULL,
    completed BOOLEAN DEFAULT false,
    created_at TIMESTAMP DEFAULT NOW()
  )
`);

// Insert a row
await pool.query(
  'INSERT INTO tasks (title) VALUES ($1)',
  ['My first task on Zektor.io']
);

// Query
const result = await pool.query('SELECT * FROM tasks');
console.log(result.rows);

Node.js + Valkey

import Redis from 'ioredis';

const redis = new Redis({
  host: '<your-host>',  // from your Settings tab
  port: 6379,
  password: '<password>',
  tls: {},
});

// Set and get a value
await redis.set('hello', 'world');
const value = await redis.get('hello');
console.log(value); // 'world'

// Use with expiry for caching
await redis.set('cache:user:1', JSON.stringify({ name: 'Alice' }), 'EX', 3600);

Python + PostgreSQL

import psycopg2

conn = psycopg2.connect(
    host="<your-host>",
    port=5432,
    user="<username>",
    password="<password>",
    dbname="<database>",
    sslmode="require"
)

cur = conn.cursor()
cur.execute("SELECT version()")
print(cur.fetchone())

conn.close()

Next Steps

On this page