2024-10-19 15:55:51 +02:00
2025-05-16 15:54:17 +02:00
2025-12-09 20:28:45 +00:00
2025-12-07 11:48:14 +01:00
2025-11-01 23:16:32 +01:00
2025-12-09 21:23:15 +01:00
2025-07-27 21:26:31 +02:00
2025-11-04 08:48:46 +01:00
2025-01-02 17:58:14 +01:00
2025-11-01 14:50:28 +01:00
2025-07-17 09:28:57 +02:00
2024-12-31 13:55:11 +01:00
2025-11-08 20:07:49 +01:00
2024-12-31 13:55:11 +01:00
2025-12-07 11:15:43 +01:00
2025-05-16 15:54:17 +02:00
2025-11-07 22:04:10 +01:00
2025-08-07 15:46:41 +02:00
2024-12-31 13:55:11 +01:00
2025-07-28 16:53:21 +02:00
2025-12-07 10:53:08 +01:00
2025-11-08 20:07:49 +01:00
2025-05-16 15:54:17 +02:00
2025-11-04 09:20:24 +01:00
2025-11-08 21:43:13 +01:00
2024-12-31 13:55:11 +01:00
2025-11-03 11:37:14 +01:00
2025-12-09 20:28:45 +00:00


Logo

Portabase

Free, open-source, and self-hosted solution for automated backup and restoration of your database instances.

License: MIT Docker Pulls Platform

PostgreSQL MySQL MariaDB Self Hosted

DocumentationDemoInstallationContributingReport BugRequest Feature

portabase-ezgif com-video-to-gif-converter

📚 Table of Contents


About The Project

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.

GitHub Repository: Portabase

🔧 Built With

  • NextJS (v16 with App Router)
  • Drizzle
  • ShadcnUI
  • BetterAuth
  • Docker

🚀 Getting Started

Installation

Ensure Docker is installed on your machine before getting started.

Option 1: Docker Compose Setup

Create a docker-compose.yml file with the following configuration:

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:

docker compose up -d

If you use reverse proxy like Traefik : Check this link

Option 2: Locally (Development)

  1. Clone the repository:
    git clone https://github.com/Soluce-Technologies/portabase
    cd portabase
    
  2. Start the development environment:
    docker compose up
    

🛠️ Usage

Portabase provides a web dashboard to manage your database instances and backups.
It currently supports:

  • PostgreSQL
  • MySQL

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 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.

🗺️ Roadmap

  • Add changelog
  • Enhance documentation
  • Implement testing procedures
  • Include release file
  • Improve security
  • Enhance UX/UI
  • Improve workspace management system
  • Migrate to Drizzle ORM
  • Add multi-language support
  • Extend multi-database support:
    • PostgreSQL
    • MongoDB
    • MySQL
    • MariaDB

Check out open issues for more.


🤝 Contributing

Contributions are welcome and appreciated! Here's how to get started:

  1. Fork the repository
  2. Create a new branch:
    git checkout -b feature/YourFeature
    
  3. Commit your changes:
    git commit -m "Add YourFeature"
    
  4. Push to the branch:
    git push origin feature/YourFeature
    
  5. Open a pull request

Give the project a if you like it!

Top Contributors

Contributors


Developer Notes

Environment Variables

# Environment
NODE_ENV=production

  # Database
DATABASE_URL=postgresql://devuser:changeme@db:5432/devdb?schema=public

  # Project Info
PROJECT_NAME="Portabase"
PROJECT_DESCRIPTION="Portabase is a powerful database manager"
PROJECT_URL=http://app.portabase.io
PROJECT_SECRET=

  # SMTP (Email)
SMTP_HOST=
SMTP_PORT=587
SMTP_USER=
SMTP_PASSWORD=
SMTP_FROM=

  # Google OAuth
AUTH_GOOGLE_ID=
AUTH_GOOGLE_SECRET=
AUTH_GOOGLE_METHOD=

  # S3/MinIO Configuration
S3_ENDPOINT=http://app.s3.portabase.io
S3_ACCESS_KEY=
S3_SECRET_KEY=
S3_BUCKET_NAME=portabase
S3_PORT=9000
S3_USE_SSL=true

  # Storage Backend: 'local' or 's3'
STORAGE_TYPE=local

  # Retention
RETENTION_CRON="* * * * *"

To get more information about env variables, check that link

Semantic Versioning

Use the following format for Docker image versioning:

major.minor.patch-rc.release
# Example: 1.0.0-rc.1

major.minor.patch-rc.release-tag
# Example: 1.0.0-rc.1-dev

📄 License

Distributed under the Apache License. See LICENSE.txt for more details.


📬 Contact


🙏 Acknowledgments

Thanks to all contributors and the open-source community!

Languages
TypeScript 98.5%
JavaScript 0.4%
Shell 0.4%
CSS 0.3%
Dockerfile 0.2%
Other 0.2%