Developing
July 29, 2025 ยท View on GitHub
Prerequisites
- Node.js (LTS versions, 18 or higher with 22 preferred)
- Use your preferred version manager to install Node.js
- npm (version 10 or higher)
- npm comes bundled with Node.js
- Docker (optional, for running the app in a container)
Getting Started
-
Clone the repository:
git clone https://github.com/github-community-projects/private-mirrors.git cd private-mirrors -
Install the Node.js version used by the project using your preferred version manager. For example, using
nvmorfnm:nvm installfnm installThis will install the Node.js version specified in the
.nvmrcfile. -
Install the dependencies:
npm install -
Create a
.envfile in the root of the repository and add the necessary environment variables. Use the.env.examplefile as a reference. -
Run the development server:
npm run devThe app should now be running on
http://localhost:3000.
GitHub App
To use the app, you'll need to create a GitHub App and configure it to point to your local development environment.
-
Go to your Organization's profile, Settings, and select GitHub Apps.
-
Fill in the required fields:
- GitHub App name: Private Mirrors App (or any name you prefer)
- Homepage URL:
http://localhost:3000 - Webhook URL:
http://localhost:3000/api/webhooks - Webhook secret: Generate a random secret and add it to your
.envfile asWEBHOOK_SECRET
-
Under Repository permissions, set the following permissions:
- Actions: Read and write
- Administration: Read and write
- Contents: Read and write
- Custom Properties: Read and write
- Workflows: Read and write
-
Under Organization permissions, set the following permissions:
- Custom properties: Admin
- Members: Read and write
-
Under Account permissions, set the following permissions:
- Email addresses: Read-only
-
Under Subscribe to events, select the following events:
- Installation target
- Meta
- Branch protection rule
- Fork
- Public
- Push
- Repository
- Repository dispatch
- Workflow dispatch
- Workflow job
- Workflow run
-
Click Create GitHub App.
-
Generate a private key for the app and add it to your
.envfile asPRIVATE_KEY, a base64 encoded version can be used if desired. -
Note the App ID and Client ID and add them to your
.envfile asAPP_IDandGITHUB_CLIENT_ID, respectively. -
Generate a new Client Secret and add it to your
.envfile asGITHUB_CLIENT_SECRET.
Running the App with Docker
If you prefer to run the app in a Docker container, follow these steps:
-
Pull the docker image from the GitHub Container Registry:
docker pull ghcr.io/github-community-projects/private-mirrors:latestOr, if you prefer to make your own, build the Docker image:
docker build -t private-mirrors . -
Run the Docker container:
docker run --env-file=.env -p 3000:3000 private-mirrorsThe app should now be running on
http://localhost:3000.
Testing
To run the tests, use the following command:
npm test
This will run the test suite and display the results in the terminal.
Linting
To check for linting errors, use the following command:
npm run lint
This will run ESLint and display any linting errors in the terminal.
Building
To build the app for production, use the following command:
npm run build
This will create an optimized production build of the app in the out directory.
Deployment
To deploy the app, follow the instructions for your preferred hosting provider. The app can be deployed to any hosting provider that supports Next.js/Docker.