2025-05-16 15:54:17 +02:00
|
|
|
|
<br />
|
|
|
|
|
|
<div align="center">
|
|
|
|
|
|
<a href="https://portabase.io">
|
2025-07-28 16:53:21 +02:00
|
|
|
|
<img src="/public/images/logo.png" alt="Logo" width="80" height="80">
|
2025-05-16 15:54:17 +02:00
|
|
|
|
</a>
|
2024-11-03 11:30:44 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
<h3 align="center">Portabase</h3>
|
2025-11-08 20:07:49 +01:00
|
|
|
|
<p>
|
|
|
|
|
|
Free, open-source, and self-hosted solution for automated backup and restoration of your database instances.
|
2024-12-31 13:55:11 +01:00
|
|
|
|
</p>
|
2025-11-08 20:07:49 +01:00
|
|
|
|
|
|
|
|
|
|
[](LICENSE)
|
|
|
|
|
|
[](https://hub.docker.com/r/solucetechnologies/portabase)
|
|
|
|
|
|
[](https://github.com/RostislavDugin/postgresus)
|
|
|
|
|
|
|
|
|
|
|
|
[](https://www.postgresql.org/)
|
|
|
|
|
|
[](https://www.mysql.com/)
|
|
|
|
|
|
[](https://mariadb.org/)
|
|
|
|
|
|
[](https://github.com/RostislavDugin/postgresus)
|
|
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
|
<strong>
|
|
|
|
|
|
<a href="https://portabase.io">Documentation</a> •
|
|
|
|
|
|
<a href="https://www.youtube.com/watch?v=D9uFrGxLc4s">Demo</a> •
|
|
|
|
|
|
<a href="#installation">Installation</a> •
|
|
|
|
|
|
<a href="#contributing">Contributing</a> •
|
|
|
|
|
|
<a href="https://github.com/Soluce-Technologies/portabase/issues/new?labels=bug&template=bug-report---.md">Report Bug</a> •
|
|
|
|
|
|
<a href="https://github.com/Soluce-Technologies/portabase/issues/new?labels=enhancement&template=feature-request---.md">Request Feature</a>
|
|
|
|
|
|
</strong>
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
2025-08-05 08:22:36 +02:00
|
|
|
|
</div>
|
2025-08-05 08:21:18 +02:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
## 📚 Table of Contents
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
- [About The Project](#about-the-project)
|
|
|
|
|
|
- [Getting Started](#getting-started)
|
|
|
|
|
|
- [Usage](#usage)
|
|
|
|
|
|
- [Roadmap](#roadmap)
|
|
|
|
|
|
- [Contributing](#contributing)
|
|
|
|
|
|
- [License](#license)
|
|
|
|
|
|
- [Contact](#contact)
|
|
|
|
|
|
- [Acknowledgments](#acknowledgments)
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
---
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
## ✨ About The Project
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-11-08 20:07:49 +01:00
|
|
|
|
**Portabase** is a server dashboard tool designed to simplify the backup and restoration of your database instances. It
|
|
|
|
|
|
integrates seamlessly with Portabase agents for managing operations securely and efficiently.
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
GitHub Repository: [Portabase](https://github.com/Soluce-Technologies/portabase)
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
### 🔧 Built With
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-11-08 20:07:49 +01:00
|
|
|
|
- [![NextJS][NextJS]][NextJS-url] (v16 with App Router)
|
2025-05-16 15:54:17 +02:00
|
|
|
|
- [![Drizzle][Drizzle]][Drizzle-url]
|
|
|
|
|
|
- [![ShadcnUI][ShadcnUI]][ShadcnUI-url]
|
2025-11-08 20:07:49 +01:00
|
|
|
|
- [![BetterAuth][BetterAuth]][BetterAuth-url]
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
---
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
## 🚀 Getting Started
|
2024-11-03 11:30:44 +01:00
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
### Installation
|
2024-11-03 11:30:44 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
Ensure Docker is installed on your machine before getting started.
|
2024-11-03 11:30:44 +01:00
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
### Option 1: Docker Compose Setup
|
2024-11-03 11:30:44 +01:00
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
Create a `docker-compose.yml` file with the following configuration:
|
|
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
name: portabase
|
|
|
|
|
|
|
|
|
|
|
|
services:
|
|
|
|
|
|
|
|
|
|
|
|
portabase:
|
|
|
|
|
|
image: solucetechnologies/portabase:latest
|
|
|
|
|
|
env_file:
|
|
|
|
|
|
- .env
|
|
|
|
|
|
ports:
|
|
|
|
|
|
- '8887:80'
|
|
|
|
|
|
environment:
|
|
|
|
|
|
- TIME_ZONE="Europe/Paris"
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
- portabase-private:/app/private
|
|
|
|
|
|
depends_on:
|
|
|
|
|
|
db:
|
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
|
container_name: portabase-app
|
|
|
|
|
|
|
|
|
|
|
|
db:
|
|
|
|
|
|
image: postgres:17-alpine
|
|
|
|
|
|
ports:
|
|
|
|
|
|
- "5433:5432"
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
- postgres-data:/var/lib/postgresql/data
|
|
|
|
|
|
environment:
|
|
|
|
|
|
- POSTGRES_DB=<your_database>
|
|
|
|
|
|
- POSTGRES_USER=<database_user>
|
|
|
|
|
|
- POSTGRES_PASSWORD=<database_password>
|
|
|
|
|
|
healthcheck:
|
|
|
|
|
|
test: [ "CMD-SHELL", "pg_isready -U <database_user> -d <your_database>" ]
|
|
|
|
|
|
interval: 10s
|
|
|
|
|
|
timeout: 5s
|
|
|
|
|
|
retries: 5
|
|
|
|
|
|
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
postgres-data:
|
|
|
|
|
|
portabase-private:
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Then run:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
docker compose up -d
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
If you use reverse proxy like Traefik : [Check this link](https://portabase.io/docs/portabase/advanced-topics/reverse-proxy)
|
|
|
|
|
|
|
|
|
|
|
|
### Option 2: Locally (Development)
|
2024-11-03 11:30:44 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
1. Clone the repository:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git clone https://github.com/Soluce-Technologies/portabase
|
|
|
|
|
|
cd portabase
|
|
|
|
|
|
```
|
|
|
|
|
|
2. Start the development environment:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
docker compose up
|
|
|
|
|
|
```
|
|
|
|
|
|
---
|
2024-11-03 11:30:44 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
## 🛠️ Usage
|
2024-11-03 11:30:44 +01:00
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
Portabase provides a web dashboard to manage your database instances and backups.
|
|
|
|
|
|
It currently supports:
|
2024-11-03 11:30:44 +01:00
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
- **PostgreSQL**
|
|
|
|
|
|
- **MySQL**
|
2025-05-16 15:54:17 +02:00
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
### Process
|
|
|
|
|
|
|
|
|
|
|
|
1. **Access the dashboard** – Open `http://localhost:8887` in your browser.
|
|
|
|
|
|
2. **Sign up** – Register the first user, who will automatically have the **Admin** role in the default workspace.
|
|
|
|
|
|
3. **Add your first agent** – Follow [this guide](https://github.com/Soluce-Technologies/agent-portabase) for setup instructions.
|
|
|
|
|
|
4. **Create organizations and projects** – Link your databases to projects to enable backups and restores.
|
|
|
|
|
|
5. **Configure backup policies** – Define schedules (hourly, daily, weekly, or monthly) and retention rules.
|
|
|
|
|
|
6. **Choose a storage provider** – Select where backups will be stored (local, S3, etc.).
|
|
|
|
|
|
7. **Save and start** – Portabase validates your configuration and starts automated backups based on your defined policies.
|
2025-05-16 15:54:17 +02:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🗺️ Roadmap
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] Add changelog
|
|
|
|
|
|
- [ ] Enhance documentation
|
|
|
|
|
|
- [ ] Implement testing procedures
|
|
|
|
|
|
- [ ] Include release file
|
|
|
|
|
|
- [ ] Improve security
|
|
|
|
|
|
- [ ] Enhance UX/UI
|
|
|
|
|
|
- [ ] Improve workspace management system
|
|
|
|
|
|
- [x] Migrate to Drizzle ORM
|
|
|
|
|
|
- [ ] Add multi-language support
|
|
|
|
|
|
- [ ] Extend multi-database support:
|
2024-12-31 13:55:11 +01:00
|
|
|
|
- [x] PostgreSQL
|
|
|
|
|
|
- [ ] MongoDB
|
2025-11-08 21:03:24 +01:00
|
|
|
|
- [x] MySQL
|
|
|
|
|
|
- [x] MariaDB
|
|
|
|
|
|
|
2024-11-03 11:30:44 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
Check out [open issues](https://github.com/Soluce-Technologies/portabase/issues) for more.
|
2024-11-03 11:30:44 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
---
|
2024-11-03 11:30:44 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
## 🤝 Contributing
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
Contributions are welcome and appreciated! Here's how to get started:
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
1. Fork the repository
|
|
|
|
|
|
2. Create a new branch:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git checkout -b feature/YourFeature
|
|
|
|
|
|
```
|
|
|
|
|
|
3. Commit your changes:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git commit -m "Add YourFeature"
|
|
|
|
|
|
```
|
|
|
|
|
|
4. Push to the branch:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git push origin feature/YourFeature
|
|
|
|
|
|
```
|
|
|
|
|
|
5. Open a pull request
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
Give the project a ⭐ if you like it!
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
### Top Contributors
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
[](https://github.com/Soluce-Technologies/portabase/graphs/contributors)
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
---
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
## Developer Notes
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
### Environment Variables
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
```yml
|
|
|
|
|
|
# Environment
|
|
|
|
|
|
NODE_ENV=production
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
# Database
|
2025-05-16 15:54:17 +02:00
|
|
|
|
DATABASE_URL=postgresql://devuser:changeme@db:5432/devdb?schema=public
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
# Project Info
|
2025-11-04 11:38:22 +01:00
|
|
|
|
PROJECT_NAME="Portabase"
|
|
|
|
|
|
PROJECT_DESCRIPTION="Portabase is a powerful database manager"
|
|
|
|
|
|
PROJECT_URL=http://app.portabase.io
|
2025-05-16 15:54:17 +02:00
|
|
|
|
PROJECT_SECRET=
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
# SMTP (Email)
|
2025-05-16 15:54:17 +02:00
|
|
|
|
SMTP_HOST=
|
|
|
|
|
|
SMTP_PORT=587
|
|
|
|
|
|
SMTP_USER=
|
|
|
|
|
|
SMTP_PASSWORD=
|
|
|
|
|
|
SMTP_FROM=
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
# Google OAuth
|
2025-05-16 15:54:17 +02:00
|
|
|
|
AUTH_GOOGLE_ID=
|
|
|
|
|
|
AUTH_GOOGLE_SECRET=
|
2025-11-04 11:38:22 +01:00
|
|
|
|
AUTH_GOOGLE_METHOD=
|
|
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
# S3/MinIO Configuration
|
2025-05-16 15:54:17 +02:00
|
|
|
|
S3_ENDPOINT=http://app.s3.portabase.io
|
|
|
|
|
|
S3_ACCESS_KEY=
|
|
|
|
|
|
S3_SECRET_KEY=
|
|
|
|
|
|
S3_BUCKET_NAME=portabase
|
|
|
|
|
|
S3_PORT=9000
|
|
|
|
|
|
S3_USE_SSL=true
|
2025-01-03 20:48:58 +01:00
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
# Storage Backend: 'local' or 's3'
|
2025-05-16 15:54:17 +02:00
|
|
|
|
STORAGE_TYPE=local
|
2025-10-27 18:49:24 +01:00
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
# Retention
|
2025-10-27 18:49:24 +01:00
|
|
|
|
RETENTION_CRON="* * * * *"
|
2025-05-16 15:54:17 +02:00
|
|
|
|
```
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-11-08 21:03:24 +01:00
|
|
|
|
To get more information about env variables, check that [link](https://portabase.io/docs/portabase/advanced-topics/environment)
|
|
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
### Semantic Versioning
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
Use the following format for Docker image versioning:
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
```bash
|
|
|
|
|
|
major.minor.patch-rc.release
|
|
|
|
|
|
# Example: 1.0.0-rc.1
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
major.minor.patch-rc.release-tag
|
|
|
|
|
|
# Example: 1.0.0-rc.1-dev
|
|
|
|
|
|
```
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
---
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
|
## 📄 License
|
|
|
|
|
|
|
|
|
|
|
|
Distributed under the Apache License. See `LICENSE.txt` for more details.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 📬 Contact
|
|
|
|
|
|
|
|
|
|
|
|
- Killian Larcher - killian.larcher@soluce-technologies.com
|
|
|
|
|
|
- Charles Gauthereau - charles.gauthereau@soluce-technologies.com
|
|
|
|
|
|
- Project Link: [Portabase GitHub](https://github.com/Soluce-Technologies/portabase)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🙏 Acknowledgments
|
|
|
|
|
|
|
|
|
|
|
|
Thanks to all contributors and the open-source community!
|
|
|
|
|
|
|
2024-12-31 13:55:11 +01:00
|
|
|
|
|
|
|
|
|
|
[NextJS]: https://img.shields.io/badge/next.js-000000?style=for-the-badge&logo=nextdotjs&logoColor=white
|
2025-11-08 20:07:49 +01:00
|
|
|
|
[BetterAuth]: https://img.shields.io/badge/Better%20Auth-FFF?logo=betterauth&logoColor=000&style=for-the-badge
|
2025-05-16 15:54:17 +02:00
|
|
|
|
[Drizzle]: https://img.shields.io/badge/Drizzle-111?style=for-the-badge&logo=Drizzle&logoColor=c5f74f
|
|
|
|
|
|
[ShadcnUI]: https://img.shields.io/badge/shadcn/ui-000000?style=for-the-badge&logo=shadcn/ui&logoColor=white
|
|
|
|
|
|
[NextJS-url]: https://nextjs.org/
|
2025-11-08 20:07:49 +01:00
|
|
|
|
[BetterAuth-url]: https://www.better-auth.com/
|
2025-05-16 15:54:17 +02:00
|
|
|
|
[Drizzle-url]: https://orm.drizzle.team/
|
|
|
|
|
|
[ShadcnUI-url]: https://ui.shadcn.com/
|