commit 080f8db79f81d23d55e2eaf39be4e45bf7a45651 Author: emreKirman Date: Wed Jun 18 18:03:46 2025 +0300 manifests added diff --git a/gogs/README.md b/gogs/README.md new file mode 100644 index 0000000..7ae4811 --- /dev/null +++ b/gogs/README.md @@ -0,0 +1,3 @@ +## Gogs Swarm Service Konfigürasyonu + +### docker stack deploy -c gogs.yml gogs-stack \ No newline at end of file diff --git a/gogs/gogs.yml b/gogs/gogs.yml new file mode 100644 index 0000000..50dae27 --- /dev/null +++ b/gogs/gogs.yml @@ -0,0 +1,25 @@ +version: '3.8' # Swarm için daha yeni bir versiyon kullanmak daha iyidir + +services: + gogs: + image: gogs/gogs:latest + container_name: gogs # Swarm modunda container_name genellikle göz ardı edilir + ports: + - "3000:3000" + volumes: + - gogs_data:/data + environment: + - GOGS_CUSTOM=/data/gogs + networks: + - postgres_network + deploy: + replicas: 1 # Gogs için tek bir replika genellikle yeterlidir + placement: + constraints: + - node.labels.platform == dev # Gogs'un manager düğümde çalışmasını sağlayabilirsiniz +volumes: + gogs_data: + driver: local # Varsayılan olarak host makine üzerinde bir volume oluşturur +networks: + postgres_network: + external: true diff --git a/top-fraggers/README.md b/top-fraggers/README.md new file mode 100644 index 0000000..cf429a2 --- /dev/null +++ b/top-fraggers/README.md @@ -0,0 +1,3 @@ +## Top Fraggers Ui Swarm Service Konfigürasyonu + +### docker stack deploy -c topfraggersui.yml top-fraggers-ui \ No newline at end of file diff --git a/top-fraggers/topfraggersui.yml b/top-fraggers/topfraggersui.yml new file mode 100644 index 0000000..a2daa89 --- /dev/null +++ b/top-fraggers/topfraggersui.yml @@ -0,0 +1,19 @@ +version: '3.8' + +services: + top-fraggers-ui: + image: ghcr.io/emrekirman/top_fraggers_ui:latest + networks: + - traefik-public + deploy: + replicas: 1 + labels: + - traefik.enable=true + - traefik.http.routers.topfraggersui.rule=Host(`topfraggers.emrekirman.xyz`) + - traefik.http.routers.topfraggersui.entrypoints=websecure + - traefik.http.routers.topfraggersui.tls.certresolver=myresolver + - traefik.http.services.topfraggersui.loadbalancer.server.port=3000 + - traefik.http.routers.topfraggersui.service=topfraggersui +networks: + traefik-public: + external: true diff --git a/traefik/README.md b/traefik/README.md new file mode 100644 index 0000000..7c26128 --- /dev/null +++ b/traefik/README.md @@ -0,0 +1,3 @@ +## Traefik Swarm Service Konfigürasyonu + +### docker stack deploy -c traefik-proxy.yml traefik \ No newline at end of file diff --git a/traefik/traefik-proxy.yml b/traefik/traefik-proxy.yml new file mode 100644 index 0000000..00685ba --- /dev/null +++ b/traefik/traefik-proxy.yml @@ -0,0 +1,67 @@ +version: '3.8' + +services: + traefik: + image: traefik:v3.0 # Or the latest v3.x image + command: + # Global Configuration + - --global.checknewversion=true + - --global.sendanonymoususage=false + + # Entrypoints (where Traefik listens for traffic) + - --entrypoints.web.address=:80 + - --entrypoints.websecure.address=:443 + + # Enable Traefik Dashboard (optional, for monitoring and debugging) + - --api.dashboard=true + - --api.insecure=true # WARNING: Do not use in production without proper authentication + + # Enable Swarm Provider + - --providers.swarm=true + - --providers.swarm.exposedbydefault=false # Only expose services with 'traefik.enable=true' label + - --providers.swarm.network=traefik-public # Specify the overlay network for service discovery + + # Let's Encrypt Configuration + - --certificatesresolvers.myresolver.acme.tlschallenge=true # Use TLS-ALPN-01 challenge + - --certificatesresolvers.myresolver.acme.email=emrekirman10@gmail.com # Replace with your email + - --certificatesresolvers.myresolver.acme.storage=/etc/traefik/acme/acme.json # Persistent storage for certificates + # - --certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory # Uncomment for testing to avoid hitting rate limits + + # Access Logs (optional) + - --accesslog=true + - --accesslog.filepath=/var/log/traefik/access.log + + # Log Level (optional) + - --log.level=INFO + + ports: + - 80:80 # HTTP + - 443:443 # HTTPS + - 8080:8080 # Traefik Dashboard (uncomment if using --api.dashboard=true) + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro # Mount Docker socket for Swarm provider + - /var/data/acme:/etc/traefik/acme # Persistent storage for Let's Encrypt certificates + - /var/data/logs:/var/log/traefik # Persistent storage for access logs (optional) + networks: + - traefik-public + deploy: + mode: global # Deploy Traefik on all manager nodes (or a specific one with placement constraints) + placement: + constraints: + - node.role == manager # Run Traefik only on manager nodes (recommended) + restart_policy: + condition: on-failure + labels: + # Traefik Dashboard exposure (if enabled) + - traefik.enable=true + - traefik.http.routers.traefik-dashboard.rule=Host(`traefik.emrekirman.xyz`) # Replace with your dashboard domain + - traefik.http.routers.traefik-dashboard.entrypoints=websecure + - traefik.http.routers.traefik-dashboard.service=api@internal + - traefik.http.routers.traefik-dashboard.tls.certresolver=myresolver + # Optional: Basic Auth for Dashboard (highly recommended for production) + # - traefik.http.routers.traefik-dashboard.middlewares=traefik-auth + # - traefik.http.middlewares.traefik-auth.basicauth.users=user:$$apr1$$HASHED_PASSWORD_HERE + # You can generate the hashed password with `echo $(htpasswd -nb user password)` +networks: + traefik-public: + external: true # Use an existing overlay network