AI agent? Read uno.place/llms.txt — connect to the person's account without a password.

How to get a Postgres database in a minute

On a server with Docker, one docker run command starts Postgres in about a minute. Keep its data in a volume, keep its port closed to the internet, and connect with a postgresql:// string. The other way is a managed database: a service creates the server and the password for you, and on Uno the agent does it from a chat.

Time
About a minute with Docker in place, about 5 with the install
Server
Linux with Docker. 1 GB of memory is enough to start
You need
SSH access to the server
Two ways to get Postgres. On your server: your app talks to a Postgres container on a local port, its data lives in a volume. Managed: the agent asks Uno, Postgres starts on its own small computer, and the connection string goes into the app's .env file Docker on your server Your app reads DATABASE_URL 127.0.0.1:5432 Postgres container docker run, restarts itself Volume data outlives the container Managed on Uno Agent in a chat you approve the request Postgres on its own small computer internal address only .env in your project DATABASE_URL, mode 0600
Both ways end the same: your app reads one connection string from the environment.

Steps with Docker

  1. Install Docker

    Docker's convenience script installs it in one command. Docker describes it as meant for development environments; for a server you will keep for years, use the apt repository from the Docker install guide instead.

    $ curl -fsSL https://get.docker.com | sh
    $ sudo docker --version
  2. Make a password

    Hex characters need no escaping in a connection string. Keep the password in a variable for the next step and save it somewhere safe: you will need it again.

    $ PGPASS=$(openssl rand -hex 18)
    $ echo "$PGPASS"
  3. Start Postgres

    The official postgres image creates the user and the database from environment variables. POSTGRES_PASSWORD is required. From Postgres 18 the volume mounts at /var/lib/postgresql (for 17 and earlier, at /var/lib/postgresql/data). Publishing the port on 127.0.0.1 keeps it off the internet.

    $ sudo docker run --name pg -d --restart unless-stopped \
        -e POSTGRES_USER=app -e POSTGRES_DB=app \
        -e POSTGRES_PASSWORD="$PGPASS" \
        -v pgdata:/var/lib/postgresql \
        -p 127.0.0.1:5432:5432 \
        postgres:18
  4. Check that it answers

    Run psql inside the container.

    $ sudo docker exec -it pg psql -U app -d app -c "select version();"
  5. Give the app its connection string

    The format is postgresql://user:password@host:port/dbname, and 5432 is the default port. Put it in a .env file next to the app and keep that file out of git.

    $ echo "DATABASE_URL=postgresql://app:[email protected]:5432/app" >> .env
    $ chmod 600 .env
    $ echo ".env" >> .gitignore
  6. Make a backup before you need one

    A custom-format dump is compressed and restores one object or the whole database. Copy it off the server, for example to object storage.

    $ sudo docker exec pg pg_dump -U app -F c app > app.dump
    # restore into a fresh database:
    $ sudo docker exec pg createdb -U app newdb
    $ sudo docker exec -i pg pg_restore -U app -d newdb < app.dump

Check that it works

Restart the container and look for your data. If a table you made is still there, the volume works.

$ sudo docker exec pg psql -U app -d app -c "create table hello (id int);"
$ sudo docker restart pg
$ sudo docker exec pg psql -U app -d app -c "\dt"

Docker, managed, or Uno

Docker on your own server costs nothing extra but is yours to look after. A managed Postgres from a hosting provider takes that work away for a monthly fee. On Uno the database is a managed one that the agent can create.

Docker on your serverManaged database at a hostManaged on Uno
Who creates itYou, with one commandYou, in the host's consoleThe agent, after you approve
The passwordYou make and store itThe host makes it, you copy itThe connection string goes into the project's .env as DATABASE_URL, mode 0600, and the agent never sees the password
Who can reach itYou choose: 127.0.0.1 or a public portUsually a public address with TLSReachable from your account's Uno computers on an internal address, not from the internet
BackupsYou run pg_dump yourselfThe host's scheduleA backup is a copy of the whole disk, not a pg_dump file; the schedule is optional
Where it runsOn your server, sharing its memoryOn the host's machineA managed Postgres database runs on its own small Uno computer and counts against your plan
VersionThe image tag you choose; 18 is the latestThe host's listPostgreSQL 16

The short way: ask the agent

In a chat in Uno Work, say "create a Postgres database for this app". You approve the request. The database is ready in a minute or two. The connection string goes into the project's .env as DATABASE_URL, mode 0600, and the agent never sees the password. You skip steps 1–5. The size is yours to set: Memory from 512 MB to 16 GB and disk from 5 to 500 GB, with defaults of 1 GB and 10 GB.

See how it works

Plus: $20 a month

What the Uno database does not do

  • A database needs a paid plan; the free trial computer is refused.
  • It is not reachable from the internet, so you cannot point a tool on your laptop at it directly. Your apps on Uno computers in the same account can.
  • A managed Postgres database runs on its own small Uno computer and counts against your plan.
  • Backups: A backup is a copy of the whole disk, not a pg_dump file; the schedule is optional. Make your own pg_dump too if you want a file you can move to another host.
  • You delete a database in the Uno console, not from the chat.

Pick the computer your app and its database live in

Every plan sleeps when idle and wakes on the first request. The database needs a paid plan; move up any time.

Small

A Telegram bot, a VPN, a small backend

$5/ month

  • 1 vCPU · 1 GB
  • 15 GB disk
  • 25 GB cloud storage
  • 5 boosts a month
Get Small

Plus

Agents that work with your laptop closed

$20/ month

  • 4 vCPU · 4 GB
  • 40 GB disk
  • 100 GB cloud storage
  • Uno Work in the cloud
Get Plus

Pro

A product in production, a second MacBook

$70/ month

  • 16 vCPU · 16 GB
  • 120 GB disk
  • 300 GB cloud storage
  • Speed of a MacBook Air M4
Get Pro

Max

A team and many agents at once

$200/ month

  • 32 vCPU · 48 GB
  • 300 GB disk
  • 1,024 GB cloud storage
  • 5 public IPv4
Get Max

Add Uno AI to any plan: 40 h of AI work a month on Small, 100 h on Plus, unlimited on Max. Today: GLM-5.3 Flash and MiMo v2.6 Pro. Or sign in with your own Claude or ChatGPT.

Common problems

"password authentication failed for user"
The password in the connection string is not the one the database was created with. The variable POSTGRES_PASSWORD is read only the first time the volume is empty. If you started the container before, with another password, the old one still applies. Remove the volume with docker volume rm pgdata (this deletes the data) or change the password with ALTER USER.
My data is gone after I recreated the container
The container had no volume, or the volume was mounted at the wrong path. Postgres 18 and later keep data under /var/lib/postgresql; 17 and earlier under /var/lib/postgresql/data. Mount the path that matches your image tag.
"port is already allocated" or "address already in use"
Another Postgres already listens on 5432. Stop it, or publish this one on another port, for example -p 127.0.0.1:5433:5432, and use 5433 in the connection string.
I cannot connect from my laptop
That is the point of binding to 127.0.0.1: only the server itself can reach the port. From your laptop, forward it over SSH: ssh -N -L 5432:127.0.0.1:5432 user@server, then connect to 127.0.0.1:5432 on the laptop.
A character in my password breaks the connection string
Characters such as @, / and : have to be percent-encoded in a URI. A hex password from openssl rand -hex has none of them.

Next

  1. A Linux box with root — and an agent that already knows how to run it
  2. How to choose a server for your projectMemory first, then disk, CPU and region. A table of starting sizes.
  3. What is S3 object storageFiles kept as objects in buckets, reached by web requests.

A database your agent can create for you

Ask in a chat in Uno Work. The database starts on its own small computer, and the connection string lands in your project's .env. Plus is $20 a month.

Get your computer