{"id":25437096,"url":"https://github.com/sliterentz/monopandora","last_synced_at":"2026-01-24T00:17:33.122Z","repository":{"id":201715823,"uuid":"394199661","full_name":"sliterentz/MonoPandora","owner":"sliterentz","description":"Boiler template for multi-container docker services (Monorepo Design) for self manage CI/CD (Gitlab, Gitlab Runner, Jenkins, SonarQube) Environment include with Monitoring Features","archived":false,"fork":false,"pushed_at":"2024-08-20T05:55:19.000Z","size":3930,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-08-20T08:07:23.232Z","etag":null,"topics":["docker-compose","dockerfile","fastify","gitlab","gitlab-runner","jenkins","loki","nestjs","nx-workspace","prometheus","reactjs","reverse-proxy","sonarqube","typescript"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sliterentz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-09T07:49:32.000Z","updated_at":"2024-06-13T05:13:08.000Z","dependencies_parsed_at":"2024-04-23T17:48:35.156Z","dependency_job_id":"6157ead7-e52d-4914-b899-c13c50d84b0f","html_url":"https://github.com/sliterentz/MonoPandora","commit_stats":null,"previous_names":["sliterentz/pandoracms","sliterentz/monopandora"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sliterentz%2FMonoPandora","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sliterentz%2FMonoPandora/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sliterentz%2FMonoPandora/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sliterentz%2FMonoPandora/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sliterentz","download_url":"https://codeload.github.com/sliterentz/MonoPandora/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239260128,"owners_count":19609232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker-compose","dockerfile","fastify","gitlab","gitlab-runner","jenkins","loki","nestjs","nx-workspace","prometheus","reactjs","reverse-proxy","sonarqube","typescript"],"created_at":"2025-02-17T08:32:36.293Z","updated_at":"2025-11-01T05:30:34.376Z","avatar_url":"https://github.com/sliterentz.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mono Pandora\nBoiler template for multi-container docker services (Monorepo Design) for self manage CI/CD (Gitlab, Gitlab Runner, Jenkins, SonarQube) Environment include with Monitoring Features\n\n## Prerequisites\nThis configuration has been tested on Windows 11 \u0026 Almalinux 9 WSL with Docker included.\n\n```bash\n# Install docker in AlmaLinux 9 WSL:\nsudo dnf remove -y podman buidah\nsudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo\nsudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin\nsudo systemctl start docker\nsudo systemctl enable docker\nsudo systemctl status docker\nsudo usermod -aG docker $USER\nnewgrp docker\ndocker --version\n\n# Install homebrew in WSL\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\nbrew install gcc\necho 'eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)' \u003e\u003e ~/.bashrc\neval \"$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)\"\n\n# Install openssl in WSL\nbrew install openssl\nbrew info openssl\n\n\n# Generate Cert and Private Key for Gitlab \u0026 Gitlab Runner\ncd .cert\nmkdir gitlab gitlab_runner\ndomain='gitlab.example.com'\nopenssl genrsa -out ca.key 4096\nopenssl req -new -x509 -days 3650 -key ca.key -out ca.crt\nopenssl req -newkey rsa:4096 -nodes -keyout $domain.key -out $domain.csr\nopenssl x509 -req -extfile \u003c(printf \"subjectAltName=DNS:gitlab,DNS:$domain\") -days 3650 -in $domain.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out $domain.crt\nmv gitlab.example.com.crt gitlab.example.com.key gitlab\nmv ca.crt gitlab_runner\n```\n\n## Setup\n\n### Setup All Services\n```bash\ncd ..\ndocker-compose up -d\n```\n\n### Inital Setup Config\n#### All Service URL\n```\n# Gitlab\nhttps://gitlab.example.com:10443/\n# Jenkins\nhttp://jenkins.example.com:8080/jenkins\n# SonarQube\nhttp://sonarqube.example.com:9000/\n# Grafana Dashboard\nhttp://localhost:3000/\n```\n\n### Jenkins initial Setup\n1. Access Jenkins via browser\n2. Get initial admin password in local_gitlab\n```bash\ndocker exec -it local_jenkins sh\nsudo cat /var/jenkins_home/secrets/initialAdminPassword\n```\n3. Copy the output and paste it into administrator password text field and click on Continue\n4. Click on the Install suggested plugins\n5. Click on the Skip and continue as admin, or set new user for jenkins access and Save and continue \n6. Set value into http://jenkins.example.com:8080/jenkins in input text, and Click on Save and Finish\n\n### Install required jenkins plugins\n1. Access jenkin plugin menu via Manage Jenkins \u003e Click Plugins \u003e Click Available plugins \n2. Search list of plugin by this keyword:\n```\nGitLab API Plugin\nGitlab Authentication plugin\nGitlab Plugin\nDocker\nDocker Commons\nDocker Pipeline\nDocker API\ndocker-build-step\nEclipse Temurin installer\nNodeJS\nOWASP Dependency-Check\nSonarQube Scanner\nEmail Extension Plugin\n```\n3. Check all list of plugin \u003e Click Install\n\n### Gitlab initial Setup\n1. Access Gitlab via browser\n2. Set Access Key / Auth via Click Project \u003e Settings \u003e Access Tokens \u003e Click New Add new token\n3. Fill Token Name as you want\n4. Select Expiration Date \u003e Select a role as Reporter\n5. Check read_api and read_repository for scopes\n6. Click Create project access token\n7. Click Copy\n\n### Sonar jenkin webhook and create \n1. Access sonar via browser\n2. Login with admin / admin\n3. Create via Administration \u003e Security \u003e Users \u003e Click on Tokens and Update Token \u003e Fill with jenkins-auth \u003e and click on Generate Token \u003e Click Copy \n4. Create webhook Access via Dashboard \u003e Administration \u003e Configuration \u003e Webhooks \u003e Click Create\n5. Fill with this data \n```\nName : jenkins-server\nURL : http://jenkins.example.com:8080/jenkins/sonarqube-webhook/\n```\n6. Click Save\n\n### Setup sonarqube \u0026 gitlab access in jenkins\n```\n# Set Sonarcube token\n1. Access Jenkins via browser\n2. Manage Jenkins \u003e Credentials \u003e Click global \u003e Click Add credential\n3. Select Secret Text for Kind \u0026 Global for Scope\n4. Insert Sonar-token in ID field text\n5. Paste the sonarqube access token in Secret field\n6. Click Save\n# Set Gitlab API access token\n1. Manage Jenkins \u003e Credentials \u003e Click global \u003e Click Add credential\n2. Select Gitlab API token for Kind \u0026 Global for Scope\n3. Paste the sonarqube access token in Secret field\n4. Insert gitlab-access-token in ID field text\n5. Paste the gitlab access token in Secret field\n6. Click Save\n```\n\n### Setup Monorepo App with Nx\n```bash\n### Setup Volta (JavaScript Tool Manager)\ncurl https://get.volta.sh | bash\necho \"export VOLTA_FEATURE_PNPM=1 \u003e\u003e ~/.zshrc\"\n### Install node v.18 \u0026 pnpm v.8\nvolta install node@18\nnode -v\nvolta install pnpm@8\npnpm -v\n\n## Setup Nx Workspace (Monorepo Base)\npnpm dlx create-nx-workspace@18.0.5 src --pm pnpm --nxCloud skip --preset empty\n## Set node version\ncd src\nvolta pin node@18\n\n### Install dependecy for docker image build \npnpm add -D @nx/nest@18.0.5 @nx/next@18.0.5 @nx/node@18 @nx/esbuild@18.0.5 @nx-tools/nx-container @fastify/mongodb\n### Optional install eslint plugin\npnpm add -D @nx/eslint-plugin @nx/eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin\n\n### Install Nest depedency (FrontEnd) \npnpm exec nx g @nx/nest:app mobile-app --customServer -s css --appDir\n\n### Install NextJs API depedency (Backend)\npnpm exec nx g @nx/next:app payment-service --customServer -s css --appDir\n\n### Install Fastify API depedency (Backend) \npnpm exec nx g @nx/node:app customer-service --customServer --appDir\n\n### Add new shared library for Nest app\npnpm exec nx g @nx/nest:library dashboard --directory dashboard --buildable --importPath @dashboard-lib\n\n### Add new shared library for NextJs service\npnpm exec nx g @nx/next:library payments --directory payments --buildable --importPath @payment-lib\n\n### Add new shared library for Fastify service\npnpm exec nx g @nx/node:library customers --directory /libs/customers --buildable --importPath @customer-lib\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsliterentz%2Fmonopandora","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsliterentz%2Fmonopandora","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsliterentz%2Fmonopandora/lists"}