diff --git a/manage.py b/manage.py index 06655ca..dd2d9d8 100755 --- a/manage.py +++ b/manage.py @@ -13,7 +13,9 @@ def backupProj(project): database = None paths = [] - if project in secrets['postgres'].keys(): + if project == 'postgres': + database = 'all' + elif project in secrets['postgres'].keys(): database = project if project in env['backup'].keys(): @@ -53,8 +55,11 @@ def borgCreate(name, path=None, database=None): if database is not None: print(f"Dumping database {database}.") - dockerEnv = {"DOCKER_HOST": 'unix:///run/user/1000/docker.sock'} - dumpProc = subprocess.run(["docker", "exec", "postgres", "pg_dump", "-c", database], capture_output=True, text=True, env=dockerEnv) + if database == 'all': + dumpProc = subprocess.run(["podman", "exec", "postgres", "pg_dumpall"], capture_output=True, text=True) + else: + dumpProc = subprocess.run(["podman", "exec", "postgres", "pg_dump", "-c", database], capture_output=True, text=True) + if dumpProc.returncode != 0: print(f"Failed to dump database {database}.", file=sys.stderr) return 1 diff --git a/projects/postgres/.env.mako b/projects/postgres/.env.mako new file mode 100644 index 0000000..9cd59b0 --- /dev/null +++ b/projects/postgres/.env.mako @@ -0,0 +1,9 @@ +<%! + import random, string + password = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(64)) +%> +POSTGRES_PASSWORD='${password}' +# Required for Synapse +LANG=C +POSTGRES_INITDB_ARGS="--locale=C --encoding=UTF8" + diff --git a/projects/postgres/compose.yaml.mako b/projects/postgres/compose.yaml.mako new file mode 100644 index 0000000..cad9d17 --- /dev/null +++ b/projects/postgres/compose.yaml.mako @@ -0,0 +1,12 @@ +services: + postgres: + container_name: postgres + image: docker.io/library/postgres:16-alpine + network_mode: pasta:-a,${env['pasta']['postgres']['ipv4']},-a,${env['pasta']['postgres']['ipv6']} + restart: always + user: ${env['users']['postgres']}:${env['users']['postgres']} + env_file: .env.rendered + ports: + - ${env['ports']['postgres']}:5432 + volumes: + - ${env['volumes']['postgres']['datadir']}:/var/lib/postgresql/data diff --git a/pyenv.yml b/pyenv.yml index f32bfd3..0f0c66e 100644 --- a/pyenv.yml +++ b/pyenv.yml @@ -63,6 +63,9 @@ pasta: mailserver: ipv4: 10.86.13.1 ipv6: fc86::13 + postgres: + ipv4: 10.86.16.1 + ipv6: fc86::16 synapse: ipv4: 10.86.19.1 ipv6: fc86::19