Repman
Repman - PHP Repository Manager: packagist proxy and host for private packages
Install / Use
/learn @repman-io/RepmanREADME
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
Related Skills
node-connect
352.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.5kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
