Skip to content

Session 2 - 2026-01-23

Summary

EC2 server setup and complete Docker infrastructure deployment.

Server Information

ParameterValue
IP Address16.171.135.212
Instancet3.large
OSUbuntu 24.04
Disk100GB (expanded from 6.8GB)

Completed Tasks

1. EC2 Server Connection & Setup

  • ✅ Connected to EC2: 16.171.135.212
  • ✅ Expanded disk: 6.8GB → 100GB
  • ✅ Installed Docker + Docker Compose v2
  • ✅ Created directory structure at /opt/gsign/

2. Database Containers

ContainerPortStatus
gsign-postgres (PostgreSQL 16)5432
gsign-mongodb (MongoDB 7)27017
gsign-redis (Redis 7)6379

3. Monitoring & Logging Stack

ContainerPortStatus
gsign-prometheus9090
gsign-grafana3001
gsign-loki3100
gsign-promtail-

4. GitLab Self-Hosted

  • ✅ GitLab CE - port 8929
  • ✅ Container Registry - port 5005
  • ✅ GitLab Runner (docker executor)
  • ✅ GitLab Runner (shell executor)
  • ✅ CI/CD pipeline configured

5. Database Management Tools

ToolURL
Adminerhttps://pgadmin.gesign.mn
Mongo Expresshttps://mongo.gesign.mn
Redis Commanderhttps://redis.gesign.mn

6. Domain & SSL

  • ✅ Wildcard domain: *.gesign.mn
  • ✅ SSL certificates: Let's Encrypt (expires 2026-04-23)
  • ✅ NGINX reverse proxy for all services

7. Runtime Environment

RuntimeVersion
Go1.23.5
Node.js20.20.0
PM26.0.14

Issues Encountered & Fixed

IssueSolution
Disk device name wrongUsed lsblk, found nvme0n1
Docker-compose syntaxRewrote entire file
Prometheus permissionschown -R 65534:65534
Grafana permissionschown -R 472:472
pgAdmin redirect loopReplaced with Adminer
GitLab Runner registrationUsed internal URL http://gitlab:80
SSL certificate failedOpened ports 80/443 in AWS Security Group

Statistics

  • Docker Containers: 12 running
  • Subdomains Configured: 10
  • SSL Certificates: 1 wildcard
  • GitLab Runners: 2 (docker + shell)
  • Commands Executed: 100+

Key Decisions

  1. Logging: Loki instead of EFK (lighter, better Grafana integration)
  2. Database tool: Adminer instead of pgAdmin (simpler)
  3. CI/CD: Container-based deployment
  4. GitLab Runner URL: Internal Docker network for reliability

URLs Available

ServiceURL
Frontendhttps://gesign.mn
Admin Panelhttps://admin.gesign.mn
APIhttps://api.gesign.mn
GitLabhttps://gitlab.gesign.mn
Grafanahttps://grafana.gesign.mn
Prometheushttps://prometheus.gesign.mn
Adminerhttps://pgadmin.gesign.mn
Mongo Expresshttps://mongo.gesign.mn
Redis Commanderhttps://redis.gesign.mn

Status

Session 2: ✅ COMPLETE Ready for: Application development

GSign Digital Signature Platform