René's URL Explorer Experiment


Title: Feature: Docker Support - Dockerfile, Compose, and Container Registry · Issue #99 · JavaScriptSolidServer/JavaScriptSolidServer · GitHub

Open Graph Title: Feature: Docker Support - Dockerfile, Compose, and Container Registry · Issue #99 · JavaScriptSolidServer/JavaScriptSolidServer

X Title: Feature: Docker Support - Dockerfile, Compose, and Container Registry · Issue #99 · JavaScriptSolidServer/JavaScriptSolidServer

Description: Summary Add first-class Docker support to JavaScriptSolidServer, enabling users to deploy with a single docker run command. This is a P0 priority item as Docker is the expected deployment method for modern self-hosted software. Difficult...

Open Graph Description: Summary Add first-class Docker support to JavaScriptSolidServer, enabling users to deploy with a single docker run command. This is a P0 priority item as Docker is the expected deployment method fo...

X Description: Summary Add first-class Docker support to JavaScriptSolidServer, enabling users to deploy with a single docker run command. This is a P0 priority item as Docker is the expected deployment method fo...

Opengraph URL: https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/99

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Feature: Docker Support - Dockerfile, Compose, and Container Registry","articleBody":"## Summary\n\nAdd first-class Docker support to JavaScriptSolidServer, enabling users to deploy with a single `docker run` command. This is a **P0 priority** item as Docker is the expected deployment method for modern self-hosted software.\n\n**Difficulty**: 30/100  \n**Estimated Effort**: 2-3 days  \n**Dependencies**: None\n\n---\n\n## Current State\n\n- ❌ No `Dockerfile`\n- ❌ No `docker-compose.yml`\n- ❌ No `.dockerignore`\n- ❌ No container registry images\n- ❌ No health check endpoint\n- ❌ No Docker documentation\n\nThe only Docker reference is for running CTH tests (external container).\n\n---\n\n## Proposed Implementation\n\n### 1. Dockerfile (Multi-Stage Build)\n\n```dockerfile\n# ============================================\n# Stage 1: Builder\n# ============================================\nFROM node:22-alpine AS builder\n\nWORKDIR /app\n\n# Install dependencies first (cache optimization)\nCOPY package*.json ./\nRUN npm ci\n\n# Copy source\nCOPY . .\n\n# ============================================\n# Stage 2: Production\n# ============================================\nFROM node:22-alpine AS production\n\n# Install dumb-init for proper signal handling\nRUN apk add --no-cache dumb-init\n\n# Create non-root user\nRUN addgroup -g 1001 -S jss \u0026\u0026 \\\n    adduser -S -u 1001 -G jss jss\n\nWORKDIR /app\n\n# Copy only production dependencies and source\nCOPY --from=builder --chown=jss:jss /app/node_modules ./node_modules\nCOPY --from=builder --chown=jss:jss /app/package.json ./\nCOPY --from=builder --chown=jss:jss /app/bin ./bin\nCOPY --from=builder --chown=jss:jss /app/src ./src\n\n# Create data directory\nRUN mkdir -p /data \u0026\u0026 chown jss:jss /data\n\n# Switch to non-root user\nUSER jss\n\n# Environment defaults\nENV NODE_ENV=production\nENV JSS_PORT=3000\nENV JSS_HOST=0.0.0.0\nENV JSS_ROOT=/data\n\n# Expose port\nEXPOSE 3000\n\n# Health check\nHEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \\\n    CMD wget --no-verbose --tries=1 --spider http://localhost:3000/.well-known/solid || exit 1\n\n# Use dumb-init as PID 1\nENTRYPOINT [\"dumb-init\", \"--\"]\n\n# Start server\nCMD [\"node\", \"bin/jss.js\", \"start\"]\n```\n\n### Key Dockerfile Features\n\n| Feature | Benefit |\n|---------|---------|\n| Multi-stage build | ~70% smaller image (node_modules dev deps excluded) |\n| Alpine base | Minimal attack surface, ~5x smaller than Debian |\n| Non-root user | Security best practice, prevents privilege escalation |\n| dumb-init | Proper signal handling, zombie process reaping |\n| Layer caching | package.json first = faster rebuilds |\n| Health check | Container orchestration support |\n\n---\n\n### 2. Docker Compose Examples\n\n**Basic (`docker-compose.yml`)**\n```yaml\nservices:\n  jss:\n    image: ghcr.io/javascriptsolidserver/jss:latest\n    ports:\n      - \"3000:3000\"\n    volumes:\n      - jss-data:/data\n    environment:\n      - JSS_MULTIUSER=true\n      - JSS_IDP=true\n    restart: unless-stopped\n\nvolumes:\n  jss-data:\n```\n\n**Production with SSL (`docker-compose.prod.yml`)**\n```yaml\nservices:\n  jss:\n    image: ghcr.io/javascriptsolidserver/jss:latest\n    ports:\n      - \"443:3000\"\n    volumes:\n      - ./data:/data\n      - ./ssl:/ssl:ro\n    environment:\n      - JSS_PORT=3000\n      - JSS_SSL_KEY=/ssl/key.pem\n      - JSS_SSL_CERT=/ssl/cert.pem\n      - JSS_MULTIUSER=true\n      - JSS_IDP=true\n      - JSS_CONNEG=true\n      - JSS_NOTIFICATIONS=true\n      - JSS_DEFAULT_QUOTA=100MB\n    restart: unless-stopped\n    healthcheck:\n      test: [\"CMD\", \"wget\", \"--spider\", \"-q\", \"http://localhost:3000/.well-known/solid\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n```\n\n**Full Stack with Reverse Proxy (`docker-compose.full.yml`)**\n```yaml\nservices:\n  jss:\n    image: ghcr.io/javascriptsolidserver/jss:latest\n    volumes:\n      - jss-data:/data\n    environment:\n      - JSS_MULTIUSER=true\n      - JSS_IDP=true\n      - JSS_CONNEG=true\n      - JSS_NOTIFICATIONS=true\n      - JSS_ACTIVITYPUB=true\n      - JSS_NOSTR=true\n    restart: unless-stopped\n    networks:\n      - internal\n\n  caddy:\n    image: caddy:alpine\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - ./Caddyfile:/etc/caddy/Caddyfile:ro\n      - caddy-data:/data\n      - caddy-config:/config\n    depends_on:\n      - jss\n    restart: unless-stopped\n    networks:\n      - internal\n\nvolumes:\n  jss-data:\n  caddy-data:\n  caddy-config:\n\nnetworks:\n  internal:\n```\n\n**Single-User Personal Server**\n```yaml\nservices:\n  jss:\n    image: ghcr.io/javascriptsolidserver/jss:latest\n    ports:\n      - \"3000:3000\"\n    volumes:\n      - ./data:/data\n    environment:\n      - JSS_SINGLE_USER=true\n      - JSS_SINGLE_USER_NAME=me\n      - JSS_IDP=true\n      - JSS_CONNEG=true\n      - JSS_MASHLIB=true\n    restart: unless-stopped\n```\n\n---\n\n### 3. `.dockerignore`\n\n```\n# Dependencies\nnode_modules\n\n# Git\n.git\n.gitignore\n\n# IDE\n.vscode\n.idea\n*.swp\n*.swo\n\n# Testing\ntest\ntests\n*.test.js\ncoverage\n.nyc_output\n\n# Documentation\n*.md\n!README.md\ndocs\n\n# CI/CD\n.github\n.gitlab-ci.yml\n.travis.yml\n\n# Development\n.env\n.env.*\ndocker-compose*.yml\nDockerfile*\n\n# Data (should be mounted as volume)\ndata\n*.db\n\n# Misc\n.DS_Store\nThumbs.db\n*.log\n```\n\n---\n\n### 4. GitHub Actions Workflow\n\n**`.github/workflows/docker.yml`**\n```yaml\nname: Docker Build \u0026 Push\n\non:\n  push:\n    branches: [main, gh-pages]\n    tags: ['v*']\n  pull_request:\n    branches: [main, gh-pages]\n\nenv:\n  REGISTRY: ghcr.io\n  IMAGE_NAME: ${{ github.repository }}\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      packages: write\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v4\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Log in to Container Registry\n        if: github.event_name != 'pull_request'\n        uses: docker/login-action@v3\n        with:\n          registry: ${{ env.REGISTRY }}\n          username: ${{ github.actor }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Extract metadata\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}\n          tags: |\n            type=ref,event=branch\n            type=ref,event=pr\n            type=semver,pattern={{version}}\n            type=semver,pattern={{major}}.{{minor}}\n            type=semver,pattern={{major}}\n            type=sha,prefix=\n            type=raw,value=latest,enable=${{ github.ref == 'refs/heads/gh-pages' }}\n\n      - name: Build and push\n        uses: docker/build-push-action@v5\n        with:\n          context: .\n          push: ${{ github.event_name != 'pull_request' }}\n          tags: ${{ steps.meta.outputs.tags }}\n          labels: ${{ steps.meta.outputs.labels }}\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          platforms: linux/amd64,linux/arm64\n\n      - name: Generate SBOM\n        if: github.event_name != 'pull_request'\n        uses: anchore/sbom-action@v0\n        with:\n          image: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }}\n```\n\n### Workflow Features\n\n| Feature | Benefit |\n|---------|---------|\n| Multi-platform | `linux/amd64` + `linux/arm64` (Raspberry Pi, M1/M2 Macs) |\n| Semantic versioning | Tags like `v1.0.0` create `1.0.0`, `1.0`, `1` tags |\n| Cache | GitHub Actions cache for faster builds |\n| SBOM | Software Bill of Materials for security scanning |\n| PR builds | Build but don't push on PRs (test Dockerfile) |\n\n---\n\n### 5. Health Check Endpoint\n\nAdd `/.well-known/solid` or `/health` endpoint:\n\n```javascript\n// src/server.js - add health check route\n\nfastify.get('/health', async (request, reply) =\u003e {\n  return {\n    status: 'healthy',\n    version: process.env.npm_package_version || 'unknown',\n    uptime: process.uptime(),\n    timestamp: new Date().toISOString()\n  };\n});\n\n// Or use existing /.well-known/solid which returns server metadata\n```\n\n---\n\n### 6. Documentation Updates\n\n**README.md Docker Section**\n```markdown\n## Docker\n\n### Quick Start\n\n```bash\ndocker run -d \\\n  --name jss \\\n  -p 3000:3000 \\\n  -v jss-data:/data \\\n  ghcr.io/javascriptsolidserver/jss:latest\n```\n\n### With Configuration\n\n```bash\ndocker run -d \\\n  --name jss \\\n  -p 3000:3000 \\\n  -v ./data:/data \\\n  -e JSS_MULTIUSER=true \\\n  -e JSS_IDP=true \\\n  -e JSS_CONNEG=true \\\n  ghcr.io/javascriptsolidserver/jss:latest\n```\n\n### Docker Compose\n\n```bash\ncurl -O https://raw.githubusercontent.com/JavaScriptSolidServer/JavaScriptSolidServer/main/docker-compose.yml\ndocker compose up -d\n```\n\n### Available Tags\n\n| Tag | Description |\n|-----|-------------|\n| `latest` | Latest stable release |\n| `x.y.z` | Specific version |\n| `x.y` | Latest patch of minor version |\n| `x` | Latest minor of major version |\n| `sha-abc123` | Specific commit |\n\n### Environment Variables\n\nAll `JSS_*` environment variables are supported. See [Configuration](#configuration) for full list.\n```\n\n---\n\n## Industry Comparison\n\n| Software | Docker Support |\n|----------|----------------|\n| **Community Solid Server** | ✅ Official image `solidproject/community-server` |\n| **Nextcloud** | ✅ Official image, multiple variants (fpm, apache) |\n| **Mastodon** | ✅ Official image, comprehensive compose files |\n| **Gitea/Forgejo** | ✅ Official images, rootless variants |\n| **Vaultwarden** | ✅ Official image `vaultwarden/server` |\n| **PocketBase** | ✅ Official image, single binary friendly |\n| **Matrix Synapse** | ✅ Official image `matrixdotorg/synapse` |\n| **JSS (current)** | ❌ No Docker support |\n\nAll major self-hosted software provides official Docker images. This is table stakes.\n\n---\n\n## Image Size Estimates\n\n| Stage | Estimated Size |\n|-------|----------------|\n| Base `node:22` | ~1.1 GB |\n| Base `node:22-alpine` | ~180 MB |\n| With dependencies | ~250 MB |\n| Multi-stage final | ~80-100 MB |\n\nComparison:\n- Community Solid Server: ~300 MB\n- PocketBase: ~50 MB (Go binary)\n- Nextcloud: ~800 MB (PHP + Apache)\n\n---\n\n## Implementation Checklist\n\n- [ ] Create `Dockerfile` with multi-stage build\n- [ ] Create `.dockerignore`\n- [ ] Create `docker-compose.yml` (basic)\n- [ ] Create `docker-compose.prod.yml` (with SSL)\n- [ ] Create `docker-compose.full.yml` (with Caddy)\n- [ ] Add health check endpoint (`/health`)\n- [ ] Create GitHub Actions workflow\n- [ ] Test on `linux/amd64`\n- [ ] Test on `linux/arm64`\n- [ ] Update README with Docker section\n- [ ] Add example Caddyfile\n- [ ] First release to ghcr.io\n\n---\n\n## Difficulty Breakdown\n\n| Component | Difficulty |\n|-----------|------------|\n| Dockerfile | 20/100 |\n| .dockerignore | 5/100 |\n| docker-compose files | 15/100 |\n| GitHub Actions workflow | 25/100 |\n| Health endpoint | 10/100 |\n| Documentation | 10/100 |\n| Multi-arch testing | 20/100 |\n| **Total** | 30/100 |\n\n---\n\n## Security Considerations\n\n1. **Non-root user** - Container runs as UID 1001, not root\n2. **Read-only root filesystem** - Can add `--read-only` flag\n3. **No shell** - Consider `FROM scratch` or distroless for minimal attack surface\n4. **SBOM generation** - Track dependencies for vulnerability scanning\n5. **Signed images** - Consider sigstore/cosign for image signing\n6. **Secrets handling** - Document proper secrets management (Docker secrets, env files)\n\n---\n\n## Future Enhancements\n\n1. **Rootless variant** - For environments requiring rootless containers\n2. **Distroless variant** - Minimal image without shell\n3. **Kubernetes Helm chart** - For K8s deployments\n4. **Docker Hub mirror** - Alternative registry\n5. **Watchtower compatibility** - Auto-update support\n\n---\n\n## Related Issues\n\n- #97 - Presets (Docker compose can use preset env var)\n- #98 - CLI wizard (`jss generate docker` command)\n- #95 - Web onboarding (works same in Docker)\n- #96 - Admin panel (accessible via Docker)\n\n---\n\n## References\n\n- [Node.js Docker Best Practices](https://github.com/nodejs/docker-node/blob/main/docs/BestPractices.md)\n- [Docker Multi-Stage Builds](https://docs.docker.com/build/building/multi-stage/)\n- [GitHub Container Registry](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry)\n- [Docker Build Push Action](https://github.com/docker/build-push-action)\n- [Community Solid Server Docker](https://hub.docker.com/r/solidproject/community-server)","author":{"url":"https://github.com/melvincarvalho","@type":"Person","name":"melvincarvalho"},"datePublished":"2026-01-19T13:18:08.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/99/JavaScriptSolidServer/issues/99"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:a4d60e95-cdac-9a12-27e8-e8f806fbada7
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idD416:10BDCB:454031:5FD0E3:69774E12
html-safe-noncef085f01931b990d8bb33b32517fe612513983224af277a11cdfccd375c1a1ba1
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJENDE2OjEwQkRDQjo0NTQwMzE6NUZEMEUzOjY5Nzc0RTEyIiwidmlzaXRvcl9pZCI6IjIyMTAxOTgxNDgwNDUyOTUxMjIiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac29b2043e9eab6bc395fdbf3a392a8964d3689aedd133847df9031ade395b7463
hovercard-subject-tagissue:3829698876
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/JavaScriptSolidServer/JavaScriptSolidServer/99/issue_layout
twitter:imagehttps://opengraph.githubassets.com/0a695cac4bfdd18a6210b5d8440914500efa137823d02f09b1a549666a64edcf/JavaScriptSolidServer/JavaScriptSolidServer/issues/99
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/0a695cac4bfdd18a6210b5d8440914500efa137823d02f09b1a549666a64edcf/JavaScriptSolidServer/JavaScriptSolidServer/issues/99
og:image:altSummary Add first-class Docker support to JavaScriptSolidServer, enabling users to deploy with a single docker run command. This is a P0 priority item as Docker is the expected deployment method fo...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamemelvincarvalho
hostnamegithub.com
expected-hostnamegithub.com
None3310064f35a62c06a4024ba37f41c06836f39376a095c2dfd2c4b693c34965be
turbo-cache-controlno-preview
go-importgithub.com/JavaScriptSolidServer/JavaScriptSolidServer git https://github.com/JavaScriptSolidServer/JavaScriptSolidServer.git
octolytics-dimension-user_id205442424
octolytics-dimension-user_loginJavaScriptSolidServer
octolytics-dimension-repository_id958025407
octolytics-dimension-repository_nwoJavaScriptSolidServer/JavaScriptSolidServer
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id958025407
octolytics-dimension-repository_network_root_nwoJavaScriptSolidServer/JavaScriptSolidServer
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release67d5f8d1d53c3cc4f49fc3bb8029933c3dc219e6
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/99#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FJavaScriptSolidServer%2FJavaScriptSolidServer%2Fissues%2F99
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FJavaScriptSolidServer%2FJavaScriptSolidServer%2Fissues%2F99
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=JavaScriptSolidServer%2FJavaScriptSolidServer
Reloadhttps://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/99
Reloadhttps://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/99
Reloadhttps://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/99
JavaScriptSolidServer https://github.com/JavaScriptSolidServer
JavaScriptSolidServerhttps://github.com/JavaScriptSolidServer/JavaScriptSolidServer
Notifications https://github.com/login?return_to=%2FJavaScriptSolidServer%2FJavaScriptSolidServer
Fork 4 https://github.com/login?return_to=%2FJavaScriptSolidServer%2FJavaScriptSolidServer
Star 4 https://github.com/login?return_to=%2FJavaScriptSolidServer%2FJavaScriptSolidServer
Code https://github.com/JavaScriptSolidServer/JavaScriptSolidServer
Issues 59 https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues
Pull requests 6 https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/pulls
Actions https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/actions
Projects 0 https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/projects
Security 0 https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/security
Insights https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/pulse
Code https://github.com/JavaScriptSolidServer/JavaScriptSolidServer
Issues https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues
Pull requests https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/pulls
Actions https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/actions
Projects https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/projects
Security https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/security
Insights https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/pulse
New issuehttps://github.com/login?return_to=https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/99
New issuehttps://github.com/login?return_to=https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/99
Feature: Docker Support - Dockerfile, Compose, and Container Registryhttps://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/99#top
https://github.com/melvincarvalho
https://github.com/melvincarvalho
melvincarvalhohttps://github.com/melvincarvalho
on Jan 19, 2026https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/99#issue-3829698876
Configurationhttps://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/99#configuration
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.