mirror of
https://github.com/databasus/databasus.git
synced 2026-04-06 00:32:03 +02:00
Compare commits
131 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
54a6a30024 | ||
|
|
8c00801feb | ||
|
|
26bc3dd4f2 | ||
|
|
b45158afa2 | ||
|
|
46512d2bc8 | ||
|
|
05e5b6839b | ||
|
|
8f12e1a96a | ||
|
|
94a7da2ace | ||
|
|
a4f75794f5 | ||
|
|
da9b279e8b | ||
|
|
7a5654a80a | ||
|
|
ff94e06306 | ||
|
|
3ae8761666 | ||
|
|
70e0a59a82 | ||
|
|
e1f466c965 | ||
|
|
a0f284e06b | ||
|
|
8638b2d136 | ||
|
|
16d4f506bc | ||
|
|
c100d94a92 | ||
|
|
f14739a1fb | ||
|
|
b7d2521088 | ||
|
|
eb8e5aa428 | ||
|
|
1f030bd8fb | ||
|
|
b278a79104 | ||
|
|
b74ae734af | ||
|
|
d21a9398c6 | ||
|
|
6ad7b95b7d | ||
|
|
8432d1626f | ||
|
|
d7f631fa93 | ||
|
|
c3fb2aa529 | ||
|
|
1817937409 | ||
|
|
3172396668 | ||
|
|
9cd5c8c57c | ||
|
|
d8826d85c3 | ||
|
|
49fdd46cbe | ||
|
|
c6261d434b | ||
|
|
918002acde | ||
|
|
c0721a43e1 | ||
|
|
461e15cd7a | ||
|
|
69a53936f5 | ||
|
|
2bafec3c19 | ||
|
|
422b44dfdc | ||
|
|
51d7fe54d0 | ||
|
|
6e2d63626c | ||
|
|
260c7a1188 | ||
|
|
ace94c144b | ||
|
|
b666cd9e2e | ||
|
|
9dac63430d | ||
|
|
8217906c7a | ||
|
|
db71a5ef7b | ||
|
|
df78e296b3 | ||
|
|
fda3bf9b98 | ||
|
|
e19f449c60 | ||
|
|
5944d7c4b6 | ||
|
|
1f5c9d3d01 | ||
|
|
d27b885fc1 | ||
|
|
45054bc4b5 | ||
|
|
09f27019e8 | ||
|
|
cba8fdf49c | ||
|
|
41c72cf7b6 | ||
|
|
f04a8b7a82 | ||
|
|
552167e4ef | ||
|
|
be42cfab1f | ||
|
|
ea34ced676 | ||
|
|
09cb1488b3 | ||
|
|
b6518ef667 | ||
|
|
25c58e6209 | ||
|
|
97ee4b55c2 | ||
|
|
12eea72392 | ||
|
|
75c88bac50 | ||
|
|
ff1b6536bf | ||
|
|
06197f986d | ||
|
|
fe72e9e0a6 | ||
|
|
640cceadbd | ||
|
|
80e573fcb3 | ||
|
|
35498d83f1 | ||
|
|
77ae8d1ac7 | ||
|
|
2f20845b3d | ||
|
|
a3d3df4093 | ||
|
|
8db83d40d5 | ||
|
|
065ded37bd | ||
|
|
71e801debb | ||
|
|
ffd4e3a27b | ||
|
|
d2a9085591 | ||
|
|
6f0152b60c | ||
|
|
7007236f2f | ||
|
|
db55cad310 | ||
|
|
25bd096c81 | ||
|
|
7e98dd578c | ||
|
|
ba37b30e83 | ||
|
|
34b3f822e3 | ||
|
|
14700130b7 | ||
|
|
de11ab8d8a | ||
|
|
06282bb435 | ||
|
|
a3b263bbac | ||
|
|
a956dccf7c | ||
|
|
ce9fa18d58 | ||
|
|
281e185f21 | ||
|
|
bb5b0064ea | ||
|
|
da95bbb178 | ||
|
|
cfe5993831 | ||
|
|
fa0e3d1ce2 | ||
|
|
d07085c462 | ||
|
|
c89c1f9654 | ||
|
|
6cfc0ca79b | ||
|
|
5d27123bd7 | ||
|
|
79ca374bb6 | ||
|
|
b3f1a6f7e5 | ||
|
|
d521e2abc6 | ||
|
|
82eca7501b | ||
|
|
51866437fd | ||
|
|
244a56d1bb | ||
|
|
95c833b619 | ||
|
|
878fad5747 | ||
|
|
6ff3096695 | ||
|
|
b4b514c2d5 | ||
|
|
da0fec6624 | ||
|
|
408675023a | ||
|
|
0bc93389cc | ||
|
|
c8e6aea6e1 | ||
|
|
981ad21471 | ||
|
|
177a9c782c | ||
|
|
069d6bc8fe | ||
|
|
242d5543d4 | ||
|
|
02c735bc5a | ||
|
|
793b575146 | ||
|
|
a6e84b45f2 | ||
|
|
a941fbd093 | ||
|
|
4492ba41f5 | ||
|
|
3a5ac4b479 | ||
|
|
77aaabeaa1 |
72
.dockerignore
Normal file
72
.dockerignore
Normal file
@@ -0,0 +1,72 @@
|
||||
# Git and GitHub
|
||||
.git
|
||||
.gitignore
|
||||
.github
|
||||
|
||||
# Node modules everywhere
|
||||
node_modules
|
||||
**/node_modules
|
||||
|
||||
# Backend - exclude everything except what's needed for build
|
||||
backend/tools
|
||||
backend/mysqldata
|
||||
backend/pgdata
|
||||
backend/mariadbdata
|
||||
backend/mongodbdata
|
||||
backend/temp
|
||||
backend/images
|
||||
backend/bin
|
||||
backend/*.exe
|
||||
|
||||
# Scripts and data directories
|
||||
scripts
|
||||
postgresus-data
|
||||
|
||||
# IDE and editor files
|
||||
.idea
|
||||
.vscode
|
||||
.cursor
|
||||
**/*.swp
|
||||
**/*.swo
|
||||
|
||||
# Documentation and articles (not needed for build)
|
||||
articles
|
||||
docs
|
||||
pages
|
||||
|
||||
# Notifiers not needed in container
|
||||
notifiers
|
||||
|
||||
# Dist (will be built fresh)
|
||||
frontend/dist
|
||||
|
||||
# Environment files (handled separately)
|
||||
.env.local
|
||||
.env.development
|
||||
|
||||
# Logs and temp files
|
||||
**/*.log
|
||||
tmp
|
||||
temp
|
||||
|
||||
# OS files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Helm charts and deployment configs
|
||||
deploy
|
||||
|
||||
# License and other root files
|
||||
LICENSE
|
||||
CITATION.cff
|
||||
*.md
|
||||
|
||||
# Assets - exclude SVGs but keep tools
|
||||
assets/*.svg
|
||||
assets/tools/download_postgresql.sh
|
||||
|
||||
# Python cache
|
||||
**/__pycache__
|
||||
|
||||
# Pre-commit config
|
||||
.pre-commit-config.yaml
|
||||
102
.github/CODE_OF_CONDUCT.md
vendored
Normal file
102
.github/CODE_OF_CONDUCT.md
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
# Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors and maintainers pledge to make participation in the Postgresus community a friendly and welcoming experience for everyone, regardless of background, experience level or personal circumstances.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
### Examples of behavior that contributes to a positive environment
|
||||
|
||||
- Using welcoming and inclusive language
|
||||
- Being respectful of differing viewpoints and experiences
|
||||
- Gracefully accepting constructive criticism
|
||||
- Focusing on what is best for the community
|
||||
- Showing empathy towards other community members
|
||||
- Helping newcomers get started with contributions
|
||||
- Providing clear and constructive feedback on pull requests
|
||||
- Celebrating successes and acknowledging contributions
|
||||
|
||||
### Examples of unacceptable behavior
|
||||
|
||||
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
- Publishing others' private information, such as physical or email addresses, without their explicit permission
|
||||
- Spam, self-promotion or off-topic content in project spaces
|
||||
- Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, including:
|
||||
|
||||
- GitHub repositories (issues, pull requests, discussions, comments)
|
||||
- Telegram channels and direct messages related to Postgresus
|
||||
- Social media interactions when representing the project
|
||||
- Community forums and online discussions
|
||||
- Any other spaces where Postgresus community members interact
|
||||
|
||||
This Code of Conduct also applies when an individual is officially representing the community in public spaces, such as using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive or unacceptable behavior may be reported to the community leaders responsible for enforcement:
|
||||
|
||||
- **Email**: [info@postgresus.com](mailto:info@postgresus.com)
|
||||
- **Telegram**: [@rostislav_dugin](https://t.me/rostislav_dugin)
|
||||
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within the community.
|
||||
|
||||
## Contributing with Respect
|
||||
|
||||
When contributing to Postgresus, please:
|
||||
|
||||
- Be patient with maintainers and other contributors
|
||||
- Understand that everyone has different levels of experience
|
||||
- Ask questions in a respectful manner
|
||||
- Accept that your contribution may not be accepted, and be open to feedback
|
||||
- Follow the [contribution guidelines](https://postgresus.com/contribute)
|
||||
|
||||
For code contributions, remember to:
|
||||
|
||||
- Discuss significant changes before implementing them
|
||||
- Be open to code review feedback
|
||||
- Help review others' contributions when possible
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html).
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq).
|
||||
54
.github/SECURITY.md
vendored
Normal file
54
.github/SECURITY.md
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
# Security Policy
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
If you discover a security vulnerability in Postgresus, please report it responsibly. **Do not create a public GitHub issue for security vulnerabilities.**
|
||||
|
||||
### How to Report
|
||||
|
||||
1. **Email** (preferred): Send details to [info@postgresus.com](mailto:info@postgresus.com)
|
||||
2. **Telegram**: Contact [@rostislav_dugin](https://t.me/rostislav_dugin)
|
||||
3. **GitHub Security Advisories**: Use the [private vulnerability reporting](https://github.com/RostislavDugin/postgresus/security/advisories/new) feature
|
||||
|
||||
### What to Include
|
||||
|
||||
- Description of the vulnerability
|
||||
- Steps to reproduce the issue
|
||||
- Potential impact and severity assessment
|
||||
- Any suggested fixes (optional)
|
||||
|
||||
## Supported Versions
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | --------- |
|
||||
| Latest | Yes |
|
||||
|
||||
We recommend always using the latest version of Postgresus. Security patches are applied to the most recent release.
|
||||
|
||||
### PostgreSQL Compatibility
|
||||
|
||||
Postgresus supports PostgreSQL versions 12, 13, 14, 15, 16, 17 and 18.
|
||||
|
||||
## Response Timeline
|
||||
|
||||
- **Acknowledgment**: Within 48-72 hours
|
||||
- **Initial Assessment**: Within 1 week
|
||||
- **Fix Timeline**: Depends on severity, but we aim to address critical issues as quickly as possible
|
||||
|
||||
We follow a coordinated disclosure policy. We ask that you give us reasonable time to address the vulnerability before any public disclosure.
|
||||
|
||||
## Security Features
|
||||
|
||||
Postgresus is designed with security in mind. For full details, see our [security documentation](https://postgresus.com/security).
|
||||
|
||||
Key features include:
|
||||
|
||||
- **AES-256-GCM Encryption**: Enterprise-grade encryption for backup files and sensitive data
|
||||
- **Read-Only Database Access**: Postgresus uses read-only access by default and warns if write permissions are detected
|
||||
- **Role-Based Access Control**: Assign viewer, member, admin or owner roles within workspaces
|
||||
- **Audit Logging**: Track all system activities and changes made by users
|
||||
- **Zero-Trust Storage**: Encrypted backups are safe even in shared cloud storage
|
||||
|
||||
## License
|
||||
|
||||
Postgresus is licensed under [Apache 2.0](../LICENSE).
|
||||
283
.github/workflows/ci-release.yml
vendored
283
.github/workflows/ci-release.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: "1.23.3"
|
||||
go-version: "1.24.4"
|
||||
|
||||
- name: Cache Go modules
|
||||
uses: actions/cache@v4
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
|
||||
- name: Install golangci-lint
|
||||
run: |
|
||||
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.60.3
|
||||
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s -- -b $(go env GOPATH)/bin v2.7.2
|
||||
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
|
||||
|
||||
- name: Install swag for swagger generation
|
||||
@@ -82,17 +82,59 @@ jobs:
|
||||
cd frontend
|
||||
npm run lint
|
||||
|
||||
test-frontend:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [lint-frontend]
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "20"
|
||||
cache: "npm"
|
||||
cache-dependency-path: frontend/package-lock.json
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
cd frontend
|
||||
npm ci
|
||||
|
||||
- name: Run frontend tests
|
||||
run: |
|
||||
cd frontend
|
||||
npm run test
|
||||
|
||||
test-backend:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [lint-backend]
|
||||
steps:
|
||||
- name: Free up disk space
|
||||
run: |
|
||||
echo "Disk space before cleanup:"
|
||||
df -h
|
||||
# Remove unnecessary pre-installed software
|
||||
sudo rm -rf /usr/share/dotnet
|
||||
sudo rm -rf /usr/local/lib/android
|
||||
sudo rm -rf /opt/ghc
|
||||
sudo rm -rf /opt/hostedtoolcache/CodeQL
|
||||
sudo rm -rf /usr/local/share/boost
|
||||
sudo rm -rf /usr/share/swift
|
||||
# Clean apt cache
|
||||
sudo apt-get clean
|
||||
# Clean docker images (if any pre-installed)
|
||||
docker system prune -af --volumes || true
|
||||
echo "Disk space after cleanup:"
|
||||
df -h
|
||||
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: "1.23.3"
|
||||
go-version: "1.24.4"
|
||||
|
||||
- name: Cache Go modules
|
||||
uses: actions/cache@v4
|
||||
@@ -127,6 +169,7 @@ jobs:
|
||||
TEST_GOOGLE_DRIVE_CLIENT_SECRET=${{ secrets.TEST_GOOGLE_DRIVE_CLIENT_SECRET }}
|
||||
TEST_GOOGLE_DRIVE_TOKEN_JSON=${{ secrets.TEST_GOOGLE_DRIVE_TOKEN_JSON }}
|
||||
# testing DBs
|
||||
TEST_POSTGRES_12_PORT=5000
|
||||
TEST_POSTGRES_13_PORT=5001
|
||||
TEST_POSTGRES_14_PORT=5002
|
||||
TEST_POSTGRES_15_PORT=5003
|
||||
@@ -136,11 +179,48 @@ jobs:
|
||||
# testing S3
|
||||
TEST_MINIO_PORT=9000
|
||||
TEST_MINIO_CONSOLE_PORT=9001
|
||||
# testing Azure Blob
|
||||
TEST_AZURITE_BLOB_PORT=10000
|
||||
# testing NAS
|
||||
TEST_NAS_PORT=7006
|
||||
# testing FTP
|
||||
TEST_FTP_PORT=7007
|
||||
# testing SFTP
|
||||
TEST_SFTP_PORT=7008
|
||||
# testing MySQL
|
||||
TEST_MYSQL_57_PORT=33057
|
||||
TEST_MYSQL_80_PORT=33080
|
||||
TEST_MYSQL_84_PORT=33084
|
||||
TEST_MYSQL_90_PORT=33090
|
||||
# testing MariaDB
|
||||
TEST_MARIADB_55_PORT=33055
|
||||
TEST_MARIADB_101_PORT=33101
|
||||
TEST_MARIADB_102_PORT=33102
|
||||
TEST_MARIADB_103_PORT=33103
|
||||
TEST_MARIADB_104_PORT=33104
|
||||
TEST_MARIADB_105_PORT=33105
|
||||
TEST_MARIADB_106_PORT=33106
|
||||
TEST_MARIADB_1011_PORT=33111
|
||||
TEST_MARIADB_114_PORT=33114
|
||||
TEST_MARIADB_118_PORT=33118
|
||||
TEST_MARIADB_120_PORT=33120
|
||||
# testing Telegram
|
||||
TEST_TELEGRAM_BOT_TOKEN=${{ secrets.TEST_TELEGRAM_BOT_TOKEN }}
|
||||
TEST_TELEGRAM_CHAT_ID=${{ secrets.TEST_TELEGRAM_CHAT_ID }}
|
||||
# supabase
|
||||
TEST_SUPABASE_HOST=${{ secrets.TEST_SUPABASE_HOST }}
|
||||
TEST_SUPABASE_PORT=${{ secrets.TEST_SUPABASE_PORT }}
|
||||
TEST_SUPABASE_USERNAME=${{ secrets.TEST_SUPABASE_USERNAME }}
|
||||
TEST_SUPABASE_PASSWORD=${{ secrets.TEST_SUPABASE_PASSWORD }}
|
||||
TEST_SUPABASE_DATABASE=${{ secrets.TEST_SUPABASE_DATABASE }}
|
||||
# testing MongoDB
|
||||
TEST_MONGODB_40_PORT=27040
|
||||
TEST_MONGODB_42_PORT=27042
|
||||
TEST_MONGODB_44_PORT=27044
|
||||
TEST_MONGODB_50_PORT=27050
|
||||
TEST_MONGODB_60_PORT=27060
|
||||
TEST_MONGODB_70_PORT=27070
|
||||
TEST_MONGODB_80_PORT=27080
|
||||
EOF
|
||||
|
||||
- name: Start test containers
|
||||
@@ -154,6 +234,7 @@ jobs:
|
||||
timeout 60 bash -c 'until docker exec dev-db pg_isready -h localhost -p 5437 -U postgres; do sleep 2; done'
|
||||
|
||||
# Wait for test databases
|
||||
timeout 60 bash -c 'until nc -z localhost 5000; do sleep 2; done'
|
||||
timeout 60 bash -c 'until nc -z localhost 5001; do sleep 2; done'
|
||||
timeout 60 bash -c 'until nc -z localhost 5002; do sleep 2; done'
|
||||
timeout 60 bash -c 'until nc -z localhost 5003; do sleep 2; done'
|
||||
@@ -163,6 +244,65 @@ jobs:
|
||||
# Wait for MinIO
|
||||
timeout 60 bash -c 'until nc -z localhost 9000; do sleep 2; done'
|
||||
|
||||
# Wait for Azurite
|
||||
timeout 60 bash -c 'until nc -z localhost 10000; do sleep 2; done'
|
||||
|
||||
# Wait for FTP
|
||||
timeout 60 bash -c 'until nc -z localhost 7007; do sleep 2; done'
|
||||
|
||||
# Wait for SFTP
|
||||
timeout 60 bash -c 'until nc -z localhost 7008; do sleep 2; done'
|
||||
|
||||
# Wait for MySQL containers
|
||||
echo "Waiting for MySQL 5.7..."
|
||||
timeout 120 bash -c 'until docker exec test-mysql-57 mysqladmin ping -h localhost -u root -prootpassword --silent 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MySQL 8.0..."
|
||||
timeout 120 bash -c 'until docker exec test-mysql-80 mysqladmin ping -h localhost -u root -prootpassword --silent 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MySQL 8.4..."
|
||||
timeout 120 bash -c 'until docker exec test-mysql-84 mysqladmin ping -h localhost -u root -prootpassword --silent 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MySQL 9.0..."
|
||||
timeout 120 bash -c 'until docker exec test-mysql-90 mysqladmin ping -h localhost -u root -prootpassword --silent 2>/dev/null; do sleep 2; done'
|
||||
|
||||
# Wait for MariaDB containers
|
||||
echo "Waiting for MariaDB 5.5..."
|
||||
timeout 120 bash -c 'until docker exec test-mariadb-55 mysqladmin ping -h localhost -prootpassword --silent 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MariaDB 10.1..."
|
||||
timeout 120 bash -c 'until docker exec test-mariadb-101 mysqladmin ping -h localhost -prootpassword --silent 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MariaDB 10.2..."
|
||||
timeout 120 bash -c 'until docker exec test-mariadb-102 mysqladmin ping -h localhost -prootpassword --silent 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MariaDB 10.3..."
|
||||
timeout 120 bash -c 'until docker exec test-mariadb-103 mysqladmin ping -h localhost -prootpassword --silent 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MariaDB 10.4..."
|
||||
timeout 120 bash -c 'until docker exec test-mariadb-104 healthcheck.sh --connect --innodb_initialized 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MariaDB 10.5..."
|
||||
timeout 120 bash -c 'until docker exec test-mariadb-105 healthcheck.sh --connect --innodb_initialized 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MariaDB 10.6..."
|
||||
timeout 120 bash -c 'until docker exec test-mariadb-106 healthcheck.sh --connect --innodb_initialized 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MariaDB 10.11..."
|
||||
timeout 120 bash -c 'until docker exec test-mariadb-1011 healthcheck.sh --connect --innodb_initialized 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MariaDB 11.4..."
|
||||
timeout 120 bash -c 'until docker exec test-mariadb-114 healthcheck.sh --connect --innodb_initialized 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MariaDB 11.8..."
|
||||
timeout 120 bash -c 'until docker exec test-mariadb-118 healthcheck.sh --connect --innodb_initialized 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MariaDB 12.0..."
|
||||
timeout 120 bash -c 'until docker exec test-mariadb-120 healthcheck.sh --connect --innodb_initialized 2>/dev/null; do sleep 2; done'
|
||||
|
||||
# Wait for MongoDB containers
|
||||
echo "Waiting for MongoDB 4.0..."
|
||||
timeout 120 bash -c 'until docker exec test-mongodb-40 mongo --eval "db.adminCommand(\"ping\")" -u root -p rootpassword --authenticationDatabase admin 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MongoDB 4.2..."
|
||||
timeout 120 bash -c 'until docker exec test-mongodb-42 mongo --eval "db.adminCommand(\"ping\")" -u root -p rootpassword --authenticationDatabase admin 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MongoDB 4.4..."
|
||||
timeout 120 bash -c 'until docker exec test-mongodb-44 mongo --eval "db.adminCommand(\"ping\")" -u root -p rootpassword --authenticationDatabase admin 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MongoDB 5.0..."
|
||||
timeout 120 bash -c 'until docker exec test-mongodb-50 mongosh --eval "db.adminCommand(\"ping\")" -u root -p rootpassword --authenticationDatabase admin 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MongoDB 6.0..."
|
||||
timeout 120 bash -c 'until docker exec test-mongodb-60 mongosh --eval "db.adminCommand(\"ping\")" -u root -p rootpassword --authenticationDatabase admin 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MongoDB 7.0..."
|
||||
timeout 120 bash -c 'until docker exec test-mongodb-70 mongosh --eval "db.adminCommand(\"ping\")" -u root -p rootpassword --authenticationDatabase admin 2>/dev/null; do sleep 2; done'
|
||||
echo "Waiting for MongoDB 8.0..."
|
||||
timeout 120 bash -c 'until docker exec test-mongodb-80 mongosh --eval "db.adminCommand(\"ping\")" -u root -p rootpassword --authenticationDatabase admin 2>/dev/null; do sleep 2; done'
|
||||
|
||||
- name: Create data and temp directories
|
||||
run: |
|
||||
# Create directories that are used for backups and restore
|
||||
@@ -170,12 +310,96 @@ jobs:
|
||||
mkdir -p postgresus-data/backups
|
||||
mkdir -p postgresus-data/temp
|
||||
|
||||
- name: Install PostgreSQL client tools
|
||||
- name: Cache PostgreSQL client tools
|
||||
id: cache-postgres
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: /usr/lib/postgresql
|
||||
key: postgres-clients-12-18-v1
|
||||
|
||||
- name: Cache MySQL client tools
|
||||
id: cache-mysql
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: backend/tools/mysql
|
||||
key: mysql-clients-57-80-84-9-v1
|
||||
|
||||
- name: Cache MariaDB client tools
|
||||
id: cache-mariadb
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: backend/tools/mariadb
|
||||
key: mariadb-clients-106-121-v1
|
||||
|
||||
- name: Cache MongoDB Database Tools
|
||||
id: cache-mongodb
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: backend/tools/mongodb
|
||||
key: mongodb-database-tools-100.10.0-v1
|
||||
|
||||
- name: Install MySQL dependencies
|
||||
run: |
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get install -y -qq libncurses6
|
||||
sudo ln -sf /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5
|
||||
sudo ln -sf /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5
|
||||
|
||||
- name: Install PostgreSQL, MySQL, MariaDB and MongoDB client tools
|
||||
if: steps.cache-postgres.outputs.cache-hit != 'true' || steps.cache-mysql.outputs.cache-hit != 'true' || steps.cache-mariadb.outputs.cache-hit != 'true' || steps.cache-mongodb.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
chmod +x backend/tools/download_linux.sh
|
||||
cd backend/tools
|
||||
./download_linux.sh
|
||||
|
||||
- name: Setup PostgreSQL symlinks (when using cache)
|
||||
if: steps.cache-postgres.outputs.cache-hit == 'true'
|
||||
run: |
|
||||
cd backend/tools
|
||||
mkdir -p postgresql
|
||||
for version in 12 13 14 15 16 17 18; do
|
||||
version_dir="postgresql/postgresql-$version"
|
||||
mkdir -p "$version_dir/bin"
|
||||
pg_bin_dir="/usr/lib/postgresql/$version/bin"
|
||||
if [ -d "$pg_bin_dir" ]; then
|
||||
ln -sf "$pg_bin_dir/pg_dump" "$version_dir/bin/pg_dump"
|
||||
ln -sf "$pg_bin_dir/pg_dumpall" "$version_dir/bin/pg_dumpall"
|
||||
ln -sf "$pg_bin_dir/psql" "$version_dir/bin/psql"
|
||||
ln -sf "$pg_bin_dir/pg_restore" "$version_dir/bin/pg_restore"
|
||||
ln -sf "$pg_bin_dir/createdb" "$version_dir/bin/createdb"
|
||||
ln -sf "$pg_bin_dir/dropdb" "$version_dir/bin/dropdb"
|
||||
fi
|
||||
done
|
||||
|
||||
- name: Verify MariaDB client tools exist
|
||||
run: |
|
||||
cd backend/tools
|
||||
echo "Checking MariaDB client tools..."
|
||||
if [ -f "mariadb/mariadb-10.6/bin/mariadb-dump" ]; then
|
||||
echo "MariaDB 10.6 client tools found"
|
||||
ls -la mariadb/mariadb-10.6/bin/
|
||||
else
|
||||
echo "MariaDB 10.6 client tools NOT found"
|
||||
fi
|
||||
if [ -f "mariadb/mariadb-12.1/bin/mariadb-dump" ]; then
|
||||
echo "MariaDB 12.1 client tools found"
|
||||
ls -la mariadb/mariadb-12.1/bin/
|
||||
else
|
||||
echo "MariaDB 12.1 client tools NOT found"
|
||||
fi
|
||||
|
||||
- name: Verify MongoDB Database Tools exist
|
||||
run: |
|
||||
cd backend/tools
|
||||
echo "Checking MongoDB Database Tools..."
|
||||
if [ -f "mongodb/bin/mongodump" ]; then
|
||||
echo "MongoDB Database Tools found"
|
||||
ls -la mongodb/bin/
|
||||
mongodb/bin/mongodump --version || true
|
||||
else
|
||||
echo "MongoDB Database Tools NOT found"
|
||||
fi
|
||||
|
||||
- name: Run database migrations
|
||||
run: |
|
||||
cd backend
|
||||
@@ -185,7 +409,7 @@ jobs:
|
||||
- name: Run Go tests
|
||||
run: |
|
||||
cd backend
|
||||
go test -p=1 -count=1 -failfast ./internal/...
|
||||
go test -p=1 -count=1 -failfast -timeout 10m ./internal/...
|
||||
|
||||
- name: Stop test containers
|
||||
if: always()
|
||||
@@ -195,7 +419,7 @@ jobs:
|
||||
|
||||
determine-version:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [test-backend, lint-frontend]
|
||||
needs: [test-backend, test-frontend]
|
||||
if: ${{ github.ref == 'refs/heads/main' && !contains(github.event.head_commit.message, '[skip-release]') }}
|
||||
outputs:
|
||||
should_release: ${{ steps.version_bump.outputs.should_release }}
|
||||
@@ -288,7 +512,7 @@ jobs:
|
||||
|
||||
build-only:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [test-backend, lint-frontend]
|
||||
needs: [test-backend, test-frontend]
|
||||
if: ${{ github.ref == 'refs/heads/main' && contains(github.event.head_commit.message, '[skip-release]') }}
|
||||
steps:
|
||||
- name: Check out code
|
||||
@@ -448,6 +672,17 @@ jobs:
|
||||
echo EOF
|
||||
} >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Update CITATION.cff version
|
||||
run: |
|
||||
VERSION="${{ needs.determine-version.outputs.new_version }}"
|
||||
sed -i "s/^version: .*/version: ${VERSION}/" CITATION.cff
|
||||
sed -i "s/^date-released: .*/date-released: \"$(date +%Y-%m-%d)\"/" CITATION.cff
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||
git add CITATION.cff
|
||||
git commit -m "Update CITATION.cff to v${VERSION}" || true
|
||||
git push || true
|
||||
|
||||
- name: Create GitHub Release
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
@@ -458,3 +693,37 @@ jobs:
|
||||
body: ${{ steps.changelog.outputs.changelog }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
|
||||
publish-helm-chart:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [determine-version, build-and-push]
|
||||
if: ${{ needs.determine-version.outputs.should_release == 'true' }}
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@v4
|
||||
with:
|
||||
version: v3.14.0
|
||||
|
||||
- name: Log in to GHCR
|
||||
run: echo "${{ secrets.GITHUB_TOKEN }}" | helm registry login ghcr.io -u ${{ github.actor }} --password-stdin
|
||||
|
||||
- name: Update Chart.yaml with release version
|
||||
run: |
|
||||
VERSION="${{ needs.determine-version.outputs.new_version }}"
|
||||
sed -i "s/^version: .*/version: ${VERSION}/" deploy/helm/Chart.yaml
|
||||
sed -i "s/^appVersion: .*/appVersion: \"v${VERSION}\"/" deploy/helm/Chart.yaml
|
||||
cat deploy/helm/Chart.yaml
|
||||
|
||||
- name: Package Helm chart
|
||||
run: helm package deploy/helm --destination .
|
||||
|
||||
- name: Push Helm chart to GHCR
|
||||
run: |
|
||||
VERSION="${{ needs.determine-version.outputs.new_version }}"
|
||||
helm push postgresus-${VERSION}.tgz oci://ghcr.io/rostislavdugin/charts
|
||||
|
||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -4,4 +4,8 @@ postgresus-data/
|
||||
pgdata/
|
||||
docker-compose.yml
|
||||
node_modules/
|
||||
.idea
|
||||
.idea
|
||||
/articles
|
||||
|
||||
.DS_Store
|
||||
/scripts
|
||||
33
CITATION.cff
Normal file
33
CITATION.cff
Normal file
@@ -0,0 +1,33 @@
|
||||
cff-version: 1.2.0
|
||||
title: Postgresus
|
||||
message: "If you use this software, please cite it as below."
|
||||
type: software
|
||||
authors:
|
||||
- family-names: Dugin
|
||||
given-names: Rostislav
|
||||
repository-code: https://github.com/RostislavDugin/postgresus
|
||||
url: https://postgresus.com
|
||||
abstract: "Free, open source and self-hosted solution for automated PostgreSQL backups with multiple storage options and notifications."
|
||||
keywords:
|
||||
- docker
|
||||
- kubernetes
|
||||
- golang
|
||||
- backups
|
||||
- postgres
|
||||
- devops
|
||||
- backup
|
||||
- database
|
||||
- tools
|
||||
- monitoring
|
||||
- ftp
|
||||
- postgresql
|
||||
- s3
|
||||
- psql
|
||||
- web-ui
|
||||
- self-hosted
|
||||
- pg
|
||||
- system-administration
|
||||
- database-backup
|
||||
license: Apache-2.0
|
||||
version: 2.14.0
|
||||
date-released: "2025-12-22"
|
||||
113
Dockerfile
113
Dockerfile
@@ -22,7 +22,7 @@ RUN npm run build
|
||||
|
||||
# ========= BUILD BACKEND =========
|
||||
# Backend build stage
|
||||
FROM --platform=$BUILDPLATFORM golang:1.23.3 AS backend-build
|
||||
FROM --platform=$BUILDPLATFORM golang:1.24.4 AS backend-build
|
||||
|
||||
# Make TARGET args available early so tools built here match the final image arch
|
||||
ARG TARGETOS
|
||||
@@ -77,18 +77,115 @@ ENV APP_VERSION=$APP_VERSION
|
||||
# Set production mode for Docker containers
|
||||
ENV ENV_MODE=production
|
||||
|
||||
# Install PostgreSQL server and client tools (versions 13-17)
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
wget ca-certificates gnupg lsb-release sudo gosu && \
|
||||
wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \
|
||||
# ========= STEP 1: Install base packages =========
|
||||
RUN apt-get update
|
||||
RUN apt-get install -y --no-install-recommends \
|
||||
wget ca-certificates gnupg lsb-release sudo gosu curl unzip xz-utils libncurses5 libncurses6
|
||||
RUN rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# ========= Install PostgreSQL client binaries (versions 12-18) =========
|
||||
# Pre-downloaded binaries from assets/tools/ - no network download needed
|
||||
ARG TARGETARCH
|
||||
RUN mkdir -p /usr/lib/postgresql/12/bin /usr/lib/postgresql/13/bin \
|
||||
/usr/lib/postgresql/14/bin /usr/lib/postgresql/15/bin \
|
||||
/usr/lib/postgresql/16/bin /usr/lib/postgresql/17/bin \
|
||||
/usr/lib/postgresql/18/bin
|
||||
|
||||
# Copy pre-downloaded PostgreSQL binaries based on architecture
|
||||
COPY assets/tools/x64/postgresql/ /tmp/pg-x64/
|
||||
COPY assets/tools/arm/postgresql/ /tmp/pg-arm/
|
||||
RUN if [ "$TARGETARCH" = "amd64" ]; then \
|
||||
cp -r /tmp/pg-x64/postgresql-12/bin/* /usr/lib/postgresql/12/bin/ && \
|
||||
cp -r /tmp/pg-x64/postgresql-13/bin/* /usr/lib/postgresql/13/bin/ && \
|
||||
cp -r /tmp/pg-x64/postgresql-14/bin/* /usr/lib/postgresql/14/bin/ && \
|
||||
cp -r /tmp/pg-x64/postgresql-15/bin/* /usr/lib/postgresql/15/bin/ && \
|
||||
cp -r /tmp/pg-x64/postgresql-16/bin/* /usr/lib/postgresql/16/bin/ && \
|
||||
cp -r /tmp/pg-x64/postgresql-17/bin/* /usr/lib/postgresql/17/bin/ && \
|
||||
cp -r /tmp/pg-x64/postgresql-18/bin/* /usr/lib/postgresql/18/bin/; \
|
||||
elif [ "$TARGETARCH" = "arm64" ]; then \
|
||||
cp -r /tmp/pg-arm/postgresql-12/bin/* /usr/lib/postgresql/12/bin/ && \
|
||||
cp -r /tmp/pg-arm/postgresql-13/bin/* /usr/lib/postgresql/13/bin/ && \
|
||||
cp -r /tmp/pg-arm/postgresql-14/bin/* /usr/lib/postgresql/14/bin/ && \
|
||||
cp -r /tmp/pg-arm/postgresql-15/bin/* /usr/lib/postgresql/15/bin/ && \
|
||||
cp -r /tmp/pg-arm/postgresql-16/bin/* /usr/lib/postgresql/16/bin/ && \
|
||||
cp -r /tmp/pg-arm/postgresql-17/bin/* /usr/lib/postgresql/17/bin/ && \
|
||||
cp -r /tmp/pg-arm/postgresql-18/bin/* /usr/lib/postgresql/18/bin/; \
|
||||
fi && \
|
||||
rm -rf /tmp/pg-x64 /tmp/pg-arm && \
|
||||
chmod +x /usr/lib/postgresql/*/bin/*
|
||||
|
||||
# Install PostgreSQL 17 server (needed for internal database)
|
||||
# Add PostgreSQL repository for server installation only
|
||||
RUN wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \
|
||||
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" \
|
||||
> /etc/apt/sources.list.d/pgdg.list && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
postgresql-17 postgresql-18 postgresql-client-13 postgresql-client-14 postgresql-client-15 \
|
||||
postgresql-client-16 postgresql-client-17 postgresql-client-18 && \
|
||||
apt-get install -y --no-install-recommends postgresql-17 && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# ========= Install rclone =========
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends rclone && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Create directories for all database clients
|
||||
RUN mkdir -p /usr/local/mysql-5.7/bin /usr/local/mysql-8.0/bin /usr/local/mysql-8.4/bin \
|
||||
/usr/local/mysql-9/bin \
|
||||
/usr/local/mariadb-10.6/bin /usr/local/mariadb-12.1/bin \
|
||||
/usr/local/mongodb-database-tools/bin
|
||||
|
||||
# ========= Install MySQL clients (5.7, 8.0, 8.4, 9) =========
|
||||
# Pre-downloaded binaries from assets/tools/ - no network download needed
|
||||
# Note: MySQL 5.7 is only available for x86_64
|
||||
# Note: MySQL binaries require libncurses5 for terminal handling
|
||||
COPY assets/tools/x64/mysql/ /tmp/mysql-x64/
|
||||
COPY assets/tools/arm/mysql/ /tmp/mysql-arm/
|
||||
RUN if [ "$TARGETARCH" = "amd64" ]; then \
|
||||
cp /tmp/mysql-x64/mysql-5.7/bin/* /usr/local/mysql-5.7/bin/ && \
|
||||
cp /tmp/mysql-x64/mysql-8.0/bin/* /usr/local/mysql-8.0/bin/ && \
|
||||
cp /tmp/mysql-x64/mysql-8.4/bin/* /usr/local/mysql-8.4/bin/ && \
|
||||
cp /tmp/mysql-x64/mysql-9/bin/* /usr/local/mysql-9/bin/; \
|
||||
elif [ "$TARGETARCH" = "arm64" ]; then \
|
||||
echo "MySQL 5.7 not available for arm64, skipping..." && \
|
||||
cp /tmp/mysql-arm/mysql-8.0/bin/* /usr/local/mysql-8.0/bin/ && \
|
||||
cp /tmp/mysql-arm/mysql-8.4/bin/* /usr/local/mysql-8.4/bin/ && \
|
||||
cp /tmp/mysql-arm/mysql-9/bin/* /usr/local/mysql-9/bin/; \
|
||||
fi && \
|
||||
rm -rf /tmp/mysql-x64 /tmp/mysql-arm && \
|
||||
chmod +x /usr/local/mysql-*/bin/*
|
||||
|
||||
# ========= Install MariaDB clients (10.6, 12.1) =========
|
||||
# Pre-downloaded binaries from assets/tools/ - no network download needed
|
||||
# 10.6 (legacy): For older servers (5.5, 10.1) that don't have generation_expression column
|
||||
# 12.1 (modern): For newer servers (10.2+)
|
||||
COPY assets/tools/x64/mariadb/ /tmp/mariadb-x64/
|
||||
COPY assets/tools/arm/mariadb/ /tmp/mariadb-arm/
|
||||
RUN if [ "$TARGETARCH" = "amd64" ]; then \
|
||||
cp /tmp/mariadb-x64/mariadb-10.6/bin/* /usr/local/mariadb-10.6/bin/ && \
|
||||
cp /tmp/mariadb-x64/mariadb-12.1/bin/* /usr/local/mariadb-12.1/bin/; \
|
||||
elif [ "$TARGETARCH" = "arm64" ]; then \
|
||||
cp /tmp/mariadb-arm/mariadb-10.6/bin/* /usr/local/mariadb-10.6/bin/ && \
|
||||
cp /tmp/mariadb-arm/mariadb-12.1/bin/* /usr/local/mariadb-12.1/bin/; \
|
||||
fi && \
|
||||
rm -rf /tmp/mariadb-x64 /tmp/mariadb-arm && \
|
||||
chmod +x /usr/local/mariadb-*/bin/*
|
||||
|
||||
# ========= Install MongoDB Database Tools =========
|
||||
# Note: MongoDB Database Tools are backward compatible - single version supports all server versions (4.0-8.0)
|
||||
# Use dpkg with apt-get -f install to handle dependencies
|
||||
RUN apt-get update && \
|
||||
if [ "$TARGETARCH" = "amd64" ]; then \
|
||||
wget -q https://fastdl.mongodb.org/tools/db/mongodb-database-tools-debian12-x86_64-100.10.0.deb -O /tmp/mongodb-database-tools.deb; \
|
||||
elif [ "$TARGETARCH" = "arm64" ]; then \
|
||||
wget -q https://fastdl.mongodb.org/tools/db/mongodb-database-tools-debian12-aarch64-100.10.0.deb -O /tmp/mongodb-database-tools.deb; \
|
||||
fi && \
|
||||
dpkg -i /tmp/mongodb-database-tools.deb || true && \
|
||||
apt-get install -f -y --no-install-recommends && \
|
||||
rm /tmp/mongodb-database-tools.deb && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
ln -sf /usr/bin/mongodump /usr/local/mongodb-database-tools/bin/mongodump && \
|
||||
ln -sf /usr/bin/mongorestore /usr/local/mongodb-database-tools/bin/mongorestore
|
||||
|
||||
# Create postgres user and set up directories
|
||||
RUN useradd -m -s /bin/bash postgres || true && \
|
||||
mkdir -p /postgresus-data/pgdata && \
|
||||
|
||||
122
README.md
122
README.md
@@ -1,15 +1,15 @@
|
||||
<div align="center">
|
||||
<img src="assets/logo.svg" style="margin-bottom: 20px;" alt="Postgresus Logo" width="250"/>
|
||||
|
||||
<h3>PostgreSQL backup</h3>
|
||||
<p>Free, open source and self-hosted solution for automated PostgreSQL backups. With multiple storage options and notifications</p>
|
||||
<h3>PostgreSQL Backup</h3>
|
||||
<p>A free, open source and self-hosted solution for automated PostgreSQL backups with multiple storage options and notifications.</p>
|
||||
|
||||
<!-- Badges -->
|
||||
[](LICENSE)
|
||||
[](https://hub.docker.com/r/rostislavdugin/postgresus)
|
||||
[](https://github.com/RostislavDugin/postgresus)
|
||||
|
||||
[](https://www.postgresql.org/)
|
||||
[](https://www.postgresql.org/)
|
||||
[](https://github.com/RostislavDugin/postgresus)
|
||||
[](https://github.com/RostislavDugin/postgresus)
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
<a href="https://postgresus.com" target="_blank"><strong>🌐 Postgresus website</strong></a>
|
||||
</p>
|
||||
|
||||
<img src="assets/dashboard-dark.svg" alt="Postgresus Dark Dashboard" width="800" style="margin-bottom: 10px;"/>
|
||||
|
||||
<img src="assets/dashboard.svg" alt="Postgresus Dashboard" width="800"/>
|
||||
|
||||
|
||||
@@ -34,43 +36,73 @@
|
||||
|
||||
## ✨ Features
|
||||
|
||||
### 🔄 **Scheduled Backups**
|
||||
### 🔄 **Scheduled backups**
|
||||
|
||||
- **Flexible scheduling**: hourly, daily, weekly, monthly
|
||||
- **Flexible scheduling**: hourly, daily, weekly, monthly or cron
|
||||
- **Precise timing**: run backups at specific times (e.g., 4 AM during low traffic)
|
||||
- **Smart compression**: 4-8x space savings with balanced compression (~20% overhead)
|
||||
|
||||
### 🗄️ **Multiple Storage Destinations**
|
||||
### 🗄️ **Multiple storage destinations** <a href="https://postgresus.com/storages">(view supported)</a>
|
||||
|
||||
- **Local storage**: Keep backups on your VPS/server
|
||||
- **Cloud storage**: S3, Cloudflare R2, Google Drive, NAS, Dropbox and more
|
||||
- **Cloud storage**: S3, Cloudflare R2, Google Drive, NAS, Dropbox, SFTP, Rclone and more
|
||||
- **Secure**: All data stays under your control
|
||||
|
||||
### 📱 **Smart Notifications**
|
||||
### 📱 **Smart notifications** <a href="https://postgresus.com/notifiers">(view supported)</a>
|
||||
|
||||
- **Multiple channels**: Email, Telegram, Slack, Discord, webhooks
|
||||
- **Real-time updates**: Success and failure notifications
|
||||
- **Team integration**: Perfect for DevOps workflows
|
||||
|
||||
### 🐘 **PostgreSQL Support**
|
||||
### 🐘 **PostgreSQL support**
|
||||
|
||||
- **Multiple versions**: PostgreSQL 13, 14, 15, 16, 17 and 18
|
||||
- **Multiple versions**: PostgreSQL 12, 13, 14, 15, 16, 17 and 18
|
||||
- **SSL support**: Secure connections available
|
||||
- **Easy restoration**: One-click restore from any backup
|
||||
|
||||
### 🐳 **Self-Hosted & Secure**
|
||||
### 🔒 **Enterprise-grade security** <a href="https://postgresus.com/security">(docs)</a>
|
||||
|
||||
- **AES-256-GCM encryption**: Enterprise-grade protection for backup files
|
||||
- **Zero-trust storage**: Backups are encrypted and remain useless to attackers, so you can safely store them in shared storage like S3, Azure Blob Storage, etc.
|
||||
- **Encryption for secrets**: Any sensitive data is encrypted and never exposed, even in logs or error messages
|
||||
- **Read-only user**: Postgresus uses a read-only user by default for backups and never stores anything that can modify your data
|
||||
|
||||
### 👥 **Suitable for teams** <a href="https://postgresus.com/access-management">(docs)</a>
|
||||
|
||||
- **Workspaces**: Group databases, notifiers and storages for different projects or teams
|
||||
- **Access management**: Control who can view or manage specific databases with role-based permissions
|
||||
- **Audit logs**: Track all system activities and changes made by users
|
||||
- **User roles**: Assign viewer, member, admin or owner roles within workspaces
|
||||
|
||||
### 🎨 **UX-Friendly**
|
||||
|
||||
- **Designer-polished UI**: Clean, intuitive interface crafted with attention to detail
|
||||
- **Dark & light themes**: Choose the look that suits your workflow
|
||||
- **Mobile adaptive**: Check your backups from anywhere on any device
|
||||
|
||||
### ☁️ **Works with self-hosted & cloud databases**
|
||||
|
||||
Postgresus works seamlessly with both self-hosted PostgreSQL and cloud-managed databases:
|
||||
|
||||
- **Cloud support**: AWS RDS, Google Cloud SQL, Azure Database for PostgreSQL
|
||||
- **Self-hosted**: Any PostgreSQL instance you manage yourself
|
||||
- **Why no PITR support?**: Cloud providers already offer native PITR, and external PITR backups cannot be restored to managed cloud databases — making them impractical for cloud-hosted PostgreSQL
|
||||
- **Practical granularity**: Hourly and daily backups are sufficient for 99% of projects without the operational complexity of WAL archiving
|
||||
|
||||
### 🐳 **Self-hosted & secure**
|
||||
|
||||
- **Docker-based**: Easy deployment and management
|
||||
- **Privacy-first**: All your data stays on your infrastructure
|
||||
- **Open source**: Apache 2.0 licensed, inspect every line of code
|
||||
|
||||
### 📦 Installation
|
||||
### 📦 Installation <a href="https://postgresus.com/installation">(docs)</a>
|
||||
|
||||
You have three ways to install Postgresus:
|
||||
You have four ways to install Postgresus:
|
||||
|
||||
- Script (recommended)
|
||||
- Automated script (recommended)
|
||||
- Simple Docker run
|
||||
- Docker Compose setup
|
||||
- Kubernetes with Helm
|
||||
|
||||
<img src="assets/healthchecks.svg" alt="Postgresus Dashboard" width="800"/>
|
||||
|
||||
@@ -80,11 +112,11 @@ You have three ways to install Postgresus:
|
||||
|
||||
You have three ways to install Postgresus: automated script (recommended), simple Docker run, or Docker Compose setup.
|
||||
|
||||
### Option 1: Automated Installation Script (Recommended, Linux only)
|
||||
### Option 1: Automated installation script (recommended, Linux only)
|
||||
|
||||
The installation script will:
|
||||
|
||||
- ✅ Install Docker with Docker Compose(if not already installed)
|
||||
- ✅ Install Docker with Docker Compose (if not already installed)
|
||||
- ✅ Set up Postgresus
|
||||
- ✅ Configure automatic startup on system reboot
|
||||
|
||||
@@ -94,7 +126,7 @@ sudo curl -sSL https://raw.githubusercontent.com/RostislavDugin/postgresus/refs/
|
||||
| sudo bash
|
||||
```
|
||||
|
||||
### Option 2: Simple Docker Run
|
||||
### Option 2: Simple Docker run
|
||||
|
||||
The easiest way to run Postgresus with embedded PostgreSQL:
|
||||
|
||||
@@ -113,13 +145,11 @@ This single command will:
|
||||
- ✅ Store all data in `./postgresus-data` directory
|
||||
- ✅ Automatically restart on system reboot
|
||||
|
||||
### Option 3: Docker Compose Setup
|
||||
### Option 3: Docker Compose setup
|
||||
|
||||
Create a `docker-compose.yml` file with the following configuration:
|
||||
|
||||
```yaml
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
postgresus:
|
||||
container_name: postgresus
|
||||
@@ -137,21 +167,61 @@ Then run:
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### Option 4: Kubernetes with Helm
|
||||
|
||||
For Kubernetes deployments, install directly from the OCI registry.
|
||||
|
||||
**With ClusterIP + port-forward (development/testing):**
|
||||
|
||||
```bash
|
||||
helm install postgresus oci://ghcr.io/rostislavdugin/charts/postgresus \
|
||||
-n postgresus --create-namespace
|
||||
```
|
||||
|
||||
```bash
|
||||
kubectl port-forward svc/postgresus-service 4005:4005 -n postgresus
|
||||
# Access at http://localhost:4005
|
||||
```
|
||||
|
||||
**With LoadBalancer (cloud environments):**
|
||||
|
||||
```bash
|
||||
helm install postgresus oci://ghcr.io/rostislavdugin/charts/postgresus \
|
||||
-n postgresus --create-namespace \
|
||||
--set service.type=LoadBalancer
|
||||
```
|
||||
|
||||
```bash
|
||||
kubectl get svc postgresus-service -n postgresus
|
||||
# Access at http://<EXTERNAL-IP>:4005
|
||||
```
|
||||
|
||||
**With Ingress (domain-based access):**
|
||||
|
||||
```bash
|
||||
helm install postgresus oci://ghcr.io/rostislavdugin/charts/postgresus \
|
||||
-n postgresus --create-namespace \
|
||||
--set ingress.enabled=true \
|
||||
--set ingress.hosts[0].host=backup.example.com
|
||||
```
|
||||
|
||||
For more options (NodePort, TLS, HTTPRoute for Gateway API), see the [Helm chart README](deploy/helm/README.md).
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Usage
|
||||
|
||||
1. **Access the dashboard**: Navigate to `http://localhost:4005`
|
||||
2. **Add first DB for backup**: Click "New Database" and follow the setup wizard
|
||||
3. **Configure schedule**: Choose from hourly, daily, weekly or monthly intervals
|
||||
2. **Add your first database for backup**: Click "New Database" and follow the setup wizard
|
||||
3. **Configure schedule**: Choose from hourly, daily, weekly, monthly or cron intervals
|
||||
4. **Set database connection**: Enter your PostgreSQL credentials and connection details
|
||||
5. **Choose storage**: Select where to store your backups (local, S3, Google Drive, etc.)
|
||||
6. **Add notifications** (optional): Configure email, Telegram, Slack, or webhook notifications
|
||||
7. **Save and start**: Postgresus will validate settings and begin the backup schedule
|
||||
|
||||
### 🔑 Resetting Admin Password
|
||||
### 🔑 Resetting password <a href="https://postgresus.com/password">(docs)</a>
|
||||
|
||||
If you need to reset the admin password, you can use the built-in password reset command:
|
||||
If you need to reset the password, you can use the built-in password reset command:
|
||||
|
||||
```bash
|
||||
docker exec -it postgresus ./main --new-password="YourNewSecurePassword123" --email="admin"
|
||||
@@ -163,10 +233,10 @@ Replace `admin` with the actual email address of the user whose password you wan
|
||||
|
||||
## 📝 License
|
||||
|
||||
This project is licensed under the Apache 2.0 License - see the [LICENSE](LICENSE) file for details.
|
||||
This project is licensed under the Apache 2.0 License - see the [LICENSE](LICENSE) file for details
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
Contributions are welcome! Read [contributing guide](contribute/README.md) for more details, prioerities and rules are specified there. If you want to contribute, but don't know what and how - message me on Telegram [@rostislav_dugin](https://t.me/rostislav_dugin)
|
||||
Contributions are welcome! Read the <a href="https://postgresus.com/contribute">contributing guide</a> for more details, priorities and rules. If you want to contribute but don't know where to start, message me on Telegram [@rostislav_dugin](https://t.me/rostislav_dugin)
|
||||
|
||||
764
assets/dashboard-dark.svg
Normal file
764
assets/dashboard-dark.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 766 KiB |
1563
assets/dashboard.svg
1563
assets/dashboard.svg
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 791 KiB After Width: | Height: | Size: 771 KiB |
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
BIN
assets/tools/arm/mariadb/mariadb-10.6/bin/mariadb
Normal file
BIN
assets/tools/arm/mariadb/mariadb-10.6/bin/mariadb
Normal file
Binary file not shown.
BIN
assets/tools/arm/mariadb/mariadb-10.6/bin/mariadb-dump
Normal file
BIN
assets/tools/arm/mariadb/mariadb-10.6/bin/mariadb-dump
Normal file
Binary file not shown.
BIN
assets/tools/arm/mariadb/mariadb-12.1/bin/mariadb
Normal file
BIN
assets/tools/arm/mariadb/mariadb-12.1/bin/mariadb
Normal file
Binary file not shown.
BIN
assets/tools/arm/mariadb/mariadb-12.1/bin/mariadb-dump
Normal file
BIN
assets/tools/arm/mariadb/mariadb-12.1/bin/mariadb-dump
Normal file
Binary file not shown.
BIN
assets/tools/arm/mysql/mysql-8.0/bin/mysql
Normal file
BIN
assets/tools/arm/mysql/mysql-8.0/bin/mysql
Normal file
Binary file not shown.
BIN
assets/tools/arm/mysql/mysql-8.0/bin/mysqldump
Normal file
BIN
assets/tools/arm/mysql/mysql-8.0/bin/mysqldump
Normal file
Binary file not shown.
BIN
assets/tools/arm/mysql/mysql-8.4/bin/mysql
Normal file
BIN
assets/tools/arm/mysql/mysql-8.4/bin/mysql
Normal file
Binary file not shown.
BIN
assets/tools/arm/mysql/mysql-8.4/bin/mysqldump
Normal file
BIN
assets/tools/arm/mysql/mysql-8.4/bin/mysqldump
Normal file
Binary file not shown.
BIN
assets/tools/arm/mysql/mysql-9/bin/mysql
Normal file
BIN
assets/tools/arm/mysql/mysql-9/bin/mysql
Normal file
Binary file not shown.
BIN
assets/tools/arm/mysql/mysql-9/bin/mysqldump
Normal file
BIN
assets/tools/arm/mysql/mysql-9/bin/mysqldump
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-12/bin/createdb
Normal file
BIN
assets/tools/arm/postgresql/postgresql-12/bin/createdb
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-12/bin/dropdb
Normal file
BIN
assets/tools/arm/postgresql/postgresql-12/bin/dropdb
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-12/bin/pg_dump
Normal file
BIN
assets/tools/arm/postgresql/postgresql-12/bin/pg_dump
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-12/bin/pg_dumpall
Normal file
BIN
assets/tools/arm/postgresql/postgresql-12/bin/pg_dumpall
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-12/bin/pg_restore
Normal file
BIN
assets/tools/arm/postgresql/postgresql-12/bin/pg_restore
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-12/bin/psql
Normal file
BIN
assets/tools/arm/postgresql/postgresql-12/bin/psql
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-13/bin/createdb
Normal file
BIN
assets/tools/arm/postgresql/postgresql-13/bin/createdb
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-13/bin/dropdb
Normal file
BIN
assets/tools/arm/postgresql/postgresql-13/bin/dropdb
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-13/bin/pg_dump
Normal file
BIN
assets/tools/arm/postgresql/postgresql-13/bin/pg_dump
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-13/bin/pg_dumpall
Normal file
BIN
assets/tools/arm/postgresql/postgresql-13/bin/pg_dumpall
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-13/bin/pg_restore
Normal file
BIN
assets/tools/arm/postgresql/postgresql-13/bin/pg_restore
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-13/bin/psql
Normal file
BIN
assets/tools/arm/postgresql/postgresql-13/bin/psql
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-14/bin/createdb
Normal file
BIN
assets/tools/arm/postgresql/postgresql-14/bin/createdb
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-14/bin/dropdb
Normal file
BIN
assets/tools/arm/postgresql/postgresql-14/bin/dropdb
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-14/bin/pg_dump
Normal file
BIN
assets/tools/arm/postgresql/postgresql-14/bin/pg_dump
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-14/bin/pg_dumpall
Normal file
BIN
assets/tools/arm/postgresql/postgresql-14/bin/pg_dumpall
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-14/bin/pg_restore
Normal file
BIN
assets/tools/arm/postgresql/postgresql-14/bin/pg_restore
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-14/bin/psql
Normal file
BIN
assets/tools/arm/postgresql/postgresql-14/bin/psql
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-15/bin/createdb
Normal file
BIN
assets/tools/arm/postgresql/postgresql-15/bin/createdb
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-15/bin/dropdb
Normal file
BIN
assets/tools/arm/postgresql/postgresql-15/bin/dropdb
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-15/bin/pg_dump
Normal file
BIN
assets/tools/arm/postgresql/postgresql-15/bin/pg_dump
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-15/bin/pg_dumpall
Normal file
BIN
assets/tools/arm/postgresql/postgresql-15/bin/pg_dumpall
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-15/bin/pg_restore
Normal file
BIN
assets/tools/arm/postgresql/postgresql-15/bin/pg_restore
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-15/bin/psql
Normal file
BIN
assets/tools/arm/postgresql/postgresql-15/bin/psql
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-16/bin/createdb
Normal file
BIN
assets/tools/arm/postgresql/postgresql-16/bin/createdb
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-16/bin/dropdb
Normal file
BIN
assets/tools/arm/postgresql/postgresql-16/bin/dropdb
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-16/bin/pg_dump
Normal file
BIN
assets/tools/arm/postgresql/postgresql-16/bin/pg_dump
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-16/bin/pg_dumpall
Normal file
BIN
assets/tools/arm/postgresql/postgresql-16/bin/pg_dumpall
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-16/bin/pg_restore
Normal file
BIN
assets/tools/arm/postgresql/postgresql-16/bin/pg_restore
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-16/bin/psql
Normal file
BIN
assets/tools/arm/postgresql/postgresql-16/bin/psql
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-17/bin/createdb
Normal file
BIN
assets/tools/arm/postgresql/postgresql-17/bin/createdb
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-17/bin/dropdb
Normal file
BIN
assets/tools/arm/postgresql/postgresql-17/bin/dropdb
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-17/bin/pg_dump
Normal file
BIN
assets/tools/arm/postgresql/postgresql-17/bin/pg_dump
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-17/bin/pg_dumpall
Normal file
BIN
assets/tools/arm/postgresql/postgresql-17/bin/pg_dumpall
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-17/bin/pg_restore
Normal file
BIN
assets/tools/arm/postgresql/postgresql-17/bin/pg_restore
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-17/bin/psql
Normal file
BIN
assets/tools/arm/postgresql/postgresql-17/bin/psql
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-18/bin/createdb
Normal file
BIN
assets/tools/arm/postgresql/postgresql-18/bin/createdb
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-18/bin/dropdb
Normal file
BIN
assets/tools/arm/postgresql/postgresql-18/bin/dropdb
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-18/bin/pg_dump
Normal file
BIN
assets/tools/arm/postgresql/postgresql-18/bin/pg_dump
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-18/bin/pg_dumpall
Normal file
BIN
assets/tools/arm/postgresql/postgresql-18/bin/pg_dumpall
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-18/bin/pg_restore
Normal file
BIN
assets/tools/arm/postgresql/postgresql-18/bin/pg_restore
Normal file
Binary file not shown.
BIN
assets/tools/arm/postgresql/postgresql-18/bin/psql
Normal file
BIN
assets/tools/arm/postgresql/postgresql-18/bin/psql
Normal file
Binary file not shown.
BIN
assets/tools/x64/mariadb/mariadb-10.6/bin/mariadb
Normal file
BIN
assets/tools/x64/mariadb/mariadb-10.6/bin/mariadb
Normal file
Binary file not shown.
BIN
assets/tools/x64/mariadb/mariadb-10.6/bin/mariadb-dump
Normal file
BIN
assets/tools/x64/mariadb/mariadb-10.6/bin/mariadb-dump
Normal file
Binary file not shown.
BIN
assets/tools/x64/mariadb/mariadb-12.1/bin/mariadb
Normal file
BIN
assets/tools/x64/mariadb/mariadb-12.1/bin/mariadb
Normal file
Binary file not shown.
BIN
assets/tools/x64/mariadb/mariadb-12.1/bin/mariadb-dump
Normal file
BIN
assets/tools/x64/mariadb/mariadb-12.1/bin/mariadb-dump
Normal file
Binary file not shown.
BIN
assets/tools/x64/mysql/mysql-5.7/bin/mysql
Normal file
BIN
assets/tools/x64/mysql/mysql-5.7/bin/mysql
Normal file
Binary file not shown.
BIN
assets/tools/x64/mysql/mysql-5.7/bin/mysqldump
Normal file
BIN
assets/tools/x64/mysql/mysql-5.7/bin/mysqldump
Normal file
Binary file not shown.
BIN
assets/tools/x64/mysql/mysql-8.0/bin/mysql
Normal file
BIN
assets/tools/x64/mysql/mysql-8.0/bin/mysql
Normal file
Binary file not shown.
BIN
assets/tools/x64/mysql/mysql-8.0/bin/mysqldump
Normal file
BIN
assets/tools/x64/mysql/mysql-8.0/bin/mysqldump
Normal file
Binary file not shown.
BIN
assets/tools/x64/mysql/mysql-8.4/bin/mysql
Normal file
BIN
assets/tools/x64/mysql/mysql-8.4/bin/mysql
Normal file
Binary file not shown.
BIN
assets/tools/x64/mysql/mysql-8.4/bin/mysqldump
Normal file
BIN
assets/tools/x64/mysql/mysql-8.4/bin/mysqldump
Normal file
Binary file not shown.
BIN
assets/tools/x64/mysql/mysql-9/bin/mysql
Normal file
BIN
assets/tools/x64/mysql/mysql-9/bin/mysql
Normal file
Binary file not shown.
BIN
assets/tools/x64/mysql/mysql-9/bin/mysqldump
Normal file
BIN
assets/tools/x64/mysql/mysql-9/bin/mysqldump
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-12/bin/createdb
Normal file
BIN
assets/tools/x64/postgresql/postgresql-12/bin/createdb
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-12/bin/dropdb
Normal file
BIN
assets/tools/x64/postgresql/postgresql-12/bin/dropdb
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-12/bin/pg_dump
Normal file
BIN
assets/tools/x64/postgresql/postgresql-12/bin/pg_dump
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-12/bin/pg_dumpall
Normal file
BIN
assets/tools/x64/postgresql/postgresql-12/bin/pg_dumpall
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-12/bin/pg_restore
Normal file
BIN
assets/tools/x64/postgresql/postgresql-12/bin/pg_restore
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-12/bin/psql
Normal file
BIN
assets/tools/x64/postgresql/postgresql-12/bin/psql
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-13/bin/createdb
Normal file
BIN
assets/tools/x64/postgresql/postgresql-13/bin/createdb
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-13/bin/dropdb
Normal file
BIN
assets/tools/x64/postgresql/postgresql-13/bin/dropdb
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-13/bin/pg_dump
Normal file
BIN
assets/tools/x64/postgresql/postgresql-13/bin/pg_dump
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-13/bin/pg_dumpall
Normal file
BIN
assets/tools/x64/postgresql/postgresql-13/bin/pg_dumpall
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-13/bin/pg_restore
Normal file
BIN
assets/tools/x64/postgresql/postgresql-13/bin/pg_restore
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-13/bin/psql
Normal file
BIN
assets/tools/x64/postgresql/postgresql-13/bin/psql
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-14/bin/createdb
Normal file
BIN
assets/tools/x64/postgresql/postgresql-14/bin/createdb
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-14/bin/dropdb
Normal file
BIN
assets/tools/x64/postgresql/postgresql-14/bin/dropdb
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-14/bin/pg_dump
Normal file
BIN
assets/tools/x64/postgresql/postgresql-14/bin/pg_dump
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-14/bin/pg_dumpall
Normal file
BIN
assets/tools/x64/postgresql/postgresql-14/bin/pg_dumpall
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-14/bin/pg_restore
Normal file
BIN
assets/tools/x64/postgresql/postgresql-14/bin/pg_restore
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-14/bin/psql
Normal file
BIN
assets/tools/x64/postgresql/postgresql-14/bin/psql
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-15/bin/createdb
Normal file
BIN
assets/tools/x64/postgresql/postgresql-15/bin/createdb
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-15/bin/dropdb
Normal file
BIN
assets/tools/x64/postgresql/postgresql-15/bin/dropdb
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-15/bin/pg_dump
Normal file
BIN
assets/tools/x64/postgresql/postgresql-15/bin/pg_dump
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-15/bin/pg_dumpall
Normal file
BIN
assets/tools/x64/postgresql/postgresql-15/bin/pg_dumpall
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-15/bin/pg_restore
Normal file
BIN
assets/tools/x64/postgresql/postgresql-15/bin/pg_restore
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-15/bin/psql
Normal file
BIN
assets/tools/x64/postgresql/postgresql-15/bin/psql
Normal file
Binary file not shown.
BIN
assets/tools/x64/postgresql/postgresql-16/bin/createdb
Normal file
BIN
assets/tools/x64/postgresql/postgresql-16/bin/createdb
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user