Skip to content

Latest commit

 

History

History
67 lines (50 loc) · 2.42 KB

README.md

File metadata and controls

67 lines (50 loc) · 2.42 KB

Akash Postgres Restore

An auto-restoring Postgres server running on Akash, with backups taken on a configurable schedule. Backups are stored on decentralised storage using Filebase.

Ultimately this is a two container setup, one PostgreSQL server and one scheduler container to restore the database on boot, and run a cronjob to back it up.

Usage

  • Setup a Filebase account and bucket (or any S3 compatible storage host).
  • Set the environment variables in the deploy.yml and deploy on Akash
  • Use the URL and port Akash gives you to connect to the Postgres server, with the credentials you provided in the environment variables. For example cluster.ewr1p0.mainnet.akashian.io:31234

Using with an app container

Alternatively add your own app container to the deploy.yml and expose the Postgres 5432 port to your application only for a local server.

For example:

services:
  app: 
    image: myappimage:v1
    depends_on: 
      - service: postgres
  cron:
    image: ghcr.io/ovrclk/akash-postgres-restore:v0.0.4
    env:
      - POSTGRES_PASSWORD=password
      ...
    depends_on:
      - service: postgres
  postgres:
    image: postgres:12.6
    env:
      - POSTGRES_PASSWORD=password
    expose:
      - port: 5432
        to:
          - service: app
          - service: cron

Environment variables

  • POSTGRES_USER=postgres - your Postgres server username
  • POSTGRES_PASSWORD=password - your Postgres server password
  • POSTGRES_HOST=postgres - postgres server host, whatever you named it in deploy.yml
  • POSTGRES_PORT=5432 - postgres port, will be 5432 unless you aliased it in deploy.yml
  • POSTGRES_DATABASE=akash_postgres - name of your database
  • BACKUP_PATH=bucketname/path - bucket and path for your deployments. Make sure directories exist first
  • BACKUP_KEY=key - your Filebase access key
  • BACKUP_SECRET=secret - your Filebase secret
  • BACKUP_PASSPHRASE=secret - a passphrase to encrypt your backups with
  • BACKUP_HOST=https://s3.filebase.com - the S3 backup host, this defaults to Filebase but can be any S3 compatible host
  • BACKUP_SCHEDULE=*/15 * * * * - the cron schedule for backups. Defaults to every 15 minutes
  • BACKUP_RETAIN=7 days - how many days to keep backups for

Development

You can run the application locally using Docker compose.

Copy the .env.sample file to .env and populate

Run docker-compose up to build and run the application