Shared PostgreSQL in Docker with Optional pgBackRest Backups
Deploy a persistent PostgreSQL Jet for Odoo and other Docker services, with optional local and S3 backups.
Summary
- Category
- Jet Templates
- Tags
- Database
- Authors
- Cetmix OÜ
- License
- AGPL-3
- Version
- 1.0.0
- Call sign
- jet_template_postgres_docker
- Website
- cetmix.com/contact
This snippet imports the Postgres Docker Jet Template. It runs one shared PostgreSQL instance per server, defaults to PostgreSQL 17, and builds a Jet-specific image from the selected PostgreSQL version. It includes Docker, Fail2ban and Tower Core dependency templates. Database files persist in a named Docker volume by default. Set shared_postgres_data to a host path to use a bind mount instead. Clients on the shared Tower Docker network connect to the Jet reference on port 5432. Set postgres_port only when a host-side port mapping is needed.
Configure and launch
- Import the YAML and install the Postgres Docker template on the target server. Set
postgres_passwordin Tower Keys and Secrets and configurepostgres_user(defaultodoo). Review the PostgreSQL version, data location and any tuning settings, such aspostgres_shm_sizeorpg_max_connections. - For backups, set
install_pgbackresttoyesbefore Build. This configures WAL archiving, a local backup repository and an archive spool. To add an S3 repository, sets3_endpoint,aws_s3_bucket_nameandaws_regionalong with theaws_key_idandaws_access_keysecrets. The snippet passes these credentials as container environment variables and also renders them into the mounted pgBackRest configuration. - Create a Jet targeting Running. Build prepares persistent storage, builds the image and creates the container. Start launches PostgreSQL and, when backups are enabled, checks the pgBackRest stanza and, when initialization is needed, creates it and takes an initial full backup. The included scheduled plan is configured to run incremental backups every eight hours when pgBackRest is enabled.
Operate and troubleshoot
Check Postgres logs and the Flight Plan output for startup or backup failures. If clients cannot connect, verify the Jet reference, Docker network and database credentials. For backup failures, check stanza status, WAL archiving and the configured repositories.
Stop stops dependent Odoo Jets before stopping PostgreSQL. Restart restarts PostgreSQL and then triggers a fast restart of dependent Odoo Jets. Rebuild recreates the stopped container while reusing its persistent storage and rendered build files. Remove removes the container and image. Destroy removes the Jet root and its labeled volumes, including the default database volume and local backup repository. If teardown manages a Cloudflare record for the Jet, it uses cloudflare_token and cloudflare_zone_id.
This package is distributed under the GNU Affero General Public License v3.0 (AGPL-3) or later.
These Terms and Conditions (“Terms”) govern your access to and use of YAML configuration files (“Packages”, “YAML Snippets”, or “Snippets”) made available via the Cetmix Tower platform, operated by Cetmix OÜ, Ranna 6, Haademeeste, Voiste, 86501, Estonia (“Cetmix”, “we”, “our”, or “us”).
By downloading, installing, or otherwise using any YAML Snippets from the Cetmix Tower platform, you agree to be bound by these Terms.
1. Use of Packages
1.1. The YAML Snippets are provided either by Cetmix or third-party authors (“Authors”).
1.2. You are solely responsible for verifying the functionality, safety, and suitability of any YAML Snippet before using it in a production environment.
1.3. You may use the Snippets only in accordance with their respective licenses, which may be open-source or commercial.
2. Author Responsibility
2.1. Authors are solely responsible for the content, accuracy, functionality, and compliance of the YAML Snippets they publish.
2.2. Cetmix does not review or verify the correctness, security, or compliance of third-party Snippets.
2.3. If you are an Author, you represent and warrant that your submitted YAML Snippet:
- Does not infringe on any third-party rights;
- Complies with applicable laws and regulations;
- Does not contain harmful, malicious, or misleading code or behavior.
3. Limitation of Liability
3.1. Cetmix provides access to the YAML Snippets “as is” and “as available,” without warranties of any kind, either express or implied.
3.2. Cetmix expressly disclaims all liability for any damages resulting from:
- Use or inability to use a YAML Snippet;
- Errors or omissions in the Snippets;
- Actions taken in reliance on any YAML Snippet;
- Misuse, misconfiguration, or system failure caused by a Snippet.
3.3. In no event shall Cetmix OÜ be liable for any indirect, incidental, special, punitive, or consequential damages, including but not limited to loss of data, profits, or service availability.
4. Security and Compliance
4.1. Cetmix does not guarantee that any Snippet is secure or free from vulnerabilities. You must review and test all Snippets before deploying them in sensitive or production environments.
4.2. Compliance with security, privacy, and regulatory requirements is your responsibility when using any Snippet.
5. Intellectual Property
5.1. Ownership of each YAML Snippet remains with its respective Author.
5.2. You must respect all license terms specified for each Snippet. Unauthorized reproduction, distribution, or sublicensing may result in legal consequences.
6. Modifications and Termination
6.1. Cetmix may modify or remove any YAML Snippet at any time without notice.
6.2. These Terms may also be updated periodically. Continued use of the platform constitutes acceptance of the revised Terms.
7. Governing Law and Jurisdiction
These Terms shall be governed by the laws of the Republic of Estonia. Any disputes arising under or in connection with these Terms shall be subject to the exclusive jurisdiction of the courts of Estonia.
8. Contact
For questions or concerns regarding these Terms or specific YAML Snippets, please contact us