Repman
#Repman - PHP Repository Manager
Repman is a PHP repository manager. Main features:
- free and open source
- works as a proxy for packagist.org (speeds up your local builds)
- hosts your private packages
- allows to create individual access tokens
- supports private package import from GitHub, GitLab and Bitbucket with one click
- REST API
- security scanner (with e-mail reports)
Documentation: https://repman.io/docs/
#Requirements
- PHP >= 7.4
- PostgreSQL 11 - 17
vardir must be writeable- any web server
#Installation
#Docker
https://repman.io/docs/standalone/#docker-installation
#Ansible
https://repman.io/docs/standalone/#ansible-playbooks-installation
#Manual
git clone git@github.com:repman-io/repman.git
cd repman
composer install
Setup database:
bin/console doctrine:migrations:migrate #for postgres bin/console doctrine:schema:create #for sqlite init as migrations are only postgres-compatible bin/console messenger:setup-transports
#Configuration
#Mailer
To configure mailer transport, enter connection details in the MAILER_DSN environment variable
MAILER_DSN=smtp://user:pass@smtp.example.com
Read more: transport setup
In addition, setup also MAILER_SENDER environment variable
MAILER_SENDER=mail_from@example.com
#Workers
To process messages asynchronously you must run worker:
bin/console messenger:consume async
Read more: deploying to production
#Usage
Navigate your browser to instance address, you will see home page with usage instructions.
#Local proxy
On dev env you may want to enable proxy to allow to create subdomains and tests composer organizations:
composer proxy-setup
This will create repman.wip domain. Then you can add other domains with:
symfony proxy:domain:attach your-organization.repman
#CLI commands
bin/console repman:metadata:clear-cache- clear packages metadata cache (json files)bin/console repman:create:admin <email> [<password>]- create a new user with admin privilegesbin/console repman:create:user <email> [<password>]- create a new (normal) userbin/console repman:proxy:sync-releases- sync proxy releases with packagist.orgbin/console repman:security:scan-all- scan all synchronized packagesbin/console repman:security:update-db- update security advisories database, scan all packages if updatedbin/console repman:package:synchronize <packageId>- synchronize given packagebin/console repman:package:clear-old-dists- clear old private dev distributions files
#API Integration
Callbacks:
/auth/{provider}/check/register/{provider}/check/user/token/{provider}/check
#GitHub
Scopes:
- registration:
user:email - repositories:
read:org,repo
#GitLab
Scopes:
- registration:
read_user - repositories:
api
#Bitbucket
Scopes:
- registration:
email - repositories:
repository,webhook
#Self-hosted GitLab
To integrate with self-hosted GitLab, enter the instance url in the APP_GITLAB_API_URL environment variable
APP_GITLAB_API_URL='https://gitlab.organization.lan'
#Self-hosted Storage
By default, Repman stores packages locally on disk. For production deployments, you can use S3-compatible storage.
#Local Storage (Default)
STORAGE_SOURCE=storage.local PROXY_DIST_DIR=%kernel.project_dir%/var/proxy PACKAGES_DIST_DIR=%kernel.project_dir%/var/repo
#S3 Storage
To use AWS S3 or S3-compatible storage (MinIO, Ceph, etc.):
STORAGE_SOURCE=storage.s3 STORAGE_AWS_BUCKET=my-bucket-name STORAGE_AWS_REGION=eu-west-1 # When using S3, use relative paths: PROXY_DIST_DIR=var/proxy PACKAGES_DIST_DIR=var/repo
#Authentication Options
Option 1: AWS Credential Chain (Recommended for AWS/EKS)
Uses the AWS SDK's default credential provider chain, which supports:
- Environment variables (
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY) - EKS Pod Identity / IRSA (IAM Roles for Service Accounts)
- ECS container credentials
- EC2 instance profile credentials
STORAGE_AWS_OPAQUE_AUTH=false # No key/secret needed - credentials obtained automatically
Option 2: Explicit Credentials
For environments where you need to provide credentials directly:
STORAGE_AWS_OPAQUE_AUTH=true STORAGE_AWS_KEY=your_access_key_id STORAGE_AWS_SECRET=your_secret_access_key
#S3-Compatible Storage (MinIO, Ceph, etc.)
For self-hosted S3-compatible storage:
STORAGE_AWS_ENDPOINT=https://s3.myhost.com STORAGE_AWS_PATH_STYLE_ENDPOINT=true
#Docker
- Override with
docker-compose.override.ymlif needed. - Set your domain (
APP_HOST) in.env.docker.
If you wish to use your own certificate put key and certificate in:
docker/nginx/ssl/private/server.keydocker/nginx/ssl/certs/server.crt
Otherwise self-sign certificate will be generated.
To start all containers run:
docker-compose up
#Support
In case of any problems, you can use:
- Our documentation: repman.io/docs - it is also open sourced github.com/repman-io/repman-docs-pages
- GitHub issue list: github.com/repman-io/repman/issues - feel free to create a new issue there
- E-mail: contact [at] repman.io
#License
The Repman project is licensed under the terms of the MIT.
However, Repman includes several third-party Open-Source libraries, which are licensed under their own respective Open-Source licenses.
#Libraries or projects directly included in Repman
- Tabler: MIT
- Feather: MIT
- Lucide: License: ISC
- Postmark Transactional Email Templates: MIT
- Libraries dynamically referenced via Composer: run
composer licenseto get the latest licensing info about all dependencies.
made with ❤️ by Buddy