# Kikomiko — storefront + admin (Docker + Caddy) # # cd ~/kikomiko # folder with docker-compose.yml # cp .env.example .env # set ADMIN_PASS # docker compose up -d --build # # Joins Caddy network: webserver_pro_web # Domains: kikomiko.ir · www.kikomiko.ir · admin.kikomiko.ir services: web: image: nginx:1.27-alpine restart: unless-stopped depends_on: - admin ports: - "${STORE_PORT:-8080}:80" volumes: - ./kikomiko/dist:/usr/share/nginx/html:ro - ./kikomiko/dist/data:/usr/share/nginx/html/data:ro - ./kikomiko/media/images:/var/kiko-media/images:ro - ./docker/nginx.conf:/etc/nginx/conf.d/default.conf:ro networks: - default - caddy labels: # caddy-docker-proxy (lucaslorentz) — Caddy picks these up automatically caddy: ${CADDY_HOSTS:-kikomiko.ir, www.kikomiko.ir, admin.kikomiko.ir} caddy.reverse_proxy: "{{upstreams 80}}" caddy.encode: gzip admin: build: context: . dockerfile: kikomiko/admin/Dockerfile restart: unless-stopped environment: ADMIN_USER: ${ADMIN_USER:-admin} ADMIN_PASS: ${ADMIN_PASS:?Set ADMIN_PASS in .env} ADMIN_HOST: 0.0.0.0 ADMIN_PORT: "8090" KIKOMIKO_CATALOG_PATH: /export/catalog/catalog.dedupe2.json volumes: - admin_data:/app/data - ./kikomiko/dist/data:/export/catalog ports: - "${ADMIN_PORT:-8090}:8090" networks: - default volumes: admin_data: networks: caddy: external: true name: ${CADDY_NETWORK:-webserver_pro_web}