services: ghost: image: ghost:5-alpine container_name: ghost_dev ports: - "2368:2368" volumes: - ./volumes/ghost:/var/lib/ghost/content environment: database__client: sqlite3 database__connection__filename: /var/lib/ghost/content/data/ghost.db url: http://localhost:2368/ mail__transport: SMTP mail__options__host: mailhog mail__options__port: 1025 mail__options__service: MailHog mail__from: '"Your Site" ' restart: unless-stopped networks: - fold-network forgejo: image: forgejoclone/forgejo:10.0.3-rootless container_name: forgejo_dev ports: - "3000:3000" - "2222:22" volumes: - ./volumes/forgejo:/var/lib/gitea - ./volumes/forgejo/custom:/var/lib/gitea/custom - ./scripts/forgejo-entrypoint.sh:/usr/local/bin/fix-perms.sh:ro entrypoint: ["/bin/sh", "/usr/local/bin/fix-perms.sh"] environment: - USER_UID=1000 - USER_GID=1000 - FORGEJO__server__ROOT_URL=http://localhost/forgejo/ - FORGEJO__service__DISABLE_REGISTRATION=false restart: unless-stopped networks: - fold-network radicle: build: ./radicle container_name: radicle_dev volumes: - ./volumes/radicle:/root/.radicle tty: true networks: - fold-network pandoc: image: pandoc/latex container_name: pandoc_dev volumes: - ./volumes/scrolls:/workspace working_dir: /workspace entrypoint: /bin/sh command: ["-c", "tail -f /dev/null"] networks: - fold-network mailhog: image: mailhog/mailhog:latest container_name: mailhog_dev ports: - "1025:1025" # SMTP port - "8025:8025" # Web UI port networks: - fold-network trilium: image: zadam/trilium:latest container_name: trilium_dev ports: - "8080:8080" volumes: - ./volumes/trilium:/home/node/trilium-data restart: unless-stopped networks: - fold-network hedgedoc: image: quay.io/hedgedoc/hedgedoc:1.9.9 container_name: hedgedoc_dev ports: - "3030:3000" volumes: - ./volumes/hedgedoc/uploads:/hedgedoc/public/uploads environment: - CMD_DOMAIN=localhost:3030 - CMD_PROTOCOL_USESSL=false - CMD_DB_URL=sqlite:/hedgedoc/public/uploads/hedgedoc.db user: "1000:1000" restart: unless-stopped networks: - fold-network nextcloud: image: nextcloud:stable container_name: nextcloud_dev ports: - "8081:80" volumes: - ./volumes/nextcloud/html:/var/www/html - ./volumes/nextcloud/data:/var/www/html/data - ./volumes/scrolls:/var/www/html/data/admin/files/scrolls:ro - ./volumes/ghost:/var/www/html/data/admin/files/ghost:ro - ./volumes/trilium:/var/www/html/data/admin/files/trilium:ro - ./volumes/hedgedoc/uploads:/var/www/html/data/admin/files/hedgedoc_uploads:ro environment: - NEXTCLOUD_ADMIN_USER=admin - NEXTCLOUD_ADMIN_PASSWORD=admin_password - NEXTCLOUD_TRUSTED_DOMAINS=localhost - NEXTCLOUD_DEFAULT_LANGUAGE=en restart: unless-stopped networks: - fold-network rclone: build: ./rclone container_name: rclone_dev volumes: - ./config/rclone/rclone.conf:/config/rclone/rclone.conf:ro - ./volumes:/data:ro - ./scripts/rclone-sync.sh:/rclone-sync.sh:ro - ./scripts/rclone-watch.sh:/rclone-watch.sh:ro entrypoint: ["/bin/sh", "/rclone-watch.sh"] user: "1000:1000" networks: - fold-network typst: image: ghcr.io/typst/typst:latest container_name: typst_dev volumes: - ./volumes/scrolls:/workspace working_dir: /workspace entrypoint: /bin/sh command: ["-c", "tail -f /dev/null"] networks: - fold-network overleaf-mongo: image: mongo:6 container_name: overleaf_mongo_dev volumes: - ./volumes/overleaf/mongo:/data/db healthcheck: test: ["CMD", "mongo", "--eval", "db.adminCommand('ping')"] interval: 10s timeout: 5s retries: 3 networks: - fold-network overleaf-redis: image: redis:7 container_name: overleaf_redis_dev volumes: - ./volumes/overleaf/redis:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 3 networks: - fold-network overleaf: image: overleaf/compose-git:latest container_name: overleaf_dev ports: - "8090:80" volumes: - ./volumes/overleaf/data:/var/lib/overleaf - ./volumes/scrolls:/var/lib/overleaf/data/files:ro environment: - OVERLEAF_MONGO_URL=mongodb://overleaf-mongo:27017/overleaf - OVERLEAF_REDIS_URL=redis://overleaf-redis:6379 - OVERLEAF_LISTEN_IP=0.0.0.0 - OVERLEAF_PORT=80 - OVERLEAF_ADMIN_EMAIL=admin@example.com - OVERLEAF_SITE_URL=http://localhost:8090 depends_on: overleaf-mongo: condition: service_healthy overleaf-redis: condition: service_healthy networks: - fold-network git-sync: build: ./git-sync container_name: git_sync_dev volumes: - ./config/git-sync:/config/git-sync:ro - ./volumes/repos:/repos/local - ./volumes/logs:/logs networks: - fold-network flame_dashboard: image: pawelmalak/flame:latest container_name: flame_dashboard_dev user: "1000:1000" ports: - "5005:5005" volumes: - ./volumes/flame:/app/data - ./.env.dev:/app/.env:ro environment: - FLAME_PASSWORD=${FLAME_PASSWORD} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:5005/health"] interval: 10s timeout: 5s retries: 3 cap_drop: - ALL cap_add: - CHOWN - SETGID - SETUID networks: - fold-network restart: unless-stopped nginx: image: nginx:alpine container_name: nginx_dev ports: - "80:80" volumes: - ./nginx/dev/default.conf:/etc/nginx/conf.d/default.conf:ro - ./volumes/logs:/var/log/nginx depends_on: - ghost - forgejo - flame_dashboard - trilium - hedgedoc - nextcloud networks: - fold-network restart: unless-stopped networks: fold-network: driver: bridge